diff --git a/config/compilespecs.yml b/config/compilespecs.yml
index a8a200d..02fc181 100644
--- a/config/compilespecs.yml
+++ b/config/compilespecs.yml
@@ -4,6 +4,13 @@ files:
- src/mcu/config/compile.yml
- src/riscv_core/veer_el2/config/compile.yml
- src/i3c-core/config/compile.yml
+ - src/ast/config/compile.yml
+ - src/pwrmgr/config/compile.yml
+ - src/tlul/config/compile.yml
+ - src/dmi/config/compile.yml
+ - src/axi2tlul/config/compile.yml
+ - src/caliptra_ss_lc_ctrl/config/compile.yml
+ - src/fuse_ctrl/config/compile.yml
- third_party/caliptra-rtl/src/libs/config/compile.yml
- third_party/caliptra-rtl/src/ahb_lite_bus/config/compile.yml
- third_party/caliptra-rtl/src/riscv_core/veer_el2/config/compile.yml
diff --git a/src/ast/BUILD b/src/ast/BUILD
new file mode 100644
index 0000000..fdcf974
--- /dev/null
+++ b/src/ast/BUILD
@@ -0,0 +1,12 @@
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+package(default_visibility = ["//visibility:public"])
+
+filegroup(
+ name = "all_files",
+ srcs = glob(["**"]) + [
+ "//hw/top_earlgrey/ip/ast/data:all_files",
+ ],
+)
diff --git a/src/ast/README.md b/src/ast/README.md
new file mode 100644
index 0000000..85ac710
--- /dev/null
+++ b/src/ast/README.md
@@ -0,0 +1,305 @@
+# Analog Sensor Top Technical Specification
+
+Analog Sensor Top, also known as the AST, is the OpenTitan analog and
+security companion. Within the AST are various analog functions (such as
+clocks, regulators, random number generators) needed to make the device
+function, as well as physical security sensors necessary to protect the
+device from physical attacks or manipulation.
+
+At a high level, AST communicates with a number of OpenTitan comportable
+modules. See the diagram below for an overview.
+
+![Analog Sensor Top Diagram](./doc/top_diagram.png)
+
+In the following sections, each family of connections is briefly
+described and explained. Note, the analog connections to AST are not
+shown in the diagram, but will be explained as well.
+
+# Interface Signals Table
+
+See the table [here](./doc/interfaces.md).
+
+# Interfaces Description Note
+
+The information below augments the [Interface Signals Table](./doc/interfaces.md).
+For further details, see the corresponding signals description in the
+table.
+
+# Power Connectivity
+
+Note: Power signals may not appear in the verilog files, however, they
+are described for completeness.
+
+## External Supplies
+
+AST has four external power supplies VCC, AVCC, VIOA and VIOB. VCC is
+the main supply, AVCC is an analog VCC supply. VIOA and VIOB are two
+additional I/O supplies.
+
+## Core Supplies
+
+The core supplies are generated from the VCC supply. There are two core
+supply domains: VCMAIN and VCAON. VCAON, as its name implies, is the
+always-on core supply used to power components that stay active during
+device low power states. VCMAIN on the other hand, powers most chip
+logic such as RISC-V processor, crypto modules and almost all memories
+and peripherals. The VCMAIN supply can be turned off when requested,
+VCAON on the other hand, is active whenever VCC is active. AST core
+logic is powered by VCAON.
+
+# Power Control and Reset
+
+## Core Power Control and Indication
+
+VCMAIN is the only supply that can be directly influenced by OpenTitan.
+The power manager can request VCMAIN to shutdown through main_pd_ni. The
+state of VCMAIN is reflected by the vcmain_pok_o signal.
+
+## IO Power Indication
+
+IO power state is reflected to OpenTitan by vioa_pok_o and viob_pok_o
+signals
+
+## Main (VCC) Power Detection and Flash Protection
+
+On VCC power-down detection, 'flash_power_ready_h_o', is
+immediately negated. In addition, SYS clock, IO clock and USB clock are
+stopped. This means that negation of the VCC supply always triggers the
+flash brown-out (BOR) protection circuitry.
+
+When entering deep-sleep mode, 'flash_power_down_h_o' is
+asserted before negating VCMAIN until VCMAIN is back up.
+
+## Resets
+
+The AST supports the generation of the root reset for the reset manager.
+It is driven by 'vcaon_pok_o' which is generated inside AST.
+The 'vcaon_pok_o' is activated when the following conditions
+are met: VCC is detected, internal voltage regulator is active and
+'por_ni' reset input is inactive. 'por_ni' is
+driven by an external chip reset pin. The following table and diagrams
+describe the AST sub-modules resets.
+
+| **Components** | **Reset by** | **Comments** |
+|--------------------------------------------------|--------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| Regulators, 'power-OK' logic and always-on clock | self-start / vcaon_pok_o | These circuits come to life shortly after VCC crosses its detection threshold. vcaon_pok_o serves as their register configuration reset. |
+| System/USB/IO clock generators | vcmain_pok_o | vcmain_pok_o is also fed by vcaon_pok_o and por_ni. |
+| Interface functions | Input reset | Per the corresponding interface [clock domain reset input ](#clock-and-reset-inputs). |
+
+# Clock Outputs
+
+AST generates four clocks: System clock, IO clock, USB clock and
+Always-on clock. Most clocks have 'enable' inputs and a
+corresponding 'valid' output. When the enable is
+de-asserted, the corresponding clock stops and valid is dropped to 0.
+When the enable is asserted, the clocks begin outputting in a
+'glitchless' manner and the valid is raised to 1. Unless
+noted otherwise, clocks duty cycle is 50% +/-5%. At boot time, clocks
+start toggling at a different (typically slower) frequency than their
+target. They are configured to their target frequency by the ROM code.
+Once configured, their frequency is maintained within +/-3% of their
+target as long as the chip remains in its intended operating conditions
+until the next boot.
+
+The OpenTitan power and clock managers are responsible for manipulating
+the enables and observing the valids to know when clocks can be safely
+released to the system.
+
+## USB Clock Calibration
+
+The USB clock requires an accuracy that cannot be achieved by the AST
+clocks natively. As a result, information from USB frames are used to
+[calibrate the
+clock ](../../../ip/usbdev/README.md#clocking).
+
+# Clock and Reset Inputs
+
+The root clocks and resets are generated inside AST. However, the clocks
+go through gating and optional division in the OpenTitan top level and
+propagate back into AST as feedback clocks, each with associated
+synchronized reset de-assertion to ensure it can synchronize with the
+various comportable modules. The input resets are used for the different
+AST interface functions. For further details about AST resets, see
+[Resets ](#resets) section.
+
+Note: There are several reasons for routing leaf clocks back into AST
+instead of using the root clocks directly
+
+- The leaf clocks may be divided down from the root clock and that
+ frequency is used to drive the interface. For example,
+ clk_src_io_clk_o is 96MHz, but comportable modules use either 48MHz
+ or 24MHz.
+
+- The leaf clocks and root clocks have very different clock tree depths
+ and may be difficult for timing closure if they interacted directly.
+
+- Decouple AST internal design from OpenTitan top-level interfaces clock
+ and reset selection.
+
+# Register Access Interface
+
+AST registers can be accessed via TL-UL interface. These registers are
+used for test and calibration purposes and are not required for runtime
+operation. See the [Interface Signals
+Table ](#interface-signals-table) for more details.
+
+## AST registers initialization during boot.
+
+In PROD*/DEV Lifecycle states, the ROM code must copy all AST REGA
+registers values from OTP to AST. During other Lifecycle states, the ROM
+code may also copy all AST REGA registers. It is recommended for the
+ROM code to condition the copy by a digest verification of the register
+values. If such a digest is too complicated, a simple tag can be used to
+condition the copy instead. The AST register copy operation must be
+performed in order and must include all REGA registers (starting from
+REGA0 and ending at the last REGA). AST sets the ast_init_done_o signal
+after the copy completion.
+
+After the copy, ROM code can either poll for ast_init_done_o assertion
+with 100 us timeout (in practice, it should take way less) or ignore it
+and let the next SW layers handle it. It is recommended to set an OTP
+field for determining the ROM code action.
+
+The boot code is expected to check all AST output alert signals before
+handing over the control to the next code layer (ROM_EXT). The ROM code
+response per alert should be defined in a dedicated OTP space.
+Recommended response types (per alert):
+
+1. Do nothing and don't clear the event
+
+2. Do nothing (continue to the next SW layer) and clear the event
+
+3. Log the event in some NV space and halt
+
+4. Halt immediately
+
+Note that in TEST_UNLOCK*/RMA state, the booter should always act per
+#1 regardless of the OTP setting.
+
+It is recommended to redundantly code the OTP fields that control the
+ROM code branching and also to protect the branching code from fault
+injection.
+
+# ADC
+
+AST contains an analog to digital converter that can be used to sample
+various input signals. For OpenTitan this will primarily be used for
+[debug cable detection ](https://www.sparkfun.com/products/14746).
+To activate the ADC, the corresponding [comportable
+module ](../../../ip/adc_ctrl/README.md) must first
+activate the ADC through 'adc_pd_i'. Once activated, it should select
+the channel to sample. Channel transition from zero to non-zero value
+starts the ADC conversion. The ADC output is synchronous to the ADC
+controller.
+
+## ADC Usage Flow
+
+1. Activate the ADC by negating 'adc_pd_i'
+
+2. Wait 30 uS for the ADC to wake up.
+
+3. Select an analog channel to measure by setting the corresponding bit
+ in 'adc_chnsel_i' bus. This triggers a measurement.
+
+4. Wait until 'adc_d_val' is set and read the result via
+ 'adc_d_o'
+
+5. Clear 'adc_chnsel_i' bus to 0. Note that adc_chnsel must
+ be cleared to 0 before a new channel is selected.
+
+6. Repeat steps 3-5 if more channels or more measurements are required
+
+7. Deactivate the ADC by setting 'adc_pd_i' to save power.
+
+```wavejson
+{ signal: [ {node: '.a..b........', phase:0.2},
+{name: 'adc_pd_i' , wave: '10|..|.....|....|..1'}, {name:
+'clk_ast_adc_i', wave: 'p.|..|.....|....|...'}, {name:
+'adc_chnsel_i' , wave: '0.|.3|..04.|....|0..'}, {name:
+'adc_d_val_o' , wave: '0.|..|.1.0.|.1..|.0.'}, {name: 'adc_d_o' ,
+wave: 'x.|..|.3.x.|.4..|.x.', data: ['ch0', 'ch1', 'ch1']}, ],
+edge: [ 'a<->b wakeup time', ] }
+```
+
+# Random Number Generator
+
+AST contains a random number generator that outputs random number
+bitstreams whenever it is enabled. After enabled by the [comportable
+controller ](../../../ip/entropy_src/README.md)
+through 'rng_en_i', the AST begins generating multiple
+independent four random bit streams. rng_b_o bit streams are valid and
+can be sampled whenever 'rng_val_o' is asserted according to the
+following diagram.
+
+```wavejson
+{signal: [ {name: 'clk' , wave:
+'p.|......|......|......'}, {name: 'rng_enable' , wave:
+'01|......|......|......'}, {name: 'rng_valid' , wave:
+'0.|..10..|..10..|..10..'}, {name: 'rng_b' , wave:
+'x.|..3...|..4...|..5.....', data: ['es0','es1','es2']}, ]}
+```
+
+The expected rng_b_o valid output rate is about 50KHz. For more
+information on the RNG interface, please see the [OpenTitan entropy
+source module ](../../../ip/entropy_src/README.md).
+
+# Entropy Consumption
+
+AST consumes entropy for defensive purposes. However, AST does not
+consume its raw entropy directly. Instead, AST receives entropy from the
+[Entropy Distribution Network
+(EDN) ](../../../ip/edn/README.md). Note
+that entropy_ack and entropy_i are packed into enropy_rsp_i in the
+interface. Also note that once entropy_req_o is set, it will remain set
+until ack or until reset.
+
+```wavejson
+{signal: [
+
+{name: 'clk_ast_es_i' , wave: 'p.|..........'},
+
+{name: 'entropy_req_o' , wave: '01|.0.1.....0'},
+
+{name: 'entropy_ack_i' , wave: '0.|10.1.01..0'},
+
+{name: 'entropy_i' , wave: 'xx|2x.22x222x'},
+
+] }
+```
+
+# Countermeasures and Alerts
+
+## Alert Events
+
+AST's sensors and detectors, when triggered, output alert events
+to a sensor controller. The event signals are level until acknowledged
+by the controller. Further, the events are differentially encoded to
+ensure they cannot be hard-wired or faulted to either '1' or
+'0'.
+
+Inside the sensor controller, the events are then converted into alerts
+as part of the wider [OpenTitan alert handling
+system ](../../ip_autogen/alert_handler/README.md).
+
+## Alert Signaling
+
+Outgoing alert events are level. Incoming event ack signals clear the
+alert event (similar to an interrupt). Outgoing alert events should be
+OR'd inside the sensor or power manager (depending on what level of deep
+sleep support is needed) to generate wakeup, that way AST does not need
+to do any additional handling for wakeups during low power mode.
+
+The AST defines each alert signal in both positive (P) and negative (N)
+polarity (see ast_dif_t typedef with 'p' and 'n'
+signals), however, the P and N signals are not necessarily fully
+differential, for example, at times, it might occur that both P and N
+are at the same value. For alert_o case, the correct way to treat it is
+to propagate an alert signal if either P is high or N is low.
+
+## Countermeasures
+
+Most countermeasure enablement is controlled by Nuvoton via the
+registers interface. Clock jitter is an exception because there is a
+reasoning for dynamically turning it on and off (security/performance
+tradeoff). Unless stated otherwise, countermeasures are active in all
+modes but deep-sleep.
diff --git a/src/ast/ast.core b/src/ast/ast.core
new file mode 100644
index 0000000..c37f2a7
--- /dev/null
+++ b/src/ast/ast.core
@@ -0,0 +1,130 @@
+CAPI=2:
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+name: "lowrisc:systems:ast:0.1"
+description: "Analog Sensor Top generic views"
+filesets:
+ files_rtl:
+ depend:
+ - lowrisc:ip:tlul
+ - lowrisc:prim:all
+ - lowrisc:prim:clock_buf
+ - lowrisc:prim:clock_div
+ - lowrisc:prim:clock_gating
+ - lowrisc:prim:clock_inv
+ - lowrisc:prim:lc_dec
+ - lowrisc:prim:lfsr
+ - lowrisc:ip:pinmux_reg
+ - lowrisc:ip:pinmux_component
+ - lowrisc:prim:assert
+ - lowrisc:prim:prim_pkg
+ - lowrisc:prim:mubi
+ - lowrisc:prim:multibit_sync
+ - lowrisc:ip:lc_ctrl_pkg
+ - lowrisc:ip:edn_pkg
+ - lowrisc:ip_interfaces:alert_handler_reg
+ - lowrisc:ip_interfaces:clkmgr_pkg
+ - lowrisc:ip_interfaces:rstmgr_pkg
+ files:
+ - rtl/ast_reg_pkg.sv
+ - rtl/ast_pkg.sv
+ - rtl/ast_bhv_pkg.sv
+ - rtl/ast.sv
+ - rtl/ast_reg_top.sv
+ - rtl/adc.sv
+ - rtl/adc_ana.sv
+ - rtl/vcc_pgd.sv
+ - rtl/vio_pgd.sv
+ - rtl/vcaon_pgd.sv
+ - rtl/vcmain_pgd.sv
+ - rtl/ast_alert.sv
+ - rtl/aon_clk.sv
+ - rtl/aon_osc.sv
+ - rtl/io_clk.sv
+ - rtl/io_osc.sv
+ - rtl/sys_clk.sv
+ - rtl/sys_osc.sv
+ - rtl/usb_clk.sv
+ - rtl/usb_osc.sv
+ - rtl/gfr_clk_mux2.sv
+ - rtl/ast_clks_byp.sv
+ - rtl/rglts_pdm_3p3v.sv
+ - rtl/ast_pulse_sync.sv
+ - rtl/ast_entropy.sv
+ - rtl/dev_entropy.sv
+ - rtl/rng.sv
+ - rtl/ast_dft.sv
+ file_type: systemVerilogSource
+
+ files_verilator_waiver:
+ depend:
+ # common waivers
+ - lowrisc:lint:common
+ files:
+ - lint/ast.vlt
+ file_type: vlt
+
+ files_ascentlint_waiver:
+ depend:
+ # common waivers
+ - lowrisc:lint:common
+ files:
+ - lint/ast.waiver
+ file_type: waiver
+
+ files_veriblelint_waiver:
+ depend:
+ # common waivers
+ - lowrisc:lint:common
+ files:
+ - lint/ast.vbl
+ file_type: veribleLintWaiver
+
+
+parameters:
+ SYNTHESIS:
+ datatype: bool
+ paramtype: vlogdefine
+ AST_BYPASS_CLK:
+ datatype: bool
+ paramtype: vlogdefine
+ ANALOGSIM:
+ datatype: bool
+ paramtype: vlogdefine
+
+
+targets:
+ default: &default_target
+ filesets:
+ - tool_verilator ? (files_verilator_waiver)
+ - tool_ascentlint ? (files_ascentlint_waiver)
+ - tool_veriblelint ? (files_veriblelint_waiver)
+ - files_rtl
+ toplevel: ast
+ parameters:
+ - SYNTHESIS
+ - AST_BYPASS_CLK
+ - ANALOGSIM
+
+
+ lint:
+ <<: *default_target
+ default_tool: verilator
+ parameters:
+ - SYNTHESIS=true
+ tools:
+ verilator:
+ mode: lint-only
+ verilator_options:
+ - "-Wall"
+
+ sim:
+ <<: *default_target
+ default_tool: vcs
+ filesets:
+ - files_rtl
+ tools:
+ vcs:
+ vcs_options: [-sverilog -ntb_opts uvm-1.2 -CFLAGS --std=c99 -CFLAGS -fno-extended-identifiers -CFLAGS --std=c++11 -timescale=1ns/1ps -l vcs.log]
+ toplevel: ast
diff --git a/src/ast/ast_pkg.core b/src/ast/ast_pkg.core
new file mode 100644
index 0000000..63703cb
--- /dev/null
+++ b/src/ast/ast_pkg.core
@@ -0,0 +1,20 @@
+CAPI=2:
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+name: "lowrisc:systems:ast_pkg"
+description: "Analog sensor top (AST) wrapper package"
+
+filesets:
+ files_rtl:
+ depend:
+ - lowrisc:constants:top_pkg
+ - lowrisc:ip:lc_ctrl_pkg
+ files:
+ - rtl/ast_pkg.sv
+ file_type: systemVerilogSource
+
+targets:
+ default:
+ filesets:
+ - files_rtl
diff --git a/src/ast/ast_regs.html b/src/ast/ast_regs.html
new file mode 100644
index 0000000..0abde57
--- /dev/null
+++ b/src/ast/ast_regs.html
@@ -0,0 +1,52 @@
+
+
+
+ ast.REVID @ 0x0
+ AST Revision Identification Register
+Reset: TLUL Reset
+ Reset default = 0x1, mask 0xff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
+REVID
+
+Bits Type Reset Name Description 7:0 ro 0x1 REVID Revision
+
+
+
+
+ ast.RWTYPE0 @ 0x4
+
+ Reset default = 0xbc614e, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 RWTYPE0...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...RWTYPE0
+
+Bits Type Reset Name Description 31:0 rw 0xbc614e RWTYPE0 field description
+
+
+
+
+ ast.RWTYPE1 @ 0x8
+ RW type
+with long
+description
+and multiple fields
+ Reset default = 0x6411, mask 0xff13
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 FIELD15_8
+
+FIELD4
+
+FIELD1
+FIELD0
+
+Bits Type Reset Name Description 0 rw 0x1 FIELD0 field 0
1 rw 0x0 FIELD1 field 1
3:2 Reserved 4 rw 0x1 FIELD4 field 4
7:5 Reserved 15:8 rw 0x64 FIELD15_8 field [15:8]
+
diff --git a/src/ast/config/compile.yml b/src/ast/config/compile.yml
new file mode 100644
index 0000000..f790a23
--- /dev/null
+++ b/src/ast/config/compile.yml
@@ -0,0 +1,16 @@
+---
+provides: [ast_pkg]
+schema_version: 2.4.0
+requires:
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/ast_pkg.sv
+ #- $COMPILE_ROOT/rtl/ast_bhv_pkg.sv
+ #- $COMPILE_ROOT/rtl/ast_reg_pkg.sv
+ tb:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/ast_pkg.sv
+
diff --git a/src/ast/data/BUILD b/src/ast/data/BUILD
new file mode 100644
index 0000000..d71fefb
--- /dev/null
+++ b/src/ast/data/BUILD
@@ -0,0 +1,30 @@
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+
+package(default_visibility = ["//visibility:public"])
+
+load(
+ "//rules:autogen.bzl",
+ "autogen_hjson_c_header",
+ "autogen_hjson_rust_header",
+)
+
+autogen_hjson_c_header(
+ name = "ast_c_regs",
+ srcs = [
+ "ast.hjson",
+ ],
+)
+
+autogen_hjson_rust_header(
+ name = "ast_rust_regs",
+ srcs = [
+ "ast.hjson",
+ ],
+)
+
+filegroup(
+ name = "all_files",
+ srcs = glob(["**"]),
+)
diff --git a/src/ast/data/ast.hjson b/src/ast/data/ast.hjson
new file mode 100644
index 0000000..d21b494
--- /dev/null
+++ b/src/ast/data/ast.hjson
@@ -0,0 +1,621 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//#############################################################################
+// *Name: ast
+// *Module Description: Analog Sensors Top Registers
+//#############################################################################
+{ name: "ast",
+ // Unique comportable IP identifier defined under KNOWN_CIP_IDS in the regtool.
+ cip_id: "34",
+ design_spec: "../doc",
+ dv_doc: "",
+ hw_checklist: "",
+ sw_checklist: "",
+ version: "1.0.0",
+ life_stage: "L1",
+ design_stage: "D2",
+ verification_stage: "V2S",
+ dif_stage: "",
+ clocking: [
+ { clock: "clk_ast_tlul_i", reset: "rst_ast_tlul_ni", primary: true },
+ { clock: "clk_ast_adc_i", reset: "rst_ast_adc_ni"},
+ { clock: "clk_ast_alert_i", reset: "rst_ast_alert_ni"},
+ { clock: "clk_ast_es_i", reset: "rst_ast_es_ni"},
+ { clock: "clk_ast_rng_i", reset: "rst_ast_rng_ni"},
+ { clock: "clk_ast_usb_i", reset: "rst_ast_usb_ni"},
+ ],
+ bus_interfaces: [
+ { protocol: "tlul",
+ direction: "device"
+ }
+ ],
+ no_auto_alert_regs: "True",
+ param_list: [
+ { name: "NumRegsB",
+ desc: "Number of registers in the Array-B",
+ type: "int",
+ default: "5",
+ local: "true",
+ },
+ { name: "NumUsbBeaconPulses",
+ desc: "Number of USB valid beacon pulses for clock to re-calibrate",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ ],
+ regwidth: "32",
+ registers: [
+ { name: "REGA0",
+ desc: "AST Register 0 for OTP/ROM Write Testing",
+ swaccess: "ro",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclAll" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x00",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA1",
+ desc: "AST 1 Register for OTP/ROM Write Testing",
+ swaccess: "ro",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclAll" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x01",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA2",
+ desc: "AST 2 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x02",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA3",
+ desc: "AST 3 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x03",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA4",
+ desc: "AST 4 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x04",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA5",
+ desc: "AST 5 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x05",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA6",
+ desc: "AST 6 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x06",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA7",
+ desc: "AST 7 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x07",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA8",
+ desc: "AST 8 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x08",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA9",
+ desc: "AST 9 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x09",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA10",
+ desc: "AST 10 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0A",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA11",
+ desc: "AST 11 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0B",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA12",
+ desc: "AST 13 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0C",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA13",
+ desc: "AST 13 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0D",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA14",
+ desc: "AST 14 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0E",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA15",
+ desc: "AST 15 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x0F",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA16",
+ desc: "AST 16 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x10",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA17",
+ desc: "AST 17 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x11",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA18",
+ desc: "AST 18 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x12",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA19",
+ desc: "AST 19 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x13",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA20",
+ desc: "AST 20 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x14",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA21",
+ desc: "AST 21 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x15",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA22",
+ desc: "AST 22 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x16",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA23",
+ desc: "AST 23 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x17",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA24",
+ desc: "AST 24 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x18",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA25",
+ desc: "AST 25 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x19",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA26",
+ desc: "AST 26 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1A",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA27",
+ desc: "AST 27 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1B",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA28",
+ desc: "AST 28 Register for OTP/ROM Write Testing",
+ swaccess: "ro",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1C",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA29",
+ desc: "AST 29 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1D",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA30",
+ desc: "AST 30 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1E",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA31",
+ desc: "AST 31 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x1F",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA32",
+ desc: "AST 32 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x20",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA33",
+ desc: "AST 33 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x21",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA34",
+ desc: "AST 34 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x22",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA35",
+ desc: "AST 35 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x23",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA36",
+ desc: "AST 36 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x24",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGA37",
+ desc: "AST 37 Register for OTP/ROM Write Testing",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclWrite" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x25",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ { name: "REGAL",
+ desc: "AST Last Register for OTP/ROM Write Testing",
+ swaccess: "wo",
+ hwaccess: "hrw",
+ hwext: "true",
+ hwqe: "true",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclAll" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0x26",
+ },
+ ],
+ }, //----------------------------------------------------------------------
+ ///////////////////////////////////////////////////////////////////////////
+ { skipto: "0x200" }
+ ///////////////////////////////////////////////////////////////////////////
+ { multireg:
+ {
+ name: "REGB",
+ desc: "AST Registers Array-B to set address space size",
+ count: "NumRegsB",
+ cname: "REGB",
+ swaccess: "rw",
+ hwaccess: "hro",
+ tags: [ // don't write random data to any of the AST registers
+ "excl:CsrAllTests:CsrExclAll" ],
+ fields: [
+ { bits: "31:0",
+ name: "reg32",
+ desc: "32-bit Register",
+ resval: "0",
+ },
+ ],
+ },
+ }, //----------------------------------------------------------------------
+ ],
+}
diff --git a/src/ast/data/ast_cdc_abstract.sgdc b/src/ast/data/ast_cdc_abstract.sgdc
new file mode 100644
index 0000000..c8fe774
--- /dev/null
+++ b/src/ast/data/ast_cdc_abstract.sgdc
@@ -0,0 +1,631 @@
+################################################################################
+#
+# This file has been generated by SpyGlass:
+# File Created by: ngotliv
+# File Created on: Thu May 19 11:20:01 2022
+# Working Directory: /tanap1/proj_cd14/opentitan/ngotliv/nightly_220518/nuvoton/top/spyglass
+# File Location : ./ast_cdc/ast/cdc/cdc_abstract/spyglass_reports/abstract_view/ast_AdcChannels_2_AdcDataWidth_10_Ast2PadOutWidth_9_Entro_1_cdc_abstract.sgdc
+# SpyGlass Version : SpyGlass_vR-2020.12-1
+# Policy Name : clock-reset
+# Comment : Generated by rule Ac_abstract01
+#
+################################################################################
+if { $::sg_use_cdc_abstract_view == 1 } {
+ abstract_file -version 5.1.0 -scope cdc
+
+ current_design "ast" -def_param
+
+#################################################################
+# abstract_port constraints #
+#################################################################
+
+abstract_port -path_logic combo -ports "otp_power_seq_h_o[0]" -related_ports otp_power_seq_i[0]
+abstract_port -path_logic combo -ports "otp_power_seq_h_o[1]" -related_ports otp_power_seq_i[1]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obmsl][0]" -related_ports padmux2ast_i[4]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obmsl][1]" -related_ports padmux2ast_i[5]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obmsl][2]" -related_ports padmux2ast_i[6]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obmsl][3]" -related_ports padmux2ast_i[7]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obgsl][0]" -related_ports padmux2ast_i[0]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obgsl][1]" -related_ports padmux2ast_i[1]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obgsl][2]" -related_ports padmux2ast_i[2]
+abstract_port -path_logic combo -ports "obs_ctrl_o[obgsl][3]" -related_ports padmux2ast_i[3]
+
+#################################################################
+# clock constraints #
+#################################################################
+
+
+# Clock constraint is not generated.
+
+
+#################################################################
+# set_case_analysis constraints #
+#################################################################
+
+set_case_analysis -name "tl_o[d_user][rsp_intg][6]" -value 0
+set_case_analysis -name "tl_o[d_sink][0]" -value 0
+set_case_analysis -name "tl_o[d_param][0]" -value 0
+set_case_analysis -name "tl_o[d_param][1]" -value 0
+set_case_analysis -name "tl_o[d_param][2]" -value 0
+set_case_analysis -name "tl_o[d_opcode][1]" -value 0
+set_case_analysis -name "tl_o[d_opcode][2]" -value 0
+
+#################################################################
+# reset constraints #
+#################################################################
+
+reset -name "tl_o[a_ready]" -value 1
+reset -name "tl_o[d_valid]" -value 0
+reset -name "ast_pwst_o[main_pok]" -value 0
+reset -name "ast_pwst_o[vcc_pok]" -value 0
+reset -name "ast_pwst_h_o[main_pok]" -value 0
+reset -name "ast_pwst_h_o[vcc_pok]" -value 0
+reset -name "flash_power_ready_h_o" -value 0
+
+# Synchronous reset constraint is not generated.
+
+
+#################################################################
+# quasi_static constraints #
+#################################################################
+
+quasi_static -name "ast2padmux_o[0]"
+quasi_static -name "ast2padmux_o[1]"
+quasi_static -name "ast2padmux_o[2]"
+quasi_static -name "ast2padmux_o[3]"
+quasi_static -name "ast2padmux_o[4]"
+quasi_static -name "ast2padmux_o[5]"
+quasi_static -name "ast2padmux_o[6]"
+quasi_static -name "ast2padmux_o[7]"
+quasi_static -name "ast2padmux_o[8]"
+quasi_static -name "ast2pad_t0_ao"
+quasi_static -name "ast2pad_t1_ao"
+quasi_static -name "dft_scan_md_o[0]"
+quasi_static -name "dft_scan_md_o[1]"
+quasi_static -name "dft_scan_md_o[2]"
+quasi_static -name "dft_scan_md_o[3]"
+
+#################################################################
+# abstract_port constraints #
+#################################################################
+
+abstract_port -ports "adc_d_o" -scope cdc -clock "clk_ast_adc_i" -related_ports "adc_pd_i" "adc_chnsel_i"
+abstract_port -ports "adc_d_val_o" -scope cdc -clock "clk_ast_adc_i" -related_ports "adc_pd_i" "adc_chnsel_i"
+abstract_port -ports "alert_req_o[alerts][0][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][0][n]" "alert_rsp_i[alerts_ack][0][n]"
+abstract_port -ports "alert_req_o[alerts][0][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][0][p]" "alert_rsp_i[alerts_ack][0][p]"
+abstract_port -ports "alert_req_o[alerts][1][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][1][n]" "alert_rsp_i[alerts_ack][1][n]"
+abstract_port -ports "alert_req_o[alerts][1][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][1][p]" "alert_rsp_i[alerts_ack][1][p]"
+abstract_port -ports "alert_req_o[alerts][2][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][2][n]" "alert_rsp_i[alerts_ack][2][n]"
+abstract_port -ports "alert_req_o[alerts][2][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][2][p]" "alert_rsp_i[alerts_ack][2][p]"
+abstract_port -ports "alert_req_o[alerts][3][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][3][n]" "alert_rsp_i[alerts_ack][3][n]"
+abstract_port -ports "alert_req_o[alerts][3][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][3][p]" "alert_rsp_i[alerts_ack][3][p]"
+abstract_port -ports "alert_req_o[alerts][4][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][4][n]" "alert_rsp_i[alerts_ack][4][n]"
+abstract_port -ports "alert_req_o[alerts][4][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][4][p]" "alert_rsp_i[alerts_ack][4][p]"
+abstract_port -ports "alert_req_o[alerts][5][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][5][n]" "alert_rsp_i[alerts_ack][5][n]"
+abstract_port -ports "alert_req_o[alerts][5][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][5][p]" "alert_rsp_i[alerts_ack][5][p]"
+abstract_port -ports "alert_req_o[alerts][6][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][6][n]" "alert_rsp_i[alerts_ack][6][n]"
+abstract_port -ports "alert_req_o[alerts][6][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][6][p]" "alert_rsp_i[alerts_ack][6][p]"
+abstract_port -ports "alert_req_o[alerts][7][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][7][n]" "alert_rsp_i[alerts_ack][7][n]"
+abstract_port -ports "alert_req_o[alerts][7][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][7][p]" "alert_rsp_i[alerts_ack][7][p]"
+abstract_port -ports "alert_req_o[alerts][8][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][8][n]" "alert_rsp_i[alerts_ack][8][n]"
+abstract_port -ports "alert_req_o[alerts][8][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][8][p]" "alert_rsp_i[alerts_ack][8][p]"
+abstract_port -ports "alert_req_o[alerts][9][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][9][n]" "alert_rsp_i[alerts_ack][9][n]"
+abstract_port -ports "alert_req_o[alerts][9][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][9][p]" "alert_rsp_i[alerts_ack][9][p]"
+abstract_port -ports "alert_req_o[alerts][10][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][10][n]" "alert_rsp_i[alerts_ack][10][n]"
+abstract_port -ports "alert_req_o[alerts][10][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][10][p]" "alert_rsp_i[alerts_ack][10][p]"
+abstract_port -ports "alert_req_o[alerts][11][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][11][n]" "alert_rsp_i[alerts_ack][11][n]"
+abstract_port -ports "alert_req_o[alerts][11][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][11][p]" "alert_rsp_i[alerts_ack][11][p]"
+abstract_port -ports "alert_req_o[alerts][12][n]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][12][n]" "alert_rsp_i[alerts_ack][12][n]"
+abstract_port -ports "alert_req_o[alerts][12][p]" -scope cdc -clock "clk_ast_alert_i" -related_ports "alert_rsp_i[alerts_trig][12][p]" "alert_rsp_i[alerts_ack][12][p]"
+abstract_port -ports "entropy_req_o[edn_req]" -scope cdc -clock "clk_ast_es_i" -related_ports "entropy_rsp_i[edn_ack]"
+abstract_port -ports "tl_o[a_ready]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_error]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_size][0]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][4]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_size][1]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][5]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_data][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_data][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_data][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_data][4]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_data][5]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][6]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "fla_alert_src_i[n]" "fla_alert_src_i[p]"
+abstract_port -ports "tl_o[d_data][7]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "otp_alert_src_i[n]" "otp_alert_src_i[p]"
+abstract_port -ports "tl_o[d_data][8]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][9]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][10]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][11]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][12]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][13]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][14]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][15]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][16]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][17]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][18]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][19]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][20]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][21]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][22]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][23]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][24]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][25]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][26]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][27]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][28]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][29]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][30]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_data][31]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][0]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][1]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][3]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][4]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][4]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][5]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][5]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][6]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][6]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_source][7]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_source][7]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_size][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_size][0]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_size][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_size][1]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_opcode][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_valid]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][data_intg][0]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][1]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "fla_alert_src_i[n]" "fla_alert_src_i[p]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][2]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "otp_alert_src_i[n]" "otp_alert_src_i[p]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][3]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "fla_alert_src_i[n]" "fla_alert_src_i[p]" "otp_alert_src_i[n]" "otp_alert_src_i[p]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][4]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][5]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "fla_alert_src_i[n]" "fla_alert_src_i[p]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][data_intg][6]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]" "otp_alert_src_i[n]" "otp_alert_src_i[p]" "dft_strap_test_i[straps][0]" "dft_strap_test_i[straps][1]" "dft_strap_test_i[valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][0]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "tl_o[d_user][rsp_intg][1]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "ast_init_done_o" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "usb_io_pu_cal_o" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmen][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmen][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmen][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmen][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmsl][0]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmsl][1]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmsl][2]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obmsl][3]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obgsl][0]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obgsl][1]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obgsl][2]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "obs_ctrl_o[obgsl][3]" -scope cdc -clock "clk_ast_tlul_i" -combo yes -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "flash_bist_en_o" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_b][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_b][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_b][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_b][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_en_b]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_a][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_a][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_a][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_a][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rmf_o[marg_en_a]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_b][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_b][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_b][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_b][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_en_b]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_a][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_a][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_a][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_a][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "dpram_rml_o[marg_en_a]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "spram_rm_o[marg][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "spram_rm_o[marg][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "spram_rm_o[marg][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "spram_rm_o[marg][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "spram_rm_o[marg_en]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprgf_rm_o[marg][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprgf_rm_o[marg][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprgf_rm_o[marg][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprgf_rm_o[marg][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprgf_rm_o[marg_en]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprom_rm_o[marg][0]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprom_rm_o[marg][1]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprom_rm_o[marg][2]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprom_rm_o[marg][3]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "sprom_rm_o[marg_en]" -scope cdc -clock "clk_ast_tlul_i" -related_ports "tl_i[d_ready]" "tl_i[a_user][data_intg][0]" "tl_i[a_user][data_intg][1]" "tl_i[a_user][data_intg][2]" "tl_i[a_user][data_intg][3]" "tl_i[a_user][data_intg][4]" "tl_i[a_user][data_intg][5]" "tl_i[a_user][data_intg][6]" "tl_i[a_user][cmd_intg][0]" "tl_i[a_user][cmd_intg][1]" "tl_i[a_user][cmd_intg][2]" "tl_i[a_user][cmd_intg][3]" "tl_i[a_user][cmd_intg][4]" "tl_i[a_user][cmd_intg][5]" "tl_i[a_user][cmd_intg][6]" "tl_i[a_user][instr_type][0]" "tl_i[a_user][instr_type][1]" "tl_i[a_user][instr_type][2]" "tl_i[a_user][instr_type][3]" "tl_i[a_data][0]" "tl_i[a_data][1]" "tl_i[a_data][2]" "tl_i[a_data][3]" "tl_i[a_data][4]" "tl_i[a_data][5]" "tl_i[a_data][6]" "tl_i[a_data][7]" "tl_i[a_data][8]" "tl_i[a_data][9]" "tl_i[a_data][10]" "tl_i[a_data][11]" "tl_i[a_data][12]" "tl_i[a_data][13]" "tl_i[a_data][14]" "tl_i[a_data][15]" "tl_i[a_data][16]" "tl_i[a_data][17]" "tl_i[a_data][18]" "tl_i[a_data][19]" "tl_i[a_data][20]" "tl_i[a_data][21]" "tl_i[a_data][22]" "tl_i[a_data][23]" "tl_i[a_data][24]" "tl_i[a_data][25]" "tl_i[a_data][26]" "tl_i[a_data][27]" "tl_i[a_data][28]" "tl_i[a_data][29]" "tl_i[a_data][30]" "tl_i[a_data][31]" "tl_i[a_mask][0]" "tl_i[a_mask][1]" "tl_i[a_mask][2]" "tl_i[a_mask][3]" "tl_i[a_address][0]" "tl_i[a_address][1]" "tl_i[a_address][2]" "tl_i[a_address][3]" "tl_i[a_address][4]" "tl_i[a_address][5]" "tl_i[a_address][6]" "tl_i[a_address][7]" "tl_i[a_address][8]" "tl_i[a_address][9]" "tl_i[a_address][10]" "tl_i[a_address][11]" "tl_i[a_address][12]" "tl_i[a_address][13]" "tl_i[a_address][14]" "tl_i[a_address][15]" "tl_i[a_address][16]" "tl_i[a_address][17]" "tl_i[a_address][18]" "tl_i[a_address][19]" "tl_i[a_address][20]" "tl_i[a_address][21]" "tl_i[a_address][22]" "tl_i[a_address][23]" "tl_i[a_address][24]" "tl_i[a_address][25]" "tl_i[a_address][26]" "tl_i[a_address][27]" "tl_i[a_address][28]" "tl_i[a_address][29]" "tl_i[a_address][30]" "tl_i[a_address][31]" "tl_i[a_size][0]" "tl_i[a_size][1]" "tl_i[a_opcode][0]" "tl_i[a_opcode][1]" "tl_i[a_opcode][2]" "tl_i[a_valid]"
+abstract_port -ports "ast_pwst_o[vcc_pok]" -scope cdc -clock "clk_src_aon_o"
+abstract_port -ports "ast_pwst_o[aon_pok]" -scope cdc -clock "clk_src_aon_o" -related_ports "main_pd_ni"
+abstract_port -ports "ast_pwst_o[main_pok]" -scope cdc -clock "clk_src_aon_o" -combo yes -related_ports "main_pd_ni"
+abstract_port -ports "ast_pwst_h_o[vcc_pok]" -scope cdc -clock "clk_src_aon_o"
+abstract_port -ports "ast_pwst_h_o[aon_pok]" -scope cdc -clock "clk_src_aon_o" -related_ports "main_pd_ni"
+abstract_port -ports "ast_pwst_h_o[main_pok]" -scope cdc -clock "clk_src_aon_o" -combo yes -related_ports "main_pd_ni"
+abstract_port -ports "flash_power_down_h_o" -scope cdc -clock "clk_src_aon_o"
+abstract_port -ports "otp_power_seq_h_o" -scope cdc -clock "clk_src_aon_o"
+abstract_port -ports "clk_src_aon_val_o" -scope cdc -clock SG_VIRT_OUT_20
+abstract_port -ports "clk_src_sys_val_o" -scope cdc -clock SG_VIRT_OUT_83
+abstract_port -ports "clk_src_io_val_o" -scope cdc -clock SG_VIRT_OUT_84
+abstract_port -ports "clk_src_usb_val_o" -scope cdc -clock SG_VIRT_OUT_85
+
+
+#################################################################
+#translating input constraints to abstract_port where it involves
+#a sync crossing and apending -combo no #
+#################################################################
+
+abstract_port -ports "clk_src_sys_en_i" -scope cdc -clock "clk_src_aon_o" -combo no -combo_ifn "clk_ast_ext_i"
+abstract_port -ports "clk_src_sys_jen_i" -scope cdc -clock "clk_src_aon_o" -combo no -combo_ifn "clk_src_sys_o"
+abstract_port -ports "clk_src_io_en_i" -scope cdc -clock "clk_src_aon_o" -combo no -combo_ifn "clk_ast_ext_i"
+abstract_port -ports "clk_src_usb_en_i" -scope cdc -clock "clk_src_aon_o" -combo no -combo_ifn "clk_ast_ext_i"
+abstract_port -ports "rng_en_i" -scope cdc -clock "clk_src_sys_o" -combo no -combo_ifn "clk_ast_tlul_i"
+abstract_port -ports "rng_fips_i" -scope cdc -clock "clk_src_sys_o" -combo no -combo_ifn "clk_ast_tlul_i"
+abstract_port -ports "ext_freq_is_96m_i" -scope cdc -clock "clk_ast_tlul_i" -combo no
+abstract_port -ports "all_clk_byp_req_i" -scope cdc -clock "clk_ast_tlul_i" -combo no
+abstract_port -ports "io_clk_byp_req_i" -scope cdc -clock "clk_ast_tlul_i" -combo no
+
+
+#################################################################
+#Adding -combo no to abstract_port defined at input port#
+#If it invloves a synchronized control crossing #
+#################################################################
+
+
+#################################################################
+# qualifier constraints #
+#################################################################
+
+#Port with -ignore constraint.Reason:Path is Hanging or Blocked#
+abstract_port -ports "ast_pwst_o[io_pok][0]" -scope cdc -ignore -comment "blocked or hanging path"
+######################################################
+#Port with -ignore constraint.Reason:Path is Hanging or Blocked#
+abstract_port -ports "ast_pwst_o[io_pok][1]" -scope cdc -ignore -comment "blocked or hanging path"
+######################################################
+#Port with -ignore constraint.Reason:Path is Hanging or Blocked#
+abstract_port -ports "ast_pwst_h_o[io_pok][0]" -scope cdc -ignore -comment "blocked or hanging path"
+######################################################
+
+#Port with -ignore constraint.Reason:Path is Hanging or Blocked#
+abstract_port -ports "ast_pwst_h_o[io_pok][1]" -scope cdc -ignore -comment "blocked or hanging path"
+######################################################
+#################################################################
+# virtual clock constraints #
+#################################################################
+
+clock -tag SG_VIRT_OUT_20 -domain "domain20"
+## "abstraction_new_domain_83" :: bbox_merged_domain_83
+clock -tag SG_VIRT_OUT_83 -domain "abstraction_new_domain_83"
+## "abstraction_new_domain_84" :: bbox_merged_domain_84
+clock -tag SG_VIRT_OUT_84 -domain "abstraction_new_domain_84"
+## "abstraction_new_domain_85" :: bbox_merged_domain_85
+clock -tag SG_VIRT_OUT_85 -domain "abstraction_new_domain_85"
+#################################################################
+# cdc_attribute constraints #
+#################################################################
+
+
+# cdc_attribute constraint is not generated.
+
+
+#################################################################
+# reset_filter_path constraints #
+#################################################################
+
+reset_filter_path -type rdc -from_rst "tl_o[a_ready]" -to_rst "tl_o[d_valid]" "rst_ast_tlul_ni"
+reset_filter_path -type rdc -from_rst "tl_o[d_valid]" -to_rst "tl_o[a_ready]" "rst_ast_tlul_ni"
+reset_filter_path -type rdc -from_rst "rst_ast_tlul_ni" -to_rst "tl_o[a_ready]" "tl_o[d_valid]"
+reset_filter_path -type rdc -from_rst "ast_pwst_o[main_pok]" -to_rst "ast_pwst_h_o[main_pok]" "ast_pwst_h_o[vcc_pok]"
+reset_filter_path -type rdc -from_rst "ast_pwst_h_o[main_pok]" -to_rst "ast_pwst_o[main_pok]" "ast_pwst_h_o[vcc_pok]"
+reset_filter_path -type rdc -from_rst "ast_pwst_h_o[vcc_pok]" -to_rst "ast_pwst_o[main_pok]" "ast_pwst_h_o[main_pok]"
+reset_filter_path -type rdc -from_rst "obs_ctrl_o[obmsl][3]" -to_rst "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[0]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[1]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[2]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[4]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[5]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[6]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[6]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[7]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[7]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[8]"
+reset_filter_path -type rdc -from_rst "ast2padmux_o[8]" -to_rst "obs_ctrl_o[obmsl][3]" "ast2padmux_o[0]" "ast2padmux_o[1]" "ast2padmux_o[2]" "ast2padmux_o[4]" "ast2padmux_o[5]" "ast2padmux_o[6]" "ast2padmux_o[7]"
+
+#################################################################
+# Inferred abstract_port constraints #
+#################################################################
+
+
+abstract_port -ports "por_ni" -clock "clk_src_aon_o" -start
+abstract_port -ports "fla_alert_src_i[n]" -clock "clk_ast_tlul_i" -combo no -start
+abstract_port -ports "fla_alert_src_i[p]" -clock "clk_ast_tlul_i" -combo no -start
+abstract_port -ports "otp_alert_src_i[n]" -clock "clk_ast_tlul_i" -combo no -start
+abstract_port -ports "otp_alert_src_i[p]" -clock "clk_ast_tlul_i" -combo no -start
+abstract_port -ports "sns_clks_i[clk_io_peri]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_usb_peri]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div2_peri]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div4_peri]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div4_timers]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_usb_secure]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_secure]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div4_secure]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div2_infra]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_infra]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_infra]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div4_infra]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_otbn]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_kmac]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_hmac]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_aes]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_aon_timers]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_aon_peri]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_aon_secure]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_aon_infra]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div2_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_usb_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_main_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_aon_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_clks_i[clk_io_div4_powerup]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c2_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c2_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c1_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c1_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c0_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_i2c0_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_usbif_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_usbif_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_usb_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_usb_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_host1_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_host1_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_host0_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_host0_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_device_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_spi_device_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_aon_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_aon_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_io_div4_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_io_div4_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_shadowed_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_sys_shadowed_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_aon_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_aon_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_io_div4_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_io_div4_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_io_div4_shadowed_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_io_div4_shadowed_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_shadowed_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_lc_shadowed_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_usb_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_usb_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div4_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div4_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div4_shadowed_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div4_shadowed_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div2_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_div2_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_io_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_aon_n][0]" -ignore -comment "hanging path"
+abstract_port -ports "sns_rsts_i[rst_por_aon_n][1]" -ignore -comment "hanging path"
+abstract_port -ports "sns_spi_ext_clk_i" -ignore -comment "hanging path"
+abstract_port -ports "vcc_supp_i" -ignore -comment "hanging path"
+abstract_port -ports "vcaon_supp_i" -ignore -comment "hanging path"
+abstract_port -ports "vcmain_supp_i" -ignore -comment "hanging path"
+abstract_port -ports "vioa_supp_i" -ignore -comment "hanging path"
+abstract_port -ports "viob_supp_i" -ignore -comment "hanging path"
+clock -tag SG_VCLK_1
+
+#################################################################
+# cdc_filter_coherency constraints #
+#################################################################
+
+
+# cdc_filter_coherency constraint is not generated.
+
+
+
+#################################################################
+# clock_sense constraints #
+#################################################################
+
+
+#################################################################
+# reset_sense constraints #
+#################################################################
+
+# reset_sense constraint is not generated. Either no reset defined on input ports or no combinational path found from primary resets to output port.
+
+#################################################################
+# block interface constraints #
+#################################################################
+
+abstract_interface_param -name "AdcChannels" -value "2"
+abstract_interface_param -name "AdcDataWidth" -value "10"
+abstract_interface_param -name "EntropyStreams" -value "4"
+abstract_interface_param -name "UsbCalibWidth" -value "20"
+abstract_interface_param -name "Ast2PadOutWidth" -value "9"
+abstract_interface_param -name "Pad2AstInWidth" -value "9"
+abstract_interface_port -name "tl_i" -definition "input tlul_pkg :: tl_h2d_t tl_i;"
+abstract_interface_port -name "tl_o" -definition "output tlul_pkg :: tl_d2h_t tl_o;"
+abstract_interface_port -name "ast_init_done_o" -definition "output logic ast_init_done_o; "
+abstract_interface_port -name "clk_ast_adc_i" -definition "input clk_ast_adc_i; "
+abstract_interface_port -name "rst_ast_adc_ni" -definition "input rst_ast_adc_ni; "
+abstract_interface_port -name "clk_ast_alert_i" -definition "input clk_ast_alert_i; "
+abstract_interface_port -name "rst_ast_alert_ni" -definition "input rst_ast_alert_ni; "
+abstract_interface_port -name "clk_ast_es_i" -definition "input clk_ast_es_i; "
+abstract_interface_port -name "rst_ast_es_ni" -definition "input rst_ast_es_ni; "
+abstract_interface_port -name "clk_ast_rng_i" -definition "input clk_ast_rng_i; "
+abstract_interface_port -name "rst_ast_rng_ni" -definition "input rst_ast_rng_ni; "
+abstract_interface_port -name "clk_ast_tlul_i" -definition "input clk_ast_tlul_i; "
+abstract_interface_port -name "rst_ast_tlul_ni" -definition "input rst_ast_tlul_ni; "
+abstract_interface_port -name "clk_ast_usb_i" -definition "input clk_ast_usb_i; "
+abstract_interface_port -name "rst_ast_usb_ni" -definition "input rst_ast_usb_ni; "
+abstract_interface_port -name "clk_ast_ext_i" -definition "input clk_ast_ext_i; "
+abstract_interface_port -name "por_ni" -definition "input por_ni; "
+abstract_interface_port -name "sns_clks_i" -definition "input clkmgr_pkg :: clkmgr_out_t sns_clks_i;"
+abstract_interface_port -name "sns_rsts_i" -definition "input rstmgr_pkg :: rstmgr_out_t sns_rsts_i;"
+abstract_interface_port -name "sns_spi_ext_clk_i" -definition "input sns_spi_ext_clk_i; "
+abstract_interface_port -name "vcc_supp_i" -definition "input vcc_supp_i; "
+abstract_interface_port -name "vcaon_supp_i" -definition "input vcaon_supp_i; "
+abstract_interface_port -name "vcmain_supp_i" -definition "input vcmain_supp_i; "
+abstract_interface_port -name "vioa_supp_i" -definition "input vioa_supp_i; "
+abstract_interface_port -name "viob_supp_i" -definition "input viob_supp_i; "
+abstract_interface_port -name "ast_pwst_o" -definition "output ast_pkg :: ast_pwst_t ast_pwst_o;"
+abstract_interface_port -name "ast_pwst_h_o" -definition "output ast_pkg :: ast_pwst_t ast_pwst_h_o;"
+abstract_interface_port -name "main_pd_ni" -definition "input main_pd_ni; "
+abstract_interface_port -name "main_env_iso_en_i" -definition "input main_env_iso_en_i; "
+abstract_interface_port -name "flash_power_down_h_o" -definition "output logic flash_power_down_h_o; "
+abstract_interface_port -name "flash_power_ready_h_o" -definition "output logic flash_power_ready_h_o; "
+abstract_interface_port -name "otp_power_seq_i" -definition "input [1:0] otp_power_seq_i; "
+abstract_interface_port -name "otp_power_seq_h_o" -definition "output logic [1:0] otp_power_seq_h_o; "
+abstract_interface_port -name "clk_src_sys_en_i" -definition "input clk_src_sys_en_i; "
+abstract_interface_port -name "clk_src_sys_jen_i" -definition "input prim_mubi_pkg :: mubi4_t clk_src_sys_jen_i;"
+abstract_interface_port -name "clk_src_sys_o" -definition "output logic clk_src_sys_o; "
+abstract_interface_port -name "clk_src_sys_val_o" -definition "output logic clk_src_sys_val_o; "
+abstract_interface_port -name "clk_src_aon_o" -definition "output logic clk_src_aon_o; "
+abstract_interface_port -name "clk_src_aon_val_o" -definition "output logic clk_src_aon_val_o; "
+abstract_interface_port -name "clk_src_io_en_i" -definition "input clk_src_io_en_i; "
+abstract_interface_port -name "clk_src_io_o" -definition "output logic clk_src_io_o; "
+abstract_interface_port -name "clk_src_io_val_o" -definition "output logic clk_src_io_val_o; "
+abstract_interface_port -name "clk_src_io_48m_o" -definition "output prim_mubi_pkg :: mubi4_t clk_src_io_48m_o;"
+abstract_interface_port -name "usb_ref_pulse_i" -definition "input usb_ref_pulse_i; "
+abstract_interface_port -name "usb_ref_val_i" -definition "input usb_ref_val_i; "
+abstract_interface_port -name "clk_src_usb_en_i" -definition "input clk_src_usb_en_i; "
+abstract_interface_port -name "clk_src_usb_o" -definition "output logic clk_src_usb_o; "
+abstract_interface_port -name "clk_src_usb_val_o" -definition "output logic clk_src_usb_val_o; "
+abstract_interface_port -name "usb_io_pu_cal_o" -definition "output logic [(UsbCalibWidth - 1):0] usb_io_pu_cal_o; "
+abstract_interface_port -name "adc_pd_i" -definition "input adc_pd_i; "
+abstract_interface_port -name "adc_a0_ai" -definition "input ast_pkg :: awire_t adc_a0_ai;"
+abstract_interface_port -name "adc_a1_ai" -definition "input ast_pkg :: awire_t adc_a1_ai;"
+abstract_interface_port -name "adc_chnsel_i" -definition "input [(AdcChannels - 1):0] adc_chnsel_i; "
+abstract_interface_port -name "adc_d_o" -definition "output [(AdcDataWidth - 1):0] adc_d_o; "
+abstract_interface_port -name "adc_d_val_o" -definition "output adc_d_val_o; "
+abstract_interface_port -name "rng_en_i" -definition "input rng_en_i; "
+abstract_interface_port -name "rng_fips_i" -definition "input rng_fips_i; "
+abstract_interface_port -name "rng_val_o" -definition "output logic rng_val_o; "
+abstract_interface_port -name "rng_b_o" -definition "output logic [(EntropyStreams - 1):0] rng_b_o; "
+abstract_interface_port -name "entropy_rsp_i" -definition "input edn_pkg :: edn_rsp_t entropy_rsp_i;"
+abstract_interface_port -name "entropy_req_o" -definition "output edn_pkg :: edn_req_t entropy_req_o;"
+abstract_interface_port -name "fla_alert_src_i" -definition "input ast_pkg :: ast_dif_t fla_alert_src_i;"
+abstract_interface_port -name "otp_alert_src_i" -definition "input ast_pkg :: ast_dif_t otp_alert_src_i;"
+abstract_interface_port -name "alert_rsp_i" -definition "input ast_pkg :: ast_alert_rsp_t alert_rsp_i;"
+abstract_interface_port -name "alert_req_o" -definition "output ast_pkg :: ast_alert_req_t alert_req_o;"
+abstract_interface_port -name "dft_strap_test_i" -definition "input pinmux_pkg :: dft_strap_test_req_t dft_strap_test_i;"
+abstract_interface_port -name "lc_dft_en_i" -definition "input lc_ctrl_pkg :: lc_tx_t lc_dft_en_i;"
+abstract_interface_port -name "fla_obs_i" -definition "input [(8 - 1):0] fla_obs_i; "
+abstract_interface_port -name "otp_obs_i" -definition "input [(8 - 1):0] otp_obs_i; "
+abstract_interface_port -name "otm_obs_i" -definition "input [(8 - 1):0] otm_obs_i; "
+abstract_interface_port -name "usb_obs_i" -definition "input usb_obs_i; "
+abstract_interface_port -name "obs_ctrl_o" -definition "output ast_pkg :: ast_obs_ctrl_t obs_ctrl_o;"
+abstract_interface_port -name "padmux2ast_i" -definition "input [(Pad2AstInWidth - 1):0] padmux2ast_i; "
+abstract_interface_port -name "ast2padmux_o" -definition "output logic [(Ast2PadOutWidth - 1):0] ast2padmux_o; "
+abstract_interface_port -name "ast2pad_t0_ao" -definition "output ast2pad_t0_ao; "
+abstract_interface_port -name "ast2pad_t1_ao" -definition "output ast2pad_t1_ao; "
+abstract_interface_port -name "ext_freq_is_96m_i" -definition "input prim_mubi_pkg :: mubi4_t ext_freq_is_96m_i;"
+abstract_interface_port -name "all_clk_byp_req_i" -definition "input prim_mubi_pkg :: mubi4_t all_clk_byp_req_i;"
+abstract_interface_port -name "all_clk_byp_ack_o" -definition "output prim_mubi_pkg :: mubi4_t all_clk_byp_ack_o;"
+abstract_interface_port -name "io_clk_byp_req_i" -definition "input prim_mubi_pkg :: mubi4_t io_clk_byp_req_i;"
+abstract_interface_port -name "io_clk_byp_ack_o" -definition "output prim_mubi_pkg :: mubi4_t io_clk_byp_ack_o;"
+abstract_interface_port -name "flash_bist_en_o" -definition "output prim_mubi_pkg :: mubi4_t flash_bist_en_o;"
+abstract_interface_port -name "dpram_rmf_o" -definition "output ast_pkg :: dpm_rm_t dpram_rmf_o;"
+abstract_interface_port -name "dpram_rml_o" -definition "output ast_pkg :: dpm_rm_t dpram_rml_o;"
+abstract_interface_port -name "spram_rm_o" -definition "output ast_pkg :: spm_rm_t spram_rm_o;"
+abstract_interface_port -name "sprgf_rm_o" -definition "output ast_pkg :: spm_rm_t sprgf_rm_o;"
+abstract_interface_port -name "sprom_rm_o" -definition "output ast_pkg :: spm_rm_t sprom_rm_o;"
+abstract_interface_port -name "dft_scan_md_o" -definition "output prim_mubi_pkg :: mubi4_t dft_scan_md_o;"
+abstract_interface_port -name "scan_shift_en_o" -definition "output scan_shift_en_o; "
+abstract_interface_port -name "scan_reset_no" -definition "output scan_reset_no; "
+}
+
+if { $::sg_use_cdc_abstract_view == 1 } {
+
+
+ current_design "ast" -def_param
+abstract_block_violation -name Propagate_Clocks -sev WARNING -count 1
+abstract_block_violation -name Setup_check01 -sev WARNING -count 16
+abstract_block_violation -name ErrorAnalyzeBBox -sev ERROR -count 1 -is_builtin
+abstract_block_violation -name SYNTH_78 -sev WARNING -count 10 -is_builtin
+abstract_block_violation -name SYNTH_89 -sev WARNING -count 4 -is_builtin
+abstract_block_violation -name SYNTH_93 -sev WARNING -count 1 -is_builtin
+abstract_block_violation -name SYNTH_1084 -sev ERROR -count 1 -is_builtin
+abstract_block_violation -name WRN_1459 -sev WARNING -count 5 -is_builtin
+abstract_block_violation -name WRN_1470 -sev WARNING -count 5 -is_builtin
+abstract_block_violation -name checkCMD_dirfile03 -sev WARNING -count 29 -is_builtin
+abstract_block_violation -name Propagate_Resets -sev WARNING -count 4
+abstract_block_violation -name Setup_blackbox01 -sev WARNING -count 13
+abstract_block_violation -name Clock_check07 -sev WARNING -count 27
+
+
+block_file_decompiled_start
+
+ input -name "tl_i" -clock "ast.clk_ast_tlul_i"
+ input -name "ast.rst_ast_adc_ni" -clock "ast.clk_ast_adc_i"
+ input -name "ast.rst_ast_alert_ni" -clock "ast.clk_ast_alert_i"
+ input -name "ast.rst_ast_es_ni" -clock "ast.clk_ast_es_i"
+ input -name "ast.rst_ast_rng_ni" -clock "ast.clk_ast_rng_i"
+ input -name "ast.rst_ast_tlul_ni" -clock "ast.clk_ast_tlul_i"
+ input -name "ast.rst_ast_usb_ni" -clock "ast.clk_ast_usb_i"
+ input -name "ast.main_pd_ni" -clock "ast.clk_src_aon_o"
+ input -name "ast.main_env_iso_en_i" -clock "ast.clk_src_aon_o"
+ input -name "otp_power_seq_i" -clock "ast.clk_src_aon_o"
+ input -name "clk_src_sys_en_i" -clock "ast.clk_src_aon_o"
+ input -name "clk_src_sys_jen_i" -clock "ast.clk_src_aon_o"
+ input -name "clk_src_io_en_i" -clock "ast.clk_src_aon_o"
+ input -name "usb_ref_pulse_i" -clock "ast.clk_ast_usb_i"
+ input -name "usb_ref_val_i" -clock "ast.clk_ast_usb_i"
+ input -name "clk_src_usb_en_i" -clock "ast.clk_src_aon_o"
+ input -name "adc_pd_i" -clock "ast.clk_ast_adc_i"
+ input -name "adc_a0_ai" -clock "ast.clk_ast_adc_i"
+ input -name "adc_a1_ai" -clock "ast.clk_ast_adc_i"
+ input -name "adc_chnsel_i" -clock "ast.clk_ast_adc_i"
+ input -name "rng_en_i" -clock "ast.clk_src_sys_o"
+ input -name "rng_fips_i" -clock "ast.clk_src_sys_o"
+ input -name "entropy_rsp_i" -clock "ast.clk_ast_es_i"
+ input -name "alert_rsp_i" -clock "ast.clk_ast_alert_i"
+ input -name "dft_strap_test_i" -clock "ast.clk_ast_tlul_i"
+ input -name "lc_dft_en_i" -clock "ast.clk_ast_tlul_i"
+ input -name "fla_obs_i" -clock "ast.clk_ast_tlul_i"
+ input -name "otp_obs_i" -clock "ast.clk_ast_tlul_i"
+ input -name "otm_obs_i" -clock "ast.clk_ast_tlul_i"
+ input -name "usb_obs_i" -clock "ast.clk_ast_tlul_i"
+ input -name "ext_freq_is_96m_i" -clock "ast.clk_ast_tlul_i"
+ input -name "all_clk_byp_req_i" -clock "ast.clk_ast_tlul_i"
+ input -name "io_clk_byp_req_i" -clock "ast.clk_ast_tlul_i"
+ output -name "tl_o" -clock "ast.clk_ast_tlul_i"
+ output -name "ast_init_done_o" -clock "ast.clk_ast_tlul_i"
+ output -name "ast.flash_power_down_h_o" -clock "ast.clk_src_aon_o"
+ output -name "ast.flash_power_ready_h_o" -clock "ast.clk_src_aon_o"
+ output -name "ast.otp_power_seq_h_o" -clock "ast.clk_src_aon_o"
+ output -name "clk_src_sys_val_o" -clock "ast.clk_src_sys_o"
+ output -name "clk_src_aon_val_o" -clock "ast.clk_src_aon_o"
+ output -name "clk_src_io_val_o" -clock "ast.clk_src_io_o"
+ output -name "clk_src_io_48m_o" -clock "ast.clk_src_io_o"
+ output -name "clk_src_usb_val_o" -clock "ast.clk_src_usb_o"
+ output -name "usb_io_pu_cal_o" -clock "ast.clk_ast_tlul_i"
+ output -name "adc_d_o" -clock "ast.clk_ast_adc_i"
+ output -name "adc_d_val_o" -clock "ast.clk_ast_adc_i"
+ output -name "rng_val_o" -clock "ast.clk_ast_rng_i"
+ output -name "rng_b_o" -clock "ast.clk_ast_rng_i"
+ output -name "entropy_req_o" -clock "ast.clk_ast_es_i"
+ output -name "alert_req_o" -clock "ast.clk_ast_alert_i"
+ output -name "obs_ctrl_o" -clock "ast.clk_ast_tlul_i"
+ output -name "all_clk_byp_ack_o" -clock "ast.clk_src_io_o"
+ output -name "io_clk_byp_ack_o" -clock "ast.clk_src_io_o"
+ output -name "flash_bist_en_o" -clock "ast.clk_ast_tlul_i"
+ output -name "dpram_rmf_o" -clock "ast.clk_ast_tlul_i"
+ output -name "dpram_rml_o" -clock "ast.clk_ast_tlul_i"
+ output -name "spram_rm_o" -clock "ast.clk_ast_tlul_i"
+ output -name "sprgf_rm_o" -clock "ast.clk_ast_tlul_i"
+ output -name "sprom_rm_o" -clock "ast.clk_ast_tlul_i"
+ output -name "dft_scan_md_o" -clock "ast.clk_ast_tlul_i"
+ output -name "scan_shift_en_o" -clock "ast.clk_ast_tlul_i"
+ output -name "scan_reset_no" -clock "ast.clk_ast_tlul_i"
+ clock -name "clk_src_sys_o" -domain domain7 -tag SG_AUTO_TAG_7
+ clock -name "clk_src_aon_o" -domain domain8 -tag SG_AUTO_TAG_8
+ clock -name "clk_src_io_o" -domain domain_9 -tag SG_AUTO_TAG_9
+ clock -name "clk_src_usb_o" -domain domain_10 -tag SG_AUTO_TAG_10
+ reset -name "fla_alert_src_i" -value 0
+ reset -name "otp_alert_src_i" -value 0
+ quasi_static -name "padmux2ast_i"
+ quasi_static -name "ast2padmux_o"
+ quasi_static -name "ast2pad_t0_ao"
+ quasi_static -name "ast2pad_t1_ao"
+
+block_file_decompiled_end
+}
diff --git a/src/ast/doc/ast_regs.html b/src/ast/doc/ast_regs.html
new file mode 100644
index 0000000..0d6a1a4
--- /dev/null
+++ b/src/ast/doc/ast_regs.html
@@ -0,0 +1,773 @@
+
+
+
+ Summary
+
+
+ Name Offset Length Description
+
+ ast.REGA0 0x0 4 AST Register 0 for OTP/ROM Write Testing
+
+ ast.REGA1 0x4 4 AST 1 Register for OTP/ROM Write Testing
+
+ ast.REGA2 0x8 4 AST 2 Register for OTP/ROM Write Testing
+
+ ast.REGA3 0xc 4 AST 3 Register for OTP/ROM Write Testing
+
+ ast.REGA4 0x10 4 AST 4 Register for OTP/ROM Write Testing
+
+ ast.REGA5 0x14 4 AST 5 Register for OTP/ROM Write Testing
+
+ ast.REGA6 0x18 4 AST 6 Register for OTP/ROM Write Testing
+
+ ast.REGA7 0x1c 4 AST 7 Register for OTP/ROM Write Testing
+
+ ast.REGA8 0x20 4 AST 8 Register for OTP/ROM Write Testing
+
+ ast.REGA9 0x24 4 AST 9 Register for OTP/ROM Write Testing
+
+ ast.REGA10 0x28 4 AST 10 Register for OTP/ROM Write Testing
+
+ ast.REGA11 0x2c 4 AST 11 Register for OTP/ROM Write Testing
+
+ ast.REGA12 0x30 4 AST 13 Register for OTP/ROM Write Testing
+
+ ast.REGA13 0x34 4 AST 13 Register for OTP/ROM Write Testing
+
+ ast.REGA14 0x38 4 AST 14 Register for OTP/ROM Write Testing
+
+ ast.REGA15 0x3c 4 AST 15 Register for OTP/ROM Write Testing
+
+ ast.REGA16 0x40 4 AST 16 Register for OTP/ROM Write Testing
+
+ ast.REGA17 0x44 4 AST 17 Register for OTP/ROM Write Testing
+
+ ast.REGA18 0x48 4 AST 18 Register for OTP/ROM Write Testing
+
+ ast.REGA19 0x4c 4 AST 19 Register for OTP/ROM Write Testing
+
+ ast.REGA20 0x50 4 AST 20 Register for OTP/ROM Write Testing
+
+ ast.REGA21 0x54 4 AST 21 Register for OTP/ROM Write Testing
+
+ ast.REGA22 0x58 4 AST 22 Register for OTP/ROM Write Testing
+
+ ast.REGA23 0x5c 4 AST 23 Register for OTP/ROM Write Testing
+
+ ast.REGA24 0x60 4 AST 24 Register for OTP/ROM Write Testing
+
+ ast.REGA25 0x64 4 AST 25 Register for OTP/ROM Write Testing
+
+ ast.REGA26 0x68 4 AST 26 Register for OTP/ROM Write Testing
+
+ ast.REGA27 0x6c 4 AST 27 Register for OTP/ROM Write Testing
+
+ ast.REGA28 0x70 4 AST 28 Register for OTP/ROM Write Testing
+
+ ast.REGA29 0x74 4 AST 29 Register for OTP/ROM Write Testing
+
+ ast.REGA30 0x78 4 AST 30 Register for OTP/ROM Write Testing
+
+ ast.REGA31 0x7c 4 AST 31 Register for OTP/ROM Write Testing
+
+ ast.REGA32 0x80 4 AST 32 Register for OTP/ROM Write Testing
+
+ ast.REGA33 0x84 4 AST 33 Register for OTP/ROM Write Testing
+
+ ast.REGA34 0x88 4 AST 34 Register for OTP/ROM Write Testing
+
+ ast.REGA35 0x8c 4 AST 35 Register for OTP/ROM Write Testing
+
+ ast.REGA36 0x90 4 AST 36 Register for OTP/ROM Write Testing
+
+ ast.REGA37 0x94 4 AST 37 Register for OTP/ROM Write Testing
+
+ ast.REGAL 0x98 4 AST Last Register for OTP/ROM Write Testing
+
+ ast.REGB_0 0x200 4 AST Registers Array-B to set address space size
+
+ ast.REGB_1 0x204 4 AST Registers Array-B to set address space size
+
+ ast.REGB_2 0x208 4 AST Registers Array-B to set address space size
+
+ ast.REGB_3 0x20c 4 AST Registers Array-B to set address space size
+
+ ast.REGB_4 0x210 4 AST Registers Array-B to set address space size
+
+
+
+
+ AST Register 0 for OTP/ROM Write Testing
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 ro 0x0 reg32
32-bit Register
+
+
+
+
+
+ AST 1 Register for OTP/ROM Write Testing
+ Reset default = 0x1, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 ro 0x1 reg32
32-bit Register
+
+
+
+
+
+ AST 2 Register for OTP/ROM Write Testing
+ Reset default = 0x2, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x2 reg32
32-bit Register
+
+
+
+
+
+ AST 3 Register for OTP/ROM Write Testing
+ Reset default = 0x3, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x3 reg32
32-bit Register
+
+
+
+
+
+ AST 4 Register for OTP/ROM Write Testing
+ Reset default = 0x4, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x4 reg32
32-bit Register
+
+
+
+
+
+ AST 5 Register for OTP/ROM Write Testing
+ Reset default = 0x5, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x5 reg32
32-bit Register
+
+
+
+
+
+ AST 6 Register for OTP/ROM Write Testing
+ Reset default = 0x6, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x6 reg32
32-bit Register
+
+
+
+
+
+ AST 7 Register for OTP/ROM Write Testing
+ Reset default = 0x7, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x7 reg32
32-bit Register
+
+
+
+
+
+ AST 8 Register for OTP/ROM Write Testing
+ Reset default = 0x8, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x8 reg32
32-bit Register
+
+
+
+
+
+ AST 9 Register for OTP/ROM Write Testing
+ Reset default = 0x9, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x9 reg32
32-bit Register
+
+
+
+
+
+ AST 10 Register for OTP/ROM Write Testing
+ Reset default = 0xa, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xa reg32
32-bit Register
+
+
+
+
+
+ AST 11 Register for OTP/ROM Write Testing
+ Reset default = 0xb, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xb reg32
32-bit Register
+
+
+
+
+
+ AST 13 Register for OTP/ROM Write Testing
+ Reset default = 0xc, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xc reg32
32-bit Register
+
+
+
+
+
+ AST 13 Register for OTP/ROM Write Testing
+ Reset default = 0xd, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xd reg32
32-bit Register
+
+
+
+
+
+ AST 14 Register for OTP/ROM Write Testing
+ Reset default = 0xe, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xe reg32
32-bit Register
+
+
+
+
+
+ AST 15 Register for OTP/ROM Write Testing
+ Reset default = 0xf, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0xf reg32
32-bit Register
+
+
+
+
+
+ AST 16 Register for OTP/ROM Write Testing
+ Reset default = 0x10, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x10 reg32
32-bit Register
+
+
+
+
+
+ AST 17 Register for OTP/ROM Write Testing
+ Reset default = 0x11, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x11 reg32
32-bit Register
+
+
+
+
+
+ AST 18 Register for OTP/ROM Write Testing
+ Reset default = 0x12, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x12 reg32
32-bit Register
+
+
+
+
+
+ AST 19 Register for OTP/ROM Write Testing
+ Reset default = 0x13, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x13 reg32
32-bit Register
+
+
+
+
+
+ AST 20 Register for OTP/ROM Write Testing
+ Reset default = 0x14, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x14 reg32
32-bit Register
+
+
+
+
+
+ AST 21 Register for OTP/ROM Write Testing
+ Reset default = 0x15, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x15 reg32
32-bit Register
+
+
+
+
+
+ AST 22 Register for OTP/ROM Write Testing
+ Reset default = 0x16, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x16 reg32
32-bit Register
+
+
+
+
+
+ AST 23 Register for OTP/ROM Write Testing
+ Reset default = 0x17, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x17 reg32
32-bit Register
+
+
+
+
+
+ AST 24 Register for OTP/ROM Write Testing
+ Reset default = 0x18, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x18 reg32
32-bit Register
+
+
+
+
+
+ AST 25 Register for OTP/ROM Write Testing
+ Reset default = 0x19, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x19 reg32
32-bit Register
+
+
+
+
+
+ AST 26 Register for OTP/ROM Write Testing
+ Reset default = 0x1a, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x1a reg32
32-bit Register
+
+
+
+
+
+ AST 27 Register for OTP/ROM Write Testing
+ Reset default = 0x1b, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x1b reg32
32-bit Register
+
+
+
+
+
+ AST 28 Register for OTP/ROM Write Testing
+ Reset default = 0x1c, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 ro 0x1c reg32
32-bit Register
+
+
+
+
+
+ AST 29 Register for OTP/ROM Write Testing
+ Reset default = 0x1d, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x1d reg32
32-bit Register
+
+
+
+
+
+ AST 30 Register for OTP/ROM Write Testing
+ Reset default = 0x1e, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x1e reg32
32-bit Register
+
+
+
+
+
+ AST 31 Register for OTP/ROM Write Testing
+ Reset default = 0x1f, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x1f reg32
32-bit Register
+
+
+
+
+
+ AST 32 Register for OTP/ROM Write Testing
+ Reset default = 0x20, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x20 reg32
32-bit Register
+
+
+
+
+
+ AST 33 Register for OTP/ROM Write Testing
+ Reset default = 0x21, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x21 reg32
32-bit Register
+
+
+
+
+
+ AST 34 Register for OTP/ROM Write Testing
+ Reset default = 0x22, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x22 reg32
32-bit Register
+
+
+
+
+
+ AST 35 Register for OTP/ROM Write Testing
+ Reset default = 0x23, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x23 reg32
32-bit Register
+
+
+
+
+
+ AST 36 Register for OTP/ROM Write Testing
+ Reset default = 0x24, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x24 reg32
32-bit Register
+
+
+
+
+
+ AST 37 Register for OTP/ROM Write Testing
+ Reset default = 0x25, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 rw 0x25 reg32
32-bit Register
+
+
+
+
+
+ AST Last Register for OTP/ROM Write Testing
+ Reset default = 0x26, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32
+
+Bits Type Reset Name Description 31:0 wo 0x26 reg32
32-bit Register
+
+
+
+
+
+ AST Registers Array-B to set address space size
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32_0...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32_0
+
+Bits Type Reset Name Description 31:0 rw 0x0 reg32_0
32-bit Register
+
+
+
+
+
+ AST Registers Array-B to set address space size
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32_1...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32_1
+
+Bits Type Reset Name Description 31:0 rw 0x0 reg32_1
For REGB1
+
+
+
+
+
+ AST Registers Array-B to set address space size
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32_2...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32_2
+
+Bits Type Reset Name Description 31:0 rw 0x0 reg32_2
For REGB2
+
+
+
+
+
+ AST Registers Array-B to set address space size
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32_3...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32_3
+
+Bits Type Reset Name Description 31:0 rw 0x0 reg32_3
For REGB3
+
+
+
+
+
+ AST Registers Array-B to set address space size
+ Reset default = 0x0, mask 0xffffffff
+
+
+31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 reg32_4...
+
+15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ...reg32_4
+
+Bits Type Reset Name Description 31:0 rw 0x0 reg32_4
For REGB4
+
diff --git a/src/ast/doc/interfaces.md b/src/ast/doc/interfaces.md
new file mode 100644
index 0000000..724a06d
--- /dev/null
+++ b/src/ast/doc/interfaces.md
@@ -0,0 +1,129 @@
+# Interface Signals
+
+## Table notes
+
+### Signal naming conventions used in this document
+
+Naming here is compliant with the OpenTitan [names](https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md#naming) and [suffixes](https://github.com/lowRISC/style-guides/blob/master/VerilogCodingStyle.md#suffixes) specification, with the following augmentations:
+
+- Clock signals start with `clk_*`
+- Inputs and outputs are marked with `*_i/o`
+- Analog signals are marked with `*_a`
+- Non-core level signals are marked with `*_h`
+- Dual and negative polarity signals are marked with `*_p/n`
+
+### Clock domains column
+
+| name | freq | description |
+|-------|--------------|-----------------------------------------------------------------------------------------|
+| sys | Up to 100MHz | jittery system clock. Mainly used for high performance and security modules. |
+| usb | 48MHz | USB module source clock. |
+| aon | 200kHz | Always-on domain clock. The only active clock while chip is in deep-sleep power states. |
+| async | | *It does not matter what domain drives the signal* |
+
+- Input clocks: Each functional interface has a dedicated clock named after the interface.
+
+## Table
+
+| Signal Name / Affiliation | I/O | Width/ Type/ Struct | Clock Domain | Description |
+|--------------------------------------------------------------------------|-----|---------------------------|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **Power Supplies** | | | | |
+| VCC | I | | | VCC is the main power supply. It is driven from an external source and is used to power the internal VCMAIN and VCAON power domains. VCC must always be present when the device is functioning; VCC is also used to power a number of pads that must be always on when the device is functioning. |
+| AVCC | I | | | Analog blocks power supply. AVCC and AGND are analog supply and ground signals for the AST analog functions. They mainly serve for ADC and USB clock functionality. AVCC is expected to be driven by the same voltage regulator and have similar power availability as VCC. AVCC and AGND have dedicated package balls/pins. In the future, package pins sharing with VCC and GND may be considered based on post-silicon test results. |
+| VCMAIN | O | | | Main core power, driven by internal capless voltage regulator |
+| VCAON | O | | | Core voltage power for always-on domain (same voltage range as VCMAIN) |
+| VIOA | I | | | IO supply, powering a set of pads. Unlike VCC, the IO supplies can be turned off by external components and the device will continue to function, the unpowered pads however, become inoperable. |
+| VIOB | I | | | Same as VIOA, but for a different set of pads. |
+| GND | I | | | Ground |
+| AGND | I | | | Analog ground (see AVCC for further details) |
+| **Power Control and Reset** | | | | |
+| otp_power_seq_i | I | 2 | async | Contains the power sequencing signals coming from the OTP macro. |
+| otp_power_seq_h_o | O | 2 | async | Contains the power sequencing signals going to the OTP macro (VCC domain). |
+| flash_power_down_h_o | O | 1 | async | Connected to flash (VCC domain). Used for flash power management. |
+| flash_power_ready_h_o | O | 1 | async | Connected to flash (VCC domain). Used for flash power management. |
+| vcmain_pok (*aka* vcmain_pok_o) | O | ast_pwst | async | Main core power-exist indication. Used by the OpenTitan power manager to determine the state of the main digital supply during power up and power down sequencing. |
+| vcaon_pok (*aka* vcaon_pok_o) | O | ast_pwst | async | Always-on power-exist indication. Used by the OpenTitan power manager for power-on reset root. |
+| vioa_pok (*aka* vioa_pok_o) | O | ast_pwst | async | VIOA power-exist indications. Used as a power-OK status signal. |
+| viob_pok (*aka* viob_pok_o) | O | ast_pwst | async | VIOB power-exist indication. Used as a power-OK status signal. |
+| por_ni | I | 1 | async | Power on reset input signal to AST. See Resets section for further details |
+| main_pd_ni | I | 1 | aon | Power down enable for main core power. 0: main core power is down (deep-sleep state). 1: main core power is up. It may take up to 200 uS from this signal transition to power switching completion by AST (not including boot time and so). Note that flash must be prepared for power down before this signal is asserted. |
+| main_env_iso_en_i | I | 1 | aon | Preliminary indication of VCMAIN isolation signal (main_iso_en) assertion. It is used by AST logic to latch interface signals which may no longer be valid after main_iso_en is active. This signal must be set at least 30ns before main_iso_en is active and must remain active at least 30ns after main_iso_en is no longer active. Note that main_iso_en itself asserts ahead of main_pd_ni. ie, the pwrmgr will set this signal to '1' before requesting the power be turned off. Similar, on power-on, the isolation is only released after power is restored and all powered off modules have been reset. |
+| ast_init_done_o | O | mubi4 | tlul | When set, it indicates that the AST initialization was performed. Note that this signal may not be set while the chip is in TEST* or RMA lifecycle states. |
+| **Clock Outputs** | | | | |
+| clk_src_sys_o | O | 1 | sys | 100 MHz clock with jitter (main clock domain). Used as the main system clock. |
+| clk_src_sys_val_o | O | 1 | async | System clock valid. Used as "ack" signals for the power manager |
+| clk_src_sys_en_i | I | 1 | aon | System clock enable. |
+| clk_src_sys_jen_i | I | mubi4 | async | System clock jitter enable |
+| clk_src_aon_o | O | 1 | aon | 200 KHz clock for always-on domain. |
+| clk_src_aon_val_o | O | 1 | async | aon clock valid |
+| clk_src_usb_o | O | 1 | usb | 48 MHz clock for USB. To comply with USB full speed clock specification, it supports frequency accuracy of +/-2500 ppm when usb_ref_pulse_i is available and +/-3% otherwise. It may take up to 50 ms for this clock to reach the accuracy target from the time 'usb_ref_pulse_i' is available. USB clock calibration interface is further detailed here. |
+| clk_src_usb_val_o | O | 1 | async | USB clock valid |
+| clk_src_usb_en_i | I | 1 | aon | USB clock enable |
+| usb_ref_pulse_i | I | 1 | usb | USB reference pulse +/-500ppm. When valid, it is expected to pulse for one usb clock cycle every 1ms. |
+| usb_ref_val_i | I | 1 | usb | USB reference valid. This bit serves as a valid signal for the usb_ref_pulse_i signal. It is set to 1 after the first valid usb_ref_pulse_i event is detected and remains high as long as usb_ref_pulse_i continues to behave as expected (per usb_ref_pulse description). Once usb_ref_pulse deviates from its expected behavior, usb_ref_val_i immediately negates to 0 and remains 0 until after the next valid usb_ref_val pulse. |
+| clk_src_io_o | O | 1 | io | 96 MHz clock with +/-3% frequency accuracy. Used for peripherals that require a fixed frequency, for example SPI and UART |
+| clk_src_io_val_o | O | 1 | async | I/O and timer clock valid. Used as "ack" signals for the Power manager. |
+| clk_src_io_en_i | I | 1 | aon | I/O and timer clock enable |
+| clk_src_io_48m_o | O | mubi4 | aon | Clock frequency indicator. When set, it indicates that the clk_src_io_o's frequency is 48 MHz; otherwise, it is 96 MHz. |
+| **Clock & Reset Inputs** | | | | |
+| clk_ast_adc_i | I | 1 | adc | ADC interface clock input |
+| clk_ast_rng_i | I | 1 | rng | RNG interface clock input |
+| clk_ast_usb_i | I | 1 | usb | USB reference interface clock input |
+| clk_ast_es_i | I | 1 | es | Entropy source interface clock input |
+| clk_ast_alert_i | I | 1 | alert | Alert interface clock input |
+| clk_ast_tlul_i | I | 1 | tlul | TLUL bus interface clock input |
+| rst_ast_adc_ni | I | 1 | adc | ADC interface reset (active low) |
+| rst_ast_rng_ni | I | 1 | rng | RNG interface reset (active low) |
+| rst_ast_usb_ni | I | 1 | usb | USB reference interface reset (active low) |
+| rst_ast_es_ni | I | 1 | es | Entropy source interface reset (active low) |
+| rst_ast_alert_ni | I | 1 | alert | Alert interface interface reset (active low) |
+| rst_ast_tlul_ni | I | 1 | tlul | TLUL bus reference interface reset (active low) |
+| **Register Access Interface** | | | | |
+| tlul | I/O | tl_* | tlul | TLUL bus interface. Mainly used for configuration, calibration and trimming. At boot time, data is copied from non-volatile storage into AST registers by the SW boot entity. This interface has no further use beyond this point. Runtime interaction with AST is performed by other signals as described in this document. |
+| **Analog modules** | | | | |
+| adc_a0_ai | I | awire | async | ADC analog input channels 0 to be measured. Signal type is awire (see ana_pkg.sv) |
+| adc_a1_ai | I | awire | async | ADC analog input channels 1 to be measured. Signal type is awire (see ana_pkg.sv) |
+| adc_d_o | O | 10 | adc | ADC digital data |
+| adc_chnsel_i | I | 2 | adc | ADC input channel select (one hot). No more than one channel should be selected at a time. Any change in 'adc_chnsel_i' value must go through all '0'. Changing 'adc_chnsel_i' from '0' value to non-'0' value starts an ADC conversion. |
+| adc_d_val_o | O | 1 | adc | ADC digital data valid |
+| adc_pd_i | I | 1 | adc | ADC power down - for saving power during deep-sleep state between measurements. When this signal is high, ADC module is in off state, otherwise, it is in active state. For further description about adc_pd_i usage, see ADC module description below. |
+| entropy_req_o | O | edn_req | es | Request entropy from EDN |
+| entropy_rsp_i | I | edn_rsp | es | EDN entropy request acknowledgement and data. |
+| rng_en_i | I | 1 | rng | Input from controller to enable RNG |
+| rng_fips_i | I | 1 | rng | Indicates that the AST RNG module is requested to output FIPS SP-800-90B grade RNG bits. This may, but not necessarily affect bit-rate. This bit is a placeholder. The use of this signal inside AST is TBD. |
+| rng_val_o | O | 1 | rng | RNG bit valid. This is a per-transaction valid. rng_b_o can be sampled whenever this bit is high. |
+| rng_b_o | O | 4 | rng | RNG digital bit streams. The downstream controller of this signal should sample the rng_b_o whenever rng_val_o is high. |
+| **Countermeasures and Alerts** | | | | |
+| alert_req_o | O | ast_alert_req | alert | Alert events. There are 11 such events. The alerts are associated with countermeasures like Active shield, clock glitch detector, voltage glitch detector, temperature sensor, and others. |
+| alert_rsp_i | I | ast_alert_rsp | alert | This structure contains acknowledge signals and force-trigger by software signals for each alert event. The acknowledge signals are assumed to be synchronous pulses. |
+| **Trimming Test and Debug** | | | | |
+| dft_scan_md_o | O | mubi4 | | Scan mode indication signal. Controllable only when DFT features are enabled (Test and RMA states). Otherwise, these signals are grounded to 0. |
+| scan_shift_en_o | O | 1 | | Scan shift enable |
+| scan_reset_no | O | 1 | | Scan reset |
+| clk_ast_ext_i | I | 1 | async | External clock. While AST generates most of its clocks on-die, it still needs an external clock for clock calibration and first flash/OTP programming. Clock calibration: AST clock sources are inaccurate by default and must be calibrated prior to use. The results of the calibration are stored in OTP and reloaded by software upon system boot. First Flash / OTP programming: AST clock sources are inaccurate by default and may be out of range for initial flash and OTP programming. In this situation, an external clock may be required for initial programming such that a software image can be loaded to calibrate clocks and advance life cycle. |
+| dft_strap_test_i | I | dft_strap_test_req | async | Strap inputs for DFT selection |
+| flash_bist_en_o | O | mubi4 | | Flash BIST enable |
+| vcc_supp_i | I | 1 | async | VCC Supply Test. (supply indication for DV purposes). In FPGA Verilog view, the respective POK signal follows this signal. In other Verilog views this signal should be connected to constant '1' and will be disconnected inside the AST. |
+| vcmain_supp_i | I | 1 | async | VCMAIN Supply Test. (supply indication for DV purposes). In FPGA Verilog view, the respective POK signal follows this signal. In other Verilog views this signal should be connected to constant '1' and will be disconnected inside the AST. |
+| vcaon_supp_i | I | 1 | async | VCAON Supply Test. (supply indication for DV purposes). In FPGA Verilog view, the respective POK signal follows this signal. In other Verilog views this signal should be connected to constant '1' and will be disconnected inside the AST. |
+| vioa_supp_i | I | 1 | async | VIOA Supply Test. (supply indication for DV purposes). In FPGA Verilog view, the respective POK signal follows this signal. In other Verilog views this signal should be connected to constant '1' and will be disconnected inside the AST. |
+| viob_supp_i | I | 1 | async | VIOB Supply Test. (supply indication for DV purposes). In FPGA Verilog view, the respective POK signal follows this signal. In other Verilog views this signal should be connected to constant '1' and will be disconnected inside the AST. |
+| ast2pad_t0_ao, ast2pad_t1_ao | I/O | async | | Analog debug signals. These signals should be connected directly to chip PADs. They can share PADs with functional signals but when they are used for their analog debug function, the functional I/O must be in tri-state. |
+| dpram_rmf_o, dpram_rml_o, spram_rm_o, sprgf_rm_o, sprom_rm_o | O | dpm_rm | async | RAM/ROM Read-write Margin Trimming |
+| padmux2ast_i | I | 6 | async | Digital debug input signals (routed to pin mux). These signals are controllable only when DFT features are enabled (Test and RMA states). Otherwise, these signals are grounded to 0. |
+| ast2padmux_o | O | 9 | async | Digital debug output signals (routed to pin mux). These signals are only outputted when DFT features are enabled (Test and RMA states). Otherwise, these signals are grounded to 0. |
+| usb_io_pu_cal_o | O | 20 | async | USB I/O calibration and trimming |
+| io_clk_byp_req_i | I | mubi4 | async | External clock mux override request for OTP bootstrap purposes. AST responds to the request by setting io_clk_byp_ack_o to 'On'. When this bit is set and ack was received, clk_ast_ext_i serves as the io_clk clock root. Note: When 'On' (after ack), clk_src_io_o clock max frequency is limited to 50 MHz |
+| io_clk_byp_ack_o | O | mubi4 | async | AST response to io_clk_byp_req_i. The ack is set to 'On' after clock switching function is performed. |
+| all_clk_byp_req_i | I | mubi4 | async | External clock mux override request for OTP bootstrap purposes. AST responds to the request by setting io_clk_byp_ack_o to 'On'. When this bit is set and ack was received, clk_ast_ext_i serves as the io_clk clock root. Note: When 'On' (after ack), clk_src_io_o clock max frequency is limited to 50 MHz |
+| all_clk_byp_ack_o | O | mubi4 | async | AST response to io_clk_byp_req_i. The ack is set to 'On' after clock switching function is performed. |
+| ext_freq_is_96m_i | I | mubi4 | async | External clock frequency indication to AST. When set, it indicates that the external clock is 96MHz. |
+| lc_dft_en_i | I | lc_tx | async | DFT enable |
+| fla_obs_i | I | 8 | async | Flash observe bus for debug |
+| otp_bos_i | I | 8 | async | OTP observe bus for debug |
+| usb_obs_i | I | 1 | async | USB differential receiver output observe for debug |
+| otm_obs_i | I | 8 | async | OpenTitan modules observe bus for debug (optional) |
+| obs_ctrl_o | O | ast_obs_ctrl | async | Observability control structure. It contains observability module selection, signal group selection and enable logic. Open source modules may choose to use this infrastructure for selecting and gating observability signals to be driven into otm_obs_i bus. Whether to actually use this interface or not for open source modules observability is a project decision. |
+| sns_clks_i | I | clkmgr_out | async | Clocks observability |
+| sns_rst_i | I | rstmgr_out_t | async | Resets observability |
+| sns_spi_ext_clk_i | I | 1 | async | SPI external clock observability |
diff --git a/src/ast/doc/top_diagram.png b/src/ast/doc/top_diagram.png
new file mode 100644
index 0000000..6fbe3c8
Binary files /dev/null and b/src/ast/doc/top_diagram.png differ
diff --git a/src/ast/lib/ast.lib b/src/ast/lib/ast.lib
new file mode 100644
index 0000000..b00839d
--- /dev/null
+++ b/src/ast/lib/ast.lib
@@ -0,0 +1,98919 @@
+brary("ast") {
+
+ technology (cmos) ;
+ delay_model : table_lookup ;
+ library_features ( report_delay_calculation ) ;
+ date : "Mon Oct 3 13:12:25 2022" ;
+ revision : "P-2019.03-SP3" ;
+ nom_process : 1.000 ;
+ nom_voltage : 0.990 ;
+ nom_temperature : -40.000 ;
+ operating_conditions( "SSG0P99VN40C" ) {
+ process : 1.0000 ;
+ voltage : 0.9900 ;
+ temperature : -40.0000 ;
+ } /* current design opcond */
+ default_operating_conditions : "SSG0P99VN40C" ;
+ voltage_unit : "1V" ;
+ time_unit : "1ns" ;
+ capacitive_load_unit (1.000000, pf);
+ slew_derate_from_library : 0.5000 ;
+ slew_lower_threshold_pct_rise : 30.0000 ;
+ slew_lower_threshold_pct_fall : 30.0000 ;
+ slew_upper_threshold_pct_rise : 70.0000 ;
+ slew_upper_threshold_pct_fall : 70.0000 ;
+ input_threshold_pct_rise : 50.0000 ;
+ input_threshold_pct_fall : 50.0000 ;
+ output_threshold_pct_rise : 50.0000 ;
+ output_threshold_pct_fall : 50.0000 ;
+ k_process_cell_rise : 0.000000;
+ k_process_cell_fall : 0.000000;
+ k_volt_cell_rise : 0.000000;
+ k_volt_cell_fall : 0.000000;
+ k_temp_cell_rise : 0.000000;
+ k_temp_cell_fall : 0.000000;
+ k_process_rise_transition : 0.000000;
+ k_process_fall_transition : 0.000000;
+ k_volt_rise_transition : 0.000000;
+ k_volt_fall_transition : 0.000000;
+ k_temp_rise_transition : 0.000000;
+ k_temp_fall_transition : 0.000000;
+ default_fanout_load : 1.000000;
+ default_inout_pin_cap : 1.000000;
+ default_input_pin_cap : 1.000000;
+ default_output_pin_cap : 0.000000;
+ current_unit : 1mA;
+ pulling_resistance_unit : "1kohm";
+ comment : "PrimeTime extracted Model." ;
+
+ define(min_delay_flag, timing, boolean);
+ define(internal_noise_peak_time_below_high, pin, float);
+ define(internal_noise_width_above_low, pin, float);
+ define(original_pin, pin, string);
+ define(internal_noise_peak_time_above_low, pin, float);
+ define(internal_noise_width_below_high, pin, float);
+ define(internal_noise_height_above_low, pin, float);
+ define(internal_noise_height_below_high, pin, float);
+
+
+
+/* SCALAR table template is built-in */
+
+/* 2-D table template f(in_trans, out_cap) */
+lu_table_template( f_itrans_ocap ) {
+ variable_1 : input_net_transition;
+ variable_2 : total_output_net_capacitance;
+ index_1 (" 0.0000, 1.0000 ");
+ index_2 (" 0.0000, 1.0000 ");
+}
+
+/* 2-D table template f(d_trans, c_trans) */
+lu_table_template( f_dtrans_ctrans ) {
+ variable_1 : constrained_pin_transition;
+ variable_2 : related_pin_transition;
+ index_1 (" 0.0000, 1.0000 ");
+ index_2 (" 0.0000, 1.0000 ");
+}
+
+/* 3-D table template f(i_trans, o_cap, r_cap) */
+lu_table_template( f_itrans_ocap_rcap ) {
+ variable_1 : input_net_transition;
+ variable_2 : total_output_net_capacitance;
+ variable_3 : related_out_total_output_net_capacitance;
+ index_1 (" 0.0000, 1.0000 ");
+ index_2 (" 0.0000, 1.0000 ");
+ index_3 (" 0.0000, 1.0000 ");
+}
+
+type ( BUS109_type0 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 109 ;
+ bit_from : 108 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS66_type1 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 66 ;
+ bit_from : 65 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS27_type2 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 27 ;
+ bit_from : 26 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS56_type3 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 56 ;
+ bit_from : 55 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS5_type4 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 5 ;
+ bit_from : 4 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS2_type5 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 2 ;
+ bit_from : 1 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS4_type6 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 4 ;
+ bit_from : 3 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS20_type7 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 20 ;
+ bit_from : 19 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS10_type8 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 10 ;
+ bit_from : 9 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS34_type9 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 34 ;
+ bit_from : 33 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS1_type10 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 1 ;
+ bit_from : 0 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS52_type11 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 52 ;
+ bit_from : 51 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS26_type12 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 26 ;
+ bit_from : 25 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS3_type13 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 3 ;
+ bit_from : 2 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS8_type14 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 8 ;
+ bit_from : 7 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS12_type15 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 12 ;
+ bit_from : 11 ;
+ bit_to : 0 ;
+} /* end of type */
+type ( BUS9_type16 ) {
+ base_type : array ;
+ data_type : bit ;
+ bit_width : 9 ;
+ bit_from : 8 ;
+ bit_to : 0 ;
+} /* end of type */
+
+cell( ast ) {
+ area : 751665.937500 ;
+ dont_use : true ;
+ dont_touch : true ;
+ interface_timing : true;
+ timing_model_type : "extracted";
+ is_macro_cell : true;
+
+short(tl_o[64], tl_o[63]);
+
+short(tl_o[64], tl_o[61]);
+
+short(tl_o[64], tl_o[60]);
+
+short(tl_o[64], tl_o[59]);
+
+short(tl_o[64], tl_o[48]);
+
+short(ast_pwst_o[3], ast_pwst_h_o[3]);
+
+short(ast_pwst_o[2], ast_pwst_h_o[2]);
+
+short(ast_pwst_o[1], ast_pwst_h_o[1]);
+
+short(ast_pwst_o[0], ast_pwst_h_o[0]);
+bus ( tl_i ) {
+
+ bus_type : BUS109_type0 ;
+ direction : input ;
+
+pin("tl_i[108]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001908 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[108];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.014905, 5.968750, 5.938533, 5.927176, 5.940784",\
+ "6.095888, 6.049733, 6.019516, 6.008159, 6.021767",\
+ "6.180377, 6.134222, 6.104005, 6.092648, 6.106256",\
+ "6.321913, 6.275758, 6.245541, 6.234183, 6.247791",\
+ "6.558708, 6.512553, 6.482336, 6.470979, 6.484587");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.829596, 4.783441, 4.753223, 4.741866, 4.755474",\
+ "4.919121, 4.872966, 4.842749, 4.831391, 4.844999",\
+ "5.021051, 4.974896, 4.944679, 4.933322, 4.946930",\
+ "5.203711, 5.157556, 5.127338, 5.115981, 5.129589",\
+ "5.532049, 5.485894, 5.455677, 5.444320, 5.457928");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[108]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.214260, -0.171883, -0.137304, -0.099668, 0.184188",\
+ "-0.301086, -0.258709, -0.224129, -0.186494, 0.097363",\
+ "-0.394315, -0.351937, -0.317358, -0.279723, 0.004134",\
+ "-0.557199, -0.514821, -0.480242, -0.442607, -0.158750",\
+ "-0.829713, -0.787336, -0.752757, -0.715121, -0.431265");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.264841, -0.198767, -0.140880, -0.098858, 0.121356",\
+ "-0.356827, -0.290753, -0.232866, -0.190843, 0.029370",\
+ "-0.463555, -0.397481, -0.339595, -0.297572, -0.077359",\
+ "-0.650171, -0.584097, -0.526210, -0.484188, -0.239846",\
+ "-0.884585, -0.842168, -0.807682, -0.768234, -0.461884");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[108]_hldr*/
+
+} /* end of pin tl_i[108] */
+
+pin("tl_i[107]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005151 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[107];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.052649, 5.006495, 4.976278, 4.964921, 4.978528",\
+ "5.141132, 5.094977, 5.064761, 5.053403, 5.067011",\
+ "5.243252, 5.197097, 5.166880, 5.155523, 5.169130",\
+ "5.444744, 5.398589, 5.368372, 5.357015, 5.370623",\
+ "5.884084, 5.837929, 5.807712, 5.796355, 5.809962");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.045798, 4.999643, 4.969427, 4.958069, 4.971677",\
+ "5.140346, 5.094191, 5.063974, 5.052617, 5.066224",\
+ "5.268656, 5.222501, 5.192284, 5.180927, 5.194534",\
+ "5.518216, 5.472061, 5.441844, 5.430487, 5.444095",\
+ "5.954391, 5.908237, 5.878020, 5.866663, 5.880270");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[107]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.187805, -0.145419, -0.110860, -0.072826, 0.215981",\
+ "-0.265352, -0.222966, -0.188407, -0.150372, 0.138434",\
+ "-0.358696, -0.316325, -0.281731, -0.244378, 0.035979",\
+ "-0.536472, -0.494140, -0.459456, -0.423841, -0.165061",\
+ "-0.854036, -0.811811, -0.776879, -0.746068, -0.546918");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.171733, -0.105842, -0.048217, -0.006266, 0.214402",\
+ "-0.262898, -0.197007, -0.139383, -0.097431, 0.123236",\
+ "-0.377606, -0.311610, -0.253836, -0.211843, 0.008564",\
+ "-0.589409, -0.523083, -0.464836, -0.422715, -0.203127",\
+ "-0.959255, -0.892271, -0.833079, -0.790704, -0.572752");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[107]_hldr*/
+
+} /* end of pin tl_i[107] */
+
+pin("tl_i[106]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004836 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[106];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.118081, 5.071926, 5.041709, 5.030352, 5.043960",\
+ "5.207886, 5.161731, 5.131514, 5.120157, 5.133764",\
+ "5.325253, 5.279098, 5.248881, 5.237524, 5.251131",\
+ "5.541330, 5.495175, 5.464959, 5.453601, 5.467209",\
+ "5.904454, 5.858299, 5.828083, 5.816725, 5.830333");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.110147, 5.063992, 5.033775, 5.022418, 5.036025",\
+ "5.198250, 5.152095, 5.121878, 5.110521, 5.124128",\
+ "5.332071, 5.285916, 5.255700, 5.244342, 5.257950",\
+ "5.577984, 5.531829, 5.501612, 5.490255, 5.503862",\
+ "5.995383, 5.949228, 5.919012, 5.907654, 5.921262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[106]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.198447, -0.132584, -0.074998, -0.033057, 0.187678",\
+ "-0.296196, -0.230332, -0.172747, -0.130806, 0.089930",\
+ "-0.398836, -0.332973, -0.275387, -0.233446, -0.012711",\
+ "-0.579500, -0.513636, -0.456051, -0.414110, -0.193375",\
+ "-0.884380, -0.818360, -0.760550, -0.718548, -0.498201");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.292019, -0.249633, -0.215074, -0.177056, 0.111552",\
+ "-0.374431, -0.332045, -0.297485, -0.259467, 0.029140",\
+ "-0.488086, -0.445700, -0.411141, -0.373122, -0.084515",\
+ "-0.684457, -0.642085, -0.607494, -0.570100, -0.289245",\
+ "-1.001110, -0.958772, -0.924101, -0.888239, -0.626398");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[106]_hldr*/
+
+} /* end of pin tl_i[106] */
+
+pin("tl_i[105]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003624 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[105];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.863893, 4.817738, 4.787521, 4.776164, 4.789771",\
+ "4.956792, 4.910637, 4.880420, 4.869063, 4.882670",\
+ "5.049713, 5.003558, 4.973341, 4.961984, 4.975592",\
+ "5.212534, 5.166379, 5.136162, 5.124805, 5.138412",\
+ "5.493520, 5.447365, 5.417148, 5.405791, 5.419398");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.894609, 4.848454, 4.818238, 4.806880, 4.820488",\
+ "4.991653, 4.945498, 4.915282, 4.903924, 4.917532",\
+ "5.091967, 5.045812, 5.015595, 5.004238, 5.017845",\
+ "5.268436, 5.222281, 5.192065, 5.180707, 5.194315",\
+ "5.577918, 5.531763, 5.501546, 5.490189, 5.503797");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[105]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.191328, -0.125448, -0.067841, -0.025894, 0.194803",\
+ "-0.284713, -0.218834, -0.161226, -0.119279, 0.101417",\
+ "-0.376971, -0.311091, -0.253484, -0.211536, 0.009160",\
+ "-0.536682, -0.470803, -0.413195, -0.371248, -0.150551",\
+ "-0.807364, -0.741369, -0.683595, -0.641603, -0.421195");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.219051, -0.176666, -0.142105, -0.104110, 0.184210",\
+ "-0.313450, -0.271065, -0.236504, -0.198509, 0.089812",\
+ "-0.408426, -0.366041, -0.331480, -0.293485, -0.005164",\
+ "-0.576090, -0.533704, -0.499144, -0.461149, -0.172828",\
+ "-0.853410, -0.811045, -0.776438, -0.739355, -0.462356");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[105]_hldr*/
+
+} /* end of pin tl_i[105] */
+
+pin("tl_i[104]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[104];
+} /* end of pin tl_i[104] */
+
+pin("tl_i[103]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[103];
+} /* end of pin tl_i[103] */
+
+pin("tl_i[102]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[102];
+} /* end of pin tl_i[102] */
+
+pin("tl_i[101]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002631 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[101];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.040158, 3.994009, 3.963793, 3.952436, 3.966046",\
+ "4.127818, 4.081669, 4.051453, 4.040096, 4.053706",\
+ "4.214727, 4.168579, 4.138362, 4.127005, 4.140615",\
+ "4.367462, 4.321313, 4.291097, 4.279740, 4.293350",\
+ "4.608571, 4.562422, 4.532206, 4.520849, 4.534459");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.240349, 4.194201, 4.163985, 4.152627, 4.166238",\
+ "4.323653, 4.277504, 4.247288, 4.235931, 4.249541",\
+ "4.439158, 4.393010, 4.362793, 4.351436, 4.365047",\
+ "4.634571, 4.588422, 4.558206, 4.546849, 4.560459",\
+ "4.954862, 4.908714, 4.878498, 4.867140, 4.880751");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[101]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[101]_hldr*/
+
+} /* end of pin tl_i[101] */
+
+pin("tl_i[100]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002123 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[100];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.031560, 3.985412, 3.955196, 3.943839, 3.957449",\
+ "4.118053, 4.071905, 4.041688, 4.030331, 4.043941",\
+ "4.209411, 4.163263, 4.133047, 4.121689, 4.135300",\
+ "4.373650, 4.327502, 4.297286, 4.285928, 4.299539",\
+ "4.639607, 4.593459, 4.563242, 4.551885, 4.565495");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.345016, 4.298868, 4.268651, 4.257294, 4.270905",\
+ "4.436058, 4.389909, 4.359693, 4.348336, 4.361946",\
+ "4.527231, 4.481082, 4.450866, 4.439509, 4.453119",\
+ "4.689745, 4.643597, 4.613381, 4.602024, 4.615634",\
+ "4.957426, 4.911277, 4.881061, 4.869704, 4.883314");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[100]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[100]_hldr*/
+
+} /* end of pin tl_i[100] */
+
+pin("tl_i[99]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[99];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[99]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[99]_hldr*/
+
+} /* end of pin tl_i[99] */
+
+pin("tl_i[98]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[98];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[98]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[98]_hldr*/
+
+} /* end of pin tl_i[98] */
+
+pin("tl_i[97]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[97];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[97]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[97]_hldr*/
+
+} /* end of pin tl_i[97] */
+
+pin("tl_i[96]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[96];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[96]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[96]_hldr*/
+
+} /* end of pin tl_i[96] */
+
+pin("tl_i[95]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[95];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[95]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[95]_hldr*/
+
+} /* end of pin tl_i[95] */
+
+pin("tl_i[94]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[94];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[94]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[94]_hldr*/
+
+} /* end of pin tl_i[94] */
+
+pin("tl_i[93]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[93];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[93]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[93]_hldr*/
+
+} /* end of pin tl_i[93] */
+
+pin("tl_i[92]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000562 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[92];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.202977, 0.157053, 0.126854, 0.115510, 0.129197",\
+ "0.287655, 0.241731, 0.211532, 0.200188, 0.213875",\
+ "0.378849, 0.332759, 0.302547, 0.291193, 0.304823",\
+ "0.542220, 0.495729, 0.465486, 0.454109, 0.467602",\
+ "0.818496, 0.771022, 0.740703, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.245106, 0.169786, 0.101633, 0.078675, 0.141673",\
+ "0.333057, 0.257736, 0.189583, 0.166625, 0.229623",\
+ "0.433433, 0.358121, 0.290014, 0.267131, 0.330810",\
+ "0.619112, 0.543823, 0.475835, 0.453147, 0.518594",\
+ "0.940670, 0.865438, 0.797763, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[92]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.058015, -0.018552, 0.287989",\
+ "-0.219595, -0.177177, -0.142692, -0.103229, 0.203312",\
+ "-0.310658, -0.268270, -0.233715, -0.195609, 0.094094",\
+ "-0.473587, -0.431270, -0.396549, -0.361659, -0.111869",\
+ "-0.749178, -0.707041, -0.671904, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.158345, -0.092411, -0.034724, 0.007245, 0.227804",\
+ "-0.246288, -0.180354, -0.122667, -0.080698, 0.139861",\
+ "-0.346722, -0.280644, -0.222751, -0.180726, 0.039476",\
+ "-0.532525, -0.466073, -0.407644, -0.365475, -0.146201",\
+ "-0.854381, -0.786954, -0.727126, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[92]_hldr*/
+
+} /* end of pin tl_i[92] */
+
+pin("tl_i[91]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001976 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[91];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.041809, 5.995654, 5.965437, 5.954080, 5.967688",\
+ "6.129841, 6.083686, 6.053469, 6.042112, 6.055719",\
+ "6.240180, 6.194025, 6.163808, 6.152451, 6.166058",\
+ "6.431971, 6.385816, 6.355599, 6.344242, 6.357849",\
+ "6.749926, 6.703771, 6.673554, 6.662197, 6.675805");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.036389, 5.990234, 5.960017, 5.948660, 5.962267",\
+ "6.118236, 6.072081, 6.041864, 6.030507, 6.044114",\
+ "6.243943, 6.197788, 6.167572, 6.156214, 6.169822",\
+ "6.470764, 6.424609, 6.394392, 6.383035, 6.396643",\
+ "6.863174, 6.817019, 6.786803, 6.775445, 6.789053");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[91]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.151672, -1.109295, -1.074716, -1.037080, -0.753224",\
+ "-1.243671, -1.201294, -1.166714, -1.129079, -0.845222",\
+ "-1.323829, -1.281452, -1.246872, -1.209237, -0.925380",\
+ "-1.441613, -1.399235, -1.364656, -1.327021, -1.043164",\
+ "-1.629556, -1.587178, -1.552599, -1.514964, -1.231107");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.146252, -1.103875, -1.069295, -1.031660, -0.747803",\
+ "-1.232066, -1.189688, -1.155109, -1.117473, -0.833617",\
+ "-1.316872, -1.274495, -1.239915, -1.202280, -0.918423",\
+ "-1.462124, -1.419747, -1.385167, -1.347532, -1.063675",\
+ "-1.705527, -1.663150, -1.628571, -1.590935, -1.307079");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[91]_hldr*/
+
+} /* end of pin tl_i[91] */
+
+pin("tl_i[90]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003090 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[90];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.559815, 5.513660, 5.483444, 5.472086, 5.485694",\
+ "5.649643, 5.603488, 5.573271, 5.561914, 5.575521",\
+ "5.741996, 5.695841, 5.665624, 5.654267, 5.667874",\
+ "5.908573, 5.862418, 5.832201, 5.820844, 5.834452",\
+ "6.303185, 6.257030, 6.226814, 6.215456, 6.229064");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.570656, 5.524501, 5.494284, 5.482927, 5.496534",\
+ "5.661279, 5.615124, 5.584907, 5.573550, 5.587157",\
+ "5.780371, 5.734216, 5.703999, 5.692642, 5.706249",\
+ "6.016336, 5.970181, 5.939964, 5.928607, 5.942214",\
+ "6.443535, 6.397380, 6.367163, 6.355806, 6.369413");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[90]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.123815, -1.081437, -1.046858, -1.009223, -0.725366",\
+ "-1.217456, -1.175079, -1.140499, -1.102864, -0.819007",\
+ "-1.332136, -1.289759, -1.255179, -1.217544, -0.933687",\
+ "-1.517521, -1.475144, -1.440564, -1.402929, -1.119072",\
+ "-1.805479, -1.763102, -1.728523, -1.690887, -1.407031");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.159454, -1.117077, -1.082498, -1.044862, -0.761006",\
+ "-1.250402, -1.208025, -1.173445, -1.135810, -0.851953",\
+ "-1.352041, -1.309663, -1.275084, -1.237449, -0.953592",\
+ "-1.534891, -1.492514, -1.457935, -1.420299, -1.136443",\
+ "-1.849478, -1.807101, -1.772522, -1.734886, -1.451030");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[90]_hldr*/
+
+} /* end of pin tl_i[90] */
+
+pin("tl_i[89]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002521 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[89];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.812771, 5.766616, 5.736399, 5.725042, 5.738649",\
+ "5.898168, 5.852013, 5.821796, 5.810439, 5.824046",\
+ "5.975654, 5.929499, 5.899282, 5.887925, 5.901533",\
+ "6.119768, 6.073613, 6.043396, 6.032039, 6.045647",\
+ "6.477526, 6.431371, 6.401154, 6.389797, 6.403404");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.809771, 5.763616, 5.733399, 5.722042, 5.735649",\
+ "5.892390, 5.846235, 5.816019, 5.804661, 5.818269",\
+ "6.004417, 5.958262, 5.928046, 5.916688, 5.930296",\
+ "6.234746, 6.188591, 6.158375, 6.147017, 6.160625",\
+ "6.638525, 6.592370, 6.562153, 6.550796, 6.564404");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[89]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.029578, -0.987200, -0.952621, -0.914986, -0.631129",\
+ "-1.117165, -1.074787, -1.040208, -1.002573, -0.718716",\
+ "-1.206337, -1.163960, -1.129380, -1.091745, -0.807888",\
+ "-1.362213, -1.319836, -1.285257, -1.247621, -0.963765",\
+ "-1.590532, -1.548155, -1.513575, -1.475940, -1.192083");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.059949, -1.017572, -0.982993, -0.945357, -0.661501",\
+ "-1.159550, -1.117173, -1.082594, -1.044958, -0.761102",\
+ "-1.261636, -1.219259, -1.184679, -1.147044, -0.863187",\
+ "-1.441043, -1.398666, -1.364086, -1.326451, -1.042594",\
+ "-1.748482, -1.706105, -1.671526, -1.633890, -1.350034");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[89]_hldr*/
+
+} /* end of pin tl_i[89] */
+
+pin("tl_i[88]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001007 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[88];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.471457, 5.425303, 5.395086, 5.383729, 5.397336",\
+ "5.567654, 5.521499, 5.491282, 5.479925, 5.493532",\
+ "5.669107, 5.622952, 5.592736, 5.581378, 5.594986",\
+ "5.849272, 5.803117, 5.772900, 5.761543, 5.775150",\
+ "6.163116, 6.116961, 6.086744, 6.075387, 6.088994");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.500805, 5.454650, 5.424433, 5.413076, 5.426683",\
+ "5.598975, 5.552820, 5.522604, 5.511246, 5.524854",\
+ "5.704100, 5.657945, 5.627728, 5.616371, 5.629978",\
+ "5.884839, 5.838684, 5.808467, 5.797110, 5.810718",\
+ "6.188713, 6.142558, 6.112341, 6.100984, 6.114592");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[88]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.083938, -1.041561, -1.006981, -0.969346, -0.685489",\
+ "-1.181137, -1.138760, -1.104181, -1.066545, -0.782689",\
+ "-1.281549, -1.239172, -1.204592, -1.166957, -0.883101",\
+ "-1.453069, -1.410691, -1.376112, -1.338477, -1.054620",\
+ "-1.733325, -1.690947, -1.656368, -1.618733, -1.334876");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.081498, -1.039121, -1.004542, -0.966906, -0.683050",\
+ "-1.178693, -1.136315, -1.101736, -1.064101, -0.780244",\
+ "-1.285877, -1.243499, -1.208920, -1.171285, -0.887428",\
+ "-1.474000, -1.431623, -1.397043, -1.359408, -1.075551",\
+ "-1.791995, -1.749618, -1.715039, -1.677403, -1.393547");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[88]_hldr*/
+
+} /* end of pin tl_i[88] */
+
+pin("tl_i[87]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001007 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[87];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.100426, 6.054271, 6.024055, 6.012697, 6.026305",\
+ "6.196661, 6.150506, 6.120289, 6.108932, 6.122540",\
+ "6.301589, 6.255434, 6.225217, 6.213860, 6.227468",\
+ "6.487259, 6.441104, 6.410888, 6.399530, 6.413138",\
+ "6.807995, 6.761840, 6.731623, 6.720266, 6.733873");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.124471, 6.078316, 6.048099, 6.036742, 6.050349",\
+ "6.222617, 6.176462, 6.146245, 6.134888, 6.148495",\
+ "6.331584, 6.285429, 6.255212, 6.243855, 6.257463",\
+ "6.520377, 6.474222, 6.444005, 6.432648, 6.446256",\
+ "6.841649, 6.795494, 6.765277, 6.753920, 6.767528");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[87]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.134100, -1.091722, -1.057143, -1.019508, -0.735651",\
+ "-1.231353, -1.188975, -1.154396, -1.116761, -0.832904",\
+ "-1.331896, -1.289519, -1.254940, -1.217304, -0.933448",\
+ "-1.503641, -1.461264, -1.426684, -1.389049, -1.105192",\
+ "-1.784290, -1.741913, -1.707334, -1.669698, -1.385842");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.132025, -1.089648, -1.055068, -1.017433, -0.733576",\
+ "-1.229244, -1.186866, -1.152287, -1.114652, -0.830795",\
+ "-1.336593, -1.294216, -1.259636, -1.222001, -0.938144",\
+ "-1.525111, -1.482733, -1.448154, -1.410519, -1.126662",\
+ "-1.844292, -1.801915, -1.767335, -1.729700, -1.445843");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[87]_hldr*/
+
+} /* end of pin tl_i[87] */
+
+pin("tl_i[86]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002623 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[86];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.848853, 5.802698, 5.772481, 5.761124, 5.774731",\
+ "5.936358, 5.890203, 5.859987, 5.848629, 5.862237",\
+ "6.023653, 5.977498, 5.947281, 5.935924, 5.949532",\
+ "6.191101, 6.144946, 6.114729, 6.103372, 6.116980",\
+ "6.582396, 6.536241, 6.506024, 6.494667, 6.508274");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.843520, 5.797365, 5.767148, 5.755791, 5.769399",\
+ "5.932423, 5.886268, 5.856051, 5.844694, 5.858301",\
+ "6.047498, 6.001343, 5.971126, 5.959769, 5.973376",\
+ "6.285758, 6.239603, 6.209386, 6.198029, 6.211636",\
+ "6.722472, 6.676317, 6.646101, 6.634743, 6.648351");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[86]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.087246, -1.044869, -1.010289, -0.972654, -0.688797",\
+ "-1.172364, -1.129987, -1.095407, -1.057772, -0.773916",\
+ "-1.269076, -1.226699, -1.192120, -1.154484, -0.870628",\
+ "-1.437615, -1.395237, -1.360658, -1.323022, -1.039166",\
+ "-1.686824, -1.644446, -1.609867, -1.572232, -1.288375");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.118792, -1.076414, -1.041835, -1.004200, -0.720343",\
+ "-1.209484, -1.167107, -1.132527, -1.094892, -0.811035",\
+ "-1.302947, -1.260570, -1.225991, -1.188355, -0.904499",\
+ "-1.465349, -1.422972, -1.388392, -1.350757, -1.066900",\
+ "-1.738277, -1.695899, -1.661320, -1.623685, -1.339828");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[86]_hldr*/
+
+} /* end of pin tl_i[86] */
+
+pin("tl_i[85]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003219 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[85];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.640028, 5.593873, 5.563656, 5.552299, 5.565907",\
+ "5.724194, 5.678039, 5.647822, 5.636465, 5.650072",\
+ "5.805078, 5.758923, 5.728706, 5.717349, 5.730957",\
+ "5.946632, 5.900477, 5.870261, 5.858903, 5.872511",\
+ "6.188352, 6.142197, 6.111980, 6.100623, 6.114231");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.625210, 5.579055, 5.548838, 5.537481, 5.551088",\
+ "5.706786, 5.660631, 5.630414, 5.619057, 5.632665",\
+ "5.812987, 5.766832, 5.736616, 5.725258, 5.738866",\
+ "6.001375, 5.955220, 5.925003, 5.913646, 5.927253",\
+ "6.317180, 6.271025, 6.240808, 6.229451, 6.243059");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[85]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.041623, -0.999245, -0.964666, -0.927031, -0.643174",\
+ "-1.126700, -1.084323, -1.049744, -1.012108, -0.728252",\
+ "-1.223403, -1.181025, -1.146446, -1.108811, -0.824954",\
+ "-1.391917, -1.349539, -1.314960, -1.277325, -0.993468",\
+ "-1.638337, -1.595960, -1.561380, -1.523745, -1.239888");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.073138, -1.030761, -0.996182, -0.958546, -0.674690",\
+ "-1.161118, -1.118740, -1.084161, -1.046526, -0.762669",\
+ "-1.257352, -1.214975, -1.180395, -1.142760, -0.858903",\
+ "-1.419670, -1.377293, -1.342714, -1.305078, -1.021222",\
+ "-1.692554, -1.650177, -1.615597, -1.577962, -1.294106");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[85]_hldr*/
+
+} /* end of pin tl_i[85] */
+
+pin("tl_i[84]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001002 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[84];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.863610, 5.817455, 5.787239, 5.775881, 5.789489",\
+ "5.963272, 5.917117, 5.886900, 5.875543, 5.889151",\
+ "6.072519, 6.026364, 5.996147, 5.984790, 5.998397",\
+ "6.263348, 6.217193, 6.186976, 6.175619, 6.189227",\
+ "6.585179, 6.539024, 6.508808, 6.497450, 6.511058");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.949015, 5.902860, 5.872643, 5.861286, 5.874893",\
+ "6.048979, 6.002824, 5.972607, 5.961250, 5.974857",\
+ "6.167165, 6.121010, 6.090793, 6.079436, 6.093043",\
+ "6.365981, 6.319826, 6.289609, 6.278252, 6.291860",\
+ "6.701097, 6.654942, 6.624725, 6.613368, 6.626975");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[84]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.056499, -1.014122, -0.979543, -0.941907, -0.658051",\
+ "-1.146680, -1.104303, -1.069723, -1.032088, -0.748231",\
+ "-1.259394, -1.217017, -1.182437, -1.144802, -0.860945",\
+ "-1.443621, -1.401244, -1.366664, -1.329029, -1.045172",\
+ "-1.712122, -1.669745, -1.635165, -1.597530, -1.313673");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.090162, -1.047785, -1.013205, -0.975570, -0.691713",\
+ "-1.180082, -1.137704, -1.103125, -1.065490, -0.781633",\
+ "-1.275585, -1.233208, -1.198629, -1.160993, -0.877137",\
+ "-1.445900, -1.403523, -1.368944, -1.331308, -1.047452",\
+ "-1.745297, -1.702920, -1.668340, -1.630705, -1.346848");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[84]_hldr*/
+
+} /* end of pin tl_i[84] */
+
+pin("tl_i[83]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003541 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[83];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.687950, 5.641795, 5.611578, 5.600221, 5.613829",\
+ "5.774795, 5.728640, 5.698423, 5.687066, 5.700673",\
+ "5.876379, 5.830224, 5.800007, 5.788650, 5.802258",\
+ "6.080298, 6.034143, 6.003927, 5.992569, 6.006177",\
+ "6.432961, 6.386806, 6.356589, 6.345232, 6.358839");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.703408, 5.657253, 5.627037, 5.615679, 5.629287",\
+ "5.789980, 5.743825, 5.713608, 5.702251, 5.715858",\
+ "5.917695, 5.871540, 5.841323, 5.829966, 5.843574",\
+ "6.190283, 6.144128, 6.113912, 6.102554, 6.116162",\
+ "6.660905, 6.614750, 6.584533, 6.573176, 6.586783");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[83]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.867726, -0.825349, -0.790770, -0.753134, -0.469278",\
+ "-0.951320, -0.908943, -0.874363, -0.836728, -0.552871",\
+ "-1.016544, -0.974167, -0.939588, -0.901952, -0.618096",\
+ "-1.123735, -1.081358, -1.046778, -1.009143, -0.725286",\
+ "-1.291921, -1.249544, -1.214964, -1.177329, -0.893472");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.911896, -0.869519, -0.833451, -0.791428, -0.513448",\
+ "-1.012793, -0.970416, -0.921834, -0.879811, -0.614345",\
+ "-1.095336, -1.052959, -1.000425, -0.958402, -0.696888",\
+ "-1.226252, -1.183874, -1.131083, -1.089060, -0.827803",\
+ "-1.440278, -1.397901, -1.344258, -1.302235, -1.041830");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[83]_hldr*/
+
+} /* end of pin tl_i[83] */
+
+pin("tl_i[82]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002444 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[82];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.708182, 5.662027, 5.631811, 5.620453, 5.634061",\
+ "5.801434, 5.755279, 5.725062, 5.713705, 5.727312",\
+ "5.894579, 5.848424, 5.818208, 5.806850, 5.820458",\
+ "6.057735, 6.011580, 5.981363, 5.970006, 5.983613",\
+ "6.337201, 6.291046, 6.260829, 6.249472, 6.263080");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.710078, 5.663923, 5.633707, 5.622349, 5.635957",\
+ "5.807050, 5.760895, 5.730678, 5.719321, 5.732928",\
+ "5.905420, 5.859265, 5.829048, 5.817691, 5.831298",\
+ "6.075630, 6.029475, 5.999258, 5.987901, 6.001508",\
+ "6.350610, 6.304455, 6.274238, 6.262881, 6.276488");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[82]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.931103, -0.888726, -0.854147, -0.816511, -0.532655",\
+ "-1.016007, -0.973630, -0.939050, -0.901415, -0.617558",\
+ "-1.106769, -1.064392, -1.029812, -0.992177, -0.708320",\
+ "-1.260793, -1.218416, -1.183836, -1.146201, -0.862344",\
+ "-1.523812, -1.481435, -1.446856, -1.409220, -1.125364");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.978443, -0.936065, -0.901486, -0.863851, -0.579994",\
+ "-1.073078, -1.030701, -0.996121, -0.958486, -0.674629",\
+ "-1.181049, -1.138672, -1.104093, -1.066457, -0.782601",\
+ "-1.371690, -1.329313, -1.294734, -1.257098, -0.973242",\
+ "-1.704884, -1.662507, -1.627928, -1.590292, -1.306436");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[82]_hldr*/
+
+} /* end of pin tl_i[82] */
+
+pin("tl_i[81]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002980 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[81];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.772726, 5.726571, 5.696354, 5.684997, 5.698605",\
+ "5.867767, 5.821612, 5.791396, 5.780038, 5.793646",\
+ "5.991376, 5.945221, 5.915004, 5.903647, 5.917254",\
+ "6.241336, 6.195181, 6.164964, 6.153607, 6.167214",\
+ "6.709605, 6.663450, 6.633233, 6.621876, 6.635483");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.760269, 5.714114, 5.683897, 5.672540, 5.686147",\
+ "5.853128, 5.806973, 5.776756, 5.765399, 5.779006",\
+ "5.986612, 5.940457, 5.910241, 5.898883, 5.912491",\
+ "6.273496, 6.227341, 6.197124, 6.185767, 6.199374",\
+ "6.818243, 6.772088, 6.741871, 6.730514, 6.744122");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[81]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.928193, -0.885816, -0.851236, -0.813601, -0.529744",\
+ "-1.010898, -0.968521, -0.933941, -0.896306, -0.612449",\
+ "-1.110272, -1.067895, -1.033316, -0.995680, -0.711824",\
+ "-1.278434, -1.236057, -1.201477, -1.163842, -0.879985",\
+ "-1.568159, -1.525781, -1.491202, -1.453566, -1.169710");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.972769, -0.930391, -0.895812, -0.858176, -0.574320",\
+ "-1.064861, -1.022484, -0.987905, -0.950269, -0.666413",\
+ "-1.170576, -1.128199, -1.093619, -1.055984, -0.772127",\
+ "-1.359091, -1.316714, -1.282135, -1.244499, -0.960643",\
+ "-1.694739, -1.652362, -1.617782, -1.580147, -1.296290");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[81]_hldr*/
+
+} /* end of pin tl_i[81] */
+
+pin("tl_i[80]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004096 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[80];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.423539, 5.377384, 5.347167, 5.335810, 5.349418",\
+ "5.507660, 5.461505, 5.431288, 5.419931, 5.433538",\
+ "5.588662, 5.542507, 5.512290, 5.500933, 5.514540",\
+ "5.729993, 5.683838, 5.653621, 5.642264, 5.655871",\
+ "5.971819, 5.925664, 5.895447, 5.884090, 5.897697");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.408631, 5.362476, 5.332260, 5.320902, 5.334510",\
+ "5.490341, 5.444186, 5.413970, 5.402612, 5.416220",\
+ "5.596552, 5.550397, 5.520180, 5.508823, 5.522430",\
+ "5.784794, 5.738639, 5.708422, 5.697065, 5.710672",\
+ "6.157783, 6.111628, 6.081411, 6.070054, 6.083661");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[80]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.991939, -0.949562, -0.914982, -0.877347, -0.593490",\
+ "-1.074940, -1.032563, -0.997983, -0.960348, -0.676491",\
+ "-1.172758, -1.130381, -1.095802, -1.058166, -0.774310",\
+ "-1.338347, -1.295969, -1.261390, -1.223755, -0.939898",\
+ "-1.624824, -1.582447, -1.547868, -1.510232, -1.226376");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.037009, -0.994632, -0.960053, -0.922417, -0.638561",\
+ "-1.129460, -1.087082, -1.052503, -1.014868, -0.731011",\
+ "-1.235564, -1.193187, -1.158608, -1.120972, -0.837116",\
+ "-1.410576, -1.368199, -1.333619, -1.295984, -1.012127",\
+ "-1.676313, -1.633936, -1.599356, -1.561721, -1.277864");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[80]_hldr*/
+
+} /* end of pin tl_i[80] */
+
+pin("tl_i[79]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001007 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[79];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.446656, 5.400501, 5.370284, 5.358927, 5.372534",\
+ "5.547154, 5.500999, 5.470783, 5.459425, 5.473033",\
+ "5.662600, 5.616445, 5.586228, 5.574871, 5.588478",\
+ "5.873106, 5.826951, 5.796734, 5.785377, 5.798985",\
+ "6.242186, 6.196031, 6.165814, 6.154457, 6.168064");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.480749, 5.434594, 5.404377, 5.393020, 5.406628",\
+ "5.579840, 5.533685, 5.503468, 5.492111, 5.505718",\
+ "5.703683, 5.657528, 5.627311, 5.615954, 5.629561",\
+ "5.911795, 5.865640, 5.835423, 5.824066, 5.837673",\
+ "6.265936, 6.219781, 6.189564, 6.178207, 6.191814");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[79]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.093242, -1.050865, -1.016285, -0.978650, -0.694793",\
+ "-1.195110, -1.152733, -1.118154, -1.080518, -0.796662",\
+ "-1.314294, -1.271917, -1.237338, -1.199702, -0.915846",\
+ "-1.525733, -1.483356, -1.448776, -1.411141, -1.127284",\
+ "-1.885126, -1.842748, -1.808169, -1.770533, -1.486677");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.071935, -1.029557, -0.994978, -0.957343, -0.673486",\
+ "-1.171764, -1.129387, -1.094808, -1.057172, -0.773316",\
+ "-1.298104, -1.255727, -1.221148, -1.183512, -0.899656",\
+ "-1.517193, -1.474816, -1.440237, -1.402601, -1.118745",\
+ "-1.889590, -1.847213, -1.812633, -1.774998, -1.491141");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[79]_hldr*/
+
+} /* end of pin tl_i[79] */
+
+pin("tl_i[78]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002174 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[78];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.182078, 5.135923, 5.105707, 5.094349, 5.107957",\
+ "5.277516, 5.231361, 5.201145, 5.189787, 5.203395",\
+ "5.400351, 5.354196, 5.323979, 5.312622, 5.326229",\
+ "5.638412, 5.592257, 5.562040, 5.550683, 5.564290",\
+ "6.058977, 6.012822, 5.982605, 5.971248, 5.984856");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.163897, 5.117742, 5.087525, 5.076168, 5.089776",\
+ "5.262290, 5.216135, 5.185918, 5.174561, 5.188169",\
+ "5.405017, 5.358862, 5.328645, 5.317288, 5.330895",\
+ "5.691147, 5.644992, 5.614775, 5.603418, 5.617025",\
+ "6.209457, 6.163302, 6.133085, 6.121728, 6.135335");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[78]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.808182, -0.765804, -0.731225, -0.693590, -0.409733",\
+ "-0.891099, -0.848721, -0.814142, -0.776506, -0.492650",\
+ "-0.960506, -0.918129, -0.883550, -0.845914, -0.562058",\
+ "-1.077306, -1.034929, -1.000349, -0.962714, -0.678857",\
+ "-1.260451, -1.218073, -1.183494, -1.145859, -0.862002");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.822461, -0.780084, -0.745505, -0.707869, -0.424013",\
+ "-0.907616, -0.865238, -0.830659, -0.793024, -0.509167",\
+ "-0.995187, -0.952809, -0.918230, -0.880595, -0.596738",\
+ "-1.146480, -1.104103, -1.069523, -1.031888, -0.748031",\
+ "-1.401185, -1.358808, -1.324229, -1.286593, -1.002737");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[78]_hldr*/
+
+} /* end of pin tl_i[78] */
+
+pin("tl_i[77]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001980 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[77];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.530322, 5.484167, 5.453950, 5.442593, 5.456201",\
+ "5.617828, 5.571673, 5.541456, 5.530099, 5.543706",\
+ "5.705123, 5.658968, 5.628751, 5.617394, 5.631001",\
+ "5.872606, 5.826451, 5.796235, 5.784877, 5.798485",\
+ "6.261807, 6.215652, 6.185436, 6.174078, 6.187686");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.524989, 5.478834, 5.448617, 5.437260, 5.450868",\
+ "5.613892, 5.567737, 5.537520, 5.526163, 5.539771",\
+ "5.728968, 5.682813, 5.652596, 5.641239, 5.654846",\
+ "5.967242, 5.921087, 5.890870, 5.879513, 5.893120",\
+ "6.403997, 6.357842, 6.327626, 6.316268, 6.329876");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[77]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.941463, -0.899085, -0.864506, -0.826870, -0.543014",\
+ "-1.026243, -0.983865, -0.949286, -0.911651, -0.627794",\
+ "-1.097818, -1.055441, -1.020861, -0.983226, -0.699369",\
+ "-1.219287, -1.176910, -1.142331, -1.104695, -0.820839",\
+ "-1.414036, -1.371659, -1.337079, -1.299444, -1.015587");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.962457, -0.920079, -0.885500, -0.847865, -0.564008",\
+ "-1.048641, -1.006264, -0.971684, -0.934049, -0.650192",\
+ "-1.136345, -1.093968, -1.059388, -1.021753, -0.737896",\
+ "-1.287015, -1.244637, -1.210058, -1.172423, -0.888566",\
+ "-1.540997, -1.498620, -1.464041, -1.426405, -1.142549");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[77]_hldr*/
+
+} /* end of pin tl_i[77] */
+
+pin("tl_i[76]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002121 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[76];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.188263, 5.142108, 5.111891, 5.100534, 5.114141",\
+ "5.280335, 5.234180, 5.203964, 5.192606, 5.206214",\
+ "5.390166, 5.344011, 5.313795, 5.302437, 5.316045",\
+ "5.594857, 5.548702, 5.518486, 5.507128, 5.520736",\
+ "5.971145, 5.924990, 5.894773, 5.883416, 5.897023");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.181033, 5.134878, 5.104661, 5.093304, 5.106912",\
+ "5.279116, 5.232961, 5.202744, 5.191387, 5.204994",\
+ "5.410749, 5.364594, 5.334378, 5.323020, 5.336628",\
+ "5.655250, 5.609095, 5.578878, 5.567521, 5.581128",\
+ "6.082715, 6.036560, 6.006343, 5.994986, 6.008594");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[76]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.873539, -0.831162, -0.796583, -0.758947, -0.475091",\
+ "-0.958672, -0.916295, -0.881715, -0.844080, -0.560223",\
+ "-1.055412, -1.013035, -0.978456, -0.940820, -0.656964",\
+ "-1.223937, -1.181559, -1.146980, -1.109345, -0.825488",\
+ "-1.471815, -1.429437, -1.394858, -1.357222, -1.073366");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.905092, -0.862715, -0.828135, -0.790500, -0.506643",\
+ "-0.994562, -0.952185, -0.917606, -0.879970, -0.596114",\
+ "-1.089293, -1.046916, -1.012336, -0.974701, -0.690844",\
+ "-1.251651, -1.209274, -1.174694, -1.137059, -0.853202",\
+ "-1.524578, -1.482201, -1.447622, -1.409986, -1.126130");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[76]_hldr*/
+
+} /* end of pin tl_i[76] */
+
+pin("tl_i[75]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002542 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[75];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.559262, 5.513107, 5.482891, 5.471533, 5.485141",\
+ "5.649136, 5.602981, 5.572764, 5.561407, 5.575014",\
+ "5.741644, 5.695489, 5.665273, 5.653915, 5.667523",\
+ "5.907515, 5.861360, 5.831143, 5.819786, 5.833393",\
+ "6.276364, 6.230209, 6.199993, 6.188635, 6.202243");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.570172, 5.524017, 5.493801, 5.482443, 5.496051",\
+ "5.660883, 5.614728, 5.584512, 5.573154, 5.586762",\
+ "5.779753, 5.733598, 5.703381, 5.692024, 5.705631",\
+ "6.011688, 5.965533, 5.935317, 5.923959, 5.937567",\
+ "6.423101, 6.376946, 6.346730, 6.335372, 6.348980");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[75]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.889999, -0.847622, -0.813043, -0.775407, -0.491551",\
+ "-0.980238, -0.937861, -0.903281, -0.865646, -0.581789",\
+ "-1.093020, -1.050642, -1.016063, -0.978428, -0.694571",\
+ "-1.275653, -1.233275, -1.198696, -1.161060, -0.877204",\
+ "-1.544115, -1.501738, -1.467158, -1.429523, -1.145666");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.923539, -0.881162, -0.846582, -0.808947, -0.525090",\
+ "-1.013448, -0.971071, -0.936491, -0.898856, -0.614999",\
+ "-1.108924, -1.066547, -1.031967, -0.994332, -0.710475",\
+ "-1.279292, -1.236915, -1.202336, -1.164700, -0.880844",\
+ "-1.578850, -1.536472, -1.501893, -1.464258, -1.180401");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[75]_hldr*/
+
+} /* end of pin tl_i[75] */
+
+pin("tl_i[74]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002632 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[74];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.253567, 5.207412, 5.177195, 5.165838, 5.179445",\
+ "5.349404, 5.303249, 5.273033, 5.261675, 5.275283",\
+ "5.476182, 5.430027, 5.399810, 5.388453, 5.402061",\
+ "5.733068, 5.686913, 5.656696, 5.645339, 5.658946",\
+ "6.219316, 6.173161, 6.142944, 6.131587, 6.145194");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.241081, 5.194926, 5.164710, 5.153352, 5.166960",\
+ "5.334809, 5.288654, 5.258438, 5.247080, 5.260688",\
+ "5.471406, 5.425251, 5.395034, 5.383677, 5.397285",\
+ "5.764438, 5.718283, 5.688066, 5.676709, 5.690317",\
+ "6.325636, 6.279481, 6.249264, 6.237907, 6.251514");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[74]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.935219, -0.892842, -0.858263, -0.820627, -0.536771",\
+ "-1.028860, -0.986483, -0.951903, -0.914268, -0.630411",\
+ "-1.143547, -1.101169, -1.066590, -1.028955, -0.745098",\
+ "-1.326218, -1.283841, -1.249262, -1.211626, -0.927770",\
+ "-1.614166, -1.571789, -1.537210, -1.499574, -1.215718");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.970892, -0.928514, -0.893935, -0.856300, -0.572443",\
+ "-1.061820, -1.019442, -0.984863, -0.947227, -0.663371",\
+ "-1.163435, -1.121057, -1.086478, -1.048843, -0.764986",\
+ "-1.346292, -1.303915, -1.269336, -1.231700, -0.947844",\
+ "-1.660875, -1.618498, -1.583918, -1.546283, -1.262426");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[74]_hldr*/
+
+} /* end of pin tl_i[74] */
+
+pin("tl_i[73]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002107 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[73];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.554523, 5.508368, 5.478152, 5.466794, 5.480402",\
+ "5.649414, 5.603259, 5.573042, 5.561685, 5.575293",\
+ "5.748847, 5.702692, 5.672475, 5.661118, 5.674726",\
+ "5.924383, 5.878228, 5.848011, 5.836654, 5.850262",\
+ "6.224755, 6.178600, 6.148384, 6.137026, 6.150634");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.589440, 5.543285, 5.513069, 5.501711, 5.515319",\
+ "5.687266, 5.641111, 5.610895, 5.599537, 5.613145",\
+ "5.793367, 5.747212, 5.716996, 5.705638, 5.719246",\
+ "5.973481, 5.927326, 5.897110, 5.885752, 5.899360",\
+ "6.270272, 6.224117, 6.193900, 6.182543, 6.196150");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[73]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.898724, -0.856347, -0.821768, -0.784132, -0.500276",\
+ "-0.983802, -0.941425, -0.906845, -0.869210, -0.585353",\
+ "-1.080504, -1.038127, -1.003548, -0.965912, -0.682056",\
+ "-1.249018, -1.206641, -1.172062, -1.134426, -0.850570",\
+ "-1.495438, -1.453061, -1.418482, -1.380846, -1.096990");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.930240, -0.887863, -0.853283, -0.815648, -0.531791",\
+ "-1.018219, -0.975842, -0.941263, -0.903627, -0.619771",\
+ "-1.114454, -1.072076, -1.037497, -0.999861, -0.716005",\
+ "-1.276772, -1.234395, -1.199815, -1.162180, -0.878323",\
+ "-1.549656, -1.507279, -1.472699, -1.435064, -1.151207");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[73]_hldr*/
+
+} /* end of pin tl_i[73] */
+
+pin("tl_i[72]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001514 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[72];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.995496, 4.949341, 4.919124, 4.907767, 4.921374",\
+ "5.088820, 5.042665, 5.012448, 5.001091, 5.014698",\
+ "5.200553, 5.154398, 5.124181, 5.112824, 5.126431",\
+ "5.410159, 5.364004, 5.333787, 5.322430, 5.336038",\
+ "5.770847, 5.724692, 5.694476, 5.683118, 5.696726");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.983222, 4.937068, 4.906851, 4.895494, 4.909101",\
+ "5.083534, 5.037379, 5.007162, 4.995805, 5.009412",\
+ "5.216234, 5.170079, 5.139863, 5.128505, 5.142113",\
+ "5.462753, 5.416598, 5.386382, 5.375024, 5.388632",\
+ "5.894033, 5.847878, 5.817662, 5.806304, 5.819912");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[72]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.828673, -0.786296, -0.751717, -0.714081, -0.430225",\
+ "-0.916407, -0.874030, -0.839450, -0.801815, -0.517958",\
+ "-1.009412, -0.967034, -0.932455, -0.894819, -0.610963",\
+ "-1.161535, -1.119158, -1.084578, -1.046943, -0.763086",\
+ "-1.413529, -1.371152, -1.336573, -1.298937, -1.015081");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.840436, -0.798058, -0.763479, -0.725843, -0.441987",\
+ "-0.930307, -0.887930, -0.853350, -0.815715, -0.531858",\
+ "-1.024595, -0.982218, -0.947639, -0.910003, -0.626147",\
+ "-1.178880, -1.136502, -1.101923, -1.064288, -0.780431",\
+ "-1.440355, -1.397978, -1.363399, -1.325763, -1.041907");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[72]_hldr*/
+
+} /* end of pin tl_i[72] */
+
+pin("tl_i[71]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002444 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[71];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.540210, 5.494055, 5.463838, 5.452481, 5.466088",\
+ "5.637518, 5.591363, 5.561146, 5.549789, 5.563396",\
+ "5.743839, 5.697684, 5.667468, 5.656110, 5.669718",\
+ "5.935360, 5.889205, 5.858988, 5.847631, 5.861238",\
+ "6.275519, 6.229364, 6.199148, 6.187790, 6.201398");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.544911, 5.498756, 5.468540, 5.457182, 5.470790",\
+ "5.643330, 5.597175, 5.566958, 5.555601, 5.569208",\
+ "5.758502, 5.712348, 5.682131, 5.670774, 5.684381",\
+ "5.954805, 5.908650, 5.878434, 5.867076, 5.880684",\
+ "6.290164, 6.244009, 6.213792, 6.202435, 6.216042");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[71]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.882892, -0.840514, -0.805935, -0.768299, -0.484443",\
+ "-0.976532, -0.934155, -0.899575, -0.861940, -0.578083",\
+ "-1.091232, -1.048855, -1.014276, -0.976640, -0.692784",\
+ "-1.273476, -1.231099, -1.196519, -1.158884, -0.875027",\
+ "-1.558704, -1.516327, -1.481747, -1.444112, -1.160255");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.918558, -0.876180, -0.841601, -0.803965, -0.520109",\
+ "-1.009478, -0.967101, -0.932522, -0.894886, -0.611030",\
+ "-1.111122, -1.068745, -1.034165, -0.996530, -0.712673",\
+ "-1.293967, -1.251589, -1.217010, -1.179375, -0.895518",\
+ "-1.608551, -1.566173, -1.531594, -1.493959, -1.210102");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[71]_hldr*/
+
+} /* end of pin tl_i[71] */
+
+pin("tl_i[70]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002521 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[70];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.558736, 5.512581, 5.482364, 5.471007, 5.484614",\
+ "5.646551, 5.600396, 5.570179, 5.558822, 5.572429",\
+ "5.751346, 5.705191, 5.674974, 5.663617, 5.677224",\
+ "5.931952, 5.885797, 5.855580, 5.844223, 5.857830",\
+ "6.227381, 6.181226, 6.151009, 6.139652, 6.153259");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.559927, 5.513772, 5.483556, 5.472198, 5.485806",\
+ "5.643667, 5.597512, 5.567295, 5.555938, 5.569545",\
+ "5.760825, 5.714670, 5.684453, 5.673096, 5.686704",\
+ "5.980465, 5.934310, 5.904093, 5.892736, 5.906343",\
+ "6.363138, 6.316983, 6.286767, 6.275409, 6.289017");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[70]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.108714, -1.066337, -1.031757, -0.994122, -0.710265",\
+ "-1.197711, -1.155334, -1.120755, -1.083119, -0.799263",\
+ "-1.273206, -1.230828, -1.196249, -1.158614, -0.874757",\
+ "-1.400542, -1.358165, -1.323586, -1.285950, -1.002094",\
+ "-1.588133, -1.545756, -1.511176, -1.473541, -1.189684");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.109905, -1.067528, -1.032949, -0.995313, -0.711457",\
+ "-1.194827, -1.152450, -1.117871, -1.080235, -0.796379",\
+ "-1.282685, -1.240308, -1.205728, -1.168093, -0.884236",\
+ "-1.434258, -1.391881, -1.357301, -1.319666, -1.035809",\
+ "-1.689183, -1.646805, -1.612226, -1.574591, -1.290734");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[70]_hldr*/
+
+} /* end of pin tl_i[70] */
+
+pin("tl_i[69]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003551 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[69];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.599169, 5.553014, 5.522797, 5.511440, 5.525047",\
+ "5.692371, 5.646216, 5.615999, 5.604642, 5.618249",\
+ "5.803999, 5.757844, 5.727628, 5.716270, 5.729878",\
+ "6.013692, 5.967537, 5.937320, 5.925963, 5.939570",\
+ "6.374660, 6.328505, 6.298288, 6.286931, 6.300539");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.586902, 5.540747, 5.510530, 5.499173, 5.512780",\
+ "5.687091, 5.640936, 5.610719, 5.599362, 5.612969",\
+ "5.819899, 5.773744, 5.743527, 5.732170, 5.745778",\
+ "6.066907, 6.020752, 5.990536, 5.979178, 5.992786",\
+ "6.499193, 6.453038, 6.422822, 6.411464, 6.425072");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[69]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.320298, -0.254656, -0.197381, -0.155524, 0.065753",\
+ "-0.418767, -0.353125, -0.295851, -0.253993, -0.032716",\
+ "-0.541359, -0.475718, -0.418443, -0.376585, -0.155308",\
+ "-0.758841, -0.693200, -0.635925, -0.594067, -0.372790",\
+ "-1.125992, -1.060351, -1.003076, -0.961219, -0.690840");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.551837, -0.504668, -0.447037, -0.405084, -0.122660",\
+ "-0.642640, -0.595471, -0.537840, -0.495887, -0.213464",\
+ "-0.748319, -0.701138, -0.643507, -0.601553, -0.319143",\
+ "-0.935804, -0.888444, -0.830813, -0.788860, -0.506627",\
+ "-1.256943, -1.209575, -1.151944, -1.109991, -0.827767");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[69]_hldr*/
+
+} /* end of pin tl_i[69] */
+
+pin("tl_i[68]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003064 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[68];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.192542, 5.146387, 5.116170, 5.104813, 5.118420",\
+ "5.290967, 5.244812, 5.214595, 5.203238, 5.216846",\
+ "5.401109, 5.354954, 5.324737, 5.313380, 5.326987",\
+ "5.601238, 5.555083, 5.524867, 5.513509, 5.527117",\
+ "5.960707, 5.914552, 5.884336, 5.872978, 5.886586");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.225666, 5.179511, 5.149294, 5.137937, 5.151545",\
+ "5.325410, 5.279255, 5.249039, 5.237681, 5.251289",\
+ "5.445796, 5.399642, 5.369425, 5.358068, 5.371675",\
+ "5.657081, 5.610926, 5.580709, 5.569352, 5.582960",\
+ "6.029737, 5.983582, 5.953365, 5.942008, 5.955616");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[68]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.383405, -0.317283, -0.259327, -0.217286, 0.002808",\
+ "-0.476585, -0.410463, -0.352507, -0.310465, -0.090372",\
+ "-0.609199, -0.543558, -0.486283, -0.444425, -0.212329",\
+ "-0.768597, -0.702956, -0.645681, -0.603824, -0.382547",\
+ "-1.029441, -0.963800, -0.906525, -0.864667, -0.643390");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.807548, -0.765101, -0.730685, -0.689878, -0.366659",\
+ "-0.886339, -0.843892, -0.809476, -0.768669, -0.445450",\
+ "-0.998027, -0.955579, -0.921164, -0.880357, -0.557138",\
+ "-1.202545, -1.160097, -1.125682, -1.084875, -0.761656",\
+ "-1.556186, -1.513738, -1.479323, -1.438516, -1.115297");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[68]_hldr*/
+
+} /* end of pin tl_i[68] */
+
+pin("tl_i[67]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004926 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[67];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.584554, 5.538399, 5.508182, 5.496825, 5.510432",\
+ "5.677766, 5.631611, 5.601395, 5.590037, 5.603645",\
+ "5.772066, 5.725911, 5.695694, 5.684337, 5.697944",\
+ "5.938811, 5.892656, 5.862439, 5.851082, 5.864689",\
+ "6.232008, 6.185853, 6.155637, 6.144279, 6.157887");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.609763, 5.563608, 5.533391, 5.522034, 5.535642",\
+ "5.706739, 5.660584, 5.630367, 5.619010, 5.632617",\
+ "5.807685, 5.761530, 5.731313, 5.719956, 5.733563",\
+ "5.987043, 5.940888, 5.910672, 5.899314, 5.912922",\
+ "6.348396, 6.302241, 6.272024, 6.260667, 6.274274");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[67]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.485126, -0.438062, -0.380431, -0.338477, -0.011156",\
+ "-0.583825, -0.522452, -0.464496, -0.422454, -0.110899",\
+ "-0.666073, -0.599951, -0.541995, -0.499953, -0.221634",\
+ "-0.802234, -0.736112, -0.678156, -0.636114, -0.414195",\
+ "-1.028199, -0.962077, -0.904121, -0.862080, -0.641986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.387383, -0.321742, -0.264467, -0.222610, -0.001333",\
+ "-0.478290, -0.412648, -0.355373, -0.313516, -0.092239",\
+ "-0.583616, -0.517975, -0.460700, -0.418842, -0.197565",\
+ "-0.772257, -0.706615, -0.649340, -0.607483, -0.386206",\
+ "-1.096755, -1.031114, -0.973839, -0.931981, -0.710704");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[67]_hldr*/
+
+} /* end of pin tl_i[67] */
+
+pin("tl_i[66]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005701 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[66];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.639438, 5.593283, 5.563066, 5.551709, 5.565317",\
+ "5.733038, 5.686883, 5.656666, 5.645309, 5.658916",\
+ "5.848727, 5.802572, 5.772356, 5.760998, 5.774606",\
+ "6.068509, 6.022354, 5.992137, 5.980780, 5.994387",\
+ "6.462988, 6.416833, 6.386617, 6.375259, 6.388867");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.621106, 5.574951, 5.544734, 5.533377, 5.546984",\
+ "5.717392, 5.671237, 5.641021, 5.629663, 5.643271",\
+ "5.853546, 5.807391, 5.777174, 5.765817, 5.779424",\
+ "6.124442, 6.078287, 6.048070, 6.036713, 6.050320",\
+ "6.621989, 6.575834, 6.545618, 6.534260, 6.547868");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[66]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.421962, -0.356320, -0.299045, -0.257188, -0.035911",\
+ "-0.516417, -0.450775, -0.393500, -0.351643, -0.130366",\
+ "-0.609921, -0.544280, -0.487005, -0.445147, -0.223870",\
+ "-0.772065, -0.706424, -0.649149, -0.607291, -0.386014",\
+ "-0.961881, -0.895759, -0.837803, -0.795761, -0.575668");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.486628, -0.441846, -0.402838, -0.353988, 0.043935",\
+ "-0.578095, -0.533313, -0.494305, -0.445455, -0.047532",\
+ "-0.684334, -0.639552, -0.600544, -0.551694, -0.153771",\
+ "-0.874257, -0.829475, -0.790467, -0.741616, -0.343693",\
+ "-1.203886, -1.159104, -1.120096, -1.071246, -0.673323");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[66]_hldr*/
+
+} /* end of pin tl_i[66] */
+
+pin("tl_i[65]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005716 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[65];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.459126, 5.412971, 5.382754, 5.371397, 5.385004",\
+ "5.554200, 5.508045, 5.477829, 5.466471, 5.480079",\
+ "5.677998, 5.631843, 5.601626, 5.590269, 5.603877",\
+ "5.927989, 5.881835, 5.851618, 5.840261, 5.853868",\
+ "6.397048, 6.350893, 6.320677, 6.309319, 6.322927");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.446668, 5.400513, 5.370296, 5.358939, 5.372547",\
+ "5.539561, 5.493406, 5.463189, 5.451832, 5.465439",\
+ "5.673235, 5.627080, 5.596863, 5.585506, 5.599113",\
+ "5.960149, 5.913994, 5.883777, 5.872420, 5.886027",\
+ "6.505686, 6.459531, 6.429315, 6.417957, 6.431565");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[65]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.425878, -0.360237, -0.302962, -0.261104, -0.039827",\
+ "-0.522669, -0.457028, -0.399753, -0.357895, -0.136618",\
+ "-0.621719, -0.556077, -0.498802, -0.456945, -0.235668",\
+ "-0.791700, -0.725578, -0.667622, -0.625580, -0.405487",\
+ "-0.986124, -0.920002, -0.862046, -0.820004, -0.599911");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.460052, -0.415270, -0.376262, -0.327412, 0.070511",\
+ "-0.556623, -0.511841, -0.472833, -0.423982, -0.026060",\
+ "-0.658589, -0.613808, -0.574799, -0.525949, -0.128026",\
+ "-0.841385, -0.796603, -0.757595, -0.708745, -0.310822",\
+ "-1.144313, -1.099531, -1.060523, -1.011673, -0.613750");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[65]_hldr*/
+
+} /* end of pin tl_i[65] */
+
+pin("tl_i[64]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004569 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[64];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.444655, 5.398500, 5.368283, 5.356926, 5.370533",\
+ "5.543582, 5.497427, 5.467211, 5.455853, 5.469461",\
+ "5.653337, 5.607182, 5.576965, 5.565608, 5.579216",\
+ "5.851637, 5.805482, 5.775266, 5.763908, 5.777516",\
+ "6.204331, 6.158176, 6.127959, 6.116602, 6.130209");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.478401, 5.432246, 5.402030, 5.390672, 5.404280",\
+ "5.578437, 5.532282, 5.502066, 5.490708, 5.504316",\
+ "5.698844, 5.652689, 5.622473, 5.611115, 5.624723",\
+ "5.908003, 5.861848, 5.831632, 5.820274, 5.833882",\
+ "6.273140, 6.226985, 6.196769, 6.185411, 6.199019");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[64]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.425314, -0.367605, -0.313198, -0.274713, -0.048281",\
+ "-0.523194, -0.465485, -0.411079, -0.372594, -0.146162",\
+ "-0.645804, -0.588095, -0.533688, -0.495204, -0.268772",\
+ "-0.855838, -0.798129, -0.743723, -0.705238, -0.478806",\
+ "-1.193156, -1.127033, -1.069077, -1.027036, -0.806943");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.376914, -0.311272, -0.253997, -0.212140, 0.059682",\
+ "-0.475849, -0.410207, -0.352932, -0.311075, -0.039253",\
+ "-0.593819, -0.528177, -0.470902, -0.429045, -0.157173",\
+ "-0.797684, -0.732042, -0.674767, -0.632910, -0.360732",\
+ "-1.142024, -1.076383, -1.019108, -0.977250, -0.703048");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[64]_hldr*/
+
+} /* end of pin tl_i[64] */
+
+pin("tl_i[63]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005918 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[63];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.634018, 5.587863, 5.557646, 5.546289, 5.559896",\
+ "5.727260, 5.681105, 5.650888, 5.639531, 5.653139",\
+ "5.821638, 5.775483, 5.745266, 5.733909, 5.747517",\
+ "5.988543, 5.942388, 5.912171, 5.900814, 5.914422",\
+ "6.282049, 6.235894, 6.205677, 6.194320, 6.207927");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.659294, 5.613139, 5.582922, 5.571565, 5.585172",\
+ "5.756288, 5.710133, 5.679916, 5.668559, 5.682167",\
+ "5.857348, 5.811193, 5.780976, 5.769619, 5.783226",\
+ "6.036880, 5.990726, 5.960509, 5.949152, 5.962759",\
+ "6.341727, 6.295572, 6.265355, 6.253998, 6.267605");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[63]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.425078, -0.367369, -0.312962, -0.274477, -0.048046",\
+ "-0.523533, -0.465824, -0.411418, -0.372933, -0.146501",\
+ "-0.649060, -0.591351, -0.536945, -0.498460, -0.272028",\
+ "-0.863705, -0.805996, -0.751590, -0.713105, -0.486673",\
+ "-1.108760, -1.042638, -0.984682, -0.942640, -0.722547");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.375262, -0.309621, -0.252346, -0.210488, 0.061380",\
+ "-0.475435, -0.409794, -0.352519, -0.310661, -0.038785",\
+ "-0.593964, -0.528323, -0.471048, -0.429190, -0.157265",\
+ "-0.799253, -0.733611, -0.676336, -0.634479, -0.362291",\
+ "-1.146486, -1.080845, -1.023570, -0.981712, -0.707386");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[63]_hldr*/
+
+} /* end of pin tl_i[63] */
+
+pin("tl_i[62]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005914 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[62];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.028421, 4.982266, 4.952050, 4.940692, 4.954300",\
+ "5.115734, 5.069579, 5.039362, 5.028005, 5.041612",\
+ "5.221791, 5.175636, 5.145419, 5.134062, 5.147669",\
+ "5.411152, 5.364997, 5.334780, 5.323423, 5.337030",\
+ "5.716925, 5.670770, 5.640553, 5.629196, 5.642803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.030477, 4.984322, 4.954105, 4.942748, 4.956356",\
+ "5.112976, 5.066821, 5.036604, 5.025247, 5.038854",\
+ "5.241773, 5.195618, 5.165401, 5.154044, 5.167651",\
+ "5.477729, 5.431574, 5.401357, 5.390000, 5.403607",\
+ "5.884023, 5.837868, 5.807651, 5.796294, 5.809901");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[62]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.310949, -0.245308, -0.188033, -0.146175, 0.125715",\
+ "-0.408722, -0.343080, -0.285805, -0.243948, 0.028056",\
+ "-0.525662, -0.460020, -0.402745, -0.360888, -0.087938",\
+ "-0.729867, -0.664225, -0.606950, -0.565093, -0.287448",\
+ "-1.073045, -1.007404, -0.950129, -0.908272, -0.621407");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.560733, -0.518534, -0.464760, -0.422807, -0.191354",\
+ "-0.659844, -0.617645, -0.563872, -0.521919, -0.290465",\
+ "-0.778888, -0.736689, -0.682928, -0.640975, -0.409521",\
+ "-0.986411, -0.944213, -0.890754, -0.848801, -0.617348",\
+ "-1.324035, -1.281784, -1.238624, -1.196671, -0.966234");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[62]_hldr*/
+
+} /* end of pin tl_i[62] */
+
+pin("tl_i[61]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004650 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[61];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.050911, 5.004756, 4.974539, 4.963182, 4.976789",\
+ "5.138693, 5.092538, 5.062321, 5.050964, 5.064571",\
+ "5.242861, 5.196706, 5.166489, 5.155132, 5.168739",\
+ "5.438320, 5.392165, 5.361948, 5.350591, 5.364199",\
+ "5.753279, 5.707124, 5.676907, 5.665550, 5.679157");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.054683, 5.008528, 4.978311, 4.966954, 4.980561",\
+ "5.137789, 5.091634, 5.061417, 5.050060, 5.063667",\
+ "5.257940, 5.211785, 5.181569, 5.170211, 5.183819",\
+ "5.493972, 5.447817, 5.417600, 5.406243, 5.419850",\
+ "5.883592, 5.837437, 5.807220, 5.795863, 5.809470");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[61]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.331346, -0.288929, -0.254443, -0.214995, 0.091355",\
+ "-0.415000, -0.372583, -0.338097, -0.298649, 0.007701",\
+ "-0.498520, -0.456102, -0.421616, -0.382169, -0.075818",\
+ "-0.644671, -0.602253, -0.567767, -0.528320, -0.221969",\
+ "-0.885228, -0.842810, -0.808325, -0.768877, -0.462526");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.495414, -0.429474, -0.371779, -0.329808, -0.077326",\
+ "-0.577402, -0.511461, -0.453767, -0.411796, -0.165065",\
+ "-0.669896, -0.603956, -0.546261, -0.504290, -0.256735",\
+ "-0.831937, -0.776516, -0.718821, -0.676851, -0.409235",\
+ "-1.083366, -1.040949, -1.006463, -0.967015, -0.660665");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[61]_hldr*/
+
+} /* end of pin tl_i[61] */
+
+pin("tl_i[60]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004493 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[60];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.075901, 5.029746, 4.999529, 4.988172, 5.001780",\
+ "5.162810, 5.116655, 5.086439, 5.075081, 5.088689",\
+ "5.262701, 5.216546, 5.186329, 5.174972, 5.188580",\
+ "5.463603, 5.417448, 5.387231, 5.375874, 5.389482",\
+ "5.887491, 5.841336, 5.811120, 5.799762, 5.813370");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.069137, 5.022982, 4.992765, 4.981408, 4.995015",\
+ "5.162019, 5.115864, 5.085647, 5.074290, 5.087897",\
+ "5.289857, 5.243702, 5.213485, 5.202128, 5.215735",\
+ "5.547719, 5.501564, 5.471347, 5.459990, 5.473598",\
+ "5.999206, 5.953051, 5.922834, 5.911477, 5.925084");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[60]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.331961, -0.289544, -0.255058, -0.215610, 0.090740",\
+ "-0.416689, -0.374271, -0.339785, -0.300337, 0.006013",\
+ "-0.501750, -0.459332, -0.424846, -0.385399, -0.079048",\
+ "-0.650840, -0.608422, -0.573936, -0.534488, -0.228138",\
+ "-0.898578, -0.856161, -0.821675, -0.782227, -0.475877");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.494855, -0.428915, -0.371220, -0.329249, -0.108704",\
+ "-0.577203, -0.511263, -0.453568, -0.411597, -0.191052",\
+ "-0.675131, -0.609191, -0.551496, -0.509525, -0.288980",\
+ "-0.848911, -0.782971, -0.725276, -0.683305, -0.462760",\
+ "-1.143176, -1.077236, -1.019541, -0.977570, -0.757025");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[60]_hldr*/
+
+} /* end of pin tl_i[60] */
+
+pin("tl_i[59]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004673 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[59];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.018675, 4.972520, 4.942304, 4.930946, 4.944554",\
+ "5.111604, 5.065449, 5.035232, 5.023875, 5.037482",\
+ "5.204963, 5.158808, 5.128592, 5.117234, 5.130842",\
+ "5.368355, 5.322200, 5.291983, 5.280626, 5.294233",\
+ "5.654718, 5.608563, 5.578346, 5.566989, 5.580596");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.048488, 5.002333, 4.972116, 4.960759, 4.974366",\
+ "5.145526, 5.099371, 5.069155, 5.057797, 5.071405",\
+ "5.246175, 5.200020, 5.169804, 5.158446, 5.172054",\
+ "5.423032, 5.376877, 5.346661, 5.335303, 5.348911",\
+ "5.720785, 5.674630, 5.644413, 5.633056, 5.646663");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[59]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.399850, -0.333910, -0.276215, -0.234244, -0.013699",\
+ "-0.490388, -0.424448, -0.366753, -0.324782, -0.104237",\
+ "-0.591764, -0.525824, -0.468129, -0.426158, -0.205613",\
+ "-0.771660, -0.705720, -0.648025, -0.606054, -0.385509",\
+ "-1.061324, -0.995383, -0.937689, -0.895718, -0.675172");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.408211, -0.365794, -0.331308, -0.291860, 0.014490",\
+ "-0.495065, -0.452648, -0.418162, -0.378714, -0.072363",\
+ "-0.606791, -0.564374, -0.529888, -0.490440, -0.184090",\
+ "-0.793280, -0.750863, -0.716377, -0.676929, -0.370579",\
+ "-1.099378, -1.056960, -1.022474, -0.983027, -0.676676");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[59]_hldr*/
+
+} /* end of pin tl_i[59] */
+
+pin("tl_i[58]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005086 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[58];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.907104, 4.860949, 4.830732, 4.819375, 4.832983",\
+ "4.992526, 4.946371, 4.916154, 4.904797, 4.918404",\
+ "5.070096, 5.023941, 4.993724, 4.982367, 4.995975",\
+ "5.244753, 5.198598, 5.168381, 5.157024, 5.170631",\
+ "5.599957, 5.553802, 5.523586, 5.512228, 5.525836");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.904143, 4.857988, 4.827772, 4.816414, 4.830022",\
+ "4.986795, 4.940640, 4.910424, 4.899066, 4.912674",\
+ "5.098862, 5.052707, 5.022491, 5.011133, 5.024741",\
+ "5.327568, 5.281413, 5.251196, 5.239839, 5.253446",\
+ "5.728967, 5.682812, 5.652596, 5.641238, 5.654846");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[58]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.409769, -0.343829, -0.286134, -0.244163, -0.023618",\
+ "-0.498234, -0.432294, -0.374599, -0.332628, -0.112083",\
+ "-0.599794, -0.533854, -0.476159, -0.434188, -0.213643",\
+ "-0.781831, -0.715891, -0.658196, -0.616225, -0.395680",\
+ "-1.087101, -1.021161, -0.963466, -0.921496, -0.700950");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.423427, -0.381010, -0.346524, -0.307076, -0.000726",\
+ "-0.507266, -0.464848, -0.430363, -0.390915, -0.084564",\
+ "-0.628312, -0.585894, -0.551408, -0.511960, -0.205610",\
+ "-0.825686, -0.783269, -0.748783, -0.709335, -0.402985",\
+ "-1.126419, -1.084002, -1.049516, -1.010068, -0.703718");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[58]_hldr*/
+
+} /* end of pin tl_i[58] */
+
+pin("tl_i[57]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004084 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[57];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.853275, 4.807120, 4.776903, 4.765546, 4.779153",\
+ "4.941780, 4.895625, 4.865408, 4.854051, 4.867658",\
+ "5.043512, 4.997357, 4.967141, 4.955783, 4.969391",\
+ "5.245644, 5.199489, 5.169272, 5.157915, 5.171523",\
+ "5.684921, 5.638766, 5.608549, 5.597192, 5.610799");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.846420, 4.800265, 4.770049, 4.758691, 4.772299",\
+ "4.940993, 4.894838, 4.864621, 4.853264, 4.866871",\
+ "5.069371, 5.023216, 4.992999, 4.981642, 4.995249",\
+ "5.318837, 5.272682, 5.242465, 5.231108, 5.244716",\
+ "5.754844, 5.708689, 5.678472, 5.667115, 5.680722");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[57]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.439430, -0.373490, -0.315795, -0.273825, -0.053279",\
+ "-0.519622, -0.453682, -0.395987, -0.354016, -0.133471",\
+ "-0.597395, -0.531455, -0.473760, -0.431789, -0.211244",\
+ "-0.729801, -0.663861, -0.606166, -0.564195, -0.343650",\
+ "-0.935990, -0.870050, -0.812355, -0.770384, -0.549839");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.409353, -0.366935, -0.332449, -0.293002, 0.013349",\
+ "-0.497213, -0.454795, -0.420310, -0.380862, -0.074511",\
+ "-0.585629, -0.543211, -0.508725, -0.469278, -0.162927",\
+ "-0.741802, -0.699385, -0.664899, -0.625451, -0.319101",\
+ "-0.995469, -0.953051, -0.918565, -0.879117, -0.572767");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[57]_hldr*/
+
+} /* end of pin tl_i[57] */
+
+pin("tl_i[56]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005633 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[56];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.771066, 4.724911, 4.694694, 4.683337, 4.696944",\
+ "4.860967, 4.814812, 4.784595, 4.773238, 4.786846",\
+ "4.953480, 4.907325, 4.877108, 4.865751, 4.879358",\
+ "5.122646, 5.076491, 5.046274, 5.034917, 5.048524",\
+ "5.508491, 5.462336, 5.432119, 5.420762, 5.434369");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.784305, 4.738150, 4.707933, 4.696576, 4.710184",\
+ "4.872721, 4.826566, 4.796349, 4.784992, 4.798599",\
+ "4.991727, 4.945572, 4.915355, 4.903998, 4.917605",\
+ "5.265233, 5.219078, 5.188861, 5.177504, 5.191111",\
+ "5.790774, 5.744619, 5.714402, 5.703045, 5.716652");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[56]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.441652, -0.375711, -0.318017, -0.276046, -0.055500",\
+ "-0.524614, -0.458674, -0.400979, -0.359008, -0.138463",\
+ "-0.607820, -0.541879, -0.484185, -0.442214, -0.221668",\
+ "-0.753165, -0.687225, -0.629530, -0.587559, -0.367014",\
+ "-0.987968, -0.922028, -0.864333, -0.822362, -0.601816");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.411476, -0.369059, -0.334573, -0.295125, 0.011225",\
+ "-0.499637, -0.457219, -0.422733, -0.383285, -0.076935",\
+ "-0.588334, -0.545917, -0.511431, -0.471983, -0.165633",\
+ "-0.746601, -0.704183, -0.669698, -0.630250, -0.323899",\
+ "-1.003694, -0.961277, -0.926791, -0.887343, -0.580993");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[56]_hldr*/
+
+} /* end of pin tl_i[56] */
+
+pin("tl_i[55]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.023564 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[55];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.825782, 5.779627, 5.749410, 5.738052, 5.751660",\
+ "5.912527, 5.866372, 5.836155, 5.824798, 5.838405",\
+ "6.021775, 5.975620, 5.945403, 5.934046, 5.947653",\
+ "6.207016, 6.160861, 6.130644, 6.119287, 6.132894",\
+ "6.502526, 6.456371, 6.426154, 6.414796, 6.428404");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.826127, 5.779972, 5.749755, 5.738398, 5.752005",\
+ "5.912270, 5.866115, 5.835897, 5.824540, 5.838148",\
+ "6.043355, 5.997200, 5.966982, 5.955625, 5.969233",\
+ "6.273898, 6.227743, 6.197526, 6.186169, 6.199776",\
+ "6.665429, 6.619274, 6.589057, 6.577700, 6.591307");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[55]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.412428, -0.355362, -0.313364, -0.040427",\
+ "-0.701632, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[55]_hldr*/
+
+} /* end of pin tl_i[55] */
+
+pin("tl_i[54]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.024771 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[54];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.671892, 5.625737, 5.595520, 5.584163, 5.597770",\
+ "5.766703, 5.720548, 5.690331, 5.678973, 5.692581",\
+ "5.865909, 5.819754, 5.789536, 5.778179, 5.791787",\
+ "6.041008, 5.994853, 5.964636, 5.953279, 5.966886",\
+ "6.340645, 6.294490, 6.264273, 6.252915, 6.266523");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.706592, 5.660437, 5.630219, 5.618862, 5.632470",\
+ "5.804386, 5.758231, 5.728014, 5.716657, 5.730264",\
+ "5.910204, 5.864049, 5.833832, 5.822474, 5.836082",\
+ "6.089930, 6.043775, 6.013557, 6.002200, 6.015808",\
+ "6.385911, 6.339756, 6.309539, 6.298182, 6.311790");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[54]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.412428, -0.355362, -0.313364, -0.040427",\
+ "-0.701632, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[54]_hldr*/
+
+} /* end of pin tl_i[54] */
+
+pin("tl_i[53]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025984 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[53];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.405560, 5.359406, 5.329188, 5.317831, 5.331439",\
+ "5.489668, 5.443513, 5.413296, 5.401938, 5.415546",\
+ "5.570677, 5.524522, 5.494305, 5.482947, 5.496555",\
+ "5.711991, 5.665836, 5.635619, 5.624262, 5.637869",\
+ "5.953867, 5.907712, 5.877495, 5.866138, 5.879745");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.390637, 5.344482, 5.314265, 5.302907, 5.316515",\
+ "5.472354, 5.426199, 5.395982, 5.384624, 5.398232",\
+ "5.578566, 5.532411, 5.502193, 5.490836, 5.504444",\
+ "5.766796, 5.720641, 5.690423, 5.679066, 5.692674",\
+ "6.084168, 6.038013, 6.007796, 5.996439, 6.010046");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[53]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.412428, -0.355362, -0.313364, -0.040427",\
+ "-0.701632, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[53]_hldr*/
+
+} /* end of pin tl_i[53] */
+
+pin("tl_i[52]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.023928 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[52];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.851366, 5.805211, 5.774994, 5.763637, 5.777244",\
+ "5.940992, 5.894837, 5.864620, 5.853263, 5.866870",\
+ "6.046589, 6.000434, 5.970217, 5.958859, 5.972467",\
+ "6.242908, 6.196754, 6.166536, 6.155179, 6.168787",\
+ "6.655770, 6.609615, 6.579398, 6.568040, 6.581648");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.844427, 5.798272, 5.768054, 5.756697, 5.770305",\
+ "5.940210, 5.894055, 5.863838, 5.852481, 5.866088",\
+ "6.071230, 6.025075, 5.994858, 5.983501, 5.997108",\
+ "6.314948, 6.268793, 6.238575, 6.227218, 6.240826",\
+ "6.731011, 6.684856, 6.654639, 6.643281, 6.656889");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[52]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.412428, -0.355362, -0.313364, -0.040427",\
+ "-0.701632, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[52]_hldr*/
+
+} /* end of pin tl_i[52] */
+
+pin("tl_i[51]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.024747 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[51];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.766789, 5.720634, 5.690417, 5.679060, 5.692667",\
+ "5.856632, 5.810477, 5.780260, 5.768903, 5.782510",\
+ "5.949137, 5.902982, 5.872765, 5.861408, 5.875015",\
+ "6.115034, 6.068879, 6.038662, 6.027305, 6.040912",\
+ "6.488516, 6.442361, 6.412144, 6.400786, 6.414394");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.777621, 5.731466, 5.701249, 5.689892, 5.703499",\
+ "5.868374, 5.822219, 5.792002, 5.780644, 5.794252",\
+ "5.987092, 5.940937, 5.910720, 5.899363, 5.912970",\
+ "6.219129, 6.172974, 6.142756, 6.131399, 6.145007",\
+ "6.630526, 6.584371, 6.554153, 6.542796, 6.556404");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[51]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.408918, -0.350984, -0.308948, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.274662");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[51]_hldr*/
+
+} /* end of pin tl_i[51] */
+
+pin("tl_i[50]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.024706 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[50];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.432938, 5.386783, 5.356565, 5.345208, 5.358816",\
+ "5.522908, 5.476753, 5.446536, 5.435179, 5.448786",\
+ "5.615422, 5.569267, 5.539050, 5.527693, 5.541300",\
+ "5.781178, 5.735023, 5.704806, 5.693449, 5.707057",\
+ "6.151173, 6.105018, 6.074801, 6.063444, 6.077051");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.443795, 5.397640, 5.367423, 5.356066, 5.369673",\
+ "5.534675, 5.488520, 5.458302, 5.446945, 5.460553",\
+ "5.653760, 5.607605, 5.577388, 5.566031, 5.579638",\
+ "5.885449, 5.839294, 5.809077, 5.797719, 5.811327",\
+ "6.297242, 6.251087, 6.220870, 6.209512, 6.223120");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[50]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454534, -0.408918, -0.350984, -0.308948, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.274662");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[50]_hldr*/
+
+} /* end of pin tl_i[50] */
+
+pin("tl_i[49]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.014215 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[49];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.612003, 5.565848, 5.535631, 5.524274, 5.537881",\
+ "5.697372, 5.651217, 5.621000, 5.609643, 5.623250",\
+ "5.774767, 5.728612, 5.698395, 5.687037, 5.700645",\
+ "5.943757, 5.897602, 5.867384, 5.856027, 5.869635",\
+ "6.302785, 6.256630, 6.226413, 6.215055, 6.228663");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.608959, 5.562804, 5.532587, 5.521230, 5.534837",\
+ "5.691543, 5.645388, 5.615170, 5.603813, 5.617421",\
+ "5.803527, 5.757372, 5.727155, 5.715797, 5.729405",\
+ "6.034389, 5.988234, 5.958016, 5.946659, 5.960267",\
+ "6.439312, 6.393157, 6.362939, 6.351582, 6.365190");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[49]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.042324, -0.000326, 0.287989",\
+ "-0.219595, -0.177177, -0.128664, -0.086666, 0.203312",\
+ "-0.307616, -0.265198, -0.213787, -0.171789, 0.115291",\
+ "-0.454448, -0.412253, -0.355362, -0.313364, -0.040427",\
+ "-0.692896, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[49]_hldr*/
+
+} /* end of pin tl_i[49] */
+
+pin("tl_i[48]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.015924 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[48];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.342521, 5.296366, 5.266149, 5.254791, 5.268399",\
+ "5.430000, 5.383845, 5.353628, 5.342271, 5.355878",\
+ "5.517300, 5.471145, 5.440928, 5.429570, 5.443178",\
+ "5.691890, 5.645735, 5.615518, 5.604160, 5.617768",\
+ "6.098689, 6.052534, 6.022317, 6.010960, 6.024567");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.337069, 5.290914, 5.260696, 5.249339, 5.262947",\
+ "5.426027, 5.379872, 5.349655, 5.338298, 5.351905",\
+ "5.541069, 5.494914, 5.464697, 5.453340, 5.466947",\
+ "5.778956, 5.732801, 5.702584, 5.691227, 5.704834",\
+ "6.214471, 6.168316, 6.138099, 6.126742, 6.140349");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[48]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.095389, -0.053327, -0.019395, 0.003631, 0.287989",\
+ "-0.178535, -0.136472, -0.102541, -0.079514, 0.203312",\
+ "-0.262969, -0.220876, -0.186811, -0.163726, 0.115291",\
+ "-0.399970, -0.357878, -0.323812, -0.300727, -0.040427",\
+ "-0.613644, -0.571552, -0.537486, -0.514401, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.127054, -0.062200, -0.008166, 0.033833, 0.254201",\
+ "-0.207506, -0.142652, -0.088847, -0.050549, 0.160177",\
+ "-0.300279, -0.235482, -0.181379, -0.142982, 0.068969",\
+ "-0.445930, -0.381133, -0.327029, -0.288632, -0.088057",\
+ "-0.677823, -0.613026, -0.558922, -0.520525, -0.325394");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[48]_hldr*/
+
+} /* end of pin tl_i[48] */
+
+pin("tl_i[47]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.015093 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[47];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.720613, 5.674458, 5.644240, 5.632883, 5.646491",\
+ "5.808302, 5.762147, 5.731930, 5.720572, 5.734180",\
+ "5.909732, 5.863577, 5.833360, 5.822003, 5.835610",\
+ "6.090167, 6.044012, 6.013794, 6.002437, 6.016045",\
+ "6.375024, 6.328869, 6.298652, 6.287294, 6.300902");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.723861, 5.677706, 5.647489, 5.636132, 5.649739",\
+ "5.806833, 5.760678, 5.730461, 5.719103, 5.732711",\
+ "5.923954, 5.877799, 5.847582, 5.836225, 5.849832",\
+ "6.142916, 6.096761, 6.066544, 6.055186, 6.068794",\
+ "6.505251, 6.459096, 6.428879, 6.417521, 6.431129");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[47]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454448, -0.412253, -0.355362, -0.313364, -0.040427",\
+ "-0.692896, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[47]_hldr*/
+
+} /* end of pin tl_i[47] */
+
+pin("tl_i[46]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.015694 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[46];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.747210, 5.701055, 5.670837, 5.659480, 5.673088",\
+ "5.834549, 5.788394, 5.758177, 5.746819, 5.760427",\
+ "5.931758, 5.885603, 5.855386, 5.844028, 5.857636",\
+ "6.119594, 6.073439, 6.043221, 6.031864, 6.045472",\
+ "6.512118, 6.465963, 6.435746, 6.424389, 6.437996");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.740419, 5.694264, 5.664047, 5.652689, 5.666297",\
+ "5.833758, 5.787603, 5.757386, 5.746029, 5.759636",\
+ "5.958529, 5.912374, 5.882157, 5.870800, 5.884408",\
+ "6.201867, 6.155712, 6.125495, 6.114138, 6.127745",\
+ "6.619649, 6.573494, 6.543277, 6.531919, 6.545527");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[46]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454448, -0.412253, -0.355362, -0.313364, -0.040427",\
+ "-0.692896, -0.635483, -0.577488, -0.535436, -0.297932");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.725398, -0.659249, -0.601254, -0.559203, -0.339176");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[46]_hldr*/
+
+} /* end of pin tl_i[46] */
+
+pin("tl_i[45]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.017466 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[45];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.112432, 5.066278, 5.036060, 5.024703, 5.038311",\
+ "5.197829, 5.151674, 5.121457, 5.110100, 5.123707",\
+ "5.275316, 5.229161, 5.198944, 5.187587, 5.201194",\
+ "5.419477, 5.373322, 5.343104, 5.331747, 5.345355",\
+ "5.777201, 5.731046, 5.700829, 5.689471, 5.703079");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.109432, 5.063277, 5.033060, 5.021703, 5.035310",\
+ "5.192052, 5.145897, 5.115680, 5.104322, 5.117930",\
+ "5.304079, 5.257924, 5.227707, 5.216350, 5.229957",\
+ "5.534409, 5.488254, 5.458036, 5.446679, 5.460287",\
+ "5.938303, 5.892148, 5.861931, 5.850574, 5.864181");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[45]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.134918, -0.092500, -0.042324, -0.000326, 0.287989",\
+ "-0.219595, -0.177177, -0.128664, -0.086666, 0.203312",\
+ "-0.307616, -0.265198, -0.213787, -0.171789, 0.115291",\
+ "-0.454448, -0.408918, -0.350984, -0.308948, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.274662");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[45]_hldr*/
+
+} /* end of pin tl_i[45] */
+
+pin("tl_i[44]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.016255 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[44];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.787257, 5.741102, 5.710885, 5.699527, 5.713135",\
+ "5.887364, 5.841209, 5.810992, 5.799634, 5.813242",\
+ "6.003266, 5.957111, 5.926894, 5.915536, 5.929144",\
+ "6.212816, 6.166661, 6.136444, 6.125086, 6.138694",\
+ "6.574124, 6.527969, 6.497752, 6.486395, 6.500002");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.833889, 5.787734, 5.757517, 5.746160, 5.759767",\
+ "5.932858, 5.886703, 5.856485, 5.845128, 5.858736",\
+ "6.056724, 6.010569, 5.980351, 5.968994, 5.982602",\
+ "6.267234, 6.221079, 6.190862, 6.179505, 6.193112",\
+ "6.625524, 6.579369, 6.549152, 6.537795, 6.551402");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[44]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.084700, -0.042324, -0.000326, 0.287989",\
+ "-0.211450, -0.169345, -0.128664, -0.086666, 0.203312",\
+ "-0.299321, -0.257215, -0.213787, -0.171789, 0.115291",\
+ "-0.454448, -0.408918, -0.350984, -0.308948, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131974, -0.065963, -0.008166, 0.033833, 0.254201",\
+ "-0.225998, -0.159987, -0.102190, -0.060192, 0.160177",\
+ "-0.317206, -0.251195, -0.193398, -0.151400, 0.068969",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, -0.088057",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.274662");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[44]_hldr*/
+
+} /* end of pin tl_i[44] */
+
+pin("tl_i[43]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.018203 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[43];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.371556, 5.325401, 5.295184, 5.283827, 5.297434",\
+ "5.461463, 5.415308, 5.385091, 5.373734, 5.387341",\
+ "5.553976, 5.507821, 5.477604, 5.466247, 5.479854",\
+ "5.719817, 5.673662, 5.643445, 5.632088, 5.645695",\
+ "6.097318, 6.051163, 6.020946, 6.009588, 6.023196");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.382551, 5.336396, 5.306179, 5.294822, 5.308429",\
+ "5.473218, 5.427063, 5.396846, 5.385489, 5.399096",\
+ "5.592251, 5.546096, 5.515879, 5.504522, 5.518129",\
+ "5.824078, 5.777923, 5.747705, 5.736348, 5.749956",\
+ "6.235509, 6.189354, 6.159137, 6.147780, 6.161387");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[43]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[43]_hldr*/
+
+} /* end of pin tl_i[43] */
+
+pin("tl_i[42]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.019122 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[42];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.198272, 5.152117, 5.121900, 5.110542, 5.124150",\
+ "5.294228, 5.248073, 5.217855, 5.206498, 5.220106",\
+ "5.404464, 5.358309, 5.328092, 5.316734, 5.330342",\
+ "5.594985, 5.548830, 5.518613, 5.507256, 5.520863",\
+ "5.917032, 5.870877, 5.840660, 5.829302, 5.842910");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.190427, 5.144272, 5.114055, 5.102697, 5.116305",\
+ "5.291961, 5.245806, 5.215589, 5.204232, 5.217839",\
+ "5.417454, 5.371299, 5.341082, 5.329724, 5.343332",\
+ "5.634560, 5.588405, 5.558187, 5.546830, 5.560438",\
+ "6.000741, 5.954587, 5.924369, 5.913012, 5.926620");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[42]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[42]_hldr*/
+
+} /* end of pin tl_i[42] */
+
+pin("tl_i[41]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.022202 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[41];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.148859, 5.102704, 5.072487, 5.061130, 5.074737",\
+ "5.233216, 5.187061, 5.156844, 5.145487, 5.159094",\
+ "5.314116, 5.267961, 5.237743, 5.226386, 5.239994",\
+ "5.455597, 5.409442, 5.379225, 5.367867, 5.381475",\
+ "5.695938, 5.649783, 5.619565, 5.608208, 5.621816");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.134229, 5.088074, 5.057857, 5.046499, 5.060107",\
+ "5.215816, 5.169661, 5.139443, 5.128086, 5.141694",\
+ "5.322016, 5.275861, 5.245644, 5.234286, 5.247894",\
+ "5.510269, 5.464114, 5.433897, 5.422539, 5.436147",\
+ "5.825513, 5.779358, 5.749141, 5.737783, 5.751391");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[41]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[41]_hldr*/
+
+} /* end of pin tl_i[41] */
+
+pin("tl_i[40]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.021765 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[40];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.554589, 5.508434, 5.478217, 5.466860, 5.480467",\
+ "5.642064, 5.595909, 5.565692, 5.554335, 5.567942",\
+ "5.729364, 5.683209, 5.652992, 5.641635, 5.655242",\
+ "5.918046, 5.871891, 5.841674, 5.830317, 5.843924",\
+ "6.322921, 6.276766, 6.246549, 6.235191, 6.248799");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.549117, 5.502962, 5.472744, 5.461387, 5.474995",\
+ "5.638085, 5.591930, 5.561713, 5.550356, 5.563963",\
+ "5.753121, 5.706966, 5.676749, 5.665391, 5.678999",\
+ "5.991310, 5.945155, 5.914938, 5.903581, 5.917188",\
+ "6.427492, 6.381337, 6.351120, 6.339763, 6.353370");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[40]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.716436, -0.659249, -0.601254, -0.559203, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[40]_hldr*/
+
+} /* end of pin tl_i[40] */
+
+pin("tl_i[39]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.017624 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[39];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.869242, 4.823087, 4.792870, 4.781513, 4.795120",\
+ "4.959149, 4.912994, 4.882777, 4.871420, 4.885027",\
+ "5.051662, 5.005507, 4.975290, 4.963933, 4.977540",\
+ "5.217504, 5.171349, 5.141131, 5.129774, 5.143382",\
+ "5.606756, 5.560601, 5.530384, 5.519027, 5.532634");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.880238, 4.834083, 4.803865, 4.792508, 4.806116",\
+ "4.970903, 4.924748, 4.894531, 4.883174, 4.896781",\
+ "5.089937, 5.043782, 5.013565, 5.002208, 5.015815",\
+ "5.321764, 5.275609, 5.245392, 5.234035, 5.247642",\
+ "5.733193, 5.687038, 5.656821, 5.645464, 5.659071");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[39]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[39]_hldr*/
+
+} /* end of pin tl_i[39] */
+
+pin("tl_i[38]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.020036 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[38];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.623479, 5.577324, 5.547107, 5.535749, 5.549357",\
+ "5.708911, 5.662756, 5.632539, 5.621181, 5.634789",\
+ "5.786510, 5.740355, 5.710137, 5.698780, 5.712388",\
+ "5.952927, 5.906772, 5.876554, 5.865197, 5.878805",\
+ "6.305354, 6.259199, 6.228982, 6.217625, 6.231232");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.620534, 5.574379, 5.544162, 5.532805, 5.546412",\
+ "5.703200, 5.657045, 5.626828, 5.615471, 5.629078",\
+ "5.815276, 5.769121, 5.738904, 5.727547, 5.741154",\
+ "6.045676, 5.999521, 5.969304, 5.957947, 5.971554",\
+ "6.448150, 6.401995, 6.371778, 6.360420, 6.374028");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[38]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[38]_hldr*/
+
+} /* end of pin tl_i[38] */
+
+pin("tl_i[37]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.020927 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[37];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.583619, 5.537464, 5.507247, 5.495890, 5.509497",\
+ "5.673532, 5.627377, 5.597160, 5.585803, 5.599410",\
+ "5.766046, 5.719891, 5.689674, 5.678317, 5.691924",\
+ "5.938797, 5.892642, 5.862425, 5.851068, 5.864676",\
+ "6.323754, 6.277599, 6.247382, 6.236025, 6.249632");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.594629, 5.548474, 5.518257, 5.506900, 5.520507",\
+ "5.685287, 5.639132, 5.608915, 5.597558, 5.611166",\
+ "5.804349, 5.758194, 5.727977, 5.716619, 5.730227",\
+ "6.036157, 5.990002, 5.959785, 5.948428, 5.962035",\
+ "6.447590, 6.401435, 6.371218, 6.359861, 6.373468");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[37]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[37]_hldr*/
+
+} /* end of pin tl_i[37] */
+
+pin("tl_i[36]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.022013 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[36];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.660564, 5.614409, 5.584192, 5.572835, 5.586442",\
+ "5.744962, 5.698807, 5.668590, 5.657232, 5.670840",\
+ "5.825815, 5.779660, 5.749443, 5.738086, 5.751693",\
+ "5.968822, 5.922667, 5.892449, 5.881092, 5.894700",\
+ "6.227637, 6.181482, 6.151265, 6.139908, 6.153515");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.645984, 5.599829, 5.569612, 5.558254, 5.571862",\
+ "5.727538, 5.681383, 5.651165, 5.639808, 5.653416",\
+ "5.833738, 5.787583, 5.757366, 5.746009, 5.759616",\
+ "6.023547, 5.977392, 5.947175, 5.935818, 5.949425",\
+ "6.386638, 6.340483, 6.310266, 6.298908, 6.312516");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[36]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.304626",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.229475",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200783, -0.156045, -0.102190, -0.060192, 0.330579",\
+ "-0.289959, -0.245221, -0.193398, -0.151400, 0.241403",\
+ "-0.449366, -0.404628, -0.350424, -0.308425, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[36]_hldr*/
+
+} /* end of pin tl_i[36] */
+
+pin("tl_i[35]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.023123 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[35];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.051503, 5.005348, 4.975131, 4.963773, 4.977381",\
+ "5.138166, 5.092011, 5.061794, 5.050437, 5.064044",\
+ "5.251214, 5.205059, 5.174842, 5.163485, 5.177092",\
+ "5.450928, 5.404773, 5.374556, 5.363198, 5.376806",\
+ "5.780051, 5.733896, 5.703679, 5.692322, 5.705929");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.051780, 5.005625, 4.975408, 4.964050, 4.977658",\
+ "5.133488, 5.087333, 5.057116, 5.045758, 5.059366",\
+ "5.260558, 5.214403, 5.184186, 5.172829, 5.186436",\
+ "5.487176, 5.441021, 5.410804, 5.399446, 5.413054",\
+ "5.889712, 5.843557, 5.813340, 5.801982, 5.815590");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[35]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.060002, 0.003106, 0.047821, 0.287989",\
+ "-0.211450, -0.142185, -0.078960, -0.034194, 0.203312",\
+ "-0.299321, -0.228917, -0.165692, -0.120927, 0.115291",\
+ "-0.454448, -0.386390, -0.323164, -0.278399, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.117131, -0.065963, -0.008166, 0.033833, 0.413435",\
+ "-0.206406, -0.159987, -0.102190, -0.060192, 0.324160",\
+ "-0.303102, -0.251195, -0.193398, -0.151400, 0.227464",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, 0.053358",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.246898");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[35]_hldr*/
+
+} /* end of pin tl_i[35] */
+
+pin("tl_i[34]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.023475 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[34];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.659205, 5.613050, 5.582833, 5.571476, 5.585083",\
+ "5.746680, 5.700525, 5.670308, 5.658950, 5.672558",\
+ "5.833981, 5.787826, 5.757608, 5.746251, 5.759859",\
+ "6.007267, 5.961112, 5.930894, 5.919537, 5.933145",\
+ "6.412266, 6.366111, 6.335894, 6.324536, 6.338144");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.653732, 5.607577, 5.577360, 5.566003, 5.579610",\
+ "5.742702, 5.696547, 5.666329, 5.654972, 5.668580",\
+ "5.857737, 5.811582, 5.781364, 5.770007, 5.783615",\
+ "6.095998, 6.049843, 6.019626, 6.008269, 6.021876",\
+ "6.532254, 6.486099, 6.455882, 6.444524, 6.458132");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[34]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.126806, -0.060002, 0.003106, 0.047821, 0.287989",\
+ "-0.211450, -0.142185, -0.078960, -0.034194, 0.203312",\
+ "-0.299321, -0.228917, -0.165692, -0.120927, 0.115291",\
+ "-0.454448, -0.386390, -0.323164, -0.278399, -0.040427",\
+ "-0.633444, -0.567337, -0.509403, -0.467367, -0.247237");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.117131, -0.065963, -0.008166, 0.033833, 0.413435",\
+ "-0.206406, -0.159987, -0.102190, -0.060192, 0.324160",\
+ "-0.303102, -0.251195, -0.193398, -0.151400, 0.227464",\
+ "-0.474232, -0.408221, -0.350424, -0.308425, 0.053358",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.246898");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[34]_hldr*/
+
+} /* end of pin tl_i[34] */
+
+pin("tl_i[33]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.026365 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[33];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.415846, 5.369691, 5.339474, 5.328116, 5.341724",\
+ "5.492352, 5.446198, 5.415980, 5.404623, 5.418231",\
+ "5.597322, 5.551167, 5.520950, 5.509593, 5.523201",\
+ "5.785541, 5.739386, 5.709168, 5.697811, 5.711419",\
+ "6.094803, 6.048648, 6.018431, 6.007074, 6.020681");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.396865, 5.350710, 5.320493, 5.309135, 5.322743",\
+ "5.469503, 5.423348, 5.393131, 5.381774, 5.395381",\
+ "5.589046, 5.542892, 5.512674, 5.501317, 5.514925",\
+ "5.798637, 5.752482, 5.722265, 5.710908, 5.724515",\
+ "6.156535, 6.110380, 6.080163, 6.068806, 6.082413");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[33]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103109, -0.028958, 0.033565, 0.078027, 0.304632",\
+ "-0.177282, -0.103131, -0.040609, 0.003854, 0.230458",\
+ "-0.245176, -0.171025, -0.108503, -0.064040, 0.162564",\
+ "-0.354010, -0.279859, -0.217337, -0.172874, 0.053730",\
+ "-0.518682, -0.444530, -0.382008, -0.337546, -0.110941");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.065963, -0.008166, 0.033833, 0.418070",\
+ "-0.200788, -0.156050, -0.102190, -0.060192, 0.330575",\
+ "-0.289964, -0.245226, -0.193398, -0.151400, 0.241399",\
+ "-0.449371, -0.404633, -0.350424, -0.308425, 0.081992",\
+ "-0.653554, -0.594763, -0.536828, -0.494793, -0.185077");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[33]_hldr*/
+
+} /* end of pin tl_i[33] */
+
+pin("tl_i[32]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025030 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[32];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.608686, 5.562531, 5.532314, 5.520957, 5.534564",\
+ "5.696244, 5.650089, 5.619872, 5.608514, 5.622122",\
+ "5.806668, 5.760513, 5.730296, 5.718939, 5.732546",\
+ "5.996225, 5.950070, 5.919853, 5.908495, 5.922103",\
+ "6.308736, 6.262581, 6.232364, 6.221007, 6.234614");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.604916, 5.558761, 5.528543, 5.517186, 5.530794",\
+ "5.686645, 5.640490, 5.610272, 5.598915, 5.612523",\
+ "5.804552, 5.758397, 5.728179, 5.716822, 5.730430",\
+ "6.035892, 5.989738, 5.959520, 5.948163, 5.961771",\
+ "6.435390, 6.389235, 6.359018, 6.347661, 6.361268");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[32]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103109, -0.028958, 0.033565, 0.078027, 0.315276",\
+ "-0.177282, -0.103131, -0.040609, 0.003854, 0.236790",\
+ "-0.245176, -0.171025, -0.108503, -0.064040, 0.162564",\
+ "-0.354010, -0.279859, -0.217337, -0.172874, 0.053730",\
+ "-0.518682, -0.444530, -0.382008, -0.337546, -0.110941");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200788, -0.135648, -0.078368, -0.036508, 0.330575",\
+ "-0.289964, -0.226296, -0.169017, -0.127157, 0.241399",\
+ "-0.449371, -0.387089, -0.329810, -0.287949, 0.081992",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185077");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[32]_hldr*/
+
+} /* end of pin tl_i[32] */
+
+pin("tl_i[31]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025825 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[31];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.156651, 5.110496, 5.080278, 5.068921, 5.082529",\
+ "5.240004, 5.193849, 5.163631, 5.152274, 5.165882",\
+ "5.328885, 5.282730, 5.252513, 5.241156, 5.254763",\
+ "5.512913, 5.466758, 5.436541, 5.425183, 5.438791",\
+ "5.849318, 5.803163, 5.772945, 5.761588, 5.775196");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.160699, 5.114544, 5.084327, 5.072970, 5.086577",\
+ "5.238642, 5.192487, 5.162270, 5.150913, 5.164520",\
+ "5.344724, 5.298569, 5.268352, 5.256994, 5.270602",\
+ "5.598361, 5.552207, 5.521989, 5.510632, 5.524240",\
+ "6.070027, 6.023872, 5.993655, 5.982297, 5.995905");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[31]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[31]_hldr*/
+
+} /* end of pin tl_i[31] */
+
+pin("tl_i[30]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025050 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[30];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.361538, 5.315383, 5.285166, 5.273808, 5.287416",\
+ "5.445924, 5.399769, 5.369552, 5.358194, 5.371802",\
+ "5.526791, 5.480636, 5.450418, 5.439061, 5.452669",\
+ "5.668298, 5.622143, 5.591926, 5.580568, 5.594176",\
+ "5.912872, 5.866717, 5.836500, 5.825143, 5.838750");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.346942, 5.300787, 5.270570, 5.259213, 5.272820",\
+ "5.428506, 5.382351, 5.352134, 5.340776, 5.354384",\
+ "5.534707, 5.488552, 5.458334, 5.446977, 5.460585",\
+ "5.723008, 5.676853, 5.646636, 5.635279, 5.648886",\
+ "6.057394, 6.011239, 5.981022, 5.969665, 5.983272");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[30]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[30]_hldr*/
+
+} /* end of pin tl_i[30] */
+
+pin("tl_i[29]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.026087 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[29];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.397203, 5.351048, 5.320831, 5.309474, 5.323081",\
+ "5.485135, 5.438980, 5.408763, 5.397406, 5.411013",\
+ "5.586405, 5.540250, 5.510033, 5.498675, 5.512283",\
+ "5.772069, 5.725914, 5.695697, 5.684340, 5.697948",\
+ "6.070103, 6.023948, 5.993731, 5.982373, 5.995981");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.401423, 5.355268, 5.325051, 5.313694, 5.327301",\
+ "5.484715, 5.438560, 5.408342, 5.396985, 5.410593",\
+ "5.608980, 5.562825, 5.532608, 5.521251, 5.534858",\
+ "5.841204, 5.795049, 5.764832, 5.753474, 5.767082",\
+ "6.247406, 6.201252, 6.171034, 6.159677, 6.173285");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[29]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[29]_hldr*/
+
+} /* end of pin tl_i[29] */
+
+pin("tl_i[28]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025799 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[28];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.618461, 5.572306, 5.542089, 5.530732, 5.544339",\
+ "5.717470, 5.671315, 5.641098, 5.629741, 5.643348",\
+ "5.855001, 5.808846, 5.778629, 5.767272, 5.780879",\
+ "6.129478, 6.083323, 6.053106, 6.041749, 6.055356",\
+ "6.630586, 6.584431, 6.554214, 6.542856, 6.556464");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.605847, 5.559692, 5.529475, 5.518118, 5.531725",\
+ "5.703081, 5.656926, 5.626709, 5.615352, 5.628959",\
+ "5.850164, 5.804009, 5.773792, 5.762435, 5.776042",\
+ "6.157188, 6.111033, 6.080816, 6.069459, 6.083066",\
+ "6.726156, 6.680001, 6.649784, 6.638427, 6.652034");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[28]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.515343, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.384569, -0.318431, -0.272351, 0.081996",\
+ "-0.607923, -0.533171, -0.467033, -0.420953, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[28]_hldr*/
+
+} /* end of pin tl_i[28] */
+
+pin("tl_i[27]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025120 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[27];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.422370, 5.376215, 5.345998, 5.334641, 5.348248",\
+ "5.509055, 5.462900, 5.432683, 5.421326, 5.434933",\
+ "5.606899, 5.560744, 5.530527, 5.519170, 5.532777",\
+ "5.815886, 5.769731, 5.739513, 5.728156, 5.741764",\
+ "6.259951, 6.213796, 6.183579, 6.172222, 6.185829");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.415630, 5.369475, 5.339258, 5.327900, 5.341508",\
+ "5.508262, 5.462107, 5.431890, 5.420532, 5.434140",\
+ "5.634383, 5.588228, 5.558011, 5.546654, 5.560261",\
+ "5.884534, 5.838379, 5.808162, 5.796804, 5.810412",\
+ "6.321214, 6.275059, 6.244842, 6.233485, 6.247092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[27]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[27]_hldr*/
+
+} /* end of pin tl_i[27] */
+
+pin("tl_i[26]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.025620 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[26];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.634807, 5.588652, 5.558434, 5.547077, 5.560685",\
+ "5.726879, 5.680724, 5.650507, 5.639150, 5.652757",\
+ "5.836696, 5.790541, 5.760324, 5.748966, 5.762574",\
+ "6.041320, 5.995165, 5.964948, 5.953590, 5.967198",\
+ "6.417303, 6.371148, 6.340931, 6.329574, 6.343181");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.627578, 5.581423, 5.551206, 5.539848, 5.553456",\
+ "5.725660, 5.679505, 5.649288, 5.637930, 5.651538",\
+ "5.857279, 5.811124, 5.780907, 5.769550, 5.783157",\
+ "6.101712, 6.055557, 6.025340, 6.013983, 6.027590",\
+ "6.528873, 6.482718, 6.452501, 6.441144, 6.454751");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[26]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[26]_hldr*/
+
+} /* end of pin tl_i[26] */
+
+pin("tl_i[25]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.027861 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[25];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.587914, 5.541759, 5.511542, 5.500185, 5.513792",\
+ "5.685092, 5.638937, 5.608720, 5.597363, 5.610970",\
+ "5.791002, 5.744847, 5.714630, 5.703273, 5.716880",\
+ "5.984866, 5.938711, 5.908494, 5.897137, 5.910744",\
+ "6.350015, 6.303860, 6.273643, 6.262286, 6.275893");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.597159, 5.551004, 5.520787, 5.509430, 5.523037",\
+ "5.695459, 5.649304, 5.619087, 5.607729, 5.621337",\
+ "5.810205, 5.764050, 5.733832, 5.722475, 5.736083",\
+ "6.008989, 5.962834, 5.932617, 5.921260, 5.934867",\
+ "6.374745, 6.328590, 6.298373, 6.287016, 6.300623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[25]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[25]_hldr*/
+
+} /* end of pin tl_i[25] */
+
+pin("tl_i[24]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.026383 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[24];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.563736, 5.517581, 5.487364, 5.476007, 5.489614",\
+ "5.661705, 5.615550, 5.585332, 5.573975, 5.587583",\
+ "5.767614, 5.721459, 5.691242, 5.679884, 5.693492",\
+ "5.957180, 5.911025, 5.880808, 5.869451, 5.883058",\
+ "6.288558, 6.242403, 6.212186, 6.200829, 6.214436");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.590299, 5.544144, 5.513927, 5.502569, 5.516177",\
+ "5.689440, 5.643285, 5.613068, 5.601710, 5.615318",\
+ "5.803774, 5.757619, 5.727402, 5.716045, 5.729652",\
+ "5.994250, 5.948095, 5.917878, 5.906520, 5.920128",\
+ "6.312450, 6.266295, 6.236078, 6.224721, 6.238328");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[24]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.103114, -0.028963, 0.033559, 0.078022, 0.315276",\
+ "-0.178370, -0.104212, -0.041630, 0.002858, 0.236790",\
+ "-0.246264, -0.172106, -0.109525, -0.065037, 0.161580",\
+ "-0.355098, -0.280940, -0.218359, -0.173870, 0.052747",\
+ "-0.519769, -0.445611, -0.383030, -0.338542, -0.111925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.112706, -0.048572, 0.008708, 0.050568, 0.418070",\
+ "-0.200783, -0.135648, -0.078368, -0.036508, 0.330579",\
+ "-0.289959, -0.226296, -0.169017, -0.127157, 0.241403",\
+ "-0.449366, -0.387089, -0.329810, -0.287949, 0.081996",\
+ "-0.660870, -0.594763, -0.536828, -0.494793, -0.185073");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[24]_hldr*/
+
+} /* end of pin tl_i[24] */
+
+pin("tl_i[23]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[23];
+} /* end of pin tl_i[23] */
+
+pin("tl_i[22]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[22];
+} /* end of pin tl_i[22] */
+
+pin("tl_i[21]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[21];
+} /* end of pin tl_i[21] */
+
+pin("tl_i[20]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[20];
+} /* end of pin tl_i[20] */
+
+pin("tl_i[19]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[19];
+} /* end of pin tl_i[19] */
+
+pin("tl_i[18]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005233 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[18];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.846815, 5.800660, 5.770443, 5.759086, 5.772694",\
+ "5.932193, 5.886038, 5.855821, 5.844464, 5.858071",\
+ "6.009590, 5.963435, 5.933218, 5.921861, 5.935469",\
+ "6.178617, 6.132463, 6.102246, 6.090889, 6.104496",\
+ "6.537492, 6.491337, 6.461120, 6.449763, 6.463370");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.843783, 5.797628, 5.767412, 5.756054, 5.769662",\
+ "5.926365, 5.880210, 5.849993, 5.838636, 5.852243",\
+ "6.038355, 5.992200, 5.961983, 5.950626, 5.964233",\
+ "6.269215, 6.223060, 6.192843, 6.181486, 6.195093",\
+ "6.674184, 6.628029, 6.597812, 6.586455, 6.600062");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[18]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.329740, -0.287323, -0.252837, -0.213389, 0.092961",\
+ "-0.415095, -0.372677, -0.338191, -0.298743, 0.007607",\
+ "-0.499351, -0.456933, -0.422448, -0.383000, -0.076649",\
+ "-0.641023, -0.598605, -0.564119, -0.524671, -0.218321",\
+ "-0.860645, -0.818228, -0.783742, -0.744294, -0.437944");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.392665, -0.350247, -0.315761, -0.276314, 0.030037",\
+ "-0.480853, -0.438436, -0.403950, -0.364502, -0.058152",\
+ "-0.581004, -0.538587, -0.504101, -0.464653, -0.158303",\
+ "-0.765285, -0.722867, -0.665898, -0.623927, -0.342583",\
+ "-1.010030, -0.967612, -0.918979, -0.877008, -0.587328");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[18]_hldr*/
+
+} /* end of pin tl_i[18] */
+
+pin("tl_i[17]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.004306 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[17];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.132060, 6.085905, 6.055688, 6.044331, 6.057939",\
+ "6.217465, 6.171310, 6.141094, 6.129736, 6.143344",\
+ "6.294953, 6.248798, 6.218582, 6.207224, 6.220832",\
+ "6.439157, 6.393003, 6.362786, 6.351429, 6.365036",\
+ "6.796788, 6.750633, 6.720417, 6.709059, 6.722667");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.129071, 6.082916, 6.052700, 6.041342, 6.054950",\
+ "6.211690, 6.165535, 6.135318, 6.123961, 6.137568",\
+ "6.323722, 6.277567, 6.247350, 6.235993, 6.249600",\
+ "6.554055, 6.507900, 6.477684, 6.466326, 6.479934",\
+ "6.957980, 6.911825, 6.881608, 6.870251, 6.883859");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[17]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.329387, -0.286969, -0.252483, -0.213035, 0.093315",\
+ "-0.413395, -0.370977, -0.336491, -0.297044, 0.009307",\
+ "-0.496847, -0.454429, -0.419944, -0.380496, -0.074145",\
+ "-0.636423, -0.594005, -0.559520, -0.520072, -0.213721",\
+ "-0.849170, -0.806753, -0.772267, -0.732819, -0.426469");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.397874, -0.355456, -0.320970, -0.281523, 0.024828",\
+ "-0.486065, -0.443648, -0.409162, -0.369714, -0.063364",\
+ "-0.585801, -0.543384, -0.506390, -0.464420, -0.163100",\
+ "-0.770163, -0.720512, -0.662817, -0.620846, -0.347461",\
+ "-1.005635, -0.963218, -0.913955, -0.871984, -0.582934");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[17]_hldr*/
+
+} /* end of pin tl_i[17] */
+
+pin("tl_i[16]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003506 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[16];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.061040, 6.014885, 5.984668, 5.973311, 5.986918",\
+ "6.154351, 6.108196, 6.077980, 6.066622, 6.080230",\
+ "6.247583, 6.201428, 6.171212, 6.159854, 6.173462",\
+ "6.410316, 6.364161, 6.333944, 6.322587, 6.336194",\
+ "6.686312, 6.640157, 6.609940, 6.598583, 6.612190");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.018520, 5.972365, 5.942149, 5.930791, 5.944399",\
+ "6.115014, 6.068859, 6.038642, 6.027285, 6.040893",\
+ "6.214722, 6.168567, 6.138350, 6.126993, 6.140600",\
+ "6.391147, 6.344992, 6.314775, 6.303418, 6.317025",\
+ "6.683747, 6.637592, 6.607376, 6.596018, 6.609626");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[16]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.394478, -0.352061, -0.317575, -0.278127, 0.028223",\
+ "-0.483595, -0.441177, -0.404014, -0.362043, -0.060893",\
+ "-0.569978, -0.527561, -0.480614, -0.438644, -0.147277",\
+ "-0.718308, -0.666396, -0.608701, -0.566730, -0.295606",\
+ "-0.932373, -0.866433, -0.808738, -0.766767, -0.544592");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.386365, -0.343947, -0.309462, -0.270014, 0.036337",\
+ "-0.468621, -0.426203, -0.391718, -0.352270, -0.045919",\
+ "-0.564853, -0.522435, -0.487950, -0.448502, -0.142151",\
+ "-0.726358, -0.683941, -0.649455, -0.610007, -0.303657",\
+ "-0.988854, -0.946436, -0.911950, -0.872503, -0.566152");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[16]_hldr*/
+
+} /* end of pin tl_i[16] */
+
+pin("tl_i[15]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.003647 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[15];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.804135, 5.757980, 5.727764, 5.716406, 5.730014",\
+ "5.902175, 5.856020, 5.825803, 5.814446, 5.828053",\
+ "6.008589, 5.962434, 5.932217, 5.920860, 5.934467",\
+ "6.199651, 6.153496, 6.123279, 6.111922, 6.125529",\
+ "6.533928, 6.487773, 6.457556, 6.446199, 6.459806");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.811823, 5.765668, 5.735451, 5.724094, 5.737701",\
+ "5.911395, 5.865240, 5.835023, 5.823666, 5.837274",\
+ "6.026561, 5.980406, 5.950189, 5.938832, 5.952439",\
+ "6.220825, 6.174670, 6.144454, 6.133096, 6.146704",\
+ "6.548571, 6.502416, 6.472199, 6.460842, 6.474449");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[15]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.333549, -0.291131, -0.256645, -0.217198, 0.089153",\
+ "-0.416355, -0.373937, -0.339451, -0.300003, 0.006347",\
+ "-0.498092, -0.455675, -0.421189, -0.381741, -0.075391",\
+ "-0.641500, -0.599082, -0.564596, -0.525149, -0.218798",\
+ "-0.881493, -0.839075, -0.804590, -0.765142, -0.458791");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.367074, -0.324657, -0.290171, -0.250723, 0.055627",\
+ "-0.454947, -0.412529, -0.378044, -0.338596, -0.032245",\
+ "-0.540971, -0.498554, -0.464068, -0.424620, -0.118270",\
+ "-0.691009, -0.648592, -0.614106, -0.574658, -0.268308",\
+ "-0.937715, -0.895297, -0.860812, -0.821364, -0.515013");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[15]_hldr*/
+
+} /* end of pin tl_i[15] */
+
+pin("tl_i[14]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[14];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.880361, 5.834206, 5.803989, 5.792632, 5.806239",\
+ "5.967889, 5.921734, 5.891517, 5.880160, 5.893767",\
+ "6.055178, 6.009023, 5.978806, 5.967449, 5.981056",\
+ "6.230941, 6.184786, 6.154569, 6.143212, 6.156819",\
+ "6.640085, 6.593930, 6.563713, 6.552356, 6.565963");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.875138, 5.828983, 5.798766, 5.787409, 5.801016",\
+ "5.963992, 5.917837, 5.887620, 5.876263, 5.889871",\
+ "6.079109, 6.032954, 6.002738, 5.991380, 6.004988",\
+ "6.317663, 6.271508, 6.241292, 6.229934, 6.243542",\
+ "6.755099, 6.708944, 6.678727, 6.667370, 6.680977");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[14]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.456322, -1.413945, -1.379366, -1.341730, -1.057874",\
+ "-1.546534, -1.504156, -1.469577, -1.431942, -1.148085",\
+ "-1.659324, -1.616947, -1.582367, -1.544732, -1.260875",\
+ "-1.878867, -1.836490, -1.801910, -1.764275, -1.480418",\
+ "-2.185190, -2.142812, -2.108233, -2.070598, -1.786741");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.489696, -1.447319, -1.412740, -1.375104, -1.091248",\
+ "-1.579588, -1.537211, -1.502631, -1.464996, -1.181139",\
+ "-1.675047, -1.632670, -1.598091, -1.560455, -1.276599",\
+ "-1.845432, -1.803055, -1.768476, -1.730840, -1.446984",\
+ "-2.145069, -2.102692, -2.068113, -2.030477, -1.746621");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[14]_hldr*/
+
+} /* end of pin tl_i[14] */
+
+pin("tl_i[13]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[13];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.164994, 6.118839, 6.088623, 6.077265, 6.090873",\
+ "6.252498, 6.206343, 6.176126, 6.164769, 6.178376",\
+ "6.339791, 6.293636, 6.263420, 6.252062, 6.265670",\
+ "6.496986, 6.450831, 6.420614, 6.409257, 6.422864",\
+ "6.898607, 6.852452, 6.822236, 6.810878, 6.824486");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "6.159660, 6.113505, 6.083289, 6.071931, 6.085539",\
+ "6.248568, 6.202413, 6.172196, 6.160839, 6.174446",\
+ "6.363653, 6.317498, 6.287282, 6.275924, 6.289532",\
+ "6.601918, 6.555763, 6.525547, 6.514189, 6.527797",\
+ "7.038295, 6.992140, 6.961923, 6.950566, 6.964173");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[13]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.676593, -1.628499, -1.570612, -1.528590, -1.278144",\
+ "-1.766810, -1.718717, -1.660830, -1.618807, -1.368362",\
+ "-1.879585, -1.831491, -1.773605, -1.731582, -1.481137",\
+ "-2.098712, -2.050618, -1.992732, -1.950709, -1.700264",\
+ "-2.408059, -2.359965, -2.302078, -2.260055, -2.009610");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.710053, -1.661959, -1.604072, -1.562050, -1.311604",\
+ "-1.799952, -1.751858, -1.693972, -1.651949, -1.401504",\
+ "-1.895418, -1.847324, -1.789437, -1.747415, -1.496969",\
+ "-2.065788, -2.017694, -1.959808, -1.917785, -1.667340",\
+ "-2.365375, -2.317281, -2.259394, -2.217371, -1.966926");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[13]_hldr*/
+
+} /* end of pin tl_i[13] */
+
+pin("tl_i[12]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001105 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[12];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.508289, 5.462134, 5.431918, 5.420560, 5.434168",\
+ "5.592647, 5.546492, 5.516275, 5.504918, 5.518525",\
+ "5.673546, 5.627391, 5.597174, 5.585817, 5.599424",\
+ "5.815136, 5.768981, 5.738764, 5.727407, 5.741014",\
+ "6.052000, 6.005845, 5.975628, 5.964271, 5.977879");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.430960, 5.384805, 5.354588, 5.343231, 5.356838",\
+ "5.522353, 5.476198, 5.445981, 5.434624, 5.448231",\
+ "5.614760, 5.568605, 5.538389, 5.527031, 5.540639",\
+ "5.776403, 5.730248, 5.700032, 5.688674, 5.702282",\
+ "6.049640, 6.003485, 5.973268, 5.961911, 5.975518");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[12]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.265898, -1.223521, -1.188942, -1.151306, -0.867450",\
+ "-1.350510, -1.308133, -1.273553, -1.235918, -0.952061",\
+ "-1.430668, -1.388291, -1.353711, -1.316076, -1.032219",\
+ "-1.572586, -1.530209, -1.495630, -1.457994, -1.174138",\
+ "-1.810084, -1.767707, -1.733127, -1.695492, -1.411635");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.242763, -1.200386, -1.165807, -1.128171, -0.844315",\
+ "-1.334117, -1.291740, -1.257160, -1.219525, -0.935668",\
+ "-1.427063, -1.384685, -1.350106, -1.312471, -1.028614",\
+ "-1.589313, -1.546936, -1.512356, -1.474721, -1.190864",\
+ "-1.862213, -1.819836, -1.785256, -1.747621, -1.463764");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[12]_hldr*/
+
+} /* end of pin tl_i[12] */
+
+pin("tl_i[11]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[11];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.261997, 5.215842, 5.185626, 5.174268, 5.187876",\
+ "5.353421, 5.307266, 5.277050, 5.265692, 5.279300",\
+ "5.463365, 5.417210, 5.386993, 5.375636, 5.389243",\
+ "5.679752, 5.633597, 5.603381, 5.592023, 5.605631",\
+ "6.088896, 6.042741, 6.012525, 6.001167, 6.014775");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.323949, 5.277794, 5.247577, 5.236220, 5.249827",\
+ "5.412804, 5.366649, 5.336432, 5.325075, 5.338682",\
+ "5.527921, 5.481766, 5.451549, 5.440192, 5.453799",\
+ "5.766475, 5.720320, 5.690103, 5.678746, 5.692353",\
+ "6.203910, 6.157755, 6.127538, 6.116181, 6.129788");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[11]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.231498, -1.189121, -1.154542, -1.116906, -0.833050",\
+ "-1.321710, -1.279333, -1.244753, -1.207118, -0.923261",\
+ "-1.434500, -1.392123, -1.357543, -1.319908, -1.036052",\
+ "-1.654043, -1.611666, -1.577086, -1.539451, -1.255594",\
+ "-2.055035, -2.012658, -1.978078, -1.940443, -1.656586");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.277769, -1.235391, -1.200812, -1.163177, -0.879320",\
+ "-1.368203, -1.325825, -1.291246, -1.253611, -0.969754",\
+ "-1.482250, -1.439872, -1.405293, -1.367658, -1.083801",\
+ "-1.702415, -1.660038, -1.625458, -1.587823, -1.303966",\
+ "-2.095423, -2.053046, -2.018466, -1.980831, -1.696974");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[11]_hldr*/
+
+} /* end of pin tl_i[11] */
+
+pin("tl_i[10]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[10];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.688106, 5.641951, 5.611734, 5.600377, 5.613985",\
+ "5.775612, 5.729457, 5.699240, 5.687883, 5.701490",\
+ "5.862906, 5.816751, 5.786535, 5.775177, 5.788785",\
+ "6.017570, 5.971415, 5.941198, 5.929841, 5.943448",\
+ "6.285493, 6.239338, 6.209121, 6.197764, 6.211371");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.621125, 5.574970, 5.544754, 5.533396, 5.547004",\
+ "5.711027, 5.664872, 5.634655, 5.623298, 5.636906",\
+ "5.806498, 5.760343, 5.730126, 5.718769, 5.732377",\
+ "5.976879, 5.930724, 5.900507, 5.889150, 5.902758",\
+ "6.276484, 6.230330, 6.200113, 6.188756, 6.202363");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[10]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.488494, -1.446116, -1.411537, -1.373901, -1.090045",\
+ "-1.576000, -1.533622, -1.499043, -1.461408, -1.177551",\
+ "-1.663294, -1.620917, -1.586338, -1.548702, -1.264846",\
+ "-1.817957, -1.775580, -1.741001, -1.703365, -1.419509",\
+ "-2.085881, -2.043503, -2.008924, -1.971289, -1.687432");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.387740, -1.345363, -1.310783, -1.273148, -0.989291",\
+ "-1.477641, -1.435264, -1.400684, -1.363049, -1.079192",\
+ "-1.573112, -1.530735, -1.496156, -1.458520, -1.174664",\
+ "-1.743494, -1.701116, -1.666537, -1.628902, -1.345045",\
+ "-2.043099, -2.000721, -1.966142, -1.928507, -1.644650");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[10]_hldr*/
+
+} /* end of pin tl_i[10] */
+
+pin("tl_i[9]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.299526, 5.253371, 5.223155, 5.211797, 5.225405",\
+ "5.387030, 5.340875, 5.310658, 5.299301, 5.312908",\
+ "5.474324, 5.428169, 5.397952, 5.386595, 5.400202",\
+ "5.628947, 5.582792, 5.552575, 5.541218, 5.554825",\
+ "5.896894, 5.850739, 5.820522, 5.809165, 5.822773");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.267633, 5.221478, 5.191262, 5.179904, 5.193512",\
+ "5.357825, 5.311670, 5.281454, 5.270096, 5.283704",\
+ "5.453746, 5.407591, 5.377375, 5.366017, 5.379625",\
+ "5.626006, 5.579851, 5.549634, 5.538277, 5.551885",\
+ "5.922129, 5.875974, 5.845757, 5.834400, 5.848007");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.240064, -1.197687, -1.163107, -1.125472, -0.841615",\
+ "-1.327747, -1.285370, -1.250791, -1.213155, -0.929299",\
+ "-1.415402, -1.373024, -1.338445, -1.300810, -1.016953",\
+ "-1.572242, -1.529865, -1.495286, -1.457650, -1.173794",\
+ "-1.840724, -1.798346, -1.763767, -1.726132, -1.442275");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.220831, -1.178454, -1.143874, -1.106239, -0.822382",\
+ "-1.310730, -1.268353, -1.233773, -1.196138, -0.912281",\
+ "-1.406196, -1.363818, -1.329239, -1.291603, -1.007747",\
+ "-1.576566, -1.534189, -1.499609, -1.461974, -1.178117",\
+ "-1.876152, -1.833775, -1.799196, -1.761560, -1.477704");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[9]_hldr*/
+
+} /* end of pin tl_i[9] */
+
+pin("tl_i[8]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.306569, 5.260414, 5.230197, 5.218840, 5.232448",\
+ "5.394075, 5.347920, 5.317704, 5.306346, 5.319954",\
+ "5.481370, 5.435215, 5.404998, 5.393641, 5.407248",\
+ "5.636033, 5.589878, 5.559661, 5.548304, 5.561912",\
+ "5.903956, 5.857801, 5.827585, 5.816227, 5.829835");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.239589, 5.193434, 5.163217, 5.151860, 5.165467",\
+ "5.329490, 5.283335, 5.253119, 5.241761, 5.255369",\
+ "5.424961, 5.378806, 5.348589, 5.337232, 5.350840",\
+ "5.595343, 5.549188, 5.518971, 5.507614, 5.521221",\
+ "5.894948, 5.848793, 5.818576, 5.807219, 5.820827");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.339799, -1.297422, -1.262842, -1.225207, -0.941350",\
+ "-1.427305, -1.384928, -1.350348, -1.312713, -1.028856",\
+ "-1.514600, -1.472222, -1.437643, -1.400007, -1.116151",\
+ "-1.669263, -1.626886, -1.592306, -1.554671, -1.270814",\
+ "-1.937186, -1.894809, -1.860229, -1.822594, -1.538737");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.239045, -1.196668, -1.162088, -1.124453, -0.840596",\
+ "-1.328946, -1.286569, -1.251990, -1.214354, -0.930498",\
+ "-1.424418, -1.382040, -1.347461, -1.309826, -1.025969",\
+ "-1.594799, -1.552422, -1.517842, -1.480207, -1.196350",\
+ "-1.894404, -1.852027, -1.817448, -1.779812, -1.495956");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[8]_hldr*/
+
+} /* end of pin tl_i[8] */
+
+pin("tl_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.737750, 5.691595, 5.661378, 5.650021, 5.663628",\
+ "5.825280, 5.779125, 5.748908, 5.737551, 5.751158",\
+ "5.912570, 5.866415, 5.836198, 5.824841, 5.838448",\
+ "6.086271, 6.040116, 6.009899, 5.998541, 6.012149",\
+ "6.495438, 6.449283, 6.419065, 6.407708, 6.421316");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.732527, 5.686372, 5.656155, 5.644798, 5.658405",\
+ "5.821378, 5.775223, 5.745006, 5.733648, 5.747256",\
+ "5.936484, 5.890329, 5.860112, 5.848755, 5.862362",\
+ "6.175041, 6.128886, 6.098669, 6.087312, 6.100919",\
+ "6.612741, 6.566586, 6.536369, 6.525012, 6.538620");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.210458, -1.168081, -1.133501, -1.095866, -0.812009",\
+ "-1.300683, -1.258306, -1.223726, -1.186091, -0.902234",\
+ "-1.413495, -1.371118, -1.336539, -1.298903, -1.015047",\
+ "-1.594716, -1.552338, -1.517759, -1.480124, -1.196267",\
+ "-1.863199, -1.820821, -1.786242, -1.748607, -1.464750");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.243829, -1.201452, -1.166873, -1.129237, -0.845381",\
+ "-1.333722, -1.291345, -1.256766, -1.219130, -0.935274",\
+ "-1.429188, -1.386811, -1.352232, -1.314596, -1.030740",\
+ "-1.599584, -1.557206, -1.522627, -1.484991, -1.201135",\
+ "-1.899240, -1.856863, -1.822283, -1.784648, -1.500791");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[7]_hldr*/
+
+} /* end of pin tl_i[7] */
+
+pin("tl_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001034 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.368608, 5.322453, 5.292236, 5.280879, 5.294487",\
+ "5.454073, 5.407918, 5.377701, 5.366343, 5.379951",\
+ "5.531495, 5.485340, 5.455123, 5.443766, 5.457373",\
+ "5.675749, 5.629594, 5.599377, 5.588020, 5.601627",\
+ "6.027932, 5.981777, 5.951560, 5.940202, 5.953810");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.365854, 5.319699, 5.289482, 5.278125, 5.291732",\
+ "5.448556, 5.402401, 5.372184, 5.360826, 5.374434",\
+ "5.560353, 5.514198, 5.483981, 5.472623, 5.486231",\
+ "5.789183, 5.743028, 5.712811, 5.701454, 5.715061",\
+ "6.188337, 6.142182, 6.111965, 6.100607, 6.114215");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.925690, -0.883313, -0.848733, -0.811098, -0.527241",\
+ "-1.010422, -0.968045, -0.933465, -0.895830, -0.611973",\
+ "-1.117256, -1.074878, -1.040299, -1.002663, -0.718807",\
+ "-1.269870, -1.227492, -1.192913, -1.155277, -0.871421",\
+ "-1.497461, -1.455084, -1.420505, -1.382869, -1.099013");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.942127, -0.899750, -0.865171, -0.827535, -0.543679",\
+ "-1.032129, -0.989751, -0.955172, -0.917537, -0.633680",\
+ "-1.120122, -1.077745, -1.043165, -1.005530, -0.721673",\
+ "-1.275255, -1.232878, -1.198298, -1.160663, -0.876806",\
+ "-1.540632, -1.498255, -1.463676, -1.426040, -1.142184");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[6]_hldr*/
+
+} /* end of pin tl_i[6] */
+
+pin("tl_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.646876, 5.600721, 5.570504, 5.559147, 5.572754",\
+ "5.734406, 5.688251, 5.658034, 5.646677, 5.660285",\
+ "5.821696, 5.775541, 5.745324, 5.733967, 5.747574",\
+ "5.997414, 5.951259, 5.921041, 5.909684, 5.923292",\
+ "6.406565, 6.360410, 6.330193, 6.318835, 6.332443");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "5.641654, 5.595499, 5.565282, 5.553925, 5.567532",\
+ "5.730504, 5.684349, 5.654132, 5.642775, 5.656382",\
+ "5.845611, 5.799456, 5.769239, 5.757882, 5.771489",\
+ "6.084159, 6.038004, 6.007787, 5.996430, 6.010037",\
+ "6.521860, 6.475705, 6.445487, 6.434130, 6.447738");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.106780, -1.064402, -1.029823, -0.992188, -0.708331",\
+ "-1.197005, -1.154628, -1.120048, -1.082413, -0.798556",\
+ "-1.309817, -1.267440, -1.232860, -1.195225, -0.911368",\
+ "-1.491037, -1.448660, -1.414081, -1.376445, -1.092589",\
+ "-1.759520, -1.717143, -1.682564, -1.644928, -1.361072");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-1.140151, -1.097774, -1.063194, -1.025559, -0.741702",\
+ "-1.230044, -1.187667, -1.153087, -1.115452, -0.831595",\
+ "-1.325510, -1.283133, -1.248553, -1.210918, -0.927061",\
+ "-1.495905, -1.453528, -1.418948, -1.381313, -1.097456",\
+ "-1.795562, -1.753184, -1.718605, -1.680969, -1.397113");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[5]_hldr*/
+
+} /* end of pin tl_i[5] */
+
+pin("tl_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001034 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.980015, 4.933860, 4.903643, 4.892286, 4.905893",\
+ "5.065440, 5.019285, 4.989068, 4.977711, 4.991318",\
+ "5.143021, 5.096866, 5.066648, 5.055291, 5.068899",\
+ "5.322774, 5.276619, 5.246402, 5.235044, 5.248652",\
+ "5.675738, 5.629583, 5.599366, 5.588009, 5.601616");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.977059, 4.930904, 4.900687, 4.889330, 4.902937",\
+ "5.059716, 5.013561, 4.983344, 4.971986, 4.985594",\
+ "5.171787, 5.125632, 5.095415, 5.084057, 5.097665",\
+ "5.401430, 5.355275, 5.325058, 5.313701, 5.327308",\
+ "5.800714, 5.754560, 5.724342, 5.712985, 5.726593");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.891577, -0.849200, -0.814620, -0.776985, -0.493128",\
+ "-0.976303, -0.933926, -0.899346, -0.861711, -0.577854",\
+ "-1.083459, -1.041082, -1.006503, -0.968867, -0.685011",\
+ "-1.234205, -1.191828, -1.157249, -1.119613, -0.835757",\
+ "-1.461877, -1.419500, -1.384920, -1.347285, -1.063428");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.907849, -0.865472, -0.830893, -0.793257, -0.509401",\
+ "-0.997841, -0.955464, -0.920885, -0.883249, -0.599393",\
+ "-1.085765, -1.043387, -1.008808, -0.971172, -0.687316",\
+ "-1.240999, -1.198622, -1.164043, -1.126407, -0.842551",\
+ "-1.506646, -1.464268, -1.429689, -1.392054, -1.108197");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[4]_hldr*/
+
+} /* end of pin tl_i[4] */
+
+pin("tl_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000507 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.861817, 4.815662, 4.785445, 4.774088, 4.787695",\
+ "4.949495, 4.903340, 4.873123, 4.861766, 4.875373",\
+ "5.036715, 4.990560, 4.960342, 4.948985, 4.962593",\
+ "5.207161, 5.161006, 5.130789, 5.119431, 5.133039",\
+ "5.608678, 5.562523, 5.532306, 5.520948, 5.534556");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.856341, 4.810186, 4.779969, 4.768611, 4.782219",\
+ "4.945419, 4.899264, 4.869047, 4.857689, 4.871297",\
+ "5.060649, 5.014494, 4.984277, 4.972920, 4.986527",\
+ "5.297888, 5.251733, 5.221516, 5.210158, 5.223766",\
+ "5.732176, 5.686021, 5.655804, 5.644446, 5.658054");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.940665, -0.898288, -0.863709, -0.826073, -0.542217",\
+ "-1.030843, -0.988466, -0.953887, -0.916251, -0.632395",\
+ "-1.143556, -1.101179, -1.066599, -1.028964, -0.745108",\
+ "-1.327817, -1.285440, -1.250861, -1.213225, -0.929369",\
+ "-1.596320, -1.553943, -1.519363, -1.481728, -1.197871");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.974330, -0.931952, -0.897373, -0.859738, -0.575881",\
+ "-1.064250, -1.021872, -0.987293, -0.949658, -0.665801",\
+ "-1.159754, -1.117377, -1.082797, -1.045162, -0.761305",\
+ "-1.330068, -1.287690, -1.253111, -1.215476, -0.931619",\
+ "-1.629461, -1.587083, -1.552504, -1.514869, -1.231012");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[3]_hldr*/
+
+} /* end of pin tl_i[3] */
+
+pin("tl_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001034 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.870526, 4.824371, 4.794154, 4.782797, 4.796404",\
+ "4.955990, 4.909835, 4.879618, 4.868261, 4.881868",\
+ "5.033412, 4.987257, 4.957040, 4.945683, 4.959291",\
+ "5.177666, 5.131511, 5.101294, 5.089936, 5.103544",\
+ "5.529849, 5.483694, 5.453477, 5.442120, 5.455727");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.867772, 4.821617, 4.791399, 4.780042, 4.793650",\
+ "4.950474, 4.904319, 4.874102, 4.862744, 4.876352",\
+ "5.062271, 5.016116, 4.985898, 4.974541, 4.988149",\
+ "5.291101, 5.244946, 5.214728, 5.203371, 5.216979",\
+ "5.690255, 5.644100, 5.613883, 5.602525, 5.616133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.870275, -0.827898, -0.793318, -0.755683, -0.471826",\
+ "-0.955007, -0.912630, -0.878051, -0.840415, -0.556558",\
+ "-1.061841, -1.019464, -0.984884, -0.947249, -0.663392",\
+ "-1.214455, -1.172078, -1.137498, -1.099863, -0.816006",\
+ "-1.442046, -1.399669, -1.365090, -1.327454, -1.043598");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.886713, -0.844335, -0.809756, -0.772120, -0.488264",\
+ "-0.976714, -0.934337, -0.899757, -0.862122, -0.578265",\
+ "-1.064707, -1.022330, -0.987750, -0.950115, -0.666258",\
+ "-1.219840, -1.177463, -1.142883, -1.105248, -0.821391",\
+ "-1.485218, -1.442840, -1.408261, -1.370625, -1.086769");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[2]_hldr*/
+
+} /* end of pin tl_i[2] */
+
+pin("tl_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001034 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.874022, 4.827868, 4.797650, 4.786293, 4.799901",\
+ "4.959486, 4.913332, 4.883114, 4.871757, 4.885365",\
+ "5.036908, 4.990753, 4.960536, 4.949179, 4.962786",\
+ "5.181162, 5.135007, 5.104790, 5.093432, 5.107040",\
+ "5.533345, 5.487190, 5.456973, 5.445615, 5.459223");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "4.871267, 4.825112, 4.794895, 4.783538, 4.797145",\
+ "4.953969, 4.907815, 4.877597, 4.866240, 4.879848",\
+ "5.065766, 5.019611, 4.989394, 4.978037, 4.991644",\
+ "5.294597, 5.248442, 5.218225, 5.206867, 5.220475",\
+ "5.693750, 5.647595, 5.617378, 5.606021, 5.619628");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.871744, -0.829367, -0.794788, -0.757152, -0.473296",\
+ "-0.956476, -0.914099, -0.879520, -0.841884, -0.558028",\
+ "-1.063310, -1.020933, -0.986354, -0.948718, -0.664862",\
+ "-1.215924, -1.173547, -1.138968, -1.101332, -0.817476",\
+ "-1.443516, -1.401139, -1.366559, -1.328924, -1.045067");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.888182, -0.845805, -0.811225, -0.773590, -0.489733",\
+ "-0.978183, -0.935806, -0.901227, -0.863591, -0.579735",\
+ "-1.066176, -1.023799, -0.989220, -0.951584, -0.667728",\
+ "-1.221309, -1.178932, -1.144353, -1.106717, -0.822861",\
+ "-1.486687, -1.444310, -1.409730, -1.372095, -1.088238");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[1]_hldr*/
+
+} /* end of pin tl_i[1] */
+
+pin("tl_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000516 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_i[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.175613, 0.100294, 0.032151, 0.009209, 0.072356",\
+ "0.264638, 0.189339, 0.121299, 0.098527, 0.163209",\
+ "0.360287, 0.285032, 0.217232, 0.194849, 0.263068",\
+ "0.526788, 0.451609, 0.383810, 0.361643, 0.432490",\
+ "0.806358, 0.731299, 0.662593, 0.639784, 0.707364");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.201785, 0.154982, 0.124714, 0.113318, 0.126704",\
+ "0.285559, 0.238387, 0.208091, 0.196673, 0.209933",\
+ "0.386189, 0.338377, 0.307866, 0.296333, 0.309292",\
+ "0.553781, 0.505930, 0.474764, 0.462933, 0.475551",\
+ "0.832990, 0.785063, 0.752603, 0.740184, 0.752132");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.088868, -0.022902, 0.034829, 0.076810, 0.297292",\
+ "-0.178002, -0.111712, -0.053514, -0.011408, 0.208267",\
+ "-0.273901, -0.206863, -0.147593, -0.105196, 0.112621",\
+ "-0.440525, -0.372044, -0.311267, -0.268345, -0.051699",\
+ "-0.719618, -0.648392, -0.585857, -0.542000, -0.322826");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.133037, -0.090779, -0.055923, -0.023644, 0.193736",\
+ "-0.216520, -0.174329, -0.139318, -0.110044, 0.070036",\
+ "-0.315601, -0.273256, -0.237974, -0.213810, -0.097198",\
+ "-0.479066, -0.435673, -0.400366, -0.376078, -0.258082",\
+ "-0.750133, -0.704672, -0.669317, -0.644785, -0.524056");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_i[0]_hldr*/
+
+} /* end of pin tl_i[0] */
+} /* end of bus tl_i */
+bus ( tl_o ) {
+
+ bus_type : BUS66_type1 ;
+ direction : output ;
+
+pin("tl_o[65]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000991 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[65];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.044997, 0.199162, 0.375038, 0.698306, 1.344843",\
+ "0.131049, 0.286337, 0.462145, 0.785022, 1.430777",\
+ "0.213199, 0.374466, 0.550102, 0.872645, 1.517732",\
+ "0.270183, 0.438865, 0.614219, 0.936559, 1.581241",\
+ "0.564592, 0.788723, 0.964610, 1.285306, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.020343, 0.295887, 0.630096, 1.247585, 2.482563",\
+ "0.025257, 0.296852, 0.632059, 1.247585, 2.482563",\
+ "0.038535, 0.299143, 0.632095, 1.247585, 2.482563",\
+ "0.050320, 0.302473, 0.632193, 1.247585, 2.482563",\
+ "0.124837, 0.341325, 0.638465, 1.250160, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.064792, 0.171653, 0.283425, 0.487864, 0.896742",\
+ "0.152284, 0.258972, 0.370706, 0.575169, 0.984096",\
+ "0.232529, 0.339311, 0.450733, 0.655198, 1.064127",\
+ "0.289052, 0.396859, 0.508277, 0.712443, 1.120775",\
+ "0.581256, 0.700191, 0.811913, 1.015459, 1.422552");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.021933, 0.185126, 0.386052, 0.758836, 1.504404",\
+ "0.021933, 0.185264, 0.386558, 0.758836, 1.504404",\
+ "0.022969, 0.185264, 0.386558, 0.758836, 1.504404",\
+ "0.025189, 0.185264, 0.386558, 0.758836, 1.504404",\
+ "0.044032, 0.189320, 0.386558, 0.758836, 1.504684");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[65]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.044997, 0.199162, 0.375038, 0.698306, 1.344843",\
+ "0.131049, 0.286337, 0.462145, 0.785022, 1.430777",\
+ "0.213199, 0.374466, 0.550102, 0.872645, 1.517732",\
+ "0.270183, 0.438865, 0.614219, 0.936559, 1.581241",\
+ "0.564592, 0.788723, 0.964610, 1.285306, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.020343, 0.295887, 0.630096, 1.246366, 2.473547",\
+ "0.025257, 0.296852, 0.632059, 1.246366, 2.473547",\
+ "0.038535, 0.299143, 0.632095, 1.246442, 2.473547",\
+ "0.050320, 0.302473, 0.632193, 1.247184, 2.473547",\
+ "0.124837, 0.341325, 0.638465, 1.250160, 2.473547");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.064792, 0.171653, 0.283425, 0.487864, 0.896742",\
+ "0.152284, 0.258972, 0.370706, 0.575169, 0.984096",\
+ "0.232529, 0.339311, 0.450733, 0.655198, 1.064127",\
+ "0.289052, 0.396859, 0.508277, 0.712443, 1.120775",\
+ "0.581256, 0.700191, 0.811913, 1.015459, 1.422552");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.021933, 0.184336, 0.384548, 0.756608, 1.500727",\
+ "0.021933, 0.184336, 0.384548, 0.756608, 1.500727",\
+ "0.022969, 0.184336, 0.384548, 0.756608, 1.500727",\
+ "0.025189, 0.184950, 0.385003, 0.757508, 1.502518",\
+ "0.044032, 0.189320, 0.385072, 0.758276, 1.504684");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[65]_redg_min*/
+
+} /* end of pin tl_o[65] */
+
+pin("tl_o[64]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[64];
+} /* end of pin tl_o[64] */
+
+pin("tl_o[63]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[63];
+} /* end of pin tl_o[63] */
+
+pin("tl_o[62]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002088 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[62];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.048389, 0.201372, 0.376697, 0.699413, 1.344843",\
+ "0.134717, 0.288547, 0.463802, 0.786127, 1.430777",\
+ "0.217972, 0.376674, 0.551758, 0.873749, 1.517732",\
+ "0.275938, 0.441068, 0.615873, 0.937662, 1.581241",\
+ "0.576253, 0.790939, 0.966256, 1.286403, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.024378, 0.300079, 0.633266, 1.249698, 2.482563",\
+ "0.028867, 0.301069, 0.635212, 1.249698, 2.482563",\
+ "0.041784, 0.303321, 0.635248, 1.249698, 2.482563",\
+ "0.053694, 0.306596, 0.635350, 1.249698, 2.482563",\
+ "0.129380, 0.344908, 0.641605, 1.252253, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.068004, 0.173028, 0.284443, 0.488532, 0.896711",\
+ "0.155415, 0.260346, 0.371724, 0.575838, 0.984064",\
+ "0.235777, 0.340680, 0.451751, 0.655866, 1.064096",\
+ "0.292479, 0.398229, 0.509294, 0.713111, 1.120744",\
+ "0.586381, 0.701567, 0.812926, 1.016124, 1.422520");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.024753, 0.187586, 0.387908, 0.760055, 1.504347",\
+ "0.024753, 0.187732, 0.388412, 0.760055, 1.504347",\
+ "0.025828, 0.187732, 0.388412, 0.760055, 1.504347",\
+ "0.027889, 0.187732, 0.388412, 0.760055, 1.504347",\
+ "0.046464, 0.191695, 0.388412, 0.760055, 1.504627");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[62]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.048389, 0.201372, 0.376697, 0.699413, 1.344843",\
+ "0.134717, 0.288547, 0.463802, 0.786127, 1.430777",\
+ "0.217972, 0.376674, 0.551758, 0.873749, 1.517732",\
+ "0.275938, 0.441068, 0.615873, 0.937662, 1.581241",\
+ "0.576253, 0.790939, 0.966256, 1.286403, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.024378, 0.300079, 0.633266, 1.248468, 2.473548",\
+ "0.028867, 0.301069, 0.635212, 1.248468, 2.473548",\
+ "0.041784, 0.303321, 0.635248, 1.248544, 2.473548",\
+ "0.053694, 0.306596, 0.635350, 1.249288, 2.473548",\
+ "0.129380, 0.344908, 0.641605, 1.252253, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.068004, 0.173028, 0.284443, 0.488532, 0.896711",\
+ "0.155415, 0.260346, 0.371724, 0.575838, 0.984064",\
+ "0.235777, 0.340680, 0.451751, 0.655866, 1.064096",\
+ "0.292479, 0.398229, 0.509294, 0.713111, 1.120744",\
+ "0.586381, 0.701567, 0.812926, 1.016124, 1.422520");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.024753, 0.186786, 0.386401, 0.757824, 1.500670",\
+ "0.024753, 0.186786, 0.386401, 0.757824, 1.500670",\
+ "0.025828, 0.186786, 0.386401, 0.757824, 1.500670",\
+ "0.027889, 0.187397, 0.386858, 0.758726, 1.502461",\
+ "0.046464, 0.191695, 0.386930, 0.759496, 1.504627");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[62]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024378, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.218049, 0.171947, 0.141734, 0.130380, 0.144005",\
+ "0.225343, 0.179241, 0.149028, 0.137673, 0.151299",\
+ "0.298206, 0.252060, 0.221844, 0.210487, 0.224097",\
+ "0.392136, 0.345682, 0.315442, 0.304067, 0.317572",\
+ "0.819837, 0.772019, 0.741401, 0.729820, 0.742723");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.263674, 0.188357, 0.120223, 0.097297, 0.160585",\
+ "0.270643, 0.195326, 0.127193, 0.104267, 0.167554",\
+ "0.342134, 0.266818, 0.198684, 0.175758, 0.239045",\
+ "0.448695, 0.373390, 0.305321, 0.282500, 0.346742",\
+ "0.946962, 0.871764, 0.804107, 0.782042, 0.853404");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[62]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024378, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139030, -0.096614, -0.062124, -0.022751, 0.282672",\
+ "-0.146290, -0.103874, -0.069385, -0.030012, 0.275412",\
+ "-0.217578, -0.175163, -0.140673, -0.101300, 0.204124",\
+ "-0.305582, -0.263210, -0.228618, -0.191228, 0.089586",\
+ "-0.705049, -0.662905, -0.627627, -0.603487, -0.487141");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.129024, -0.063245, -0.005781, 0.036127, 0.257073",\
+ "-0.136957, -0.071178, -0.013715, 0.028194, 0.249139",\
+ "-0.213653, -0.147874, -0.090410, -0.048501, 0.172444",\
+ "-0.315404, -0.249338, -0.191464, -0.149444, 0.070790",\
+ "-0.774971, -0.707116, -0.646741, -0.604032, -0.387962");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[62]_hldr*/
+
+} /* end of pin tl_o[62] */
+
+pin("tl_o[61]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[61];
+} /* end of pin tl_o[61] */
+
+pin("tl_o[60]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[60];
+} /* end of pin tl_o[60] */
+
+pin("tl_o[59]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[59];
+} /* end of pin tl_o[59] */
+
+pin("tl_o[58]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003360 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[58];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.051828, 0.203934, 0.378621, 0.700695, 1.344843",\
+ "0.138345, 0.291109, 0.465724, 0.787408, 1.430777",\
+ "0.222447, 0.379233, 0.553677, 0.875029, 1.517732",\
+ "0.281266, 0.443623, 0.617791, 0.938941, 1.581241",\
+ "0.586734, 0.793508, 0.968165, 1.287675, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.028994, 0.304939, 0.636940, 1.252148, 2.482564",\
+ "0.033002, 0.305957, 0.638867, 1.252148, 2.482564",\
+ "0.045411, 0.308165, 0.638904, 1.252148, 2.482564",\
+ "0.057383, 0.311375, 0.639010, 1.252148, 2.482564",\
+ "0.134005, 0.349063, 0.645245, 1.254679, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.070957, 0.174574, 0.285576, 0.489260, 0.896627",\
+ "0.158358, 0.261892, 0.372857, 0.576565, 0.983980",\
+ "0.238767, 0.342220, 0.452884, 0.656593, 1.064012",\
+ "0.295587, 0.399770, 0.510425, 0.713837, 1.120660",\
+ "0.590723, 0.703115, 0.814054, 1.016848, 1.422437");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.027799, 0.190353, 0.389974, 0.761380, 1.504194",\
+ "0.027799, 0.190507, 0.390474, 0.761380, 1.504194",\
+ "0.028742, 0.190507, 0.390474, 0.761380, 1.504194",\
+ "0.030673, 0.190507, 0.390474, 0.761380, 1.504194",\
+ "0.048664, 0.194365, 0.390474, 0.761380, 1.504474");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[58]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.051828, 0.203934, 0.378621, 0.700695, 1.344843",\
+ "0.138345, 0.291109, 0.465724, 0.787408, 1.430777",\
+ "0.222447, 0.379233, 0.553677, 0.875029, 1.517732",\
+ "0.281266, 0.443623, 0.617791, 0.938941, 1.581241",\
+ "0.586734, 0.793508, 0.968165, 1.287675, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.028994, 0.304939, 0.636940, 1.250905, 2.473548",\
+ "0.033002, 0.305957, 0.638867, 1.250905, 2.473548",\
+ "0.045411, 0.308165, 0.638904, 1.250981, 2.473548",\
+ "0.057383, 0.311375, 0.639010, 1.251728, 2.473548",\
+ "0.134005, 0.349063, 0.645245, 1.254679, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.070957, 0.174574, 0.285576, 0.489260, 0.896627",\
+ "0.158358, 0.261892, 0.372857, 0.576565, 0.983980",\
+ "0.238767, 0.342220, 0.452884, 0.656593, 1.064012",\
+ "0.295587, 0.399770, 0.510425, 0.713837, 1.120660",\
+ "0.590723, 0.703115, 0.814054, 1.016848, 1.422437");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.027799, 0.189542, 0.388462, 0.759147, 1.500517",\
+ "0.027799, 0.189542, 0.388462, 0.759147, 1.500517",\
+ "0.028742, 0.189542, 0.388462, 0.759147, 1.500517",\
+ "0.030673, 0.190148, 0.388922, 0.760051, 1.502309",\
+ "0.048664, 0.194365, 0.388998, 0.760823, 1.504474");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[58]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028994, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.218252, 0.172323, 0.142124, 0.130780, 0.144465",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027799, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.252073, 0.176751, 0.108592, 0.085625, 0.148539",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[58]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028994, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.150180, -0.107763, -0.073276, -0.033852, 0.272195",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027799, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.165228, -0.099313, -0.041654, 0.000307, 0.220914",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[58]_hldr*/
+
+} /* end of pin tl_o[58] */
+
+pin("tl_o[57]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002160 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[57];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.048582, 0.201516, 0.376805, 0.699484, 1.344843",\
+ "0.134920, 0.288690, 0.463910, 0.786199, 1.430777",\
+ "0.218223, 0.376818, 0.551865, 0.873821, 1.517732",\
+ "0.276237, 0.441212, 0.615981, 0.937734, 1.581241",\
+ "0.576841, 0.791083, 0.966363, 1.286475, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.024637, 0.300352, 0.633472, 1.249836, 2.482563",\
+ "0.029099, 0.301343, 0.635417, 1.249836, 2.482563",\
+ "0.041988, 0.303593, 0.635453, 1.249836, 2.482563",\
+ "0.053901, 0.306864, 0.635555, 1.249836, 2.482563",\
+ "0.129639, 0.345141, 0.641809, 1.252389, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.068110, 0.173083, 0.284476, 0.488542, 0.896675",\
+ "0.155520, 0.260402, 0.371756, 0.575847, 0.984028",\
+ "0.235884, 0.340735, 0.451783, 0.655876, 1.064060",\
+ "0.292590, 0.398284, 0.509326, 0.713120, 1.120708",\
+ "0.586537, 0.701623, 0.812958, 1.016134, 1.422485");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.024862, 0.187685, 0.387967, 0.760072, 1.504282",\
+ "0.024862, 0.187831, 0.388471, 0.760072, 1.504282",\
+ "0.025932, 0.187831, 0.388471, 0.760072, 1.504282",\
+ "0.027989, 0.187831, 0.388471, 0.760072, 1.504282",\
+ "0.046543, 0.191790, 0.388471, 0.760072, 1.504562");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[57]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.048582, 0.201516, 0.376805, 0.699484, 1.344843",\
+ "0.134920, 0.288690, 0.463910, 0.786199, 1.430777",\
+ "0.218223, 0.376818, 0.551865, 0.873821, 1.517732",\
+ "0.276237, 0.441212, 0.615981, 0.937734, 1.581241",\
+ "0.576841, 0.791083, 0.966363, 1.286475, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.024637, 0.300352, 0.633472, 1.248605, 2.473548",\
+ "0.029099, 0.301343, 0.635417, 1.248605, 2.473548",\
+ "0.041988, 0.303593, 0.635453, 1.248680, 2.473548",\
+ "0.053901, 0.306864, 0.635555, 1.249425, 2.473548",\
+ "0.129639, 0.345141, 0.641809, 1.252389, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.068110, 0.173083, 0.284476, 0.488542, 0.896675",\
+ "0.155520, 0.260402, 0.371756, 0.575847, 0.984028",\
+ "0.235884, 0.340735, 0.451783, 0.655876, 1.064060",\
+ "0.292590, 0.398284, 0.509326, 0.713120, 1.120708",\
+ "0.586537, 0.701623, 0.812958, 1.016134, 1.422485");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.024862, 0.186885, 0.386460, 0.757841, 1.500604",\
+ "0.024862, 0.186885, 0.386460, 0.757841, 1.500604",\
+ "0.025932, 0.186885, 0.386460, 0.757841, 1.500604",\
+ "0.027989, 0.187495, 0.386917, 0.758743, 1.502396",\
+ "0.046543, 0.191790, 0.386989, 0.759514, 1.504562");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[57]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024637, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216235, 0.170306, 0.140106, 0.128763, 0.142448",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024862, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250736, 0.175414, 0.107255, 0.084288, 0.147202",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[57]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024637, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148162, -0.105745, -0.071258, -0.031835, 0.274212",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024862, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163891, -0.097976, -0.040317, 0.001644, 0.222251",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[57]_hldr*/
+
+} /* end of pin tl_o[57] */
+
+pin("tl_o[56]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[56];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[56]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[56]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[56]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[56]_hldr*/
+
+} /* end of pin tl_o[56] */
+
+pin("tl_o[55]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[55];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[55]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[55]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[55]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[55]_hldr*/
+
+} /* end of pin tl_o[55] */
+
+pin("tl_o[54]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[54];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[54]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[54]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[54]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[54]_hldr*/
+
+} /* end of pin tl_o[54] */
+
+pin("tl_o[53]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[53];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[53]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[53]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[53]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[53]_hldr*/
+
+} /* end of pin tl_o[53] */
+
+pin("tl_o[52]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[52];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[52]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[52]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[52]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[52]_hldr*/
+
+} /* end of pin tl_o[52] */
+
+pin("tl_o[51]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[51];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[51]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[51]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[51]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[51]_hldr*/
+
+} /* end of pin tl_o[51] */
+
+pin("tl_o[50]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[50];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[50]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[50]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[50]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[50]_hldr*/
+
+} /* end of pin tl_o[50] */
+
+pin("tl_o[49]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[49];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.246634, 2.482563",\
+ "0.023601, 0.294955, 0.630640, 1.246634, 2.482563",\
+ "0.036987, 0.297263, 0.630676, 1.246634, 2.482563",\
+ "0.048667, 0.300618, 0.630773, 1.246634, 2.482563",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.184048, 0.385247, 0.758318, 1.504460",\
+ "0.020634, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.021564, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.023878, 0.184183, 0.385754, 0.758318, 1.504460",\
+ "0.042695, 0.188280, 0.385754, 0.758318, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[49]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.043170, 0.198167, 0.374291, 0.697809, 1.344843",\
+ "0.129019, 0.285342, 0.461399, 0.784525, 1.430777",\
+ "0.210407, 0.373473, 0.549357, 0.872149, 1.517732",\
+ "0.266777, 0.437873, 0.613474, 0.936063, 1.581241",\
+ "0.557497, 0.787726, 0.963869, 1.284812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.018489, 0.294000, 0.628670, 1.245420, 2.473548",\
+ "0.023601, 0.294955, 0.630640, 1.245420, 2.473548",\
+ "0.036987, 0.297263, 0.630676, 1.245495, 2.473548",\
+ "0.048667, 0.300618, 0.630773, 1.246236, 2.473548",\
+ "0.122402, 0.339712, 0.637052, 1.249217, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.063051, 0.171050, 0.282984, 0.487580, 0.896773",\
+ "0.150620, 0.258370, 0.370264, 0.574885, 0.984126",\
+ "0.230770, 0.338711, 0.450291, 0.654914, 1.064158",\
+ "0.287173, 0.396259, 0.507836, 0.712159, 1.120806",\
+ "0.578289, 0.699588, 0.811473, 1.015176, 1.422582");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000498, 0.073496, 0.160876, 0.321254, 0.642011");
+ values ( "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.020634, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.021564, 0.183263, 0.383745, 0.756091, 1.500782",\
+ "0.023878, 0.183878, 0.384198, 0.756990, 1.502574",\
+ "0.042695, 0.188280, 0.384266, 0.757757, 1.504740");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[49]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.213388, 0.167459, 0.137260, 0.125916, 0.139601",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.248811, 0.173490, 0.105331, 0.082363, 0.145277",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[49]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018489, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.145316, -0.102899, -0.068412, -0.028988, 0.277059",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020634, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.161967, -0.096052, -0.038393, 0.003568, 0.224175",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[49]_hldr*/
+
+} /* end of pin tl_o[49] */
+
+pin("tl_o[48]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.153409 ;
+ min_capacitance : 0.000000 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.009004 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[48];
+} /* end of pin tl_o[48] */
+
+pin("tl_o[47]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002792 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[47];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.050293, 0.202790, 0.377762, 0.700122, 1.344843",\
+ "0.136725, 0.289965, 0.464866, 0.786836, 1.430777",\
+ "0.220450, 0.378091, 0.552820, 0.874457, 1.517732",\
+ "0.278888, 0.442483, 0.616935, 0.938370, 1.581241",\
+ "0.582056, 0.792362, 0.967313, 1.287108, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.026933, 0.302770, 0.635300, 1.251054, 2.482563",\
+ "0.031156, 0.303775, 0.637236, 1.251054, 2.482563",\
+ "0.043792, 0.306003, 0.637272, 1.251054, 2.482563",\
+ "0.055737, 0.309242, 0.637376, 1.251054, 2.482563",\
+ "0.131941, 0.347209, 0.643620, 1.253596, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.069683, 0.173907, 0.285093, 0.488958, 0.896688",\
+ "0.157089, 0.261225, 0.372374, 0.576263, 0.984041",\
+ "0.237477, 0.341556, 0.452401, 0.656292, 1.064073",\
+ "0.294246, 0.399105, 0.509943, 0.713536, 1.120720",\
+ "0.588850, 0.702448, 0.813573, 1.016548, 1.422497");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.026485, 0.189160, 0.389094, 0.760831, 1.504305",\
+ "0.026485, 0.189310, 0.389596, 0.760831, 1.504305",\
+ "0.027485, 0.189310, 0.389596, 0.760831, 1.504305",\
+ "0.029472, 0.189310, 0.389596, 0.760831, 1.504305",\
+ "0.047715, 0.193213, 0.389596, 0.760831, 1.504585");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[47]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.050293, 0.202790, 0.377762, 0.700122, 1.344843",\
+ "0.136725, 0.289965, 0.464866, 0.786836, 1.430777",\
+ "0.220450, 0.378091, 0.552820, 0.874457, 1.517732",\
+ "0.278888, 0.442483, 0.616935, 0.938370, 1.581241",\
+ "0.582056, 0.792362, 0.967313, 1.287108, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.026933, 0.302770, 0.635300, 1.249818, 2.473548",\
+ "0.031156, 0.303775, 0.637236, 1.249818, 2.473548",\
+ "0.043792, 0.306003, 0.637272, 1.249893, 2.473548",\
+ "0.055737, 0.309242, 0.637376, 1.250639, 2.473548",\
+ "0.131941, 0.347209, 0.643620, 1.253596, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.069683, 0.173907, 0.285093, 0.488958, 0.896688",\
+ "0.157089, 0.261225, 0.372374, 0.576263, 0.984041",\
+ "0.237477, 0.341556, 0.452401, 0.656292, 1.064073",\
+ "0.294246, 0.399105, 0.509943, 0.713536, 1.120720",\
+ "0.588850, 0.702448, 0.813573, 1.016548, 1.422497");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.026485, 0.188353, 0.387584, 0.758599, 1.500628",\
+ "0.026485, 0.188353, 0.387584, 0.758599, 1.500628",\
+ "0.027485, 0.188353, 0.387584, 0.758599, 1.500628",\
+ "0.029472, 0.188961, 0.388043, 0.759501, 1.502419",\
+ "0.047715, 0.193213, 0.388117, 0.760273, 1.504585");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[47]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026933, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213301, 0.167430, 0.137235, 0.125895, 0.139600",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026485, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266577, 0.191265, 0.123161, 0.100283, 0.164008",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[47]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026933, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141091, -0.098663, -0.064202, -0.024280, 0.287954",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026485, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174450, -0.108363, -0.050457, -0.008429, 0.211751",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[47]_hldr*/
+
+} /* end of pin tl_o[47] */
+
+pin("tl_o[46]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001816 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[46];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.249174, 2.482563",\
+ "0.027983, 0.300023, 0.634430, 1.249174, 2.482563",\
+ "0.041008, 0.302285, 0.634466, 1.249174, 2.482563",\
+ "0.052904, 0.305573, 0.634567, 1.249174, 2.482563",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186982, 0.387454, 0.759758, 1.504368",\
+ "0.024087, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.025192, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.027281, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.045983, 0.191111, 0.387958, 0.759758, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[46]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.247947, 2.473548",\
+ "0.027983, 0.300023, 0.634430, 1.247947, 2.473548",\
+ "0.041008, 0.302285, 0.634466, 1.248022, 2.473548",\
+ "0.052904, 0.305573, 0.634567, 1.248766, 2.473548",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.025192, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.027281, 0.186796, 0.386404, 0.758430, 1.502482",\
+ "0.045983, 0.191111, 0.386476, 0.759200, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[46]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211804, 0.165933, 0.135738, 0.124398, 0.138103",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265681, 0.190370, 0.122265, 0.099388, 0.163112",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[46]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139610, -0.097182, -0.062721, -0.022799, 0.289435",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173560, -0.107472, -0.049566, -0.007539, 0.212641",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[46]_hldr*/
+
+} /* end of pin tl_o[46] */
+
+pin("tl_o[45]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002729 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[45];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.050122, 0.202663, 0.377667, 0.700059, 1.344843",\
+ "0.136545, 0.289838, 0.464771, 0.786773, 1.430777",\
+ "0.220228, 0.377964, 0.552725, 0.874394, 1.517732",\
+ "0.278624, 0.442356, 0.616840, 0.938307, 1.581241",\
+ "0.581536, 0.792234, 0.967218, 1.287045, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.026704, 0.302529, 0.635118, 1.250933, 2.482563",\
+ "0.030951, 0.303532, 0.637054, 1.250933, 2.482563",\
+ "0.043612, 0.305763, 0.637091, 1.250933, 2.482563",\
+ "0.055554, 0.309005, 0.637195, 1.250933, 2.482563",\
+ "0.131711, 0.347003, 0.643440, 1.253476, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.069519, 0.173822, 0.285028, 0.488913, 0.896683",\
+ "0.156925, 0.261140, 0.372309, 0.576218, 0.984036",\
+ "0.237311, 0.341470, 0.452336, 0.656247, 1.064068",\
+ "0.294074, 0.399020, 0.509878, 0.713491, 1.120715",\
+ "0.588609, 0.702362, 0.813509, 1.016503, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.026316, 0.189006, 0.388975, 0.760749, 1.504296",\
+ "0.026316, 0.189156, 0.389477, 0.760749, 1.504296",\
+ "0.027323, 0.189156, 0.389477, 0.760749, 1.504296",\
+ "0.029318, 0.189156, 0.389477, 0.760749, 1.504296",\
+ "0.047593, 0.193065, 0.389477, 0.760749, 1.504576");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[45]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.050122, 0.202663, 0.377667, 0.700059, 1.344843",\
+ "0.136545, 0.289838, 0.464771, 0.786773, 1.430777",\
+ "0.220228, 0.377964, 0.552725, 0.874394, 1.517732",\
+ "0.278624, 0.442356, 0.616840, 0.938307, 1.581241",\
+ "0.581536, 0.792234, 0.967218, 1.287045, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.026704, 0.302529, 0.635118, 1.249697, 2.473548",\
+ "0.030951, 0.303532, 0.637054, 1.249697, 2.473548",\
+ "0.043612, 0.305763, 0.637091, 1.249772, 2.473548",\
+ "0.055554, 0.309005, 0.637195, 1.250518, 2.473548",\
+ "0.131711, 0.347003, 0.643440, 1.253476, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.069519, 0.173822, 0.285028, 0.488913, 0.896683",\
+ "0.156925, 0.261140, 0.372309, 0.576218, 0.984036",\
+ "0.237311, 0.341470, 0.452336, 0.656247, 1.064068",\
+ "0.294074, 0.399020, 0.509878, 0.713491, 1.120715",\
+ "0.588609, 0.702362, 0.813509, 1.016503, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.026316, 0.188200, 0.387466, 0.758517, 1.500619",\
+ "0.026316, 0.188200, 0.387466, 0.758517, 1.500619",\
+ "0.027323, 0.188200, 0.387466, 0.758517, 1.500619",\
+ "0.029318, 0.188809, 0.387924, 0.759419, 1.502410",\
+ "0.047593, 0.193065, 0.387998, 0.760191, 1.504576");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[45]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026704, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213204, 0.167333, 0.137138, 0.125798, 0.139503",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026316, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266513, 0.191202, 0.123098, 0.100220, 0.163945",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[45]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026704, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140996, -0.098567, -0.064106, -0.024184, 0.288050",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026316, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174387, -0.108300, -0.050394, -0.008366, 0.211814",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[45]_hldr*/
+
+} /* end of pin tl_o[45] */
+
+pin("tl_o[44]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002742 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[44];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.050158, 0.202690, 0.377687, 0.700072, 1.344843",\
+ "0.136583, 0.289865, 0.464791, 0.786786, 1.430777",\
+ "0.220274, 0.377991, 0.552745, 0.874407, 1.517732",\
+ "0.278679, 0.442383, 0.616860, 0.938320, 1.581241",\
+ "0.581645, 0.792261, 0.967238, 1.287058, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.026752, 0.302579, 0.635156, 1.250959, 2.482563",\
+ "0.030994, 0.303583, 0.637092, 1.250959, 2.482563",\
+ "0.043650, 0.305813, 0.637129, 1.250959, 2.482563",\
+ "0.055592, 0.309055, 0.637233, 1.250959, 2.482563",\
+ "0.131760, 0.347046, 0.643478, 1.253501, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.069547, 0.173836, 0.285039, 0.488919, 0.896680",\
+ "0.156953, 0.261154, 0.372320, 0.576224, 0.984034",\
+ "0.237340, 0.341485, 0.452347, 0.656253, 1.064065",\
+ "0.294104, 0.399034, 0.509889, 0.713497, 1.120713",\
+ "0.588650, 0.702376, 0.813519, 1.016509, 1.422490");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.026345, 0.189032, 0.388994, 0.760760, 1.504292",\
+ "0.026345, 0.189182, 0.389496, 0.760760, 1.504292",\
+ "0.027351, 0.189182, 0.389496, 0.760760, 1.504292",\
+ "0.029344, 0.189182, 0.389496, 0.760760, 1.504292",\
+ "0.047614, 0.193091, 0.389496, 0.760760, 1.504572");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[44]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.050158, 0.202690, 0.377687, 0.700072, 1.344843",\
+ "0.136583, 0.289865, 0.464791, 0.786786, 1.430777",\
+ "0.220274, 0.377991, 0.552745, 0.874407, 1.517732",\
+ "0.278679, 0.442383, 0.616860, 0.938320, 1.581241",\
+ "0.581645, 0.792261, 0.967238, 1.287058, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.026752, 0.302579, 0.635156, 1.249722, 2.473548",\
+ "0.030994, 0.303583, 0.637092, 1.249722, 2.473548",\
+ "0.043650, 0.305813, 0.637129, 1.249798, 2.473548",\
+ "0.055592, 0.309055, 0.637233, 1.250543, 2.473548",\
+ "0.131760, 0.347046, 0.643478, 1.253501, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.069547, 0.173836, 0.285039, 0.488919, 0.896680",\
+ "0.156953, 0.261154, 0.372320, 0.576224, 0.984034",\
+ "0.237340, 0.341485, 0.452347, 0.656253, 1.064065",\
+ "0.294104, 0.399034, 0.509889, 0.713497, 1.120713",\
+ "0.588650, 0.702376, 0.813519, 1.016509, 1.422490");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.026345, 0.188226, 0.387484, 0.758528, 1.500614",\
+ "0.026345, 0.188226, 0.387484, 0.758528, 1.500614",\
+ "0.027351, 0.188226, 0.387484, 0.758528, 1.500614",\
+ "0.029344, 0.188835, 0.387943, 0.759431, 1.502406",\
+ "0.047614, 0.193091, 0.388017, 0.760202, 1.504572");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[44]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026752, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213225, 0.167354, 0.137159, 0.125818, 0.139523",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026345, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266524, 0.191213, 0.123109, 0.100231, 0.163955",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[44]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026752, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141016, -0.098588, -0.064126, -0.024204, 0.288030",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026345, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174398, -0.108311, -0.050405, -0.008377, 0.211803",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[44]_hldr*/
+
+} /* end of pin tl_o[44] */
+
+pin("tl_o[43]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002272 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[43];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.048885, 0.201742, 0.376975, 0.699598, 1.344843",\
+ "0.135240, 0.288916, 0.464080, 0.786312, 1.430777",\
+ "0.218618, 0.377044, 0.552035, 0.873934, 1.517732",\
+ "0.276707, 0.441437, 0.616150, 0.937847, 1.581241",\
+ "0.577766, 0.791310, 0.966532, 1.286587, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.025044, 0.300781, 0.633796, 1.250052, 2.482563",\
+ "0.029464, 0.301774, 0.635740, 1.250052, 2.482563",\
+ "0.042308, 0.304021, 0.635776, 1.250052, 2.482563",\
+ "0.054226, 0.307286, 0.635878, 1.250052, 2.482563",\
+ "0.130048, 0.345508, 0.642131, 1.252603, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.068436, 0.173254, 0.284610, 0.488640, 0.896702",\
+ "0.155845, 0.260572, 0.371891, 0.575945, 0.984055",\
+ "0.236214, 0.340905, 0.451917, 0.655974, 1.064087",\
+ "0.292933, 0.398454, 0.509460, 0.713218, 1.120734",\
+ "0.587016, 0.701794, 0.813092, 1.016232, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.025198, 0.187991, 0.388212, 0.760251, 1.504330",\
+ "0.025198, 0.188138, 0.388715, 0.760251, 1.504330",\
+ "0.026254, 0.188138, 0.388715, 0.760251, 1.504330",\
+ "0.028296, 0.188138, 0.388715, 0.760251, 1.504330",\
+ "0.046785, 0.192085, 0.388715, 0.760251, 1.504610");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[43]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.048885, 0.201742, 0.376975, 0.699598, 1.344843",\
+ "0.135240, 0.288916, 0.464080, 0.786312, 1.430777",\
+ "0.218618, 0.377044, 0.552035, 0.873934, 1.517732",\
+ "0.276707, 0.441437, 0.616150, 0.937847, 1.581241",\
+ "0.577766, 0.791310, 0.966532, 1.286587, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.025044, 0.300781, 0.633796, 1.248820, 2.473548",\
+ "0.029464, 0.301774, 0.635740, 1.248820, 2.473548",\
+ "0.042308, 0.304021, 0.635776, 1.248896, 2.473548",\
+ "0.054226, 0.307286, 0.635878, 1.249640, 2.473548",\
+ "0.130048, 0.345508, 0.642131, 1.252603, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.068436, 0.173254, 0.284610, 0.488640, 0.896702",\
+ "0.155845, 0.260572, 0.371891, 0.575945, 0.984055",\
+ "0.236214, 0.340905, 0.451917, 0.655974, 1.064087",\
+ "0.292933, 0.398454, 0.509460, 0.713218, 1.120734",\
+ "0.587016, 0.701794, 0.813092, 1.016232, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.025198, 0.187189, 0.386704, 0.758020, 1.500653",\
+ "0.025198, 0.187189, 0.386704, 0.758020, 1.500653",\
+ "0.026254, 0.187189, 0.386704, 0.758020, 1.500653",\
+ "0.028296, 0.187799, 0.387161, 0.758922, 1.502445",\
+ "0.046785, 0.192085, 0.387234, 0.759693, 1.504610");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[43]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025044, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212503, 0.166632, 0.136437, 0.125097, 0.138801",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025198, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266096, 0.190785, 0.122680, 0.099803, 0.163527",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[43]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025044, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140302, -0.097874, -0.063412, -0.023490, 0.288744",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025198, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173972, -0.107885, -0.049979, -0.007951, 0.212229",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[43]_hldr*/
+
+} /* end of pin tl_o[43] */
+
+pin("tl_o[42]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002445 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[42];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.049354, 0.202091, 0.377237, 0.699773, 1.344843",\
+ "0.135735, 0.289266, 0.464342, 0.786487, 1.430777",\
+ "0.219229, 0.377393, 0.552297, 0.874108, 1.517732",\
+ "0.277434, 0.441786, 0.616412, 0.938021, 1.581241",\
+ "0.579196, 0.791661, 0.966792, 1.286761, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025674, 0.301444, 0.634297, 1.250386, 2.482563",\
+ "0.030028, 0.302441, 0.636238, 1.250386, 2.482563",\
+ "0.042803, 0.304681, 0.636274, 1.250386, 2.482563",\
+ "0.054730, 0.307938, 0.636378, 1.250386, 2.482563",\
+ "0.130679, 0.346075, 0.642627, 1.252934, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.068801, 0.173445, 0.284745, 0.488720, 0.896671",\
+ "0.156209, 0.260764, 0.372026, 0.576025, 0.984024",\
+ "0.236584, 0.341096, 0.452053, 0.656054, 1.064056",\
+ "0.293318, 0.398645, 0.509595, 0.713298, 1.120704",\
+ "0.587553, 0.701985, 0.813226, 1.016311, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025575, 0.188333, 0.388458, 0.760397, 1.504274",\
+ "0.025575, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.026615, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.028641, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.047058, 0.192416, 0.388961, 0.760397, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[42]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.049354, 0.202091, 0.377237, 0.699773, 1.344843",\
+ "0.135735, 0.289266, 0.464342, 0.786487, 1.430777",\
+ "0.219229, 0.377393, 0.552297, 0.874108, 1.517732",\
+ "0.277434, 0.441786, 0.616412, 0.938021, 1.581241",\
+ "0.579196, 0.791661, 0.966792, 1.286761, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025674, 0.301444, 0.634297, 1.249153, 2.473548",\
+ "0.030028, 0.302441, 0.636238, 1.249153, 2.473548",\
+ "0.042803, 0.304681, 0.636274, 1.249228, 2.473548",\
+ "0.054730, 0.307938, 0.636378, 1.249973, 2.473548",\
+ "0.130679, 0.346075, 0.642627, 1.252934, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.068801, 0.173445, 0.284745, 0.488720, 0.896671",\
+ "0.156209, 0.260764, 0.372026, 0.576025, 0.984024",\
+ "0.236584, 0.341096, 0.452053, 0.656054, 1.064056",\
+ "0.293318, 0.398645, 0.509595, 0.713298, 1.120704",\
+ "0.587553, 0.701985, 0.813226, 1.016311, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025575, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.025575, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.026615, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.028641, 0.188139, 0.387407, 0.759068, 1.502388",\
+ "0.047058, 0.192416, 0.387481, 0.759838, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[42]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025674, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212769, 0.166898, 0.136703, 0.125363, 0.139067",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266237, 0.190925, 0.122821, 0.099943, 0.163668",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[42]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025674, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140565, -0.098137, -0.063675, -0.023754, 0.288480",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174112, -0.108025, -0.050119, -0.008091, 0.212089",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[42]_hldr*/
+
+} /* end of pin tl_o[42] */
+
+pin("tl_o[41]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002414 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[41];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.049270, 0.202028, 0.377190, 0.699741, 1.344843",\
+ "0.135646, 0.289203, 0.464294, 0.786455, 1.430777",\
+ "0.219118, 0.377330, 0.552249, 0.874077, 1.517732",\
+ "0.277303, 0.441723, 0.616364, 0.937990, 1.581241",\
+ "0.578938, 0.791597, 0.966745, 1.286729, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025560, 0.301324, 0.634207, 1.250326, 2.482563",\
+ "0.029927, 0.302321, 0.636148, 1.250326, 2.482563",\
+ "0.042713, 0.304562, 0.636184, 1.250326, 2.482563",\
+ "0.054639, 0.307820, 0.636287, 1.250326, 2.482563",\
+ "0.130565, 0.345973, 0.642537, 1.252874, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.068784, 0.173437, 0.284746, 0.488731, 0.896702",\
+ "0.156193, 0.260755, 0.372027, 0.576036, 0.984055",\
+ "0.236567, 0.341087, 0.452054, 0.656065, 1.064087",\
+ "0.293300, 0.398636, 0.509596, 0.713309, 1.120735",\
+ "0.587529, 0.701976, 0.813228, 1.016322, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025558, 0.188317, 0.388460, 0.760417, 1.504331",\
+ "0.025558, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.026598, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.028625, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.047045, 0.192400, 0.388963, 0.760417, 1.504611");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[41]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.049270, 0.202028, 0.377190, 0.699741, 1.344843",\
+ "0.135646, 0.289203, 0.464294, 0.786455, 1.430777",\
+ "0.219118, 0.377330, 0.552249, 0.874077, 1.517732",\
+ "0.277303, 0.441723, 0.616364, 0.937990, 1.581241",\
+ "0.578938, 0.791597, 0.966745, 1.286729, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025560, 0.301324, 0.634207, 1.249093, 2.473548",\
+ "0.029927, 0.302321, 0.636148, 1.249093, 2.473548",\
+ "0.042713, 0.304562, 0.636184, 1.249168, 2.473548",\
+ "0.054639, 0.307820, 0.636287, 1.249913, 2.473548",\
+ "0.130565, 0.345973, 0.642537, 1.252874, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.068784, 0.173437, 0.284746, 0.488731, 0.896702",\
+ "0.156193, 0.260755, 0.372027, 0.576036, 0.984055",\
+ "0.236567, 0.341087, 0.452054, 0.656065, 1.064087",\
+ "0.293300, 0.398636, 0.509596, 0.713309, 1.120735",\
+ "0.587529, 0.701976, 0.813228, 1.016322, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025558, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.025558, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.026598, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.028625, 0.188124, 0.387410, 0.759088, 1.502445",\
+ "0.047045, 0.192400, 0.387483, 0.759859, 1.504611");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[41]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025560, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212721, 0.166850, 0.136655, 0.125315, 0.139019",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025558, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266230, 0.190919, 0.122815, 0.099937, 0.163661",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[41]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025560, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140517, -0.098089, -0.063628, -0.023706, 0.288528",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025558, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174106, -0.108018, -0.050112, -0.008085, 0.212095",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[41]_hldr*/
+
+} /* end of pin tl_o[41] */
+
+pin("tl_o[40]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001805 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[40];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.047624, 0.200802, 0.376269, 0.699127, 1.344843",\
+ "0.133909, 0.287977, 0.463375, 0.785842, 1.430777",\
+ "0.216976, 0.376105, 0.551331, 0.873464, 1.517732",\
+ "0.274753, 0.440500, 0.615446, 0.937378, 1.581241",\
+ "0.573921, 0.790368, 0.965832, 1.286120, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.023351, 0.298998, 0.632448, 1.249153, 2.482563",\
+ "0.027948, 0.299981, 0.634399, 1.249153, 2.482563",\
+ "0.040978, 0.302244, 0.634435, 1.249153, 2.482563",\
+ "0.052873, 0.305533, 0.634536, 1.249153, 2.482563",\
+ "0.128351, 0.343984, 0.640795, 1.251713, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.067343, 0.172682, 0.284189, 0.488369, 0.896728",\
+ "0.154756, 0.260000, 0.371470, 0.575674, 0.984081",\
+ "0.235108, 0.340335, 0.451497, 0.655702, 1.064113",\
+ "0.291783, 0.397884, 0.509040, 0.712947, 1.120760",\
+ "0.585410, 0.701221, 0.812673, 1.015961, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.024071, 0.186967, 0.387445, 0.759756, 1.504378",\
+ "0.024071, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.025176, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.027266, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.045971, 0.191097, 0.387949, 0.759756, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[40]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.047624, 0.200802, 0.376269, 0.699127, 1.344843",\
+ "0.133909, 0.287977, 0.463375, 0.785842, 1.430777",\
+ "0.216976, 0.376105, 0.551331, 0.873464, 1.517732",\
+ "0.274753, 0.440500, 0.615446, 0.937378, 1.581241",\
+ "0.573921, 0.790368, 0.965832, 1.286120, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.023351, 0.298998, 0.632448, 1.247926, 2.473548",\
+ "0.027948, 0.299981, 0.634399, 1.247926, 2.473548",\
+ "0.040978, 0.302244, 0.634435, 1.248002, 2.473548",\
+ "0.052873, 0.305533, 0.634536, 1.248745, 2.473548",\
+ "0.128351, 0.343984, 0.640795, 1.251713, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.067343, 0.172682, 0.284189, 0.488369, 0.896728",\
+ "0.154756, 0.260000, 0.371470, 0.575674, 0.984081",\
+ "0.235108, 0.340335, 0.451497, 0.655702, 1.064113",\
+ "0.291783, 0.397884, 0.509040, 0.712947, 1.120760",\
+ "0.585410, 0.701221, 0.812673, 1.015961, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.024071, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.024071, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.025176, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.027266, 0.186781, 0.386395, 0.758427, 1.502492",\
+ "0.045971, 0.191097, 0.386467, 0.759197, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[40]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023351, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211788, 0.165917, 0.135722, 0.124381, 0.138086",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024071, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265675, 0.190363, 0.122259, 0.099381, 0.163106",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[40]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023351, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139594, -0.097166, -0.062704, -0.022783, 0.289451",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024071, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173554, -0.107466, -0.049560, -0.007532, 0.212647",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[40]_hldr*/
+
+} /* end of pin tl_o[40] */
+
+pin("tl_o[39]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002265 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[39];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.048867, 0.201728, 0.376965, 0.699591, 1.344843",\
+ "0.135221, 0.288903, 0.464069, 0.786305, 1.430777",\
+ "0.218594, 0.377030, 0.552024, 0.873927, 1.517732",\
+ "0.276679, 0.441423, 0.616140, 0.937840, 1.581241",\
+ "0.577710, 0.791296, 0.966522, 1.286580, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.025020, 0.300755, 0.633777, 1.250039, 2.482563",\
+ "0.029442, 0.301748, 0.635720, 1.250039, 2.482563",\
+ "0.042289, 0.303995, 0.635756, 1.250039, 2.482563",\
+ "0.054207, 0.307260, 0.635859, 1.250039, 2.482563",\
+ "0.130023, 0.345486, 0.642111, 1.252590, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.068420, 0.173246, 0.284604, 0.488637, 0.896702",\
+ "0.155830, 0.260564, 0.371885, 0.575942, 0.984056",\
+ "0.236199, 0.340897, 0.451912, 0.655970, 1.064088",\
+ "0.292917, 0.398446, 0.509454, 0.713215, 1.120735",\
+ "0.586994, 0.701786, 0.813086, 1.016228, 1.422512");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.025182, 0.187976, 0.388201, 0.760245, 1.504332",\
+ "0.025182, 0.188123, 0.388704, 0.760245, 1.504332",\
+ "0.026239, 0.188123, 0.388704, 0.760245, 1.504332",\
+ "0.028282, 0.188123, 0.388704, 0.760245, 1.504332",\
+ "0.046774, 0.192071, 0.388704, 0.760245, 1.504612");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[39]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.048867, 0.201728, 0.376965, 0.699591, 1.344843",\
+ "0.135221, 0.288903, 0.464069, 0.786305, 1.430777",\
+ "0.218594, 0.377030, 0.552024, 0.873927, 1.517732",\
+ "0.276679, 0.441423, 0.616140, 0.937840, 1.581241",\
+ "0.577710, 0.791296, 0.966522, 1.286580, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.025020, 0.300755, 0.633777, 1.248807, 2.473548",\
+ "0.029442, 0.301748, 0.635720, 1.248807, 2.473548",\
+ "0.042289, 0.303995, 0.635756, 1.248883, 2.473548",\
+ "0.054207, 0.307260, 0.635859, 1.249627, 2.473548",\
+ "0.130023, 0.345486, 0.642111, 1.252590, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.068420, 0.173246, 0.284604, 0.488637, 0.896702",\
+ "0.155830, 0.260564, 0.371885, 0.575942, 0.984056",\
+ "0.236199, 0.340897, 0.451912, 0.655970, 1.064088",\
+ "0.292917, 0.398446, 0.509454, 0.713215, 1.120735",\
+ "0.586994, 0.701786, 0.813086, 1.016228, 1.422512");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.025182, 0.187175, 0.386693, 0.758014, 1.500654",\
+ "0.025182, 0.187175, 0.386693, 0.758014, 1.500654",\
+ "0.026239, 0.187175, 0.386693, 0.758014, 1.500654",\
+ "0.028282, 0.187785, 0.387151, 0.758916, 1.502446",\
+ "0.046774, 0.192071, 0.387224, 0.759686, 1.504612");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[39]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025020, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212492, 0.166621, 0.136427, 0.125086, 0.138791",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025182, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266090, 0.190779, 0.122675, 0.099797, 0.163521",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[39]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025020, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140291, -0.097863, -0.063402, -0.023480, 0.288754",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025182, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173966, -0.107879, -0.049973, -0.007945, 0.212235",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[39]_hldr*/
+
+} /* end of pin tl_o[39] */
+
+pin("tl_o[38]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002414 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[38];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.049270, 0.202028, 0.377190, 0.699741, 1.344843",\
+ "0.135646, 0.289203, 0.464294, 0.786455, 1.430777",\
+ "0.219118, 0.377330, 0.552249, 0.874077, 1.517732",\
+ "0.277303, 0.441723, 0.616364, 0.937990, 1.581241",\
+ "0.578938, 0.791597, 0.966745, 1.286729, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025560, 0.301324, 0.634207, 1.250326, 2.482563",\
+ "0.029927, 0.302321, 0.636148, 1.250326, 2.482563",\
+ "0.042713, 0.304562, 0.636184, 1.250326, 2.482563",\
+ "0.054639, 0.307820, 0.636287, 1.250326, 2.482563",\
+ "0.130565, 0.345973, 0.642537, 1.252874, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.068784, 0.173437, 0.284746, 0.488731, 0.896702",\
+ "0.156193, 0.260755, 0.372027, 0.576036, 0.984055",\
+ "0.236567, 0.341087, 0.452054, 0.656065, 1.064087",\
+ "0.293300, 0.398636, 0.509596, 0.713309, 1.120735",\
+ "0.587529, 0.701976, 0.813228, 1.016322, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025558, 0.188317, 0.388460, 0.760417, 1.504331",\
+ "0.025558, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.026598, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.028625, 0.188465, 0.388963, 0.760417, 1.504331",\
+ "0.047045, 0.192400, 0.388963, 0.760417, 1.504611");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[38]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.049270, 0.202028, 0.377190, 0.699741, 1.344843",\
+ "0.135646, 0.289203, 0.464294, 0.786455, 1.430777",\
+ "0.219118, 0.377330, 0.552249, 0.874077, 1.517732",\
+ "0.277303, 0.441723, 0.616364, 0.937990, 1.581241",\
+ "0.578938, 0.791597, 0.966745, 1.286729, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025560, 0.301324, 0.634207, 1.249093, 2.473548",\
+ "0.029927, 0.302321, 0.636148, 1.249093, 2.473548",\
+ "0.042713, 0.304562, 0.636184, 1.249168, 2.473548",\
+ "0.054639, 0.307820, 0.636287, 1.249913, 2.473548",\
+ "0.130565, 0.345973, 0.642537, 1.252874, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.068784, 0.173437, 0.284746, 0.488731, 0.896702",\
+ "0.156193, 0.260755, 0.372027, 0.576036, 0.984055",\
+ "0.236567, 0.341087, 0.452054, 0.656065, 1.064087",\
+ "0.293300, 0.398636, 0.509596, 0.713309, 1.120735",\
+ "0.587529, 0.701976, 0.813228, 1.016322, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025558, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.025558, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.026598, 0.187514, 0.386952, 0.758186, 1.500654",\
+ "0.028625, 0.188124, 0.387410, 0.759088, 1.502445",\
+ "0.047045, 0.192400, 0.387483, 0.759859, 1.504611");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[38]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025560, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212721, 0.166850, 0.136655, 0.125315, 0.139019",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025558, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266230, 0.190919, 0.122815, 0.099937, 0.163661",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[38]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025560, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140517, -0.098089, -0.063628, -0.023706, 0.288528",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025558, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174106, -0.108018, -0.050112, -0.008085, 0.212095",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[38]_hldr*/
+
+} /* end of pin tl_o[38] */
+
+pin("tl_o[37]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002445 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[37];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.049354, 0.202091, 0.377237, 0.699773, 1.344843",\
+ "0.135735, 0.289266, 0.464342, 0.786487, 1.430777",\
+ "0.219229, 0.377393, 0.552297, 0.874108, 1.517732",\
+ "0.277434, 0.441786, 0.616412, 0.938021, 1.581241",\
+ "0.579196, 0.791661, 0.966792, 1.286761, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025674, 0.301444, 0.634297, 1.250386, 2.482563",\
+ "0.030028, 0.302441, 0.636238, 1.250386, 2.482563",\
+ "0.042803, 0.304681, 0.636274, 1.250386, 2.482563",\
+ "0.054730, 0.307938, 0.636378, 1.250386, 2.482563",\
+ "0.130679, 0.346075, 0.642627, 1.252934, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.068801, 0.173445, 0.284745, 0.488720, 0.896671",\
+ "0.156209, 0.260764, 0.372026, 0.576025, 0.984024",\
+ "0.236584, 0.341096, 0.452053, 0.656054, 1.064056",\
+ "0.293318, 0.398645, 0.509595, 0.713298, 1.120704",\
+ "0.587553, 0.701985, 0.813226, 1.016311, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025575, 0.188333, 0.388458, 0.760397, 1.504274",\
+ "0.025575, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.026615, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.028641, 0.188481, 0.388961, 0.760397, 1.504274",\
+ "0.047058, 0.192416, 0.388961, 0.760397, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[37]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.049354, 0.202091, 0.377237, 0.699773, 1.344843",\
+ "0.135735, 0.289266, 0.464342, 0.786487, 1.430777",\
+ "0.219229, 0.377393, 0.552297, 0.874108, 1.517732",\
+ "0.277434, 0.441786, 0.616412, 0.938021, 1.581241",\
+ "0.579196, 0.791661, 0.966792, 1.286761, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025674, 0.301444, 0.634297, 1.249153, 2.473548",\
+ "0.030028, 0.302441, 0.636238, 1.249153, 2.473548",\
+ "0.042803, 0.304681, 0.636274, 1.249228, 2.473548",\
+ "0.054730, 0.307938, 0.636378, 1.249973, 2.473548",\
+ "0.130679, 0.346075, 0.642627, 1.252934, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.068801, 0.173445, 0.284745, 0.488720, 0.896671",\
+ "0.156209, 0.260764, 0.372026, 0.576025, 0.984024",\
+ "0.236584, 0.341096, 0.452053, 0.656054, 1.064056",\
+ "0.293318, 0.398645, 0.509595, 0.713298, 1.120704",\
+ "0.587553, 0.701985, 0.813226, 1.016311, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.025575, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.025575, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.026615, 0.187530, 0.386950, 0.758165, 1.500597",\
+ "0.028641, 0.188139, 0.387407, 0.759068, 1.502388",\
+ "0.047058, 0.192416, 0.387481, 0.759838, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[37]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025674, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212769, 0.166898, 0.136703, 0.125363, 0.139067",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266237, 0.190925, 0.122821, 0.099943, 0.163668",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[37]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025674, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140565, -0.098137, -0.063675, -0.023754, 0.288480",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174112, -0.108025, -0.050119, -0.008091, 0.212089",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[37]_hldr*/
+
+} /* end of pin tl_o[37] */
+
+pin("tl_o[36]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001816 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[36];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.249174, 2.482563",\
+ "0.027983, 0.300023, 0.634430, 1.249174, 2.482563",\
+ "0.041008, 0.302285, 0.634466, 1.249174, 2.482563",\
+ "0.052904, 0.305573, 0.634567, 1.249174, 2.482563",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186982, 0.387454, 0.759758, 1.504368",\
+ "0.024087, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.025192, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.027281, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.045983, 0.191111, 0.387958, 0.759758, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[36]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.247947, 2.473548",\
+ "0.027983, 0.300023, 0.634430, 1.247947, 2.473548",\
+ "0.041008, 0.302285, 0.634466, 1.248022, 2.473548",\
+ "0.052904, 0.305573, 0.634567, 1.248766, 2.473548",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.025192, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.027281, 0.186796, 0.386404, 0.758430, 1.502482",\
+ "0.045983, 0.191111, 0.386476, 0.759200, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[36]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211804, 0.165933, 0.135738, 0.124398, 0.138103",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265681, 0.190370, 0.122265, 0.099388, 0.163112",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[36]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139610, -0.097182, -0.062721, -0.022799, 0.289435",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173560, -0.107472, -0.049566, -0.007539, 0.212641",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[36]_hldr*/
+
+} /* end of pin tl_o[36] */
+
+pin("tl_o[35]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002254 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[35];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048838, 0.201706, 0.376948, 0.699580, 1.344843",\
+ "0.135190, 0.288881, 0.464053, 0.786294, 1.430777",\
+ "0.218556, 0.377008, 0.552008, 0.873916, 1.517732",\
+ "0.276634, 0.441402, 0.616124, 0.937829, 1.581241",\
+ "0.577621, 0.791275, 0.966506, 1.286569, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.024980, 0.300714, 0.633745, 1.250018, 2.482564",\
+ "0.029407, 0.301707, 0.635689, 1.250018, 2.482564",\
+ "0.042258, 0.303954, 0.635725, 1.250018, 2.482564",\
+ "0.054175, 0.307220, 0.635828, 1.250018, 2.482564",\
+ "0.129984, 0.345451, 0.642080, 1.252569, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.068404, 0.173238, 0.284599, 0.488635, 0.896708",\
+ "0.155814, 0.260556, 0.371880, 0.575940, 0.984061",\
+ "0.236182, 0.340889, 0.451907, 0.655969, 1.064093",\
+ "0.292900, 0.398438, 0.509450, 0.713213, 1.120741",\
+ "0.586970, 0.701777, 0.813081, 1.016227, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.025166, 0.187961, 0.388192, 0.760242, 1.504342",\
+ "0.025166, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.026223, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.028267, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.046762, 0.192057, 0.388695, 0.760242, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[35]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048838, 0.201706, 0.376948, 0.699580, 1.344843",\
+ "0.135190, 0.288881, 0.464053, 0.786294, 1.430777",\
+ "0.218556, 0.377008, 0.552008, 0.873916, 1.517732",\
+ "0.276634, 0.441402, 0.616124, 0.937829, 1.581241",\
+ "0.577621, 0.791275, 0.966506, 1.286569, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.024980, 0.300714, 0.633745, 1.248787, 2.473548",\
+ "0.029407, 0.301707, 0.635689, 1.248787, 2.473548",\
+ "0.042258, 0.303954, 0.635725, 1.248862, 2.473548",\
+ "0.054175, 0.307220, 0.635828, 1.249606, 2.473548",\
+ "0.129984, 0.345451, 0.642080, 1.252569, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.068404, 0.173238, 0.284599, 0.488635, 0.896708",\
+ "0.155814, 0.260556, 0.371880, 0.575940, 0.984061",\
+ "0.236182, 0.340889, 0.451907, 0.655969, 1.064093",\
+ "0.292900, 0.398438, 0.509450, 0.713213, 1.120741",\
+ "0.586970, 0.701777, 0.813081, 1.016227, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.025166, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.025166, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.026223, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.028267, 0.187770, 0.387142, 0.758913, 1.502456",\
+ "0.046762, 0.192057, 0.387215, 0.759684, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[35]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024980, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212476, 0.166605, 0.136410, 0.125070, 0.138775",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025166, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266084, 0.190773, 0.122668, 0.099790, 0.163515",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[35]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024980, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140275, -0.097847, -0.063386, -0.023464, 0.288770",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025166, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173960, -0.107873, -0.049967, -0.007939, 0.212241",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[35]_hldr*/
+
+} /* end of pin tl_o[35] */
+
+pin("tl_o[34]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001996 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[34];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.048141, 0.201187, 0.376558, 0.699320, 1.344843",\
+ "0.134454, 0.288362, 0.463663, 0.786035, 1.430777",\
+ "0.217649, 0.376489, 0.551619, 0.873657, 1.517732",\
+ "0.275553, 0.440884, 0.615735, 0.937570, 1.581241",\
+ "0.575495, 0.790754, 0.966118, 1.286311, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.024044, 0.299728, 0.633000, 1.249521, 2.482563",\
+ "0.028569, 0.300716, 0.634948, 1.249521, 2.482563",\
+ "0.041522, 0.302971, 0.634984, 1.249521, 2.482563",\
+ "0.053427, 0.306251, 0.635086, 1.249521, 2.482563",\
+ "0.129046, 0.344608, 0.641342, 1.252077, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.067740, 0.172889, 0.284335, 0.488454, 0.896691",\
+ "0.155151, 0.260208, 0.371616, 0.575759, 0.984044",\
+ "0.235509, 0.340542, 0.451643, 0.655787, 1.064076",\
+ "0.292201, 0.398091, 0.509186, 0.713032, 1.120723",\
+ "0.585993, 0.701429, 0.812818, 1.016046, 1.422500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.024480, 0.187339, 0.387711, 0.759911, 1.504310",\
+ "0.024480, 0.187483, 0.388215, 0.759911, 1.504310",\
+ "0.025567, 0.187483, 0.388215, 0.759911, 1.504310",\
+ "0.027640, 0.187483, 0.388215, 0.759911, 1.504310",\
+ "0.046267, 0.191456, 0.388215, 0.759911, 1.504590");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[34]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.048141, 0.201187, 0.376558, 0.699320, 1.344843",\
+ "0.134454, 0.288362, 0.463663, 0.786035, 1.430777",\
+ "0.217649, 0.376489, 0.551619, 0.873657, 1.517732",\
+ "0.275553, 0.440884, 0.615735, 0.937570, 1.581241",\
+ "0.575495, 0.790754, 0.966118, 1.286311, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.024044, 0.299728, 0.633000, 1.248292, 2.473548",\
+ "0.028569, 0.300716, 0.634948, 1.248292, 2.473548",\
+ "0.041522, 0.302971, 0.634984, 1.248368, 2.473548",\
+ "0.053427, 0.306251, 0.635086, 1.249112, 2.473548",\
+ "0.129046, 0.344608, 0.641342, 1.252077, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.067740, 0.172889, 0.284335, 0.488454, 0.896691",\
+ "0.155151, 0.260208, 0.371616, 0.575759, 0.984044",\
+ "0.235509, 0.340542, 0.451643, 0.655787, 1.064076",\
+ "0.292201, 0.398091, 0.509186, 0.713032, 1.120723",\
+ "0.585993, 0.701429, 0.812818, 1.016046, 1.422500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.024480, 0.186540, 0.386204, 0.757680, 1.500633",\
+ "0.024480, 0.186540, 0.386204, 0.757680, 1.500633",\
+ "0.025567, 0.186540, 0.386204, 0.757680, 1.500633",\
+ "0.027640, 0.187150, 0.386661, 0.758582, 1.502424",\
+ "0.046267, 0.191456, 0.386733, 0.759352, 1.504590");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[34]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024044, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212080, 0.166210, 0.136015, 0.124674, 0.138379",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024480, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265828, 0.190516, 0.122412, 0.099534, 0.163259",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[34]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024044, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139884, -0.097456, -0.062994, -0.023072, 0.289162",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024480, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173706, -0.107618, -0.049712, -0.007684, 0.212495",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[34]_hldr*/
+
+} /* end of pin tl_o[34] */
+
+pin("tl_o[33]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002863 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[33];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.050484, 0.202933, 0.377869, 0.700194, 1.344843",\
+ "0.136927, 0.290107, 0.464973, 0.786907, 1.430777",\
+ "0.220698, 0.378233, 0.552927, 0.874529, 1.517732",\
+ "0.279184, 0.442625, 0.617042, 0.938441, 1.581241",\
+ "0.582638, 0.792504, 0.967419, 1.287178, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.027190, 0.303040, 0.635504, 1.251191, 2.482564",\
+ "0.031386, 0.304046, 0.637439, 1.251191, 2.482564",\
+ "0.043994, 0.306272, 0.637475, 1.251191, 2.482564",\
+ "0.055941, 0.309507, 0.637579, 1.251191, 2.482564",\
+ "0.132198, 0.347439, 0.643822, 1.253731, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.069846, 0.173993, 0.285156, 0.488998, 0.896682",\
+ "0.157251, 0.261310, 0.372437, 0.576303, 0.984036",\
+ "0.237642, 0.341641, 0.452464, 0.656332, 1.064067",\
+ "0.294418, 0.399190, 0.510006, 0.713575, 1.120715",\
+ "0.589089, 0.702533, 0.813636, 1.016588, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.026653, 0.189312, 0.389207, 0.760903, 1.504295",\
+ "0.026653, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.027645, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.029626, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.047836, 0.193360, 0.389709, 0.760903, 1.504575");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[33]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.050484, 0.202933, 0.377869, 0.700194, 1.344843",\
+ "0.136927, 0.290107, 0.464973, 0.786907, 1.430777",\
+ "0.220698, 0.378233, 0.552927, 0.874529, 1.517732",\
+ "0.279184, 0.442625, 0.617042, 0.938441, 1.581241",\
+ "0.582638, 0.792504, 0.967419, 1.287178, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.027190, 0.303040, 0.635504, 1.249953, 2.473548",\
+ "0.031386, 0.304046, 0.637439, 1.249953, 2.473548",\
+ "0.043994, 0.306272, 0.637475, 1.250028, 2.473548",\
+ "0.055941, 0.309507, 0.637579, 1.250774, 2.473548",\
+ "0.132198, 0.347439, 0.643822, 1.253731, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.069846, 0.173993, 0.285156, 0.488998, 0.896682",\
+ "0.157251, 0.261310, 0.372437, 0.576303, 0.984036",\
+ "0.237642, 0.341641, 0.452464, 0.656332, 1.064067",\
+ "0.294418, 0.399190, 0.510006, 0.713575, 1.120715",\
+ "0.589089, 0.702533, 0.813636, 1.016588, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.026653, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.026653, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.027645, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.029626, 0.189113, 0.388156, 0.759574, 1.502409",\
+ "0.047836, 0.193360, 0.388231, 0.760346, 1.504575");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[33]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027190, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213409, 0.167538, 0.137343, 0.126003, 0.139708",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026653, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266639, 0.191328, 0.123224, 0.100346, 0.164070",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[33]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027190, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141198, -0.098770, -0.064309, -0.024387, 0.287847",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026653, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174512, -0.108425, -0.050519, -0.008491, 0.211689",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[33]_hldr*/
+
+} /* end of pin tl_o[33] */
+
+pin("tl_o[32]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003362 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[32];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.051835, 0.203939, 0.378625, 0.700698, 1.344843",\
+ "0.138352, 0.291114, 0.465728, 0.787411, 1.430777",\
+ "0.222457, 0.379239, 0.553681, 0.875031, 1.517732",\
+ "0.281277, 0.443628, 0.617795, 0.938944, 1.581241",\
+ "0.586756, 0.793514, 0.968169, 1.287678, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029003, 0.304950, 0.636948, 1.252153, 2.482563",\
+ "0.033010, 0.305967, 0.638875, 1.252153, 2.482563",\
+ "0.045419, 0.308176, 0.638911, 1.252153, 2.482563",\
+ "0.057391, 0.311385, 0.639017, 1.252153, 2.482563",\
+ "0.134015, 0.349072, 0.645253, 1.254684, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.071047, 0.174622, 0.285622, 0.489305, 0.896671",\
+ "0.158449, 0.261939, 0.372903, 0.576610, 0.984024",\
+ "0.238859, 0.342267, 0.452930, 0.656639, 1.064056",\
+ "0.295683, 0.399817, 0.510471, 0.713882, 1.120704",\
+ "0.590856, 0.703163, 0.814100, 1.016894, 1.422481");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.027892, 0.190438, 0.390058, 0.761463, 1.504274",\
+ "0.027892, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.028831, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.030758, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.048732, 0.194447, 0.390558, 0.761463, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[32]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.051835, 0.203939, 0.378625, 0.700698, 1.344843",\
+ "0.138352, 0.291114, 0.465728, 0.787411, 1.430777",\
+ "0.222457, 0.379239, 0.553681, 0.875031, 1.517732",\
+ "0.281277, 0.443628, 0.617795, 0.938944, 1.581241",\
+ "0.586756, 0.793514, 0.968169, 1.287678, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029003, 0.304950, 0.636948, 1.250910, 2.473548",\
+ "0.033010, 0.305967, 0.638875, 1.250910, 2.473548",\
+ "0.045419, 0.308176, 0.638911, 1.250986, 2.473548",\
+ "0.057391, 0.311385, 0.639017, 1.251733, 2.473548",\
+ "0.134015, 0.349072, 0.645253, 1.254684, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.071047, 0.174622, 0.285622, 0.489305, 0.896671",\
+ "0.158449, 0.261939, 0.372903, 0.576610, 0.984024",\
+ "0.238859, 0.342267, 0.452930, 0.656639, 1.064056",\
+ "0.295683, 0.399817, 0.510471, 0.713882, 1.120704",\
+ "0.590856, 0.703163, 0.814100, 1.016894, 1.422481");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.027892, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.027892, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.028831, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.030758, 0.190232, 0.389006, 0.760134, 1.502388",\
+ "0.048732, 0.194447, 0.389083, 0.760906, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[32]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029003, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.214175, 0.168305, 0.138110, 0.126769, 0.140474",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027892, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.267102, 0.191791, 0.123687, 0.100809, 0.164534",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[32]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029003, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141956, -0.099528, -0.065067, -0.025145, 0.287089",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027892, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174973, -0.108885, -0.050979, -0.008951, 0.211228",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[32]_hldr*/
+
+} /* end of pin tl_o[32] */
+
+pin("tl_o[31]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002343 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[31];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.049079, 0.201886, 0.377083, 0.699670, 1.344843",\
+ "0.135444, 0.289061, 0.464188, 0.786384, 1.430777",\
+ "0.218870, 0.377188, 0.552143, 0.874006, 1.517732",\
+ "0.277007, 0.441581, 0.616258, 0.937919, 1.581241",\
+ "0.578356, 0.791455, 0.966639, 1.286659, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025304, 0.301054, 0.634003, 1.250190, 2.482563",\
+ "0.029697, 0.302049, 0.635945, 1.250190, 2.482563",\
+ "0.042512, 0.304293, 0.635981, 1.250190, 2.482563",\
+ "0.054434, 0.307555, 0.636084, 1.250190, 2.482563",\
+ "0.130308, 0.345742, 0.642335, 1.252740, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.068622, 0.173351, 0.284684, 0.488692, 0.896707",\
+ "0.156030, 0.260670, 0.371965, 0.575997, 0.984061",\
+ "0.236402, 0.341002, 0.451991, 0.656025, 1.064092",\
+ "0.293129, 0.398551, 0.509534, 0.713269, 1.120740",\
+ "0.587289, 0.701891, 0.813166, 1.016283, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025390, 0.188165, 0.388347, 0.760345, 1.504341",\
+ "0.025390, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.026437, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.028472, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.046924, 0.192253, 0.388850, 0.760345, 1.504621");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[31]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.049079, 0.201886, 0.377083, 0.699670, 1.344843",\
+ "0.135444, 0.289061, 0.464188, 0.786384, 1.430777",\
+ "0.218870, 0.377188, 0.552143, 0.874006, 1.517732",\
+ "0.277007, 0.441581, 0.616258, 0.937919, 1.581241",\
+ "0.578356, 0.791455, 0.966639, 1.286659, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025304, 0.301054, 0.634003, 1.248957, 2.473548",\
+ "0.029697, 0.302049, 0.635945, 1.248957, 2.473548",\
+ "0.042512, 0.304293, 0.635981, 1.249033, 2.473548",\
+ "0.054434, 0.307555, 0.636084, 1.249777, 2.473548",\
+ "0.130308, 0.345742, 0.642335, 1.252740, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.068622, 0.173351, 0.284684, 0.488692, 0.896707",\
+ "0.156030, 0.260670, 0.371965, 0.575997, 0.984061",\
+ "0.236402, 0.341002, 0.451991, 0.656025, 1.064092",\
+ "0.293129, 0.398551, 0.509534, 0.713269, 1.120740",\
+ "0.587289, 0.701891, 0.813166, 1.016283, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025390, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.025390, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.026437, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.028472, 0.187972, 0.387296, 0.759016, 1.502455",\
+ "0.046924, 0.192253, 0.387369, 0.759786, 1.504621");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[31]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025304, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212613, 0.166742, 0.136547, 0.125206, 0.138911",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266167, 0.190856, 0.122752, 0.099874, 0.163599",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[31]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025304, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140410, -0.097982, -0.063521, -0.023599, 0.288635",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174043, -0.107956, -0.050050, -0.008022, 0.212157",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[31]_hldr*/
+
+} /* end of pin tl_o[31] */
+
+pin("tl_o[30]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003362 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[30];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.051835, 0.203939, 0.378625, 0.700698, 1.344843",\
+ "0.138352, 0.291114, 0.465728, 0.787411, 1.430777",\
+ "0.222457, 0.379239, 0.553681, 0.875031, 1.517732",\
+ "0.281277, 0.443628, 0.617795, 0.938944, 1.581241",\
+ "0.586756, 0.793514, 0.968169, 1.287678, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029003, 0.304950, 0.636948, 1.252153, 2.482563",\
+ "0.033010, 0.305967, 0.638875, 1.252153, 2.482563",\
+ "0.045419, 0.308176, 0.638911, 1.252153, 2.482563",\
+ "0.057391, 0.311385, 0.639017, 1.252153, 2.482563",\
+ "0.134015, 0.349072, 0.645253, 1.254684, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.071047, 0.174622, 0.285622, 0.489305, 0.896671",\
+ "0.158449, 0.261939, 0.372903, 0.576610, 0.984024",\
+ "0.238859, 0.342267, 0.452930, 0.656639, 1.064056",\
+ "0.295683, 0.399817, 0.510471, 0.713882, 1.120704",\
+ "0.590856, 0.703163, 0.814100, 1.016894, 1.422481");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.027892, 0.190438, 0.390058, 0.761463, 1.504274",\
+ "0.027892, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.028831, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.030758, 0.190592, 0.390558, 0.761463, 1.504274",\
+ "0.048732, 0.194447, 0.390558, 0.761463, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[30]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.051835, 0.203939, 0.378625, 0.700698, 1.344843",\
+ "0.138352, 0.291114, 0.465728, 0.787411, 1.430777",\
+ "0.222457, 0.379239, 0.553681, 0.875031, 1.517732",\
+ "0.281277, 0.443628, 0.617795, 0.938944, 1.581241",\
+ "0.586756, 0.793514, 0.968169, 1.287678, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029003, 0.304950, 0.636948, 1.250910, 2.473548",\
+ "0.033010, 0.305967, 0.638875, 1.250910, 2.473548",\
+ "0.045419, 0.308176, 0.638911, 1.250986, 2.473548",\
+ "0.057391, 0.311385, 0.639017, 1.251733, 2.473548",\
+ "0.134015, 0.349072, 0.645253, 1.254684, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.071047, 0.174622, 0.285622, 0.489305, 0.896671",\
+ "0.158449, 0.261939, 0.372903, 0.576610, 0.984024",\
+ "0.238859, 0.342267, 0.452930, 0.656639, 1.064056",\
+ "0.295683, 0.399817, 0.510471, 0.713882, 1.120704",\
+ "0.590856, 0.703163, 0.814100, 1.016894, 1.422481");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.027892, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.027892, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.028831, 0.189626, 0.388546, 0.759230, 1.500597",\
+ "0.030758, 0.190232, 0.389006, 0.760134, 1.502388",\
+ "0.048732, 0.194447, 0.389083, 0.760906, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[30]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029003, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.214175, 0.168305, 0.138110, 0.126769, 0.140474",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027892, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.267102, 0.191791, 0.123687, 0.100809, 0.164534",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[30]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029003, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141956, -0.099528, -0.065067, -0.025145, 0.287089",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027892, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174973, -0.108885, -0.050979, -0.008951, 0.211228",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[30]_hldr*/
+
+} /* end of pin tl_o[30] */
+
+pin("tl_o[29]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002863 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[29];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.050484, 0.202933, 0.377869, 0.700194, 1.344843",\
+ "0.136927, 0.290107, 0.464973, 0.786907, 1.430777",\
+ "0.220698, 0.378233, 0.552927, 0.874529, 1.517732",\
+ "0.279184, 0.442625, 0.617042, 0.938441, 1.581241",\
+ "0.582638, 0.792504, 0.967419, 1.287178, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.027190, 0.303040, 0.635504, 1.251191, 2.482564",\
+ "0.031386, 0.304046, 0.637439, 1.251191, 2.482564",\
+ "0.043994, 0.306272, 0.637475, 1.251191, 2.482564",\
+ "0.055941, 0.309507, 0.637579, 1.251191, 2.482564",\
+ "0.132198, 0.347439, 0.643822, 1.253731, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.069846, 0.173993, 0.285156, 0.488998, 0.896682",\
+ "0.157251, 0.261310, 0.372437, 0.576303, 0.984036",\
+ "0.237642, 0.341641, 0.452464, 0.656332, 1.064067",\
+ "0.294418, 0.399190, 0.510006, 0.713575, 1.120715",\
+ "0.589089, 0.702533, 0.813636, 1.016588, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.026653, 0.189312, 0.389207, 0.760903, 1.504295",\
+ "0.026653, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.027645, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.029626, 0.189463, 0.389709, 0.760903, 1.504295",\
+ "0.047836, 0.193360, 0.389709, 0.760903, 1.504575");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[29]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.050484, 0.202933, 0.377869, 0.700194, 1.344843",\
+ "0.136927, 0.290107, 0.464973, 0.786907, 1.430777",\
+ "0.220698, 0.378233, 0.552927, 0.874529, 1.517732",\
+ "0.279184, 0.442625, 0.617042, 0.938441, 1.581241",\
+ "0.582638, 0.792504, 0.967419, 1.287178, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.027190, 0.303040, 0.635504, 1.249953, 2.473548",\
+ "0.031386, 0.304046, 0.637439, 1.249953, 2.473548",\
+ "0.043994, 0.306272, 0.637475, 1.250028, 2.473548",\
+ "0.055941, 0.309507, 0.637579, 1.250774, 2.473548",\
+ "0.132198, 0.347439, 0.643822, 1.253731, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.069846, 0.173993, 0.285156, 0.488998, 0.896682",\
+ "0.157251, 0.261310, 0.372437, 0.576303, 0.984036",\
+ "0.237642, 0.341641, 0.452464, 0.656332, 1.064067",\
+ "0.294418, 0.399190, 0.510006, 0.713575, 1.120715",\
+ "0.589089, 0.702533, 0.813636, 1.016588, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.026653, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.026653, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.027645, 0.188505, 0.387697, 0.758671, 1.500618",\
+ "0.029626, 0.189113, 0.388156, 0.759574, 1.502409",\
+ "0.047836, 0.193360, 0.388231, 0.760346, 1.504575");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[29]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027190, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213409, 0.167538, 0.137343, 0.126003, 0.139708",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026653, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266639, 0.191328, 0.123224, 0.100346, 0.164070",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[29]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027190, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141198, -0.098770, -0.064309, -0.024387, 0.287847",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026653, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174512, -0.108425, -0.050519, -0.008491, 0.211689",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[29]_hldr*/
+
+} /* end of pin tl_o[29] */
+
+pin("tl_o[28]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001816 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[28];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.249174, 2.482563",\
+ "0.027983, 0.300023, 0.634430, 1.249174, 2.482563",\
+ "0.041008, 0.302285, 0.634466, 1.249174, 2.482563",\
+ "0.052904, 0.305573, 0.634567, 1.249174, 2.482563",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186982, 0.387454, 0.759758, 1.504368",\
+ "0.024087, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.025192, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.027281, 0.187126, 0.387958, 0.759758, 1.504368",\
+ "0.045983, 0.191111, 0.387958, 0.759758, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[28]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.047653, 0.200824, 0.376286, 0.699138, 1.344843",\
+ "0.133940, 0.287998, 0.463391, 0.785853, 1.430777",\
+ "0.217014, 0.376126, 0.551347, 0.873475, 1.517732",\
+ "0.274798, 0.440522, 0.615463, 0.937389, 1.581241",\
+ "0.574010, 0.790389, 0.965848, 1.286131, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.023390, 0.299039, 0.632479, 1.247947, 2.473548",\
+ "0.027983, 0.300023, 0.634430, 1.247947, 2.473548",\
+ "0.041008, 0.302285, 0.634466, 1.248022, 2.473548",\
+ "0.052904, 0.305573, 0.634567, 1.248766, 2.473548",\
+ "0.128390, 0.344019, 0.640826, 1.251733, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.067359, 0.172690, 0.284194, 0.488370, 0.896722",\
+ "0.154772, 0.260009, 0.371475, 0.575675, 0.984076",\
+ "0.235124, 0.340344, 0.451502, 0.655704, 1.064107",\
+ "0.291800, 0.397892, 0.509045, 0.712948, 1.120755",\
+ "0.585433, 0.701229, 0.812678, 1.015963, 1.422532");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.024087, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.025192, 0.186184, 0.385947, 0.757528, 1.500690",\
+ "0.027281, 0.186796, 0.386404, 0.758430, 1.502482",\
+ "0.045983, 0.191111, 0.386476, 0.759200, 1.504648");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[28]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211804, 0.165933, 0.135738, 0.124398, 0.138103",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265681, 0.190370, 0.122265, 0.099388, 0.163112",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[28]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139610, -0.097182, -0.062721, -0.022799, 0.289435",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024087, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173560, -0.107472, -0.049566, -0.007539, 0.212641",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[28]_hldr*/
+
+} /* end of pin tl_o[28] */
+
+pin("tl_o[27]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003525 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[27];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.052275, 0.204267, 0.378871, 0.700862, 1.344843",\
+ "0.138817, 0.291442, 0.465974, 0.787575, 1.430777",\
+ "0.223030, 0.379567, 0.553927, 0.875195, 1.517732",\
+ "0.281960, 0.443955, 0.618041, 0.939108, 1.581241",\
+ "0.588098, 0.793843, 0.968413, 1.287841, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.029595, 0.305572, 0.637418, 1.252467, 2.482563",\
+ "0.033540, 0.306593, 0.639343, 1.252467, 2.482563",\
+ "0.045883, 0.308796, 0.639379, 1.252467, 2.482563",\
+ "0.057864, 0.311997, 0.639486, 1.252467, 2.482563",\
+ "0.134607, 0.349604, 0.645719, 1.254995, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.071419, 0.174817, 0.285764, 0.489395, 0.896657",\
+ "0.158819, 0.262134, 0.373045, 0.576700, 0.984010",\
+ "0.239235, 0.342461, 0.453072, 0.656729, 1.064042",\
+ "0.296074, 0.400011, 0.510613, 0.713972, 1.120690",\
+ "0.591402, 0.703358, 0.814241, 1.016983, 1.422467");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.028276, 0.190786, 0.390316, 0.761627, 1.504248",\
+ "0.028276, 0.190941, 0.390816, 0.761627, 1.504248",\
+ "0.029198, 0.190941, 0.390816, 0.761627, 1.504248",\
+ "0.031109, 0.190941, 0.390816, 0.761627, 1.504248",\
+ "0.049009, 0.194783, 0.390816, 0.761627, 1.504528");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[27]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.052275, 0.204267, 0.378871, 0.700862, 1.344843",\
+ "0.138817, 0.291442, 0.465974, 0.787575, 1.430777",\
+ "0.223030, 0.379567, 0.553927, 0.875195, 1.517732",\
+ "0.281960, 0.443955, 0.618041, 0.939108, 1.581241",\
+ "0.588098, 0.793843, 0.968413, 1.287841, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.029595, 0.305572, 0.637418, 1.251222, 2.473548",\
+ "0.033540, 0.306593, 0.639343, 1.251222, 2.473548",\
+ "0.045883, 0.308796, 0.639379, 1.251298, 2.473548",\
+ "0.057864, 0.311997, 0.639486, 1.252045, 2.473548",\
+ "0.134607, 0.349604, 0.645719, 1.254995, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.071419, 0.174817, 0.285764, 0.489395, 0.896657",\
+ "0.158819, 0.262134, 0.373045, 0.576700, 0.984010",\
+ "0.239235, 0.342461, 0.453072, 0.656729, 1.064042",\
+ "0.296074, 0.400011, 0.510613, 0.713972, 1.120690",\
+ "0.591402, 0.703358, 0.814241, 1.016983, 1.422467");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.028276, 0.189973, 0.388804, 0.759393, 1.500571",\
+ "0.028276, 0.189973, 0.388804, 0.759393, 1.500571",\
+ "0.029198, 0.189973, 0.388804, 0.759393, 1.500571",\
+ "0.031109, 0.190579, 0.389264, 0.760297, 1.502363",\
+ "0.049009, 0.194783, 0.389341, 0.761070, 1.504528");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[27]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029595, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.214425, 0.168554, 0.138359, 0.127019, 0.140724",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028276, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.267246, 0.191934, 0.123830, 0.100952, 0.164677",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[27]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029595, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.142204, -0.099775, -0.065314, -0.025392, 0.286842",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028276, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.175115, -0.109028, -0.051122, -0.009094, 0.211086",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[27]_hldr*/
+
+} /* end of pin tl_o[27] */
+
+pin("tl_o[26]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002267 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[26];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.048874, 0.201733, 0.376968, 0.699593, 1.344843",\
+ "0.135228, 0.288908, 0.464073, 0.786308, 1.430777",\
+ "0.218603, 0.377035, 0.552028, 0.873930, 1.517732",\
+ "0.276689, 0.441428, 0.616144, 0.937843, 1.581241",\
+ "0.577730, 0.791301, 0.966525, 1.286583, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.025028, 0.300764, 0.633784, 1.250043, 2.482563",\
+ "0.029450, 0.301758, 0.635727, 1.250043, 2.482563",\
+ "0.042296, 0.304004, 0.635763, 1.250043, 2.482563",\
+ "0.054214, 0.307269, 0.635866, 1.250043, 2.482563",\
+ "0.130032, 0.345494, 0.642118, 1.252595, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.068432, 0.173252, 0.284609, 0.488641, 0.896705",\
+ "0.155842, 0.260570, 0.371890, 0.575946, 0.984059",\
+ "0.236211, 0.340904, 0.451917, 0.655975, 1.064090",\
+ "0.292930, 0.398452, 0.509460, 0.713219, 1.120738",\
+ "0.587011, 0.701792, 0.813092, 1.016233, 1.422515");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.025195, 0.187988, 0.388211, 0.760253, 1.504337",\
+ "0.025195, 0.188134, 0.388714, 0.760253, 1.504337",\
+ "0.026251, 0.188134, 0.388714, 0.760253, 1.504337",\
+ "0.028293, 0.188134, 0.388714, 0.760253, 1.504337",\
+ "0.046783, 0.192082, 0.388714, 0.760253, 1.504617");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[26]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.048874, 0.201733, 0.376968, 0.699593, 1.344843",\
+ "0.135228, 0.288908, 0.464073, 0.786308, 1.430777",\
+ "0.218603, 0.377035, 0.552028, 0.873930, 1.517732",\
+ "0.276689, 0.441428, 0.616144, 0.937843, 1.581241",\
+ "0.577730, 0.791301, 0.966525, 1.286583, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.025028, 0.300764, 0.633784, 1.248812, 2.473548",\
+ "0.029450, 0.301758, 0.635727, 1.248812, 2.473548",\
+ "0.042296, 0.304004, 0.635763, 1.248887, 2.473548",\
+ "0.054214, 0.307269, 0.635866, 1.249632, 2.473548",\
+ "0.130032, 0.345494, 0.642118, 1.252595, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.068432, 0.173252, 0.284609, 0.488641, 0.896705",\
+ "0.155842, 0.260570, 0.371890, 0.575946, 0.984059",\
+ "0.236211, 0.340904, 0.451917, 0.655975, 1.064090",\
+ "0.292930, 0.398452, 0.509460, 0.713219, 1.120738",\
+ "0.587011, 0.701792, 0.813092, 1.016233, 1.422515");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.025195, 0.187186, 0.386703, 0.758022, 1.500660",\
+ "0.025195, 0.187186, 0.386703, 0.758022, 1.500660",\
+ "0.026251, 0.187186, 0.386703, 0.758022, 1.500660",\
+ "0.028293, 0.187796, 0.387161, 0.758924, 1.502451",\
+ "0.046783, 0.192082, 0.387233, 0.759695, 1.504617");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[26]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025028, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212496, 0.166625, 0.136430, 0.125090, 0.138795",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025195, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266095, 0.190783, 0.122679, 0.099801, 0.163526",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[26]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025028, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140295, -0.097867, -0.063406, -0.023484, 0.288750",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025195, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173971, -0.107884, -0.049978, -0.007950, 0.212230",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[26]_hldr*/
+
+} /* end of pin tl_o[26] */
+
+pin("tl_o[25]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002846 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[25];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.050438, 0.202899, 0.377843, 0.700177, 1.344843",\
+ "0.136878, 0.290073, 0.464947, 0.786890, 1.430777",\
+ "0.220639, 0.378199, 0.552901, 0.874512, 1.517732",\
+ "0.279113, 0.442591, 0.617016, 0.938424, 1.581241",\
+ "0.582498, 0.792470, 0.967394, 1.287161, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.027128, 0.302975, 0.635455, 1.251158, 2.482563",\
+ "0.031331, 0.303981, 0.637390, 1.251158, 2.482563",\
+ "0.043946, 0.306208, 0.637426, 1.251158, 2.482563",\
+ "0.055892, 0.309444, 0.637531, 1.251158, 2.482563",\
+ "0.132136, 0.347384, 0.643774, 1.253699, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.069801, 0.173969, 0.285138, 0.488985, 0.896680",\
+ "0.157206, 0.261287, 0.372419, 0.576290, 0.984034",\
+ "0.237596, 0.341617, 0.452445, 0.656319, 1.064065",\
+ "0.294370, 0.399166, 0.509987, 0.713563, 1.120713",\
+ "0.589023, 0.702509, 0.813617, 1.016575, 1.422490");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.026606, 0.189270, 0.389174, 0.760880, 1.504292",\
+ "0.026606, 0.189420, 0.389676, 0.760880, 1.504292",\
+ "0.027601, 0.189420, 0.389676, 0.760880, 1.504292",\
+ "0.029583, 0.189420, 0.389676, 0.760880, 1.504292",\
+ "0.047803, 0.193320, 0.389676, 0.760880, 1.504571");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[25]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.050438, 0.202899, 0.377843, 0.700177, 1.344843",\
+ "0.136878, 0.290073, 0.464947, 0.786890, 1.430777",\
+ "0.220639, 0.378199, 0.552901, 0.874512, 1.517732",\
+ "0.279113, 0.442591, 0.617016, 0.938424, 1.581241",\
+ "0.582498, 0.792470, 0.967394, 1.287161, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.027128, 0.302975, 0.635455, 1.249921, 2.473548",\
+ "0.031331, 0.303981, 0.637390, 1.249921, 2.473548",\
+ "0.043946, 0.306208, 0.637426, 1.249996, 2.473548",\
+ "0.055892, 0.309444, 0.637531, 1.250742, 2.473548",\
+ "0.132136, 0.347384, 0.643774, 1.253699, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.069801, 0.173969, 0.285138, 0.488985, 0.896680",\
+ "0.157206, 0.261287, 0.372419, 0.576290, 0.984034",\
+ "0.237596, 0.341617, 0.452445, 0.656319, 1.064065",\
+ "0.294370, 0.399166, 0.509987, 0.713563, 1.120713",\
+ "0.589023, 0.702509, 0.813617, 1.016575, 1.422490");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.026606, 0.188463, 0.387664, 0.758648, 1.500614",\
+ "0.026606, 0.188463, 0.387664, 0.758648, 1.500614",\
+ "0.027601, 0.188463, 0.387664, 0.758648, 1.500614",\
+ "0.029583, 0.189071, 0.388123, 0.759551, 1.502406",\
+ "0.047803, 0.193320, 0.388198, 0.760322, 1.504571");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[25]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027128, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213383, 0.167512, 0.137317, 0.125977, 0.139682",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266622, 0.191311, 0.123207, 0.100329, 0.164053",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[25]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027128, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141173, -0.098745, -0.064283, -0.024362, 0.287872",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174495, -0.108408, -0.050502, -0.008474, 0.211706",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[25]_hldr*/
+
+} /* end of pin tl_o[25] */
+
+pin("tl_o[24]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003210 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[24];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.051424, 0.203633, 0.378395, 0.700544, 1.344843",\
+ "0.137919, 0.290808, 0.465498, 0.787258, 1.430777",\
+ "0.221922, 0.378933, 0.553452, 0.874879, 1.517732",\
+ "0.280641, 0.443323, 0.617566, 0.938791, 1.581241",\
+ "0.585504, 0.793207, 0.967941, 1.287526, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.028452, 0.304369, 0.636509, 1.251860, 2.482563",\
+ "0.032517, 0.305383, 0.638438, 1.251860, 2.482563",\
+ "0.044986, 0.307597, 0.638475, 1.251860, 2.482563",\
+ "0.056951, 0.310815, 0.638580, 1.251860, 2.482563",\
+ "0.133463, 0.348576, 0.644818, 1.254395, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.070659, 0.174419, 0.285469, 0.489200, 0.896663",\
+ "0.158062, 0.261736, 0.372750, 0.576505, 0.984016",\
+ "0.238466, 0.342065, 0.452777, 0.656534, 1.064048",\
+ "0.295275, 0.399615, 0.510318, 0.713777, 1.120695",\
+ "0.590286, 0.702959, 0.813947, 1.016789, 1.422472");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.027492, 0.190075, 0.389778, 0.761272, 1.504259",\
+ "0.027492, 0.190228, 0.390279, 0.761272, 1.504259",\
+ "0.028448, 0.190228, 0.390279, 0.761272, 1.504259",\
+ "0.030393, 0.190228, 0.390279, 0.761272, 1.504259",\
+ "0.048443, 0.194096, 0.390279, 0.761272, 1.504539");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[24]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.051424, 0.203633, 0.378395, 0.700544, 1.344843",\
+ "0.137919, 0.290808, 0.465498, 0.787258, 1.430777",\
+ "0.221922, 0.378933, 0.553452, 0.874879, 1.517732",\
+ "0.280641, 0.443323, 0.617566, 0.938791, 1.581241",\
+ "0.585504, 0.793207, 0.967941, 1.287526, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.028452, 0.304369, 0.636509, 1.250620, 2.473548",\
+ "0.032517, 0.305383, 0.638438, 1.250620, 2.473548",\
+ "0.044986, 0.307597, 0.638475, 1.250695, 2.473548",\
+ "0.056951, 0.310815, 0.638580, 1.251441, 2.473548",\
+ "0.133463, 0.348576, 0.644818, 1.254395, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.070659, 0.174419, 0.285469, 0.489200, 0.896663",\
+ "0.158062, 0.261736, 0.372750, 0.576505, 0.984016",\
+ "0.238466, 0.342065, 0.452777, 0.656534, 1.064048",\
+ "0.295275, 0.399615, 0.510318, 0.713777, 1.120695",\
+ "0.590286, 0.702959, 0.813947, 1.016789, 1.422472");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.027492, 0.189265, 0.388267, 0.759039, 1.500582",\
+ "0.027492, 0.189265, 0.388267, 0.759039, 1.500582",\
+ "0.028448, 0.189265, 0.388267, 0.759039, 1.500582",\
+ "0.030393, 0.189871, 0.388727, 0.759942, 1.502373",\
+ "0.048443, 0.194096, 0.388802, 0.760715, 1.504539");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[24]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213943, 0.168072, 0.137877, 0.126536, 0.140241",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027492, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266953, 0.191642, 0.123538, 0.100660, 0.164384",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[24]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141726, -0.099298, -0.064837, -0.024915, 0.287319",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027492, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174824, -0.108737, -0.050831, -0.008803, 0.211377",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[24]_hldr*/
+
+} /* end of pin tl_o[24] */
+
+pin("tl_o[23]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002308 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[23];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.048983, 0.201815, 0.377030, 0.699634, 1.344843",\
+ "0.135344, 0.288990, 0.464134, 0.786349, 1.430777",\
+ "0.218746, 0.377117, 0.552089, 0.873970, 1.517732",\
+ "0.276859, 0.441510, 0.616205, 0.937884, 1.581241",\
+ "0.578065, 0.791383, 0.966586, 1.286623, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.025176, 0.300919, 0.633901, 1.250122, 2.482564",\
+ "0.029582, 0.301914, 0.635844, 1.250122, 2.482564",\
+ "0.042411, 0.304159, 0.635880, 1.250122, 2.482564",\
+ "0.054332, 0.307422, 0.635983, 1.250122, 2.482564",\
+ "0.130180, 0.345627, 0.642234, 1.252672, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.068536, 0.173307, 0.284651, 0.488670, 0.896708",\
+ "0.155945, 0.260625, 0.371931, 0.575975, 0.984061",\
+ "0.236316, 0.340958, 0.451958, 0.656003, 1.064093",\
+ "0.293039, 0.398507, 0.509501, 0.713248, 1.120741",\
+ "0.587164, 0.701846, 0.813133, 1.016261, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.025302, 0.188085, 0.388286, 0.760305, 1.504342",\
+ "0.025302, 0.188232, 0.388789, 0.760305, 1.504342",\
+ "0.026353, 0.188232, 0.388789, 0.760305, 1.504342",\
+ "0.028391, 0.188232, 0.388789, 0.760305, 1.504342",\
+ "0.046861, 0.192176, 0.388789, 0.760305, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[23]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.048983, 0.201815, 0.377030, 0.699634, 1.344843",\
+ "0.135344, 0.288990, 0.464134, 0.786349, 1.430777",\
+ "0.218746, 0.377117, 0.552089, 0.873970, 1.517732",\
+ "0.276859, 0.441510, 0.616205, 0.937884, 1.581241",\
+ "0.578065, 0.791383, 0.966586, 1.286623, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.025176, 0.300919, 0.633901, 1.248890, 2.473548",\
+ "0.029582, 0.301914, 0.635844, 1.248890, 2.473548",\
+ "0.042411, 0.304159, 0.635880, 1.248965, 2.473548",\
+ "0.054332, 0.307422, 0.635983, 1.249710, 2.473548",\
+ "0.130180, 0.345627, 0.642234, 1.252672, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.068536, 0.173307, 0.284651, 0.488670, 0.896708",\
+ "0.155945, 0.260625, 0.371931, 0.575975, 0.984061",\
+ "0.236316, 0.340958, 0.451958, 0.656003, 1.064093",\
+ "0.293039, 0.398507, 0.509501, 0.713248, 1.120741",\
+ "0.587164, 0.701846, 0.813133, 1.016261, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.025302, 0.187283, 0.386778, 0.758074, 1.500664",\
+ "0.025302, 0.187283, 0.386778, 0.758074, 1.500664",\
+ "0.026353, 0.187283, 0.386778, 0.758074, 1.500664",\
+ "0.028391, 0.187893, 0.387236, 0.758976, 1.502456",\
+ "0.046861, 0.192176, 0.387309, 0.759746, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[23]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025176, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212558, 0.166688, 0.136493, 0.125152, 0.138857",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025302, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266135, 0.190823, 0.122719, 0.099841, 0.163566",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[23]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025176, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140357, -0.097929, -0.063467, -0.023545, 0.288689",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025302, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174011, -0.107923, -0.050017, -0.007990, 0.212190",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[23]_hldr*/
+
+} /* end of pin tl_o[23] */
+
+pin("tl_o[22]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002254 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[22];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048838, 0.201706, 0.376948, 0.699580, 1.344843",\
+ "0.135190, 0.288881, 0.464053, 0.786294, 1.430777",\
+ "0.218556, 0.377008, 0.552008, 0.873916, 1.517732",\
+ "0.276634, 0.441402, 0.616124, 0.937829, 1.581241",\
+ "0.577621, 0.791275, 0.966506, 1.286569, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.024980, 0.300714, 0.633745, 1.250018, 2.482564",\
+ "0.029407, 0.301707, 0.635689, 1.250018, 2.482564",\
+ "0.042258, 0.303954, 0.635725, 1.250018, 2.482564",\
+ "0.054175, 0.307220, 0.635828, 1.250018, 2.482564",\
+ "0.129984, 0.345451, 0.642080, 1.252569, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.068404, 0.173238, 0.284599, 0.488635, 0.896708",\
+ "0.155814, 0.260556, 0.371880, 0.575940, 0.984061",\
+ "0.236182, 0.340889, 0.451907, 0.655969, 1.064093",\
+ "0.292900, 0.398438, 0.509450, 0.713213, 1.120741",\
+ "0.586970, 0.701777, 0.813081, 1.016227, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.025166, 0.187961, 0.388192, 0.760242, 1.504342",\
+ "0.025166, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.026223, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.028267, 0.188108, 0.388695, 0.760242, 1.504342",\
+ "0.046762, 0.192057, 0.388695, 0.760242, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[22]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048838, 0.201706, 0.376948, 0.699580, 1.344843",\
+ "0.135190, 0.288881, 0.464053, 0.786294, 1.430777",\
+ "0.218556, 0.377008, 0.552008, 0.873916, 1.517732",\
+ "0.276634, 0.441402, 0.616124, 0.937829, 1.581241",\
+ "0.577621, 0.791275, 0.966506, 1.286569, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.024980, 0.300714, 0.633745, 1.248787, 2.473548",\
+ "0.029407, 0.301707, 0.635689, 1.248787, 2.473548",\
+ "0.042258, 0.303954, 0.635725, 1.248862, 2.473548",\
+ "0.054175, 0.307220, 0.635828, 1.249606, 2.473548",\
+ "0.129984, 0.345451, 0.642080, 1.252569, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.068404, 0.173238, 0.284599, 0.488635, 0.896708",\
+ "0.155814, 0.260556, 0.371880, 0.575940, 0.984061",\
+ "0.236182, 0.340889, 0.451907, 0.655969, 1.064093",\
+ "0.292900, 0.398438, 0.509450, 0.713213, 1.120741",\
+ "0.586970, 0.701777, 0.813081, 1.016227, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.025166, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.025166, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.026223, 0.187160, 0.386684, 0.758011, 1.500664",\
+ "0.028267, 0.187770, 0.387142, 0.758913, 1.502456",\
+ "0.046762, 0.192057, 0.387215, 0.759684, 1.504622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[22]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024980, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212476, 0.166605, 0.136410, 0.125070, 0.138775",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025166, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266084, 0.190773, 0.122668, 0.099790, 0.163515",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[22]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024980, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140275, -0.097847, -0.063386, -0.023464, 0.288770",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025166, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173960, -0.107873, -0.049967, -0.007939, 0.212241",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[22]_hldr*/
+
+} /* end of pin tl_o[22] */
+
+pin("tl_o[21]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003224 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[21];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.051460, 0.203660, 0.378415, 0.700558, 1.344843",\
+ "0.137957, 0.290835, 0.465518, 0.787271, 1.430777",\
+ "0.221969, 0.378960, 0.553472, 0.874892, 1.517732",\
+ "0.280696, 0.443350, 0.617586, 0.938804, 1.581241",\
+ "0.585613, 0.793234, 0.967961, 1.287539, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.028500, 0.304420, 0.636547, 1.251886, 2.482563",\
+ "0.032560, 0.305434, 0.638476, 1.251886, 2.482563",\
+ "0.045023, 0.307647, 0.638513, 1.251886, 2.482563",\
+ "0.056989, 0.310864, 0.638618, 1.251886, 2.482563",\
+ "0.133511, 0.348619, 0.644856, 1.254420, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.070687, 0.174433, 0.285479, 0.489206, 0.896660",\
+ "0.158090, 0.261751, 0.372760, 0.576511, 0.984014",\
+ "0.238494, 0.342080, 0.452787, 0.656540, 1.064045",\
+ "0.295304, 0.399629, 0.510328, 0.713783, 1.120693",\
+ "0.590327, 0.702974, 0.813957, 1.016795, 1.422470");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.027521, 0.190101, 0.389797, 0.761283, 1.504255",\
+ "0.027521, 0.190254, 0.390298, 0.761283, 1.504255",\
+ "0.028476, 0.190254, 0.390298, 0.761283, 1.504255",\
+ "0.030419, 0.190254, 0.390298, 0.761283, 1.504255",\
+ "0.048464, 0.194122, 0.390298, 0.761283, 1.504535");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[21]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.051460, 0.203660, 0.378415, 0.700558, 1.344843",\
+ "0.137957, 0.290835, 0.465518, 0.787271, 1.430777",\
+ "0.221969, 0.378960, 0.553472, 0.874892, 1.517732",\
+ "0.280696, 0.443350, 0.617586, 0.938804, 1.581241",\
+ "0.585613, 0.793234, 0.967961, 1.287539, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.028500, 0.304420, 0.636547, 1.250645, 2.473547",\
+ "0.032560, 0.305434, 0.638476, 1.250645, 2.473547",\
+ "0.045023, 0.307647, 0.638513, 1.250720, 2.473547",\
+ "0.056989, 0.310864, 0.638618, 1.251467, 2.473547",\
+ "0.133511, 0.348619, 0.644856, 1.254420, 2.473547");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.070687, 0.174433, 0.285479, 0.489206, 0.896660",\
+ "0.158090, 0.261751, 0.372760, 0.576511, 0.984014",\
+ "0.238494, 0.342080, 0.452787, 0.656540, 1.064045",\
+ "0.295304, 0.399629, 0.510328, 0.713783, 1.120693",\
+ "0.590327, 0.702974, 0.813957, 1.016795, 1.422470");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.027521, 0.189291, 0.388286, 0.759050, 1.500578",\
+ "0.027521, 0.189291, 0.388286, 0.759050, 1.500578",\
+ "0.028476, 0.189291, 0.388286, 0.759050, 1.500578",\
+ "0.030419, 0.189897, 0.388745, 0.759953, 1.502369",\
+ "0.048464, 0.194122, 0.388821, 0.760726, 1.504535");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[21]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028500, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.213963, 0.168092, 0.137897, 0.126557, 0.140261",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027521, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266964, 0.191653, 0.123548, 0.100670, 0.164395",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[21]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028500, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.141746, -0.099318, -0.064857, -0.024935, 0.287299",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027521, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174835, -0.108748, -0.050842, -0.008814, 0.211366",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[21]_hldr*/
+
+} /* end of pin tl_o[21] */
+
+pin("tl_o[20]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001805 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[20];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.047624, 0.200802, 0.376269, 0.699127, 1.344843",\
+ "0.133909, 0.287977, 0.463375, 0.785842, 1.430777",\
+ "0.216976, 0.376105, 0.551331, 0.873464, 1.517732",\
+ "0.274753, 0.440500, 0.615446, 0.937378, 1.581241",\
+ "0.573921, 0.790368, 0.965832, 1.286120, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.023351, 0.298998, 0.632448, 1.249153, 2.482563",\
+ "0.027948, 0.299981, 0.634399, 1.249153, 2.482563",\
+ "0.040978, 0.302244, 0.634435, 1.249153, 2.482563",\
+ "0.052873, 0.305533, 0.634536, 1.249153, 2.482563",\
+ "0.128351, 0.343984, 0.640795, 1.251713, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.067343, 0.172682, 0.284189, 0.488369, 0.896728",\
+ "0.154756, 0.260000, 0.371470, 0.575674, 0.984081",\
+ "0.235108, 0.340335, 0.451497, 0.655702, 1.064113",\
+ "0.291783, 0.397884, 0.509040, 0.712947, 1.120760",\
+ "0.585410, 0.701221, 0.812673, 1.015961, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.024071, 0.186967, 0.387445, 0.759756, 1.504378",\
+ "0.024071, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.025176, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.027266, 0.187111, 0.387949, 0.759756, 1.504378",\
+ "0.045971, 0.191097, 0.387949, 0.759756, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[20]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.047624, 0.200802, 0.376269, 0.699127, 1.344843",\
+ "0.133909, 0.287977, 0.463375, 0.785842, 1.430777",\
+ "0.216976, 0.376105, 0.551331, 0.873464, 1.517732",\
+ "0.274753, 0.440500, 0.615446, 0.937378, 1.581241",\
+ "0.573921, 0.790368, 0.965832, 1.286120, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.023351, 0.298998, 0.632448, 1.247926, 2.473548",\
+ "0.027948, 0.299981, 0.634399, 1.247926, 2.473548",\
+ "0.040978, 0.302244, 0.634435, 1.248002, 2.473548",\
+ "0.052873, 0.305533, 0.634536, 1.248745, 2.473548",\
+ "0.128351, 0.343984, 0.640795, 1.251713, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.067343, 0.172682, 0.284189, 0.488369, 0.896728",\
+ "0.154756, 0.260000, 0.371470, 0.575674, 0.984081",\
+ "0.235108, 0.340335, 0.451497, 0.655702, 1.064113",\
+ "0.291783, 0.397884, 0.509040, 0.712947, 1.120760",\
+ "0.585410, 0.701221, 0.812673, 1.015961, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.024071, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.024071, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.025176, 0.186169, 0.385939, 0.757526, 1.500700",\
+ "0.027266, 0.186781, 0.386395, 0.758427, 1.502492",\
+ "0.045971, 0.191097, 0.386467, 0.759197, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[20]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023351, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211788, 0.165917, 0.135722, 0.124381, 0.138086",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024071, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265675, 0.190363, 0.122259, 0.099381, 0.163106",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[20]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023351, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139594, -0.097166, -0.062704, -0.022783, 0.289451",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024071, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173554, -0.107466, -0.049560, -0.007532, 0.212647",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[20]_hldr*/
+
+} /* end of pin tl_o[20] */
+
+pin("tl_o[19]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002405 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[19];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.049247, 0.202011, 0.377177, 0.699733, 1.344843",\
+ "0.135622, 0.289186, 0.464282, 0.786447, 1.430777",\
+ "0.219089, 0.377313, 0.552236, 0.874068, 1.517732",\
+ "0.277267, 0.441706, 0.616352, 0.937981, 1.581241",\
+ "0.578868, 0.791580, 0.966732, 1.286721, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.025529, 0.301292, 0.634182, 1.250309, 2.482563",\
+ "0.029899, 0.302288, 0.636124, 1.250309, 2.482563",\
+ "0.042689, 0.304530, 0.636160, 1.250309, 2.482563",\
+ "0.054614, 0.307788, 0.636263, 1.250309, 2.482563",\
+ "0.130534, 0.345945, 0.642513, 1.252858, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.068762, 0.173425, 0.284737, 0.488725, 0.896701",\
+ "0.156170, 0.260743, 0.372018, 0.576030, 0.984055",\
+ "0.236545, 0.341075, 0.452045, 0.656059, 1.064086",\
+ "0.293277, 0.398624, 0.509587, 0.713303, 1.120734",\
+ "0.587496, 0.701965, 0.813219, 1.016316, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.025535, 0.188296, 0.388444, 0.760406, 1.504329",\
+ "0.025535, 0.188444, 0.388947, 0.760406, 1.504329",\
+ "0.026576, 0.188444, 0.388947, 0.760406, 1.504329",\
+ "0.028604, 0.188444, 0.388947, 0.760406, 1.504329",\
+ "0.047029, 0.192380, 0.388947, 0.760406, 1.504609");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[19]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.049247, 0.202011, 0.377177, 0.699733, 1.344843",\
+ "0.135622, 0.289186, 0.464282, 0.786447, 1.430777",\
+ "0.219089, 0.377313, 0.552236, 0.874068, 1.517732",\
+ "0.277267, 0.441706, 0.616352, 0.937981, 1.581241",\
+ "0.578868, 0.791580, 0.966732, 1.286721, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.025529, 0.301292, 0.634182, 1.249076, 2.473548",\
+ "0.029899, 0.302288, 0.636124, 1.249076, 2.473548",\
+ "0.042689, 0.304530, 0.636160, 1.249152, 2.473548",\
+ "0.054614, 0.307788, 0.636263, 1.249897, 2.473548",\
+ "0.130534, 0.345945, 0.642513, 1.252858, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.068762, 0.173425, 0.284737, 0.488725, 0.896701",\
+ "0.156170, 0.260743, 0.372018, 0.576030, 0.984055",\
+ "0.236545, 0.341075, 0.452045, 0.656059, 1.064086",\
+ "0.293277, 0.398624, 0.509587, 0.713303, 1.120734",\
+ "0.587496, 0.701965, 0.813219, 1.016316, 1.422511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.025535, 0.187494, 0.386936, 0.758174, 1.500652",\
+ "0.025535, 0.187494, 0.386936, 0.758174, 1.500652",\
+ "0.026576, 0.187494, 0.386936, 0.758174, 1.500652",\
+ "0.028604, 0.188103, 0.387393, 0.759077, 1.502444",\
+ "0.047029, 0.192380, 0.387467, 0.759848, 1.504609");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[19]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025529, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212708, 0.166837, 0.136642, 0.125302, 0.139006",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025535, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266222, 0.190910, 0.122806, 0.099928, 0.163653",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[19]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025529, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140504, -0.098076, -0.063615, -0.023693, 0.288541",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025535, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174097, -0.108010, -0.050104, -0.008076, 0.212104",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[19]_hldr*/
+
+} /* end of pin tl_o[19] */
+
+pin("tl_o[18]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002343 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[18];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.049079, 0.201886, 0.377083, 0.699670, 1.344843",\
+ "0.135444, 0.289061, 0.464188, 0.786384, 1.430777",\
+ "0.218870, 0.377188, 0.552143, 0.874006, 1.517732",\
+ "0.277007, 0.441581, 0.616258, 0.937919, 1.581241",\
+ "0.578356, 0.791455, 0.966639, 1.286659, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025304, 0.301054, 0.634003, 1.250190, 2.482563",\
+ "0.029697, 0.302049, 0.635945, 1.250190, 2.482563",\
+ "0.042512, 0.304293, 0.635981, 1.250190, 2.482563",\
+ "0.054434, 0.307555, 0.636084, 1.250190, 2.482563",\
+ "0.130308, 0.345742, 0.642335, 1.252740, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.068622, 0.173351, 0.284684, 0.488692, 0.896707",\
+ "0.156030, 0.260670, 0.371965, 0.575997, 0.984061",\
+ "0.236402, 0.341002, 0.451991, 0.656025, 1.064092",\
+ "0.293129, 0.398551, 0.509534, 0.713269, 1.120740",\
+ "0.587289, 0.701891, 0.813166, 1.016283, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025390, 0.188165, 0.388347, 0.760345, 1.504341",\
+ "0.025390, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.026437, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.028472, 0.188312, 0.388850, 0.760345, 1.504341",\
+ "0.046924, 0.192253, 0.388850, 0.760345, 1.504621");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[18]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.049079, 0.201886, 0.377083, 0.699670, 1.344843",\
+ "0.135444, 0.289061, 0.464188, 0.786384, 1.430777",\
+ "0.218870, 0.377188, 0.552143, 0.874006, 1.517732",\
+ "0.277007, 0.441581, 0.616258, 0.937919, 1.581241",\
+ "0.578356, 0.791455, 0.966639, 1.286659, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025304, 0.301054, 0.634003, 1.248957, 2.473548",\
+ "0.029697, 0.302049, 0.635945, 1.248957, 2.473548",\
+ "0.042512, 0.304293, 0.635981, 1.249033, 2.473548",\
+ "0.054434, 0.307555, 0.636084, 1.249777, 2.473548",\
+ "0.130308, 0.345742, 0.642335, 1.252740, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.068622, 0.173351, 0.284684, 0.488692, 0.896707",\
+ "0.156030, 0.260670, 0.371965, 0.575997, 0.984061",\
+ "0.236402, 0.341002, 0.451991, 0.656025, 1.064092",\
+ "0.293129, 0.398551, 0.509534, 0.713269, 1.120740",\
+ "0.587289, 0.701891, 0.813166, 1.016283, 1.422517");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025390, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.025390, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.026437, 0.187363, 0.386838, 0.758113, 1.500664",\
+ "0.028472, 0.187972, 0.387296, 0.759016, 1.502455",\
+ "0.046924, 0.192253, 0.387369, 0.759786, 1.504621");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[18]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025304, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.212613, 0.166742, 0.136547, 0.125206, 0.138911",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.266167, 0.190856, 0.122752, 0.099874, 0.163599",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[18]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025304, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.140410, -0.097982, -0.063521, -0.023599, 0.288635",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025390, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.174043, -0.107956, -0.050050, -0.008022, 0.212157",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[18]_hldr*/
+
+} /* end of pin tl_o[18] */
+
+pin("tl_o[17]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001292 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[17];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.046108, 0.199767, 0.375492, 0.698609, 1.344843",\
+ "0.132284, 0.286942, 0.462599, 0.785325, 1.430777",\
+ "0.214897, 0.375071, 0.550555, 0.872948, 1.517732",\
+ "0.272255, 0.439468, 0.614671, 0.936861, 1.581241",\
+ "0.568906, 0.789330, 0.965061, 1.285606, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.021470, 0.297034, 0.630964, 1.248164, 2.482563",\
+ "0.026264, 0.298006, 0.632922, 1.248164, 2.482563",\
+ "0.039476, 0.300287, 0.632958, 1.248164, 2.482563",\
+ "0.051325, 0.303602, 0.633057, 1.248164, 2.482563",\
+ "0.126317, 0.342305, 0.639325, 1.250732, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.065928, 0.172045, 0.283720, 0.488064, 0.896750",\
+ "0.153370, 0.259364, 0.371001, 0.575369, 0.984104",\
+ "0.233677, 0.339702, 0.451028, 0.655397, 1.064135",\
+ "0.290278, 0.397250, 0.508572, 0.712642, 1.120783",\
+ "0.583192, 0.700584, 0.812206, 1.015657, 1.422559");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.022780, 0.185829, 0.386590, 0.759200, 1.504419",\
+ "0.022780, 0.185969, 0.387096, 0.759200, 1.504419",\
+ "0.023886, 0.185969, 0.387096, 0.759200, 1.504419",\
+ "0.026044, 0.185969, 0.387096, 0.759200, 1.504419",\
+ "0.044904, 0.189998, 0.387096, 0.759200, 1.504699");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[17]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.046108, 0.199767, 0.375492, 0.698609, 1.344843",\
+ "0.132284, 0.286942, 0.462599, 0.785325, 1.430777",\
+ "0.214897, 0.375071, 0.550555, 0.872948, 1.517732",\
+ "0.272255, 0.439468, 0.614671, 0.936861, 1.581241",\
+ "0.568906, 0.789330, 0.965061, 1.285606, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.021470, 0.297034, 0.630964, 1.246942, 2.473548",\
+ "0.026264, 0.298006, 0.632922, 1.246942, 2.473548",\
+ "0.039476, 0.300287, 0.632958, 1.247017, 2.473548",\
+ "0.051325, 0.303602, 0.633057, 1.247760, 2.473548",\
+ "0.126317, 0.342305, 0.639325, 1.250732, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.065928, 0.172045, 0.283720, 0.488064, 0.896750",\
+ "0.153370, 0.259364, 0.371001, 0.575369, 0.984104",\
+ "0.233677, 0.339702, 0.451028, 0.655397, 1.064135",\
+ "0.290278, 0.397250, 0.508572, 0.712642, 1.120783",\
+ "0.583192, 0.700584, 0.812206, 1.015657, 1.422559");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.022780, 0.185036, 0.385085, 0.756971, 1.500741",\
+ "0.022780, 0.185036, 0.385085, 0.756971, 1.500741",\
+ "0.023886, 0.185036, 0.385085, 0.756971, 1.500741",\
+ "0.026044, 0.185649, 0.385541, 0.757872, 1.502533",\
+ "0.044904, 0.189998, 0.385611, 0.758640, 1.504699");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[17]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.021470, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.210993, 0.165122, 0.134927, 0.123587, 0.137292",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022780, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265192, 0.189881, 0.121777, 0.098899, 0.162623",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[17]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.021470, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.138808, -0.096380, -0.061918, -0.021997, 0.290238",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022780, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173074, -0.106987, -0.049081, -0.007053, 0.213127",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[17]_hldr*/
+
+} /* end of pin tl_o[17] */
+
+pin("tl_o[16]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001808 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[16];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.047630, 0.200806, 0.376273, 0.699130, 1.344843",\
+ "0.133916, 0.287981, 0.463378, 0.785845, 1.430777",\
+ "0.216984, 0.376109, 0.551334, 0.873467, 1.517732",\
+ "0.274762, 0.440505, 0.615450, 0.937380, 1.581241",\
+ "0.573940, 0.790372, 0.965835, 1.286123, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.023359, 0.299007, 0.632455, 1.249158, 2.482563",\
+ "0.027955, 0.299990, 0.634405, 1.249158, 2.482563",\
+ "0.040984, 0.302252, 0.634441, 1.249158, 2.482563",\
+ "0.052879, 0.305541, 0.634542, 1.249158, 2.482563",\
+ "0.128359, 0.343991, 0.640802, 1.251717, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.067337, 0.172678, 0.284185, 0.488364, 0.896721",\
+ "0.154749, 0.259997, 0.371466, 0.575669, 0.984075",\
+ "0.235101, 0.340332, 0.451493, 0.655697, 1.064106",\
+ "0.291776, 0.397881, 0.509036, 0.712942, 1.120754",\
+ "0.585400, 0.701218, 0.812669, 1.015956, 1.422531");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.024064, 0.186961, 0.387438, 0.759747, 1.504366",\
+ "0.024064, 0.187105, 0.387942, 0.759747, 1.504366",\
+ "0.025170, 0.187105, 0.387942, 0.759747, 1.504366",\
+ "0.027260, 0.187105, 0.387942, 0.759747, 1.504366",\
+ "0.045966, 0.191091, 0.387942, 0.759747, 1.504646");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[16]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.047630, 0.200806, 0.376273, 0.699130, 1.344843",\
+ "0.133916, 0.287981, 0.463378, 0.785845, 1.430777",\
+ "0.216984, 0.376109, 0.551334, 0.873467, 1.517732",\
+ "0.274762, 0.440505, 0.615450, 0.937380, 1.581241",\
+ "0.573940, 0.790372, 0.965835, 1.286123, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.023359, 0.299007, 0.632455, 1.247931, 2.473548",\
+ "0.027955, 0.299990, 0.634405, 1.247931, 2.473548",\
+ "0.040984, 0.302252, 0.634441, 1.248006, 2.473548",\
+ "0.052879, 0.305541, 0.634542, 1.248749, 2.473548",\
+ "0.128359, 0.343991, 0.640802, 1.251717, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.067337, 0.172678, 0.284185, 0.488364, 0.896721",\
+ "0.154749, 0.259997, 0.371466, 0.575669, 0.984075",\
+ "0.235101, 0.340332, 0.451493, 0.655697, 1.064106",\
+ "0.291776, 0.397881, 0.509036, 0.712942, 1.120754",\
+ "0.585400, 0.701218, 0.812669, 1.015956, 1.422531");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.024064, 0.186164, 0.385931, 0.757517, 1.500689",\
+ "0.024064, 0.186164, 0.385931, 0.757517, 1.500689",\
+ "0.025170, 0.186164, 0.385931, 0.757517, 1.500689",\
+ "0.027260, 0.186775, 0.386388, 0.758419, 1.502481",\
+ "0.045966, 0.191091, 0.386459, 0.759188, 1.504646");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[16]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.204621, 0.158750, 0.128555, 0.117215, 0.130920",\
+ "0.211791, 0.165920, 0.135725, 0.124385, 0.138090",\
+ "0.293024, 0.247053, 0.216850, 0.205504, 0.219174",\
+ "0.388106, 0.341808, 0.311580, 0.300214, 0.313773",\
+ "0.793561, 0.745754, 0.715310, 0.703809, 0.716803");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024064, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.259341, 0.184030, 0.115926, 0.093048, 0.156772",\
+ "0.265672, 0.190361, 0.122257, 0.099379, 0.163103",\
+ "0.344697, 0.269391, 0.201316, 0.178485, 0.242634",\
+ "0.449796, 0.374511, 0.306547, 0.283898, 0.349697",\
+ "0.899406, 0.824219, 0.756483, 0.734362, 0.805439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[16]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.132553, -0.090125, -0.055664, -0.015742, 0.296492",\
+ "-0.139597, -0.097169, -0.062708, -0.022786, 0.289448",\
+ "-0.216780, -0.174368, -0.139869, -0.100670, 0.202593",\
+ "-0.303076, -0.260711, -0.226103, -0.189037, 0.087742",\
+ "-0.670076, -0.627993, -0.592717, -0.568584, -0.452318");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024064, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.167403, -0.101316, -0.043410, -0.001382, 0.218797",\
+ "-0.173551, -0.107464, -0.049558, -0.007530, 0.212650",\
+ "-0.248843, -0.182697, -0.124706, -0.082655, 0.137377",\
+ "-0.346211, -0.279755, -0.221320, -0.179149, 0.040114",\
+ "-0.760494, -0.692486, -0.632012, -0.589251, -0.373041");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[16]_hldr*/
+
+} /* end of pin tl_o[16] */
+
+pin("tl_o[15]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.035370 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ function : "0" ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[15];
+} /* end of pin tl_o[15] */
+
+pin("tl_o[14]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.154883 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[14];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.487261, 0.669190, 0.852549, 1.146075, 1.714279",\
+ "0.520839, 0.702769, 0.886128, 1.179654, 1.747858",\
+ "0.591826, 0.773756, 0.957115, 1.250640, 1.818845",\
+ "0.846910, 1.028840, 1.212200, 1.505725, 2.073928",\
+ "1.772164, 1.954093, 2.137452, 2.430978, 2.999182",\
+ "0.574671, 0.756577, 0.940009, 1.233380, 1.801632",\
+ "0.608250, 0.790156, 0.973588, 1.266959, 1.835211",\
+ "0.679237, 0.861143, 1.044574, 1.337945, 1.906198",\
+ "0.934321, 1.116227, 1.299660, 1.593030, 2.161281",\
+ "1.859574, 2.041480, 2.224912, 2.518283, 3.086535",\
+ "0.655541, 0.836911, 1.020036, 1.313408, 1.881664",\
+ "0.689120, 0.870490, 1.053615, 1.346987, 1.915242",\
+ "0.760107, 0.941477, 1.124601, 1.417974, 1.986230",\
+ "1.015191, 1.196561, 1.379687, 1.673059, 2.241313",\
+ "1.940444, 2.121814, 2.304939, 2.598311, 3.166567",\
+ "0.713217, 0.894460, 1.077579, 1.370653, 1.938311",\
+ "0.746796, 0.928038, 1.111158, 1.404232, 1.971890",\
+ "0.817783, 0.999025, 1.182144, 1.475219, 2.042877",\
+ "1.072867, 1.254110, 1.437230, 1.730303, 2.297960",\
+ "1.998120, 2.179363, 2.362482, 2.655556, 3.223215",\
+ "1.015892, 1.199670, 1.381211, 1.673666, 2.240149",\
+ "1.049471, 1.233248, 1.414790, 1.707245, 2.273727",\
+ "1.120458, 1.304235, 1.485777, 1.778232, 2.344714",\
+ "1.375542, 1.559320, 1.740862, 2.033317, 2.599797",\
+ "2.300795, 2.484573, 2.666114, 2.958570, 3.525052");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069353",\
+ "0.200458, 0.200458, 0.200458, 0.200458, 0.200458",\
+ "0.686693, 0.686693, 0.686693, 0.686694, 0.686697",\
+ "2.458885, 2.458885, 2.458885, 2.458885, 2.458885",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069353",\
+ "0.200458, 0.200458, 0.200458, 0.200458, 0.200458",\
+ "0.686693, 0.686693, 0.686693, 0.686694, 0.686697",\
+ "2.458885, 2.458885, 2.458885, 2.458885, 2.458885",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069353",\
+ "0.200458, 0.200458, 0.200458, 0.200458, 0.200458",\
+ "0.686693, 0.686693, 0.686693, 0.686694, 0.686697",\
+ "2.458885, 2.458885, 2.458885, 2.458885, 2.458885",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069353",\
+ "0.200458, 0.200458, 0.200458, 0.200458, 0.200458",\
+ "0.686693, 0.686693, 0.686693, 0.686694, 0.686697",\
+ "2.458885, 2.458885, 2.458885, 2.458885, 2.458885",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069353",\
+ "0.200458, 0.200458, 0.200458, 0.200458, 0.200458",\
+ "0.686693, 0.686693, 0.686693, 0.686694, 0.686697",\
+ "2.458885, 2.458885, 2.458885, 2.458885, 2.458885");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.570397, 0.827870, 1.084327, 1.522623, 2.399216",\
+ "0.611284, 0.868757, 1.125214, 1.563510, 2.440103",\
+ "0.671440, 0.928913, 1.185369, 1.623666, 2.500259",\
+ "0.840387, 1.097859, 1.354316, 1.792613, 2.669205",\
+ "1.423797, 1.681270, 1.937729, 2.376020, 3.252604",\
+ "0.658623, 0.915349, 1.171797, 1.609338, 2.485150",\
+ "0.699510, 0.956236, 1.212684, 1.650225, 2.526037",\
+ "0.759666, 1.016392, 1.272839, 1.710381, 2.586193",\
+ "0.928613, 1.185339, 1.441786, 1.879327, 2.755138",\
+ "1.512023, 1.768749, 2.025198, 2.462735, 3.338538",\
+ "0.747341, 1.004170, 1.259759, 1.696960, 2.572105",\
+ "0.788228, 1.045057, 1.300646, 1.737847, 2.612992",\
+ "0.848383, 1.105212, 1.360802, 1.798002, 2.673148",\
+ "1.017330, 1.274159, 1.529749, 1.966949, 2.842093",\
+ "1.600740, 1.857569, 2.113161, 2.550357, 3.425493",\
+ "0.810342, 1.069571, 1.323894, 1.760873, 2.635614",\
+ "0.851229, 1.110458, 1.364781, 1.801760, 2.676501",\
+ "0.911385, 1.170614, 1.424936, 1.861916, 2.736657",\
+ "1.080332, 1.339561, 1.593883, 2.030862, 2.905602",\
+ "1.663742, 1.922971, 2.177295, 2.614270, 3.489002",\
+ "1.142661, 1.431230, 1.675450, 2.110093, 2.981070",\
+ "1.183547, 1.472117, 1.716337, 2.150980, 3.021957",\
+ "1.243703, 1.532272, 1.776492, 2.211136, 3.082113",\
+ "1.412650, 1.701219, 1.945439, 2.380082, 3.251059",\
+ "1.996059, 2.284630, 2.528851, 2.963490, 3.834458");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.042573, 0.042574, 0.042574, 0.042574, 0.042574",\
+ "0.078573, 0.078573, 0.078573, 0.078574, 0.078575",\
+ "0.154782, 0.154782, 0.154782, 0.154783, 0.154784",\
+ "0.431097, 0.431097, 0.431098, 0.431098, 0.431098",\
+ "1.494947, 1.494947, 1.494950, 1.494958, 1.494974",\
+ "0.042573, 0.042574, 0.042574, 0.042574, 0.042574",\
+ "0.078573, 0.078573, 0.078573, 0.078574, 0.078575",\
+ "0.154782, 0.154782, 0.154782, 0.154783, 0.154784",\
+ "0.431097, 0.431097, 0.431098, 0.431098, 0.431098",\
+ "1.494947, 1.494947, 1.494950, 1.494958, 1.494974",\
+ "0.042573, 0.042574, 0.042574, 0.042574, 0.042574",\
+ "0.078573, 0.078573, 0.078573, 0.078574, 0.078575",\
+ "0.154782, 0.154782, 0.154782, 0.154783, 0.154784",\
+ "0.431097, 0.431097, 0.431098, 0.431098, 0.431098",\
+ "1.494947, 1.494947, 1.494950, 1.494958, 1.494974",\
+ "0.042573, 0.042574, 0.042574, 0.042574, 0.042574",\
+ "0.078573, 0.078573, 0.078573, 0.078574, 0.078575",\
+ "0.154782, 0.154782, 0.154782, 0.154783, 0.154784",\
+ "0.431097, 0.431097, 0.431098, 0.431098, 0.431098",\
+ "1.494947, 1.494947, 1.494950, 1.494958, 1.494974",\
+ "0.042573, 0.042574, 0.042574, 0.042574, 0.042574",\
+ "0.078573, 0.078573, 0.078573, 0.078574, 0.078575",\
+ "0.154782, 0.154782, 0.154782, 0.154783, 0.154784",\
+ "0.431097, 0.431097, 0.431098, 0.431098, 0.431098",\
+ "1.494947, 1.494947, 1.494950, 1.494958, 1.494974");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[14]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.487261, 0.668812, 0.852015, 1.145595, 1.713488",\
+ "0.520839, 0.702391, 0.885594, 1.179174, 1.747067",\
+ "0.591826, 0.773378, 0.956580, 1.250161, 1.818054",\
+ "0.846910, 1.028462, 1.211666, 1.505246, 2.073137",\
+ "1.772164, 1.953715, 2.136918, 2.430498, 2.998391",\
+ "0.574671, 0.756130, 0.939295, 1.232900, 1.800842",\
+ "0.608250, 0.789709, 0.972874, 1.266479, 1.834420",\
+ "0.679237, 0.860696, 1.043861, 1.337466, 1.905408",\
+ "0.934321, 1.115781, 1.298946, 1.592551, 2.160491",\
+ "1.859574, 2.041033, 2.224198, 2.517803, 3.085745",\
+ "0.655541, 0.836464, 1.019322, 1.312929, 1.880873",\
+ "0.689120, 0.870043, 1.052901, 1.346508, 1.914452",\
+ "0.760107, 0.941030, 1.123888, 1.417494, 1.985439",\
+ "1.015191, 1.196114, 1.378973, 1.672579, 2.240522",\
+ "1.940444, 2.121367, 2.304225, 2.597832, 3.165776",\
+ "0.713217, 0.894301, 1.077028, 1.370367, 1.937906",\
+ "0.746796, 0.927880, 1.110607, 1.403946, 1.971485",\
+ "0.817783, 0.998867, 1.181593, 1.474933, 2.042472",\
+ "1.072867, 1.253952, 1.436679, 1.730018, 2.297555",\
+ "1.998120, 2.179204, 2.361931, 2.655270, 3.222809",\
+ "1.015892, 1.199670, 1.380685, 1.673546, 2.240149",\
+ "1.049471, 1.233248, 1.414264, 1.707125, 2.273727",\
+ "1.120458, 1.304235, 1.485251, 1.778112, 2.344714",\
+ "1.375542, 1.559320, 1.740336, 2.033197, 2.599797",\
+ "2.300795, 2.484573, 2.665588, 2.958449, 3.525052");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069352",\
+ "0.200457, 0.200457, 0.200457, 0.200457, 0.200457",\
+ "0.686690, 0.686690, 0.686690, 0.686692, 0.686695",\
+ "2.458656, 2.458656, 2.458656, 2.458656, 2.458656",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069352",\
+ "0.200457, 0.200457, 0.200457, 0.200457, 0.200457",\
+ "0.686690, 0.686690, 0.686690, 0.686692, 0.686695",\
+ "2.458656, 2.458656, 2.458656, 2.458656, 2.458656",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069352",\
+ "0.200457, 0.200457, 0.200457, 0.200457, 0.200457",\
+ "0.686690, 0.686690, 0.686690, 0.686692, 0.686695",\
+ "2.458656, 2.458656, 2.458656, 2.458656, 2.458656",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069352",\
+ "0.200457, 0.200457, 0.200457, 0.200457, 0.200457",\
+ "0.686690, 0.686690, 0.686690, 0.686692, 0.686695",\
+ "2.458656, 2.458656, 2.458656, 2.458656, 2.458656",\
+ "0.023781, 0.023781, 0.023781, 0.023781, 0.023781",\
+ "0.069352, 0.069352, 0.069352, 0.069352, 0.069352",\
+ "0.200457, 0.200457, 0.200457, 0.200457, 0.200457",\
+ "0.686690, 0.686690, 0.686690, 0.686692, 0.686695",\
+ "2.458656, 2.458656, 2.458656, 2.458656, 2.458656");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.570397, 0.827870, 1.084327, 1.522393, 2.397526",\
+ "0.611284, 0.868757, 1.125214, 1.563280, 2.438413",\
+ "0.671440, 0.928913, 1.185369, 1.623435, 2.498569",\
+ "0.840387, 1.097859, 1.354316, 1.792382, 2.667514",\
+ "1.423797, 1.681270, 1.937729, 2.375790, 3.250914",\
+ "0.658623, 0.915349, 1.171797, 1.609107, 2.483460",\
+ "0.699510, 0.956236, 1.212684, 1.649994, 2.524347",\
+ "0.759666, 1.016392, 1.272839, 1.710150, 2.584503",\
+ "0.928613, 1.185339, 1.441786, 1.879097, 2.753448",\
+ "1.512023, 1.768749, 2.025198, 2.462505, 3.336848",\
+ "0.747341, 1.004170, 1.259759, 1.696743, 2.570415",\
+ "0.788228, 1.045057, 1.300646, 1.737630, 2.611302",\
+ "0.848383, 1.105212, 1.360802, 1.797786, 2.671458",\
+ "1.017330, 1.274159, 1.529749, 1.966733, 2.840403",\
+ "1.600740, 1.857569, 2.113161, 2.550140, 3.423803",\
+ "0.810342, 1.069571, 1.323894, 1.760796, 2.633924",\
+ "0.851229, 1.110458, 1.364781, 1.801683, 2.674811",\
+ "0.911385, 1.170614, 1.424936, 1.861839, 2.734967",\
+ "1.080332, 1.339561, 1.593883, 2.030786, 2.903912",\
+ "1.663742, 1.922971, 2.177295, 2.614193, 3.487312",\
+ "1.142661, 1.431230, 1.675450, 2.110093, 2.979380",\
+ "1.183547, 1.472117, 1.716337, 2.150980, 3.020267",\
+ "1.243703, 1.532272, 1.776492, 2.211136, 3.080423",\
+ "1.412650, 1.701219, 1.945439, 2.380082, 3.249368",\
+ "1.996059, 2.284630, 2.528851, 2.963490, 3.832768");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.042570, 0.042570, 0.042570, 0.042570, 0.042570",\
+ "0.078571, 0.078571, 0.078572, 0.078573, 0.078575",\
+ "0.154780, 0.154780, 0.154781, 0.154782, 0.154784",\
+ "0.431094, 0.431094, 0.431094, 0.431094, 0.431094",\
+ "1.494932, 1.494932, 1.494936, 1.494948, 1.494973",\
+ "0.042570, 0.042570, 0.042570, 0.042570, 0.042570",\
+ "0.078571, 0.078571, 0.078572, 0.078573, 0.078575",\
+ "0.154780, 0.154780, 0.154781, 0.154782, 0.154784",\
+ "0.431094, 0.431094, 0.431094, 0.431094, 0.431094",\
+ "1.494932, 1.494932, 1.494936, 1.494948, 1.494973",\
+ "0.042570, 0.042570, 0.042570, 0.042570, 0.042570",\
+ "0.078571, 0.078571, 0.078572, 0.078573, 0.078575",\
+ "0.154780, 0.154780, 0.154781, 0.154782, 0.154784",\
+ "0.431094, 0.431094, 0.431094, 0.431094, 0.431094",\
+ "1.494932, 1.494932, 1.494936, 1.494948, 1.494973",\
+ "0.042570, 0.042570, 0.042570, 0.042570, 0.042570",\
+ "0.078571, 0.078571, 0.078572, 0.078573, 0.078575",\
+ "0.154780, 0.154780, 0.154781, 0.154782, 0.154784",\
+ "0.431094, 0.431094, 0.431094, 0.431094, 0.431094",\
+ "1.494932, 1.494932, 1.494936, 1.494948, 1.494973",\
+ "0.042570, 0.042570, 0.042570, 0.042570, 0.042570",\
+ "0.078571, 0.078571, 0.078572, 0.078573, 0.078575",\
+ "0.154780, 0.154780, 0.154781, 0.154782, 0.154784",\
+ "0.431094, 0.431094, 0.431094, 0.431094, 0.431094",\
+ "1.494932, 1.494932, 1.494936, 1.494948, 1.494973");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[14]_redg_min*/
+
+} /* end of pin tl_o[14] */
+
+pin("tl_o[13]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.035370 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[13];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.284540, 0.564046, 0.863617, 1.380944, 2.415600",\
+ "0.298686, 0.578104, 0.877668, 1.395235, 2.430368",\
+ "0.322356, 0.601709, 0.901313, 1.419287, 2.455237",\
+ "0.588425, 0.867068, 1.165530, 1.682108, 2.715266",\
+ "1.177776, 1.456090, 1.753734, 2.268545, 3.298168",\
+ "0.372946, 0.651675, 0.951331, 1.467657, 2.501533",\
+ "0.387092, 0.665733, 0.965383, 1.481948, 2.516302",\
+ "0.410761, 0.689337, 0.989029, 1.506001, 2.541171",\
+ "0.676826, 0.954691, 1.253242, 1.768821, 2.801200",\
+ "1.266174, 1.543712, 1.841440, 2.355258, 3.384101",\
+ "0.462897, 0.740788, 1.039296, 1.555278, 2.588488",\
+ "0.477041, 0.754844, 1.053348, 1.569568, 2.603257",\
+ "0.500709, 0.778447, 1.076994, 1.593621, 2.628126",\
+ "0.766761, 1.043790, 1.341207, 1.856442, 2.888155",\
+ "1.356101, 1.632807, 1.929405, 2.442878, 3.471056",\
+ "0.527359, 0.806612, 1.103444, 1.619190, 2.651997",\
+ "0.541500, 0.820667, 1.117496, 1.633481, 2.666766",\
+ "0.565168, 0.844269, 1.141142, 1.657534, 2.691635",\
+ "0.831207, 1.109596, 1.405354, 1.920354, 2.951664",\
+ "1.420539, 1.698606, 1.993552, 2.506791, 3.534565",\
+ "0.868940, 1.173349, 1.455796, 1.968728, 2.997453",\
+ "0.883067, 1.187384, 1.469851, 1.983020, 3.012222",\
+ "0.906732, 1.210965, 1.493501, 2.007074, 3.037091",\
+ "1.172689, 1.476110, 1.757699, 2.269889, 3.297120",\
+ "1.761970, 2.065045, 2.345879, 2.856318, 3.880022");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.185739, 0.187595, 0.200176, 0.234510, 0.303179",\
+ "0.203933, 0.205579, 0.217466, 0.250509, 0.316595",\
+ "0.237929, 0.239084, 0.249124, 0.278309, 0.336679",\
+ "0.816189, 0.816358, 0.816864, 0.818096, 0.820559",\
+ "2.192673, 2.192673, 2.192836, 2.193388, 2.194490",\
+ "0.185741, 0.187611, 0.200283, 0.234510, 0.303179",\
+ "0.203935, 0.205594, 0.217569, 0.250509, 0.316595",\
+ "0.237932, 0.239093, 0.249216, 0.278309, 0.336679",\
+ "0.816190, 0.816359, 0.816868, 0.818096, 0.820559",\
+ "2.192673, 2.192673, 2.192838, 2.193388, 2.194490",\
+ "0.185746, 0.187647, 0.200285, 0.234510, 0.303179",\
+ "0.203942, 0.205625, 0.217571, 0.250509, 0.316595",\
+ "0.237941, 0.239114, 0.249217, 0.278309, 0.336679",\
+ "0.816195, 0.816361, 0.816868, 0.818096, 0.820559",\
+ "2.192673, 2.192673, 2.192838, 2.193388, 2.194490",\
+ "0.185751, 0.187699, 0.200291, 0.234510, 0.303179",\
+ "0.203948, 0.205670, 0.217577, 0.250509, 0.316595",\
+ "0.237949, 0.239145, 0.249223, 0.278309, 0.336679",\
+ "0.816200, 0.816364, 0.816869, 0.818096, 0.820559",\
+ "2.192673, 2.192673, 2.192838, 2.193388, 2.194490",\
+ "0.185783, 0.188312, 0.200639, 0.234651, 0.303179",\
+ "0.203989, 0.206205, 0.217912, 0.250645, 0.316595",\
+ "0.238001, 0.239502, 0.249518, 0.278429, 0.336679",\
+ "0.816229, 0.816400, 0.816881, 0.818101, 0.820559",\
+ "2.192673, 2.192673, 2.192844, 2.193390, 2.194490");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.374522, 0.561124, 0.780572, 1.136359, 1.826584",\
+ "0.383805, 0.570576, 0.790645, 1.147661, 1.840366",\
+ "0.399074, 0.586082, 0.807015, 1.165645, 1.861569",\
+ "0.557633, 0.745097, 0.967701, 1.332699, 2.042731",\
+ "0.898199, 1.085553, 1.307755, 1.673592, 2.385983",\
+ "0.461924, 0.648520, 0.868125, 1.223665, 1.913938",\
+ "0.471207, 0.657972, 0.878200, 1.234966, 1.927719",\
+ "0.486476, 0.673478, 0.894572, 1.252950, 1.948923",\
+ "0.645035, 0.832494, 1.055262, 1.420004, 2.130085",\
+ "0.985600, 1.172950, 1.395316, 1.760897, 2.473337",\
+ "0.542814, 0.728848, 0.948152, 1.303693, 1.993969",\
+ "0.552097, 0.738300, 0.958227, 1.314994, 2.007751",\
+ "0.567368, 0.753806, 0.974599, 1.332979, 2.028955",\
+ "0.725929, 0.912822, 1.135289, 1.500032, 2.210116",\
+ "1.066495, 1.253278, 1.475343, 1.840926, 2.553368",\
+ "0.600620, 0.786398, 1.005694, 1.360937, 2.050617",\
+ "0.609906, 0.795850, 1.015768, 1.372238, 2.064399",\
+ "0.625179, 0.811356, 1.032140, 1.390222, 2.085602",\
+ "0.783746, 0.970371, 1.192830, 1.557276, 2.266764",\
+ "1.124310, 1.310827, 1.532884, 1.898169, 2.610016",\
+ "0.904940, 1.091713, 1.309322, 1.663948, 2.352501",\
+ "0.914244, 1.101169, 1.319397, 1.675249, 2.366283",\
+ "0.929544, 1.116681, 1.335769, 1.693234, 2.387488",\
+ "1.088161, 1.275707, 1.496459, 1.860287, 2.568655",\
+ "1.428713, 1.616160, 1.836513, 2.201180, 2.911908");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.065408, 0.068159, 0.078360, 0.098953, 0.140695",\
+ "0.068352, 0.070728, 0.079541, 0.099563, 0.141041",\
+ "0.087647, 0.089359, 0.095706, 0.112588, 0.148436",\
+ "0.381015, 0.381154, 0.381669, 0.388289, 0.403942",\
+ "1.027611, 1.027611, 1.027611, 1.028167, 1.029517",\
+ "0.065408, 0.068161, 0.078386, 0.098953, 0.140695",\
+ "0.068352, 0.070731, 0.079564, 0.099563, 0.141041",\
+ "0.087647, 0.089361, 0.095723, 0.112588, 0.148436",\
+ "0.381015, 0.381154, 0.381670, 0.388289, 0.403942",\
+ "1.027611, 1.027611, 1.027611, 1.028167, 1.029517",\
+ "0.065424, 0.068161, 0.078386, 0.098953, 0.140695",\
+ "0.068366, 0.070731, 0.079564, 0.099563, 0.141041",\
+ "0.087657, 0.089361, 0.095723, 0.112588, 0.148436",\
+ "0.381016, 0.381154, 0.381670, 0.388289, 0.403942",\
+ "1.027611, 1.027611, 1.027611, 1.028167, 1.029517",\
+ "0.065456, 0.068161, 0.078386, 0.098953, 0.140695",\
+ "0.068394, 0.070731, 0.079564, 0.099563, 0.141041",\
+ "0.087678, 0.089361, 0.095723, 0.112588, 0.148436",\
+ "0.381018, 0.381154, 0.381670, 0.388289, 0.403942",\
+ "1.027611, 1.027611, 1.027611, 1.028167, 1.029517",\
+ "0.065761, 0.068226, 0.078386, 0.098953, 0.140710",\
+ "0.068657, 0.070787, 0.079564, 0.099563, 0.141057",\
+ "0.087867, 0.089401, 0.095723, 0.112588, 0.148450",\
+ "0.381033, 0.381158, 0.381670, 0.388289, 0.403948",\
+ "1.027611, 1.027611, 1.027611, 1.028167, 1.029517");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[13]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.284540, 0.564046, 0.863617, 1.380550, 2.412738",\
+ "0.298686, 0.578104, 0.877668, 1.394840, 2.427504",\
+ "0.322356, 0.601709, 0.901313, 1.418892, 2.452366",\
+ "0.588425, 0.867068, 1.165530, 1.681715, 2.712415",\
+ "1.177776, 1.456090, 1.753734, 2.268156, 3.295343",\
+ "0.372946, 0.651675, 0.951331, 1.467263, 2.498672",\
+ "0.387092, 0.665733, 0.965383, 1.481553, 2.513437",\
+ "0.410761, 0.689337, 0.989029, 1.505605, 2.538300",\
+ "0.676826, 0.954691, 1.253242, 1.768429, 2.798349",\
+ "1.266174, 1.543712, 1.841440, 2.354868, 3.381277",\
+ "0.462897, 0.740788, 1.039296, 1.554907, 2.585627",\
+ "0.477041, 0.754844, 1.053348, 1.569197, 2.600392",\
+ "0.500709, 0.778447, 1.076994, 1.593250, 2.625255",\
+ "0.766761, 1.043790, 1.341207, 1.856073, 2.885304",\
+ "1.356101, 1.632807, 1.929405, 2.442513, 3.468232",\
+ "0.527359, 0.806612, 1.103444, 1.619057, 2.649136",\
+ "0.541500, 0.820667, 1.117496, 1.633347, 2.663901",\
+ "0.565168, 0.844269, 1.141142, 1.657400, 2.688764",\
+ "0.831207, 1.109596, 1.405354, 1.920222, 2.948813",\
+ "1.420539, 1.698606, 1.993552, 2.506659, 3.531741",\
+ "0.868940, 1.173349, 1.455796, 1.968728, 2.994592",\
+ "0.883067, 1.187384, 1.469851, 1.983020, 3.009357",\
+ "0.906732, 1.210965, 1.493501, 2.007074, 3.034220",\
+ "1.172689, 1.476110, 1.757699, 2.269889, 3.294269",\
+ "1.761970, 2.065045, 2.345879, 2.856318, 3.877197");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.185739, 0.187595, 0.200176, 0.234441, 0.302676",\
+ "0.203933, 0.205579, 0.217466, 0.250442, 0.316110",\
+ "0.237929, 0.239084, 0.249124, 0.278250, 0.336252",\
+ "0.816189, 0.816358, 0.816864, 0.818093, 0.820541",\
+ "2.191667, 2.191667, 2.191920, 2.192775, 2.194479",\
+ "0.185741, 0.187611, 0.200283, 0.234441, 0.302676",\
+ "0.203935, 0.205594, 0.217569, 0.250442, 0.316110",\
+ "0.237932, 0.239093, 0.249216, 0.278250, 0.336252",\
+ "0.816190, 0.816359, 0.816868, 0.818093, 0.820541",\
+ "2.191667, 2.191667, 2.191923, 2.192775, 2.194479",\
+ "0.185746, 0.187647, 0.200285, 0.234445, 0.302676",\
+ "0.203942, 0.205625, 0.217571, 0.250446, 0.316110",\
+ "0.237941, 0.239114, 0.249217, 0.278254, 0.336252",\
+ "0.816195, 0.816361, 0.816868, 0.818094, 0.820541",\
+ "2.191667, 2.191667, 2.191923, 2.192775, 2.194479",\
+ "0.185751, 0.187699, 0.200291, 0.234487, 0.302676",\
+ "0.203948, 0.205670, 0.217577, 0.250486, 0.316110",\
+ "0.237949, 0.239145, 0.249223, 0.278289, 0.336252",\
+ "0.816200, 0.816364, 0.816869, 0.818095, 0.820541",\
+ "2.191667, 2.191667, 2.191923, 2.192777, 2.194479",\
+ "0.185783, 0.188312, 0.200639, 0.234651, 0.302676",\
+ "0.203989, 0.206205, 0.217912, 0.250645, 0.316110",\
+ "0.238001, 0.239502, 0.249518, 0.278429, 0.336252",\
+ "0.816229, 0.816400, 0.816881, 0.818101, 0.820541",\
+ "2.191667, 2.191667, 2.191932, 2.192781, 2.194479");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.374522, 0.560710, 0.779750, 1.135509, 1.825184",\
+ "0.383805, 0.570161, 0.789818, 1.146803, 1.838953",\
+ "0.399074, 0.585665, 0.806181, 1.164778, 1.860141",\
+ "0.557633, 0.744678, 0.966854, 1.331789, 2.041233",\
+ "0.898199, 1.085135, 1.306912, 1.672675, 2.384473",\
+ "0.461924, 0.648027, 0.867031, 1.222814, 1.912538",\
+ "0.471207, 0.657479, 0.877099, 1.234108, 1.926307",\
+ "0.486476, 0.672983, 0.893462, 1.252083, 1.947495",\
+ "0.645035, 0.831996, 1.054135, 1.419094, 2.128587",\
+ "0.985600, 1.172452, 1.394193, 1.759980, 2.471827",\
+ "0.542814, 0.728355, 0.947058, 1.302843, 1.992569",\
+ "0.552097, 0.737807, 0.957126, 1.314137, 2.006338",\
+ "0.567368, 0.753311, 0.973489, 1.332111, 2.027526",\
+ "0.725929, 0.912324, 1.134162, 1.499123, 2.208618",\
+ "1.066495, 1.252781, 1.474220, 1.840009, 2.551858",\
+ "0.600620, 0.786214, 1.004849, 1.360430, 2.049899",\
+ "0.609906, 0.795666, 1.014919, 1.371727, 2.063674",\
+ "0.625179, 0.811172, 1.031284, 1.389706, 2.084870",\
+ "0.783746, 0.970186, 1.191961, 1.556734, 2.265996",\
+ "1.124310, 1.310642, 1.532018, 1.897623, 2.609242",\
+ "0.904940, 1.091713, 1.308519, 1.663736, 2.352501",\
+ "0.914244, 1.101169, 1.318589, 1.675035, 2.366283",\
+ "0.929544, 1.116681, 1.334955, 1.693017, 2.387488",\
+ "1.088161, 1.275707, 1.495632, 1.860060, 2.568655",\
+ "1.428713, 1.616160, 1.835689, 2.200952, 2.911908");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.065408, 0.068145, 0.078282, 0.097416, 0.135633",\
+ "0.068319, 0.070715, 0.079474, 0.098027, 0.135980",\
+ "0.087624, 0.089350, 0.095658, 0.111069, 0.143404",\
+ "0.381014, 0.381153, 0.381665, 0.388242, 0.403865",\
+ "1.027072, 1.027072, 1.027072, 1.027705, 1.029249",\
+ "0.065408, 0.068145, 0.078282, 0.097416, 0.135633",\
+ "0.068319, 0.070715, 0.079474, 0.098027, 0.135980",\
+ "0.087624, 0.089350, 0.095658, 0.111069, 0.143404",\
+ "0.381014, 0.381153, 0.381665, 0.388242, 0.403865",\
+ "1.027072, 1.027072, 1.027072, 1.027705, 1.029249",\
+ "0.065424, 0.068145, 0.078282, 0.097416, 0.135633",\
+ "0.068333, 0.070715, 0.079474, 0.098027, 0.135980",\
+ "0.087634, 0.089350, 0.095658, 0.111069, 0.143404",\
+ "0.381014, 0.381153, 0.381665, 0.388242, 0.403865",\
+ "1.027072, 1.027072, 1.027072, 1.027705, 1.029249",\
+ "0.065456, 0.068155, 0.078306, 0.097463, 0.135725",\
+ "0.068362, 0.070724, 0.079494, 0.098073, 0.136072",\
+ "0.087655, 0.089356, 0.095672, 0.111109, 0.143482",\
+ "0.381016, 0.381154, 0.381666, 0.388261, 0.403903",\
+ "1.027072, 1.027072, 1.027072, 1.027707, 1.029253",\
+ "0.065761, 0.068226, 0.078310, 0.097503, 0.135836",\
+ "0.068628, 0.070787, 0.079498, 0.098113, 0.136183",\
+ "0.087847, 0.089401, 0.095675, 0.111142, 0.143576",\
+ "0.381032, 0.381158, 0.381666, 0.388277, 0.403948",\
+ "1.027072, 1.027072, 1.027072, 1.027708, 1.029258");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[13]_redg_min*/
+
+} /* end of pin tl_o[13] */
+
+pin("tl_o[12]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.020161 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[12];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.475879, 0.665118, 0.888399, 1.250294, 1.951686",\
+ "0.526872, 0.716033, 0.939041, 1.300629, 2.001501",\
+ "0.604552, 0.793643, 1.016400, 1.377502, 2.077400",\
+ "0.813681, 1.002691, 1.225160, 1.585609, 2.284153",\
+ "1.367036, 1.556010, 1.778356, 2.138460, 2.836268",\
+ "0.563289, 0.752511, 0.975963, 1.337600, 2.039039",\
+ "0.614282, 0.803427, 1.026603, 1.387934, 2.088855",\
+ "0.691962, 0.881036, 1.103961, 1.464807, 2.164753",\
+ "0.901091, 1.090085, 1.312721, 1.672914, 2.371507",\
+ "1.454446, 1.643404, 1.865916, 2.225765, 2.923622",\
+ "0.644207, 0.832845, 1.055990, 1.417628, 2.119071",\
+ "0.695200, 0.883761, 1.106630, 1.467962, 2.168886",\
+ "0.772879, 0.961370, 1.183988, 1.544836, 2.244785",\
+ "0.982008, 1.170418, 1.392748, 1.752943, 2.451539",\
+ "1.535362, 1.723738, 1.945943, 2.305794, 3.003654",\
+ "0.701978, 0.890394, 1.113533, 1.474873, 2.175719",\
+ "0.752969, 0.941309, 1.164173, 1.525207, 2.225534",\
+ "0.830648, 1.018919, 1.241531, 1.602080, 2.301433",\
+ "1.039776, 1.227967, 1.450291, 1.810187, 2.508186",\
+ "1.593130, 1.781286, 2.003486, 2.363039, 3.060301",\
+ "1.005526, 1.195782, 1.417165, 1.777886, 2.477606",\
+ "1.056509, 1.246695, 1.467805, 1.828220, 2.527421",\
+ "1.134180, 1.324303, 1.545163, 1.905094, 2.603319",\
+ "1.343298, 1.533349, 1.753923, 2.113201, 2.810072",\
+ "1.896648, 2.086668, 2.307118, 2.666052, 3.362187");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.150008, 0.150413, 0.151867, 0.156224, 0.165642",\
+ "0.237388, 0.237631, 0.238503, 0.240761, 0.245540",\
+ "0.400537, 0.400554, 0.400616, 0.401193, 0.402548",\
+ "0.873945, 0.873960, 0.874011, 0.874292, 0.874933",\
+ "2.149644, 2.149644, 2.149644, 2.149724, 2.149920",\
+ "0.150008, 0.150413, 0.151871, 0.156224, 0.165642",\
+ "0.237388, 0.237631, 0.238506, 0.240761, 0.245540",\
+ "0.400537, 0.400554, 0.400616, 0.401193, 0.402548",\
+ "0.873945, 0.873960, 0.874011, 0.874292, 0.874933",\
+ "2.149644, 2.149644, 2.149644, 2.149724, 2.149920",\
+ "0.150011, 0.150413, 0.151871, 0.156224, 0.165642",\
+ "0.237390, 0.237631, 0.238506, 0.240761, 0.245540",\
+ "0.400537, 0.400554, 0.400616, 0.401193, 0.402548",\
+ "0.873945, 0.873960, 0.874011, 0.874292, 0.874933",\
+ "2.149644, 2.149644, 2.149644, 2.149724, 2.149920",\
+ "0.150016, 0.150413, 0.151871, 0.156224, 0.165642",\
+ "0.237393, 0.237631, 0.238506, 0.240761, 0.245540",\
+ "0.400537, 0.400554, 0.400616, 0.401193, 0.402548",\
+ "0.873946, 0.873960, 0.874011, 0.874292, 0.874933",\
+ "2.149644, 2.149644, 2.149644, 2.149724, 2.149920",\
+ "0.150062, 0.150423, 0.151871, 0.156224, 0.165645",\
+ "0.237420, 0.237637, 0.238506, 0.240761, 0.245542",\
+ "0.400539, 0.400554, 0.400616, 0.401193, 0.402548",\
+ "0.873947, 0.873960, 0.874011, 0.874292, 0.874933",\
+ "2.149644, 2.149644, 2.149644, 2.149724, 2.149920");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.321064, 0.601616, 0.902007, 1.418205, 2.450602",\
+ "0.356109, 0.636678, 0.937135, 1.453516, 2.486277",\
+ "0.406657, 0.687216, 0.987647, 1.504000, 2.536706",\
+ "0.536144, 0.816696, 1.117064, 1.633222, 2.665537",\
+ "0.873984, 1.154534, 1.454850, 1.970856, 3.002866",\
+ "0.409514, 0.689233, 0.989723, 1.504920, 2.536536",\
+ "0.444559, 0.724295, 1.024851, 1.540230, 2.572211",\
+ "0.495106, 0.774833, 1.075363, 1.590714, 2.622640",\
+ "0.624593, 0.904313, 1.204779, 1.719936, 2.751471",\
+ "0.962434, 1.242151, 1.542565, 2.057570, 3.088800",\
+ "0.498914, 0.778364, 1.077690, 1.592542, 2.623491",\
+ "0.533960, 0.813427, 1.112818, 1.627852, 2.659166",\
+ "0.584508, 0.863965, 1.163329, 1.678336, 2.709595",\
+ "0.713994, 0.993445, 1.292746, 1.807558, 2.838426",\
+ "1.051835, 1.331282, 1.630532, 2.145192, 3.175755",\
+ "0.562563, 0.844218, 1.141837, 1.656455, 2.687000",\
+ "0.597610, 0.879281, 1.176965, 1.691765, 2.722675",\
+ "0.648158, 0.929819, 1.227477, 1.742249, 2.773104",\
+ "0.777645, 1.059298, 1.356893, 1.871471, 2.901935",\
+ "1.115485, 1.397135, 1.694679, 2.209105, 3.239264",\
+ "0.898997, 1.211173, 1.494183, 2.005997, 3.032455",\
+ "0.934048, 1.246239, 1.529313, 2.041308, 3.068131",\
+ "0.984598, 1.296772, 1.579825, 2.091792, 3.118560",\
+ "1.114083, 1.426250, 1.709239, 2.221013, 3.247391",\
+ "1.451924, 1.764086, 2.047024, 2.558647, 3.584720");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.072029, 0.072117, 0.072944, 0.075686, 0.081171",\
+ "0.105035, 0.105045, 0.105444, 0.106815, 0.109557",\
+ "0.191067, 0.191185, 0.191447, 0.191928, 0.192889",\
+ "0.434550, 0.434818, 0.434976, 0.434976, 0.434976",\
+ "1.073490, 1.073490, 1.073593, 1.073946, 1.074653",\
+ "0.072030, 0.072117, 0.072953, 0.075686, 0.081171",\
+ "0.105035, 0.105045, 0.105449, 0.106815, 0.109557",\
+ "0.191068, 0.191185, 0.191449, 0.191928, 0.192889",\
+ "0.434555, 0.434819, 0.434976, 0.434976, 0.434976",\
+ "1.073490, 1.073490, 1.073594, 1.073946, 1.074653",\
+ "0.072035, 0.072117, 0.072953, 0.075686, 0.081171",\
+ "0.105035, 0.105045, 0.105449, 0.106815, 0.109557",\
+ "0.191071, 0.191187, 0.191449, 0.191928, 0.192889",\
+ "0.434567, 0.434821, 0.434976, 0.434976, 0.434976",\
+ "1.073490, 1.073490, 1.073594, 1.073946, 1.074653",\
+ "0.072040, 0.072118, 0.072953, 0.075686, 0.081171",\
+ "0.105036, 0.105045, 0.105449, 0.106815, 0.109557",\
+ "0.191073, 0.191190, 0.191449, 0.191928, 0.192889",\
+ "0.434578, 0.434825, 0.434976, 0.434976, 0.434976",\
+ "1.073490, 1.073490, 1.073594, 1.073946, 1.074653",\
+ "0.072068, 0.072127, 0.072981, 0.075698, 0.081171",\
+ "0.105040, 0.105046, 0.105463, 0.106821, 0.109557",\
+ "0.191088, 0.191220, 0.191454, 0.191930, 0.192889",\
+ "0.434649, 0.434864, 0.434976, 0.434976, 0.434976",\
+ "1.073490, 1.073490, 1.073597, 1.073947, 1.074653");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[12]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.475879, 0.664703, 0.887555, 1.249416, 1.950237",\
+ "0.526872, 0.715619, 0.938198, 1.299751, 2.000055",\
+ "0.604552, 0.793229, 1.015559, 1.376628, 2.075958",\
+ "0.813681, 1.002278, 1.224322, 1.584739, 2.282718",\
+ "1.367036, 1.555598, 1.777518, 2.137592, 2.834837",\
+ "0.563289, 0.752022, 0.974836, 1.336721, 2.037590",\
+ "0.614282, 0.802938, 1.025479, 1.387056, 2.087408",\
+ "0.691962, 0.880548, 1.102840, 1.463933, 2.163312",\
+ "0.901091, 1.089596, 1.311603, 1.672044, 2.370072",\
+ "1.454446, 1.642916, 1.864799, 2.224897, 2.922191",\
+ "0.644207, 0.832355, 1.054863, 1.416749, 2.117622",\
+ "0.695200, 0.883271, 1.105506, 1.467085, 2.167440",\
+ "0.772879, 0.960881, 1.182867, 1.543961, 2.243343",\
+ "0.982008, 1.169930, 1.391630, 1.752072, 2.450104",\
+ "1.535362, 1.723250, 1.944826, 2.304926, 3.002222",\
+ "0.701978, 0.890220, 1.112662, 1.474349, 2.174976",\
+ "0.752969, 0.941136, 1.163305, 1.524684, 2.224792",\
+ "0.830648, 1.018745, 1.240665, 1.601559, 2.300694",\
+ "1.039776, 1.227793, 1.449427, 1.809669, 2.507451",\
+ "1.593130, 1.781113, 2.002623, 2.362521, 3.059567",\
+ "1.005526, 1.195782, 1.416335, 1.777666, 2.477606",\
+ "1.056509, 1.246695, 1.466977, 1.828001, 2.527421",\
+ "1.134180, 1.324303, 1.544337, 1.904875, 2.603319",\
+ "1.343298, 1.533349, 1.753099, 2.112983, 2.810072",\
+ "1.896648, 2.086668, 2.306295, 2.665835, 3.362187");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.150008, 0.150411, 0.151856, 0.156196, 0.165595",\
+ "0.237385, 0.237630, 0.238497, 0.240747, 0.245517",\
+ "0.400536, 0.400554, 0.400616, 0.401188, 0.402541",\
+ "0.873945, 0.873960, 0.874011, 0.874290, 0.874930",\
+ "2.149610, 2.149610, 2.149610, 2.149694, 2.149902",\
+ "0.150008, 0.150411, 0.151856, 0.156196, 0.165595",\
+ "0.237385, 0.237630, 0.238497, 0.240747, 0.245517",\
+ "0.400536, 0.400554, 0.400616, 0.401188, 0.402541",\
+ "0.873945, 0.873960, 0.874011, 0.874290, 0.874930",\
+ "2.149610, 2.149610, 2.149610, 2.149694, 2.149902",\
+ "0.150011, 0.150411, 0.151856, 0.156196, 0.165595",\
+ "0.237387, 0.237630, 0.238497, 0.240747, 0.245517",\
+ "0.400536, 0.400554, 0.400616, 0.401188, 0.402541",\
+ "0.873945, 0.873960, 0.874011, 0.874290, 0.874930",\
+ "2.149610, 2.149610, 2.149610, 2.149694, 2.149902",\
+ "0.150016, 0.150412, 0.151859, 0.156208, 0.165618",\
+ "0.237390, 0.237631, 0.238499, 0.240753, 0.245528",\
+ "0.400537, 0.400554, 0.400616, 0.401190, 0.402544",\
+ "0.873945, 0.873960, 0.874011, 0.874290, 0.874931",\
+ "2.149610, 2.149610, 2.149610, 2.149695, 2.149903",\
+ "0.150062, 0.150423, 0.151860, 0.156217, 0.165645",\
+ "0.237418, 0.237637, 0.238499, 0.240757, 0.245542",\
+ "0.400539, 0.400554, 0.400616, 0.401192, 0.402548",\
+ "0.873947, 0.873960, 0.874011, 0.874291, 0.874933",\
+ "2.149610, 2.149610, 2.149610, 2.149695, 2.149903");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.321064, 0.601616, 0.902007, 1.417819, 2.447771",\
+ "0.356109, 0.636678, 0.937135, 1.453129, 2.483444",\
+ "0.406657, 0.687216, 0.987647, 1.503613, 2.533873",\
+ "0.536144, 0.816696, 1.117064, 1.632835, 2.662707",\
+ "0.873984, 1.154534, 1.454850, 1.970470, 3.000039",\
+ "0.409514, 0.689233, 0.989723, 1.504534, 2.533705",\
+ "0.444559, 0.724295, 1.024851, 1.539844, 2.569378",\
+ "0.495106, 0.774833, 1.075363, 1.590328, 2.619807",\
+ "0.624593, 0.904313, 1.204779, 1.719550, 2.748641",\
+ "0.962434, 1.242151, 1.542565, 2.057184, 3.085972",\
+ "0.498914, 0.778364, 1.077690, 1.592179, 2.620660",\
+ "0.533960, 0.813427, 1.112818, 1.627489, 2.656333",\
+ "0.584508, 0.863965, 1.163329, 1.677973, 2.706762",\
+ "0.713994, 0.993445, 1.292746, 1.807195, 2.835596",\
+ "1.051835, 1.331282, 1.630532, 2.144830, 3.172927",\
+ "0.562563, 0.844218, 1.141837, 1.656326, 2.684169",\
+ "0.597610, 0.879281, 1.176965, 1.691636, 2.719842",\
+ "0.648158, 0.929819, 1.227477, 1.742120, 2.770271",\
+ "0.777645, 1.059298, 1.356893, 1.871342, 2.899105",\
+ "1.115485, 1.397135, 1.694679, 2.208976, 3.236436",\
+ "0.898997, 1.211173, 1.494183, 2.005997, 3.029625",\
+ "0.934048, 1.246239, 1.529313, 2.041308, 3.065298",\
+ "0.984598, 1.296772, 1.579825, 2.091792, 3.115727",\
+ "1.114083, 1.426250, 1.709239, 2.221013, 3.244561",\
+ "1.451924, 1.764086, 2.047024, 2.558647, 3.581892");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.072029, 0.072117, 0.072944, 0.075681, 0.081131",\
+ "0.105035, 0.105045, 0.105444, 0.106813, 0.109537",\
+ "0.191067, 0.191185, 0.191447, 0.191927, 0.192882",\
+ "0.434550, 0.434688, 0.434688, 0.434688, 0.434688",\
+ "1.072978, 1.072978, 1.073125, 1.073633, 1.074646",\
+ "0.072030, 0.072117, 0.072953, 0.075681, 0.081131",\
+ "0.105035, 0.105045, 0.105449, 0.106813, 0.109537",\
+ "0.191068, 0.191185, 0.191449, 0.191927, 0.192882",\
+ "0.434554, 0.434688, 0.434688, 0.434688, 0.434688",\
+ "1.072978, 1.072978, 1.073126, 1.073633, 1.074646",\
+ "0.072035, 0.072117, 0.072953, 0.075681, 0.081131",\
+ "0.105035, 0.105045, 0.105449, 0.106813, 0.109537",\
+ "0.191071, 0.191187, 0.191449, 0.191927, 0.192882",\
+ "0.434564, 0.434688, 0.434688, 0.434688, 0.434688",\
+ "1.072978, 1.072978, 1.073126, 1.073633, 1.074646",\
+ "0.072040, 0.072118, 0.072953, 0.075685, 0.081131",\
+ "0.105036, 0.105045, 0.105449, 0.106814, 0.109537",\
+ "0.191073, 0.191190, 0.191449, 0.191928, 0.192882",\
+ "0.434574, 0.434688, 0.434688, 0.434688, 0.434688",\
+ "1.072978, 1.072978, 1.073127, 1.073634, 1.074646",\
+ "0.072068, 0.072127, 0.072981, 0.075698, 0.081131",\
+ "0.105040, 0.105046, 0.105463, 0.106821, 0.109537",\
+ "0.191088, 0.191220, 0.191454, 0.191930, 0.192882",\
+ "0.434635, 0.434688, 0.434688, 0.434688, 0.434688",\
+ "1.072978, 1.072978, 1.073132, 1.073636, 1.074646");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[12]_redg_min*/
+
+} /* end of pin tl_o[12] */
+
+pin("tl_o[11]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.154883 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[11];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.480044, 0.757907, 1.049391, 1.544816, 2.535666",\
+ "0.520846, 0.798709, 1.090193, 1.585618, 2.576470",\
+ "0.596179, 0.874043, 1.165526, 1.660950, 2.651799",\
+ "0.851223, 1.129087, 1.420574, 1.916010, 2.906884",\
+ "1.776399, 2.054266, 2.345743, 2.841143, 3.831943",\
+ "0.568493, 0.845495, 1.137043, 1.631531, 2.621600",\
+ "0.609294, 0.886297, 1.177845, 1.672334, 2.662404",\
+ "0.684628, 0.961631, 1.253178, 1.747665, 2.737732",\
+ "0.939672, 1.216675, 1.508226, 2.002726, 2.992818",\
+ "1.864848, 2.141854, 2.433396, 2.927858, 3.917876",\
+ "0.657525, 0.934585, 1.225009, 1.719154, 2.708555",\
+ "0.698327, 0.975387, 1.265811, 1.759956, 2.749359",\
+ "0.773660, 1.050721, 1.341145, 1.835288, 2.824687",\
+ "1.028704, 1.305765, 1.596192, 2.090348, 3.079773",\
+ "1.953881, 2.230944, 2.521362, 3.015481, 4.004831",\
+ "0.720671, 1.000379, 1.289153, 1.783067, 2.772064",\
+ "0.761473, 1.041181, 1.329955, 1.823870, 2.812868",\
+ "0.836807, 1.116515, 1.405289, 1.899202, 2.888196",\
+ "1.091850, 1.371559, 1.660336, 2.154262, 3.143282",\
+ "2.017027, 2.296738, 2.585506, 3.079395, 4.068340",\
+ "1.053915, 1.366570, 1.641292, 2.132528, 3.117520",\
+ "1.094717, 1.407372, 1.682094, 2.173331, 3.158324",\
+ "1.170050, 1.482705, 1.757427, 2.248662, 3.233653",\
+ "1.425094, 1.737749, 2.012475, 2.503723, 3.488738",\
+ "2.350272, 2.662929, 2.937644, 3.428855, 4.413796");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.033097, 0.033098, 0.033098, 0.033098, 0.033098",\
+ "0.082184, 0.082184, 0.082184, 0.082184, 0.082184",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691575, 0.691576, 0.691578, 0.691578, 0.691578",\
+ "2.469653, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033098, 0.033098, 0.033098, 0.033098",\
+ "0.082184, 0.082184, 0.082184, 0.082184, 0.082184",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691575, 0.691576, 0.691578, 0.691578, 0.691578",\
+ "2.469653, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033098, 0.033098, 0.033098, 0.033098",\
+ "0.082184, 0.082184, 0.082184, 0.082184, 0.082184",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691575, 0.691576, 0.691578, 0.691578, 0.691578",\
+ "2.469653, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033098, 0.033098, 0.033098, 0.033098",\
+ "0.082184, 0.082184, 0.082184, 0.082184, 0.082184",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691575, 0.691576, 0.691578, 0.691578, 0.691578",\
+ "2.469654, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033098, 0.033098, 0.033098, 0.033098",\
+ "0.082184, 0.082184, 0.082184, 0.082184, 0.082184",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691575, 0.691577, 0.691578, 0.691578, 0.691578",\
+ "2.469654, 2.469654, 2.469654, 2.469654, 2.469654");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.577593, 0.759063, 0.958904, 1.285183, 1.919119",\
+ "0.619104, 0.800573, 1.000415, 1.326696, 1.960636",\
+ "0.678962, 0.860432, 1.060273, 1.386554, 2.020497",\
+ "0.847206, 1.028676, 1.228518, 1.554798, 2.188738",\
+ "1.428635, 1.610105, 1.809947, 2.136236, 2.770198",\
+ "0.665008, 0.846447, 1.046407, 1.372488, 2.006473",\
+ "0.706519, 0.887958, 1.087918, 1.414001, 2.047990",\
+ "0.766377, 0.947816, 1.147776, 1.473860, 2.107850",\
+ "0.934621, 1.116060, 1.316020, 1.642103, 2.276092",\
+ "1.516050, 1.697490, 1.897449, 2.223541, 2.857552",\
+ "0.745878, 0.926784, 1.126434, 1.452517, 2.086504",\
+ "0.787388, 0.968295, 1.167944, 1.494029, 2.128021",\
+ "0.847246, 1.028153, 1.227803, 1.553888, 2.187881",\
+ "1.015491, 1.196397, 1.396047, 1.722131, 2.356123",\
+ "1.596920, 1.777826, 1.977476, 2.303569, 2.937583",\
+ "0.803511, 0.984332, 1.183978, 1.509762, 2.143152",\
+ "0.845022, 1.025843, 1.225488, 1.551274, 2.184669",\
+ "0.904880, 1.085701, 1.285347, 1.611133, 2.244529",\
+ "1.073124, 1.253945, 1.453591, 1.779376, 2.412771",\
+ "1.654553, 1.835374, 2.035020, 2.360815, 2.994231",\
+ "1.105600, 1.289533, 1.487611, 1.812776, 2.445014",\
+ "1.147110, 1.331044, 1.529122, 1.854289, 2.486530",\
+ "1.206968, 1.390902, 1.588980, 1.914148, 2.546391",\
+ "1.375213, 1.559146, 1.757225, 2.082391, 2.714632",\
+ "1.956642, 2.140575, 2.338654, 2.663829, 3.296093");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.045173, 0.045173, 0.045173, 0.045173, 0.045173",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153692, 0.153692, 0.153692, 0.153692, 0.153692",\
+ "0.429868, 0.429868, 0.429868, 0.429868, 0.429868",\
+ "1.490308, 1.490308, 1.490308, 1.490340, 1.490420",\
+ "0.045173, 0.045173, 0.045173, 0.045173, 0.045173",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153692, 0.153692, 0.153692, 0.153692, 0.153692",\
+ "0.429868, 0.429868, 0.429868, 0.429868, 0.429868",\
+ "1.490308, 1.490308, 1.490308, 1.490340, 1.490420",\
+ "0.045173, 0.045173, 0.045173, 0.045173, 0.045173",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153692, 0.153692, 0.153692, 0.153692, 0.153692",\
+ "0.429868, 0.429868, 0.429868, 0.429868, 0.429868",\
+ "1.490308, 1.490308, 1.490308, 1.490340, 1.490420",\
+ "0.045173, 0.045173, 0.045173, 0.045173, 0.045173",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153692, 0.153692, 0.153692, 0.153692, 0.153692",\
+ "0.429868, 0.429868, 0.429868, 0.429868, 0.429868",\
+ "1.490308, 1.490308, 1.490308, 1.490340, 1.490420",\
+ "0.045173, 0.045173, 0.045173, 0.045173, 0.045173",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153692, 0.153692, 0.153692, 0.153692, 0.153692",\
+ "0.429868, 0.429868, 0.429868, 0.429868, 0.429868",\
+ "1.490308, 1.490308, 1.490308, 1.490340, 1.490420");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[11]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.480044, 0.757907, 1.049391, 1.544474, 2.533147",\
+ "0.520846, 0.798709, 1.090193, 1.585276, 2.573951",\
+ "0.596179, 0.874043, 1.165526, 1.660608, 2.649279",\
+ "0.851223, 1.129087, 1.420574, 1.915668, 2.904364",\
+ "1.776399, 2.054266, 2.345743, 2.840801, 3.829424",\
+ "0.568493, 0.845495, 1.137043, 1.631189, 2.619081",\
+ "0.609294, 0.886297, 1.177845, 1.671992, 2.659884",\
+ "0.684628, 0.961631, 1.253178, 1.747323, 2.735213",\
+ "0.939672, 1.216675, 1.508226, 2.002384, 2.990298",\
+ "1.864848, 2.141854, 2.433396, 2.927516, 3.915357",\
+ "0.657525, 0.934585, 1.225009, 1.718833, 2.706036",\
+ "0.698327, 0.975387, 1.265811, 1.759635, 2.746840",\
+ "0.773660, 1.050721, 1.341145, 1.834967, 2.822168",\
+ "1.028704, 1.305765, 1.596192, 2.090027, 3.077253",\
+ "1.953881, 2.230944, 2.521362, 3.015160, 4.002313",\
+ "0.720671, 1.000379, 1.289153, 1.782954, 2.769545",\
+ "0.761473, 1.041181, 1.329955, 1.823757, 2.810349",\
+ "0.836807, 1.116515, 1.405289, 1.899088, 2.885677",\
+ "1.091850, 1.371559, 1.660336, 2.154149, 3.140762",\
+ "2.017027, 2.296738, 2.585506, 3.079281, 4.065822",\
+ "1.053915, 1.366570, 1.641292, 2.132528, 3.115001",\
+ "1.094717, 1.407372, 1.682094, 2.173331, 3.155805",\
+ "1.170050, 1.482705, 1.757427, 2.248662, 3.231133",\
+ "1.425094, 1.737749, 2.012475, 2.503723, 3.486218",\
+ "2.350272, 2.662929, 2.937644, 3.428855, 4.411278");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.033097, 0.033097, 0.033097, 0.033097, 0.033097",\
+ "0.082175, 0.082175, 0.082175, 0.082175, 0.082175",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691460, 0.691460, 0.691460, 0.691460, 0.691460",\
+ "2.469630, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033097, 0.033097, 0.033097, 0.033097",\
+ "0.082175, 0.082175, 0.082175, 0.082175, 0.082175",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691460, 0.691460, 0.691460, 0.691460, 0.691460",\
+ "2.469631, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033097, 0.033097, 0.033097, 0.033097",\
+ "0.082175, 0.082175, 0.082175, 0.082175, 0.082175",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691460, 0.691460, 0.691460, 0.691460, 0.691460",\
+ "2.469633, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033097, 0.033097, 0.033097, 0.033097",\
+ "0.082175, 0.082175, 0.082175, 0.082175, 0.082175",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691460, 0.691460, 0.691460, 0.691460, 0.691460",\
+ "2.469634, 2.469654, 2.469654, 2.469654, 2.469654",\
+ "0.033097, 0.033097, 0.033097, 0.033097, 0.033097",\
+ "0.082175, 0.082175, 0.082175, 0.082175, 0.082175",\
+ "0.206840, 0.206841, 0.206841, 0.206841, 0.206842",\
+ "0.691460, 0.691460, 0.691460, 0.691460, 0.691460",\
+ "2.469645, 2.469654, 2.469654, 2.469654, 2.469654");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.577593, 0.758693, 0.958244, 1.284509, 1.918007",\
+ "0.619104, 0.800204, 0.999755, 1.326021, 1.959524",\
+ "0.678962, 0.860062, 1.059613, 1.385880, 2.019384",\
+ "0.847206, 1.028306, 1.227857, 1.554123, 2.187625",\
+ "1.428635, 1.609735, 1.809286, 2.135561, 2.769086",\
+ "0.665008, 0.846012, 1.045525, 1.371814, 2.005360",\
+ "0.706519, 0.887523, 1.087036, 1.413326, 2.046877",\
+ "0.766377, 0.947381, 1.146894, 1.473185, 2.106737",\
+ "0.934621, 1.115625, 1.315138, 1.641428, 2.274979",\
+ "1.516050, 1.697054, 1.896567, 2.222867, 2.856439",\
+ "0.745878, 0.926348, 1.125552, 1.451842, 2.085392",\
+ "0.787388, 0.967859, 1.167063, 1.493355, 2.126909",\
+ "0.847246, 1.027717, 1.226921, 1.553214, 2.186769",\
+ "1.015491, 1.195961, 1.395165, 1.721457, 2.355011",\
+ "1.596920, 1.777390, 1.976594, 2.302895, 2.936471",\
+ "0.803511, 0.984182, 1.183296, 1.509360, 2.142581",\
+ "0.845022, 1.025692, 1.224806, 1.550872, 2.184098",\
+ "0.904880, 1.085551, 1.284665, 1.610731, 2.243959",\
+ "1.073124, 1.253795, 1.452909, 1.778975, 2.412200",\
+ "1.654553, 1.835224, 2.034338, 2.360413, 2.993660",\
+ "1.105600, 1.289533, 1.486960, 1.812607, 2.445014",\
+ "1.147110, 1.331044, 1.528471, 1.854120, 2.486530",\
+ "1.206968, 1.390902, 1.588329, 1.913979, 2.546391",\
+ "1.375213, 1.559146, 1.756574, 2.082222, 2.714632",\
+ "1.956642, 2.140575, 2.338003, 2.663660, 3.296093");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.045164, 0.045164, 0.045164, 0.045164, 0.045164",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153612, 0.153612, 0.153612, 0.153612, 0.153612",\
+ "0.429864, 0.429864, 0.429864, 0.429864, 0.429864",\
+ "1.490306, 1.490306, 1.490306, 1.490338, 1.490419",\
+ "0.045164, 0.045164, 0.045164, 0.045164, 0.045164",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153612, 0.153612, 0.153612, 0.153612, 0.153612",\
+ "0.429864, 0.429864, 0.429864, 0.429864, 0.429864",\
+ "1.490306, 1.490306, 1.490306, 1.490338, 1.490419",\
+ "0.045164, 0.045164, 0.045164, 0.045164, 0.045164",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153612, 0.153612, 0.153612, 0.153612, 0.153612",\
+ "0.429864, 0.429864, 0.429864, 0.429864, 0.429864",\
+ "1.490306, 1.490306, 1.490306, 1.490338, 1.490419",\
+ "0.045164, 0.045164, 0.045164, 0.045164, 0.045164",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153612, 0.153612, 0.153612, 0.153612, 0.153612",\
+ "0.429864, 0.429864, 0.429864, 0.429864, 0.429864",\
+ "1.490306, 1.490306, 1.490306, 1.490339, 1.490419",\
+ "0.045164, 0.045164, 0.045164, 0.045164, 0.045164",\
+ "0.078561, 0.078561, 0.078561, 0.078562, 0.078566",\
+ "0.153612, 0.153612, 0.153612, 0.153612, 0.153612",\
+ "0.429864, 0.429864, 0.429864, 0.429864, 0.429864",\
+ "1.490306, 1.490306, 1.490306, 1.490339, 1.490420");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[11]_redg_min*/
+
+} /* end of pin tl_o[11] */
+
+pin("tl_o[10]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.020161 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[10];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.364012, 0.625791, 0.912362, 1.416686, 2.425334",\
+ "0.413794, 0.675738, 0.964329, 1.475067, 2.496546",\
+ "0.489422, 0.751529, 1.041528, 1.556366, 2.586045",\
+ "0.695293, 0.957830, 1.249004, 1.765727, 2.799173",\
+ "1.246075, 1.508922, 1.800327, 2.315899, 3.347043",\
+ "0.451427, 0.713333, 1.000043, 1.503402, 2.511267",\
+ "0.501209, 0.763281, 1.052029, 1.561783, 2.582479",\
+ "0.576836, 0.839074, 1.129242, 1.643082, 2.671978",\
+ "0.782708, 1.045378, 1.336724, 1.852442, 2.885106",\
+ "1.333490, 1.596474, 1.888044, 2.402615, 3.432977",\
+ "0.533466, 0.802315, 1.088010, 1.591024, 2.598222",\
+ "0.583252, 0.852266, 1.139997, 1.649405, 2.669434",\
+ "0.658880, 0.928062, 1.217209, 1.730705, 2.758933",\
+ "0.864753, 1.134376, 1.424692, 1.940065, 2.972061",\
+ "1.415530, 1.685480, 1.976011, 2.490237, 3.519932",\
+ "0.596367, 0.867953, 1.152155, 1.654938, 2.661731",\
+ "0.646156, 0.917908, 1.204143, 1.713319, 2.732943",\
+ "0.721785, 0.993709, 1.281356, 1.794618, 2.822442",\
+ "0.927659, 1.200036, 1.488839, 2.003978, 3.035570",\
+ "1.478432, 1.751152, 2.040158, 2.554151, 3.583441",\
+ "0.928059, 1.232317, 1.504384, 2.004435, 3.007188",\
+ "0.977868, 1.282318, 1.556437, 2.062843, 3.078399",\
+ "1.053501, 1.358177, 1.633692, 2.144160, 3.167898",\
+ "1.259380, 1.564660, 1.841193, 2.353528, 3.381027",\
+ "1.810129, 2.115913, 2.392501, 2.903695, 3.928897");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.177438, 0.178519, 0.189473, 0.223901, 0.292757",\
+ "0.251359, 0.253407, 0.263275, 0.290387, 0.344610",\
+ "0.412697, 0.412697, 0.415313, 0.424472, 0.442790",\
+ "0.885478, 0.885674, 0.886375, 0.887778, 0.890585",\
+ "2.162748, 2.162748, 2.162938, 2.163605, 2.164938",\
+ "0.177438, 0.178526, 0.189583, 0.223901, 0.292757",\
+ "0.251359, 0.253420, 0.263361, 0.290387, 0.344610",\
+ "0.412697, 0.412697, 0.415342, 0.424472, 0.442790",\
+ "0.885478, 0.885676, 0.886379, 0.887778, 0.890585",\
+ "2.162748, 2.162748, 2.162940, 2.163605, 2.164938",\
+ "0.177475, 0.178542, 0.189585, 0.223901, 0.292757",\
+ "0.251427, 0.253451, 0.263362, 0.290387, 0.344610",\
+ "0.412697, 0.412697, 0.415343, 0.424472, 0.442790",\
+ "0.885478, 0.885680, 0.886380, 0.887778, 0.890585",\
+ "2.162748, 2.162748, 2.162940, 2.163605, 2.164938",\
+ "0.177499, 0.178566, 0.189590, 0.223901, 0.292757",\
+ "0.251473, 0.253495, 0.263367, 0.290387, 0.344610",\
+ "0.412697, 0.412697, 0.415344, 0.424472, 0.442790",\
+ "0.885478, 0.885687, 0.886380, 0.887778, 0.890585",\
+ "2.162748, 2.162748, 2.162940, 2.163605, 2.164938",\
+ "0.177651, 0.178840, 0.189940, 0.224044, 0.292757",\
+ "0.251761, 0.254016, 0.263642, 0.290499, 0.344610",\
+ "0.412697, 0.412697, 0.415437, 0.424510, 0.442790",\
+ "0.885478, 0.885760, 0.886394, 0.887784, 0.890585",\
+ "2.162748, 2.162748, 2.162947, 2.163608, 2.164938");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.312852, 0.568984, 0.862555, 1.382336, 2.421899",\
+ "0.348118, 0.610654, 0.902338, 1.419180, 2.452865",\
+ "0.406005, 0.669261, 0.960734, 1.473580, 2.499271",\
+ "0.536962, 0.800144, 1.091137, 1.602535, 2.625331",\
+ "0.874185, 1.136967, 1.427801, 1.940429, 2.965686",\
+ "0.400266, 0.656542, 0.950284, 1.469051, 2.507832",\
+ "0.435533, 0.698205, 0.990058, 1.505895, 2.538798",\
+ "0.493420, 0.756819, 1.048442, 1.560295, 2.585205",\
+ "0.624377, 0.887700, 1.178840, 1.689250, 2.711264",\
+ "0.961600, 1.224520, 1.515508, 2.027145, 3.051620",\
+ "0.481136, 0.745561, 1.038252, 1.556674, 2.594787",\
+ "0.517546, 0.787210, 1.078026, 1.593518, 2.625753",\
+ "0.575445, 0.845837, 1.136409, 1.647918, 2.672160",\
+ "0.706398, 0.976717, 1.266807, 1.776872, 2.798219",\
+ "1.043615, 1.313530, 1.603475, 2.114767, 3.138575",\
+ "0.538770, 0.811253, 1.102400, 1.620588, 2.658296",\
+ "0.580430, 0.852880, 1.142173, 1.657432, 2.689262",\
+ "0.638337, 0.911526, 1.200556, 1.711832, 2.735669",\
+ "0.769288, 1.042406, 1.330954, 1.840786, 2.861728",\
+ "1.106500, 1.379207, 1.667622, 2.178681, 3.202084",\
+ "0.869562, 1.176250, 1.454786, 1.970150, 3.003752",\
+ "0.912016, 1.217620, 1.494529, 2.006981, 3.034719",\
+ "0.969972, 1.276495, 1.552871, 2.061365, 3.081125",\
+ "1.100910, 1.407358, 1.683254, 2.190313, 3.207185",\
+ "1.438092, 1.744035, 2.019935, 2.528213, 3.547540");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.081554, 0.088992, 0.106415, 0.139136, 0.204579",\
+ "0.124645, 0.129773, 0.146146, 0.179503, 0.246217",\
+ "0.203924, 0.205651, 0.213739, 0.234366, 0.275621",\
+ "0.443609, 0.443974, 0.447191, 0.457130, 0.477008",\
+ "1.100873, 1.101320, 1.101850, 1.102085, 1.102555",\
+ "0.081554, 0.089042, 0.106519, 0.139136, 0.204579",\
+ "0.124645, 0.129815, 0.146252, 0.179503, 0.246217",\
+ "0.203924, 0.205665, 0.213805, 0.234366, 0.275621",\
+ "0.443609, 0.443976, 0.447223, 0.457130, 0.477008",\
+ "1.100873, 1.101323, 1.101851, 1.102085, 1.102555",\
+ "0.081568, 0.089158, 0.106521, 0.139136, 0.204579",\
+ "0.124713, 0.129914, 0.146254, 0.179503, 0.246217",\
+ "0.203955, 0.205697, 0.213806, 0.234366, 0.275621",\
+ "0.443622, 0.443982, 0.447223, 0.457130, 0.477008",\
+ "1.100888, 1.101329, 1.101851, 1.102085, 1.102555",\
+ "0.081595, 0.089328, 0.106526, 0.139136, 0.204579",\
+ "0.124759, 0.130058, 0.146259, 0.179503, 0.246217",\
+ "0.203975, 0.205743, 0.213809, 0.234366, 0.275621",\
+ "0.443630, 0.443990, 0.447225, 0.457130, 0.477008",\
+ "1.100898, 1.101339, 1.101851, 1.102085, 1.102555",\
+ "0.082871, 0.091307, 0.106858, 0.139272, 0.204579",\
+ "0.125047, 0.131735, 0.146598, 0.179642, 0.246217",\
+ "0.204103, 0.206281, 0.214019, 0.234452, 0.275621",\
+ "0.443681, 0.444082, 0.447326, 0.457171, 0.477008",\
+ "1.100961, 1.101453, 1.101854, 1.102086, 1.102555");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_2703*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.350851, 0.591855, 0.864128, 1.320281, 2.232588",\
+ "0.400592, 0.641701, 0.915140, 1.374804, 2.294134",\
+ "0.476229, 0.717426, 0.992120, 1.455680, 2.382801",\
+ "0.682141, 0.923562, 1.199150, 1.664642, 2.595626",\
+ "1.233045, 1.474598, 1.750161, 2.214853, 3.144235",\
+ "0.438261, 0.679403, 0.951654, 1.406996, 2.318522",\
+ "0.488002, 0.729251, 1.002677, 1.461519, 2.380068",\
+ "0.563639, 0.804976, 1.079670, 1.542395, 2.468735",\
+ "0.769551, 1.011115, 1.286705, 1.751357, 2.681560",\
+ "1.320455, 1.562152, 1.837715, 2.301567, 3.230169",\
+ "0.519097, 0.768378, 1.039617, 1.494618, 2.405477",\
+ "0.568838, 0.818228, 1.090640, 1.549141, 2.467023",\
+ "0.644474, 0.893955, 1.167633, 1.630017, 2.555690",\
+ "0.850399, 1.100099, 1.374669, 1.838978, 2.768515",\
+ "1.401325, 1.651139, 1.925678, 2.389189, 3.317124",\
+ "0.576709, 0.834005, 1.103754, 1.558531, 2.468986",\
+ "0.626450, 0.883858, 1.154778, 1.613054, 2.530532",\
+ "0.702087, 0.959588, 1.231772, 1.693930, 2.619199",\
+ "0.908034, 1.165738, 1.438808, 1.902892, 2.832024",\
+ "1.459002, 1.716783, 1.989817, 2.453102, 3.380633",\
+ "0.898537, 1.198301, 1.455491, 1.907824, 2.814442",\
+ "0.948280, 1.248191, 1.506551, 1.962362, 2.875988",\
+ "1.023916, 1.323954, 1.583584, 2.043254, 2.964655",\
+ "1.229826, 1.530187, 1.790640, 2.252224, 3.177480",\
+ "1.780725, 2.081283, 2.341641, 2.802431, 3.726089");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.177532, 0.178920, 0.189751, 0.222197, 0.287089",\
+ "0.251535, 0.254167, 0.264114, 0.288993, 0.338750",\
+ "0.412948, 0.412948, 0.415205, 0.423013, 0.438629",\
+ "0.885646, 0.885671, 0.886007, 0.887039, 0.889103",\
+ "2.163153, 2.163153, 2.163261, 2.163636, 2.164385",\
+ "0.177532, 0.178929, 0.189854, 0.222197, 0.287089",\
+ "0.251535, 0.254184, 0.264193, 0.288993, 0.338750",\
+ "0.412948, 0.412948, 0.415229, 0.423013, 0.438629",\
+ "0.885646, 0.885672, 0.886011, 0.887039, 0.889103",\
+ "2.163153, 2.163153, 2.163263, 2.163636, 2.164385",\
+ "0.177534, 0.178950, 0.189855, 0.222197, 0.287089",\
+ "0.251540, 0.254224, 0.264194, 0.288993, 0.338750",\
+ "0.412948, 0.412948, 0.415230, 0.423013, 0.438629",\
+ "0.885646, 0.885672, 0.886011, 0.887039, 0.889103",\
+ "2.163153, 2.163153, 2.163263, 2.163636, 2.164385",\
+ "0.177539, 0.178981, 0.189861, 0.222197, 0.287089",\
+ "0.251549, 0.254282, 0.264198, 0.288993, 0.338750",\
+ "0.412948, 0.412948, 0.415231, 0.423013, 0.438629",\
+ "0.885646, 0.885673, 0.886011, 0.887039, 0.889103",\
+ "2.163153, 2.163153, 2.163263, 2.163636, 2.164385",\
+ "0.177778, 0.179340, 0.190190, 0.222331, 0.287089",\
+ "0.252003, 0.254964, 0.264451, 0.289096, 0.338750",\
+ "0.412948, 0.412948, 0.415310, 0.423045, 0.438629",\
+ "0.885646, 0.885682, 0.886021, 0.887043, 0.889103",\
+ "2.163153, 2.163153, 2.163266, 2.163637, 2.164385");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.307193, 0.533242, 0.809521, 1.279856, 2.220526",\
+ "0.336644, 0.576689, 0.852349, 1.318694, 2.251385",\
+ "0.393241, 0.634932, 0.911048, 1.376848, 2.308447",\
+ "0.524233, 0.765871, 1.043018, 1.512641, 2.451889",\
+ "0.861499, 1.102901, 1.379688, 1.849255, 2.788391",\
+ "0.394603, 0.620790, 0.897092, 1.366570, 2.306459",\
+ "0.424054, 0.664240, 0.939907, 1.405409, 2.337319",\
+ "0.480651, 0.722487, 0.998605, 1.463562, 2.394381",\
+ "0.611643, 0.853426, 1.130586, 1.599356, 2.537823",\
+ "0.948909, 1.190453, 1.467256, 1.935970, 2.874325",\
+ "0.475519, 0.709763, 0.985056, 1.454192, 2.393414",\
+ "0.504970, 0.753222, 1.027871, 1.493031, 2.424274",\
+ "0.561503, 0.811478, 1.086568, 1.551184, 2.481336",\
+ "0.692478, 0.942415, 1.218550, 1.686978, 2.624778",\
+ "1.029784, 1.279438, 1.555220, 2.023592, 2.961280",\
+ "0.533285, 0.775388, 1.049196, 1.518106, 2.456923",\
+ "0.562736, 0.818858, 1.092010, 1.556944, 2.487783",\
+ "0.619148, 0.877127, 1.150707, 1.615098, 2.544845",\
+ "0.750090, 1.008062, 1.282690, 1.750891, 2.688287",\
+ "1.087471, 1.345078, 1.619360, 2.087505, 3.024789",\
+ "0.839984, 1.139662, 1.401077, 1.867458, 2.802380",\
+ "0.883084, 1.183263, 1.443850, 1.906280, 2.833239",\
+ "0.940909, 1.241684, 1.502542, 1.964431, 2.890301",\
+ "1.071899, 1.372601, 1.634564, 2.100240, 3.033743",\
+ "1.409163, 1.709532, 1.971233, 2.436854, 3.370245");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.079414, 0.084257, 0.099312, 0.127519, 0.183935",\
+ "0.124385, 0.127318, 0.139681, 0.167608, 0.223461",\
+ "0.203732, 0.204755, 0.210826, 0.226691, 0.258421",\
+ "0.443641, 0.444109, 0.446299, 0.452176, 0.463930",\
+ "1.100911, 1.101486, 1.102125, 1.102253, 1.102511",\
+ "0.079414, 0.084301, 0.099401, 0.127519, 0.183935",\
+ "0.124385, 0.127346, 0.139769, 0.167608, 0.223461",\
+ "0.203732, 0.204765, 0.210876, 0.226691, 0.258421",\
+ "0.443641, 0.444112, 0.446317, 0.452176, 0.463930",\
+ "1.100911, 1.101489, 1.102125, 1.102253, 1.102511",\
+ "0.079415, 0.084402, 0.099402, 0.127519, 0.183935",\
+ "0.124385, 0.127408, 0.139771, 0.167608, 0.223461",\
+ "0.203732, 0.204786, 0.210877, 0.226691, 0.258421",\
+ "0.443642, 0.444120, 0.446318, 0.452176, 0.463930",\
+ "1.100913, 1.101498, 1.102125, 1.102253, 1.102511",\
+ "0.079417, 0.084547, 0.099407, 0.127519, 0.183935",\
+ "0.124385, 0.127499, 0.139776, 0.167608, 0.223461",\
+ "0.203733, 0.204818, 0.210879, 0.226691, 0.258421",\
+ "0.443643, 0.444130, 0.446319, 0.452176, 0.463930",\
+ "1.100914, 1.101511, 1.102125, 1.102253, 1.102511",\
+ "0.079511, 0.086252, 0.099693, 0.127636, 0.183935",\
+ "0.124397, 0.128559, 0.140059, 0.167723, 0.223461",\
+ "0.203741, 0.205184, 0.211040, 0.226757, 0.258421",\
+ "0.443724, 0.444251, 0.446378, 0.452200, 0.463930",\
+ "1.101013, 1.101659, 1.102126, 1.102254, 1.102511");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_2585*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.331228, 0.527324, 0.786001, 1.224167, 2.100501",\
+ "0.382369, 0.578501, 0.836813, 1.274472, 2.149791",\
+ "0.460186, 0.652490, 0.910342, 1.347469, 2.221725",\
+ "0.669327, 0.853217, 1.110120, 1.545833, 2.417260",\
+ "1.222502, 1.402990, 1.654377, 2.088484, 2.956696",\
+ "0.418630, 0.614835, 0.873467, 1.310880, 2.186435",\
+ "0.469770, 0.666010, 0.924278, 1.361185, 2.235725",\
+ "0.547588, 0.739998, 0.997805, 1.434183, 2.307659",\
+ "0.756729, 0.940720, 1.197578, 1.632546, 2.503194",\
+ "1.309904, 1.490380, 1.741831, 2.175197, 3.042630",\
+ "0.499484, 0.703690, 0.961427, 1.398501, 2.273390",\
+ "0.550625, 0.754862, 1.012238, 1.448806, 2.322680",\
+ "0.628442, 0.828845, 1.085765, 1.521803, 2.394614",\
+ "0.837583, 1.029560, 1.285538, 1.720167, 2.590149",\
+ "1.390758, 1.574844, 1.829791, 2.262817, 3.129585",\
+ "0.557217, 0.769141, 1.025562, 1.462414, 2.336899",\
+ "0.608358, 0.820308, 1.076372, 1.512718, 2.386189",\
+ "0.686176, 0.894284, 1.149899, 1.585716, 2.458123",\
+ "0.895316, 1.094988, 1.349672, 1.784079, 2.653658",\
+ "1.448492, 1.640260, 1.893925, 2.326730, 3.193094",\
+ "0.860852, 1.131485, 1.377112, 1.811626, 2.682355",\
+ "0.911997, 1.182598, 1.427917, 1.861928, 2.731645",\
+ "0.989815, 1.256499, 1.501439, 1.934923, 2.803579",\
+ "1.198957, 1.457069, 1.701197, 2.133281, 2.999114",\
+ "1.752135, 2.002200, 2.245434, 2.675925, 3.538550");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.247574, 0.253107, 0.265836, 0.292486, 0.345785",\
+ "0.313887, 0.316030, 0.323178, 0.341027, 0.376725",\
+ "0.435753, 0.438083, 0.443130, 0.454659, 0.477717",\
+ "0.887719, 0.887719, 0.887745, 0.887834, 0.888012",\
+ "2.165595, 2.165595, 2.165595, 2.165595, 2.165595",\
+ "0.247574, 0.253139, 0.265920, 0.292486, 0.345785",\
+ "0.313887, 0.316042, 0.323234, 0.341027, 0.376725",\
+ "0.435753, 0.438094, 0.443166, 0.454659, 0.477717",\
+ "0.887719, 0.887719, 0.887746, 0.887834, 0.888012",\
+ "2.165595, 2.165595, 2.165595, 2.165595, 2.165595",\
+ "0.247586, 0.253211, 0.265921, 0.292486, 0.345785",\
+ "0.313891, 0.316070, 0.323235, 0.341027, 0.376725",\
+ "0.435759, 0.438118, 0.443167, 0.454659, 0.477717",\
+ "0.887719, 0.887719, 0.887746, 0.887834, 0.888012",\
+ "2.165595, 2.165595, 2.165595, 2.165595, 2.165595",\
+ "0.247608, 0.253315, 0.265926, 0.292486, 0.345785",\
+ "0.313900, 0.316110, 0.323238, 0.341027, 0.376725",\
+ "0.435772, 0.438153, 0.443169, 0.454659, 0.477717",\
+ "0.887719, 0.887719, 0.887746, 0.887834, 0.888012",\
+ "2.165595, 2.165595, 2.165595, 2.165595, 2.165595",\
+ "0.247822, 0.254533, 0.266196, 0.292595, 0.345785",\
+ "0.313983, 0.316581, 0.323419, 0.341101, 0.376725",\
+ "0.435894, 0.438565, 0.443286, 0.454706, 0.477717",\
+ "0.887719, 0.887719, 0.887747, 0.887835, 0.888012",\
+ "2.165595, 2.165595, 2.165595, 2.165595, 2.165595");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.262843, 0.528242, 0.786656, 1.223429, 2.096977",\
+ "0.297860, 0.563309, 0.821748, 1.258583, 2.132253",\
+ "0.348398, 0.613835, 0.872220, 1.308997, 2.182551",\
+ "0.477894, 0.743312, 1.001644, 1.438265, 2.311508",\
+ "0.815730, 1.081145, 1.339443, 1.775996, 2.649102",\
+ "0.351215, 0.615754, 0.874118, 1.310142, 2.182910",\
+ "0.386233, 0.650820, 0.909210, 1.345296, 2.218187",\
+ "0.436771, 0.701346, 0.959682, 1.395710, 2.268485",\
+ "0.566267, 0.830823, 1.089105, 1.524978, 2.397442",\
+ "0.904103, 1.168656, 1.426904, 1.862709, 2.735036",\
+ "0.441060, 0.704611, 0.962078, 1.397763, 2.269865",\
+ "0.476082, 0.739678, 0.997171, 1.432917, 2.305142",\
+ "0.526621, 0.790203, 1.047642, 1.483330, 2.355440",\
+ "0.656116, 0.919680, 1.177066, 1.612599, 2.484397",\
+ "0.993953, 1.257513, 1.514864, 1.950330, 2.821991",\
+ "0.505420, 0.770065, 1.026212, 1.461676, 2.333374",\
+ "0.540445, 0.805132, 1.061305, 1.496829, 2.368651",\
+ "0.590985, 0.855656, 1.111776, 1.547243, 2.418949",\
+ "0.720478, 0.985133, 1.241200, 1.676511, 2.547906",\
+ "1.058316, 1.322965, 1.578998, 2.014242, 2.885500",\
+ "0.846347, 1.132446, 1.377748, 1.810882, 2.678830",\
+ "0.881392, 1.167515, 1.412841, 1.846036, 2.714107",\
+ "0.931940, 1.218030, 1.463312, 1.896449, 2.764405",\
+ "1.061427, 1.347505, 1.592734, 2.025717, 2.893362",\
+ "1.399268, 1.685334, 1.930532, 2.363448, 3.230956");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.080673, 0.084979, 0.095299, 0.118135, 0.163806",\
+ "0.121691, 0.122534, 0.126916, 0.139600, 0.164968",\
+ "0.211121, 0.211686, 0.213778, 0.219384, 0.230596",\
+ "0.447776, 0.448001, 0.448970, 0.451208, 0.455684",\
+ "1.099948, 1.099948, 1.099948, 1.099948, 1.099948",\
+ "0.080714, 0.085004, 0.095371, 0.118135, 0.163806",\
+ "0.121700, 0.122539, 0.126956, 0.139600, 0.164968",\
+ "0.211127, 0.211689, 0.213796, 0.219384, 0.230596",\
+ "0.447776, 0.448003, 0.448977, 0.451208, 0.455684",\
+ "1.099948, 1.099948, 1.099948, 1.099948, 1.099948",\
+ "0.080840, 0.085056, 0.095372, 0.118135, 0.163806",\
+ "0.121728, 0.122548, 0.126957, 0.139600, 0.164968",\
+ "0.211145, 0.211695, 0.213796, 0.219384, 0.230596",\
+ "0.447776, 0.448008, 0.448977, 0.451208, 0.455684",\
+ "1.099948, 1.099948, 1.099948, 1.099948, 1.099948",\
+ "0.080962, 0.085133, 0.095376, 0.118135, 0.163806",\
+ "0.121755, 0.122562, 0.126959, 0.139600, 0.164968",\
+ "0.211163, 0.211704, 0.213797, 0.219384, 0.230596",\
+ "0.447776, 0.448014, 0.448977, 0.451208, 0.455684",\
+ "1.099948, 1.099948, 1.099948, 1.099948, 1.099948",\
+ "0.081743, 0.086029, 0.095607, 0.118229, 0.163806",\
+ "0.121930, 0.122722, 0.127087, 0.139652, 0.164968",\
+ "0.211276, 0.211814, 0.213854, 0.219407, 0.230596",\
+ "0.447776, 0.448092, 0.449000, 0.451217, 0.455684",\
+ "1.099948, 1.099948, 1.099948, 1.099948, 1.099948");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_2468*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.515413, 0.691814, 0.891527, 1.333812, 2.218381",\
+ "0.561951, 0.738352, 0.942909, 1.385434, 2.270486",\
+ "0.647617, 0.824017, 1.044838, 1.487336, 2.372332",\
+ "0.870983, 1.047384, 1.281978, 1.724502, 2.609548",\
+ "1.434991, 1.611392, 1.857594, 2.300149, 3.185259",\
+ "0.602824, 0.779196, 0.979010, 1.420527, 2.304315",\
+ "0.649362, 0.825734, 1.030392, 1.472149, 2.356420",\
+ "0.735027, 0.911399, 1.132321, 1.574051, 2.458265",\
+ "0.958394, 1.134766, 1.369462, 1.811216, 2.695482",\
+ "1.522402, 1.698774, 1.945078, 2.386864, 3.271193",\
+ "0.683657, 0.859530, 1.066972, 1.508148, 2.391270",\
+ "0.730195, 0.906068, 1.118354, 1.559771, 2.443375",\
+ "0.815861, 0.991733, 1.220284, 1.661672, 2.545220",\
+ "1.039228, 1.215100, 1.457424, 1.898838, 2.782437",\
+ "1.603236, 1.779108, 2.033040, 2.474486, 3.358148",\
+ "0.741263, 0.917078, 1.131107, 1.572062, 2.454779",\
+ "0.787801, 0.963617, 1.182490, 1.623684, 2.506884",\
+ "0.873466, 1.049282, 1.284419, 1.725586, 2.608729",\
+ "1.096833, 1.272649, 1.521559, 1.962752, 2.845946",\
+ "1.660841, 1.842122, 2.097176, 2.538399, 3.421657",\
+ "1.043307, 1.237664, 1.482704, 1.921298, 2.800235",\
+ "1.089845, 1.288972, 1.534089, 1.972921, 2.852340",\
+ "1.175511, 1.390910, 1.636018, 2.074823, 2.954185",\
+ "1.398878, 1.628042, 1.873158, 2.311989, 3.191402",\
+ "1.962886, 2.203649, 2.448775, 2.887636, 3.767113");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.052252, 0.052252, 0.052266, 0.052296, 0.052356",\
+ "0.174387, 0.174387, 0.174377, 0.174356, 0.174314",\
+ "0.378093, 0.378093, 0.378069, 0.378020, 0.377921",\
+ "0.885671, 0.885671, 0.885661, 0.885629, 0.885567",\
+ "2.162771, 2.162771, 2.162787, 2.162833, 2.162925",\
+ "0.052252, 0.052252, 0.052266, 0.052296, 0.052356",\
+ "0.174387, 0.174387, 0.174377, 0.174356, 0.174314",\
+ "0.378093, 0.378093, 0.378069, 0.378020, 0.377921",\
+ "0.885671, 0.885671, 0.885661, 0.885629, 0.885567",\
+ "2.162771, 2.162771, 2.162787, 2.162833, 2.162925",\
+ "0.052252, 0.052252, 0.052266, 0.052296, 0.052356",\
+ "0.174387, 0.174387, 0.174377, 0.174356, 0.174314",\
+ "0.378093, 0.378093, 0.378069, 0.378020, 0.377921",\
+ "0.885671, 0.885671, 0.885661, 0.885629, 0.885567",\
+ "2.162771, 2.162771, 2.162787, 2.162833, 2.162925",\
+ "0.052252, 0.052252, 0.052266, 0.052296, 0.052356",\
+ "0.174387, 0.174387, 0.174377, 0.174356, 0.174314",\
+ "0.378093, 0.378093, 0.378069, 0.378020, 0.377921",\
+ "0.885671, 0.885671, 0.885661, 0.885629, 0.885567",\
+ "2.162771, 2.162772, 2.162787, 2.162833, 2.162925",\
+ "0.052252, 0.052255, 0.052266, 0.052296, 0.052356",\
+ "0.174387, 0.174384, 0.174376, 0.174356, 0.174314",\
+ "0.378093, 0.378087, 0.378069, 0.378020, 0.377921",\
+ "0.885671, 0.885670, 0.885660, 0.885629, 0.885567",\
+ "2.162771, 2.162773, 2.162788, 2.162833, 2.162925");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.453647, 0.675841, 0.933001, 1.375582, 2.260746",\
+ "0.507082, 0.698390, 0.955556, 1.398159, 2.283364",\
+ "0.567945, 0.744346, 0.996821, 1.439418, 2.324611",\
+ "0.702647, 0.879047, 1.118872, 1.561445, 2.446589",\
+ "1.049097, 1.225497, 1.451556, 1.894090, 2.779158",\
+ "0.541058, 0.763317, 1.020484, 1.462297, 2.346680",\
+ "0.594493, 0.785866, 1.043040, 1.484873, 2.369298",\
+ "0.655356, 0.831728, 1.084305, 1.526132, 2.410545",\
+ "0.790057, 0.966429, 1.206356, 1.648159, 2.532523",\
+ "1.136508, 1.312880, 1.539039, 1.980805, 2.865092",\
+ "0.621891, 0.852130, 1.108447, 1.549919, 2.433635",\
+ "0.675327, 0.874679, 1.131002, 1.572495, 2.456253",\
+ "0.736189, 0.915945, 1.172267, 1.613754, 2.497500",\
+ "0.870891, 1.046763, 1.294318, 1.735781, 2.619478",\
+ "1.217341, 1.393214, 1.627002, 2.068427, 2.952047",\
+ "0.679497, 0.917520, 1.172582, 1.613832, 2.497144",\
+ "0.732932, 0.940069, 1.195138, 1.636409, 2.519762",\
+ "0.793795, 0.981336, 1.236402, 1.677668, 2.561009",\
+ "0.928497, 1.104312, 1.358454, 1.799695, 2.682987",\
+ "1.274947, 1.450762, 1.691137, 2.132340, 3.015556",\
+ "0.991265, 1.279047, 1.524182, 1.963070, 2.842600",\
+ "1.034976, 1.301596, 1.546737, 1.985646, 2.865218",\
+ "1.095839, 1.342862, 1.588002, 2.026905, 2.906465",\
+ "1.230541, 1.464921, 1.710053, 2.148932, 3.028443",\
+ "1.576991, 1.797617, 2.042736, 2.481577, 3.361012");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.060254, 0.060270, 0.060353, 0.060563, 0.060983",\
+ "0.114289, 0.114310, 0.114425, 0.114712, 0.115288",\
+ "0.199967, 0.199967, 0.200091, 0.200354, 0.200879",\
+ "0.445518, 0.445518, 0.445532, 0.445561, 0.445620",\
+ "1.101422, 1.101422, 1.101415, 1.101402, 1.101375",\
+ "0.060254, 0.060270, 0.060354, 0.060563, 0.060983",\
+ "0.114289, 0.114310, 0.114425, 0.114712, 0.115288",\
+ "0.199967, 0.199967, 0.200092, 0.200354, 0.200879",\
+ "0.445518, 0.445518, 0.445532, 0.445561, 0.445620",\
+ "1.101422, 1.101422, 1.101415, 1.101402, 1.101375",\
+ "0.060254, 0.060270, 0.060354, 0.060563, 0.060983",\
+ "0.114289, 0.114311, 0.114426, 0.114712, 0.115288",\
+ "0.199967, 0.199987, 0.200092, 0.200354, 0.200879",\
+ "0.445518, 0.445518, 0.445532, 0.445561, 0.445620",\
+ "1.101422, 1.101422, 1.101415, 1.101402, 1.101375",\
+ "0.060254, 0.060271, 0.060354, 0.060563, 0.060983",\
+ "0.114289, 0.114311, 0.114426, 0.114712, 0.115288",\
+ "0.199967, 0.199988, 0.200092, 0.200354, 0.200879",\
+ "0.445518, 0.445518, 0.445532, 0.445561, 0.445620",\
+ "1.101422, 1.101422, 1.101415, 1.101402, 1.101375",\
+ "0.060254, 0.060277, 0.060356, 0.060564, 0.060983",\
+ "0.114289, 0.114319, 0.114428, 0.114714, 0.115288",\
+ "0.199967, 0.199995, 0.200095, 0.200355, 0.200879",\
+ "0.445518, 0.445521, 0.445532, 0.445561, 0.445620",\
+ "1.101422, 1.101420, 1.101415, 1.101402, 1.101375");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.248860, 0.467650, 0.646178, 0.935763, 1.497723",\
+ "0.314404, 0.533194, 0.711724, 1.001313, 1.563285",\
+ "0.400894, 0.619685, 0.798218, 1.087823, 1.649829",\
+ "0.616887, 0.835682, 1.014242, 1.303952, 1.866190",\
+ "1.171447, 1.390243, 1.568813, 1.858561, 2.420885",\
+ "0.337260, 0.554969, 0.733459, 1.023068, 1.585076",\
+ "0.402804, 0.620513, 0.799004, 1.088619, 1.650638",\
+ "0.489294, 0.707003, 0.885499, 1.175128, 1.737183",\
+ "0.705288, 0.923001, 1.101523, 1.391257, 1.953543",\
+ "1.259847, 1.477562, 1.656094, 1.945866, 2.508239",\
+ "0.426158, 0.635305, 0.813486, 1.103096, 1.665108",\
+ "0.491702, 0.700850, 0.879031, 1.168647, 1.730670",\
+ "0.578191, 0.787340, 0.965526, 1.255157, 1.817214",\
+ "0.794185, 1.003338, 1.181550, 1.471285, 2.033575",\
+ "1.348745, 1.557899, 1.736121, 2.025895, 2.588270",\
+ "0.489181, 0.693123, 0.871180, 1.160527, 1.722125",\
+ "0.554726, 0.758668, 0.936725, 1.226078, 1.787687",\
+ "0.641215, 0.845158, 1.023220, 1.312588, 1.874232",\
+ "0.857210, 1.061156, 1.239244, 1.528717, 2.090593",\
+ "1.411770, 1.615717, 1.793815, 2.083326, 2.645288",\
+ "0.817972, 0.998369, 1.174837, 1.463701, 2.024349",\
+ "0.883517, 1.063914, 1.240382, 1.529251, 2.089911",\
+ "0.970006, 1.150404, 1.326877, 1.615761, 2.176455",\
+ "1.186001, 1.366402, 1.542901, 1.831890, 2.392817",\
+ "1.740560, 1.920963, 2.097472, 2.386500, 2.947513");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.135658, 0.135697, 0.135954, 0.136439, 0.137406",\
+ "0.233360, 0.233354, 0.233337, 0.233240, 0.233017",\
+ "0.397359, 0.397363, 0.397387, 0.397480, 0.397688",\
+ "0.873501, 0.873500, 0.873498, 0.873489, 0.873469",\
+ "2.140095, 2.140101, 2.140141, 2.140298, 2.140647",\
+ "0.135659, 0.135697, 0.135954, 0.136439, 0.137406",\
+ "0.233360, 0.233354, 0.233337, 0.233240, 0.233017",\
+ "0.397359, 0.397363, 0.397387, 0.397480, 0.397688",\
+ "0.873501, 0.873500, 0.873498, 0.873489, 0.873469",\
+ "2.140095, 2.140101, 2.140141, 2.140298, 2.140647",\
+ "0.135662, 0.135697, 0.135954, 0.136439, 0.137406",\
+ "0.233359, 0.233354, 0.233337, 0.233240, 0.233017",\
+ "0.397360, 0.397363, 0.397387, 0.397480, 0.397688",\
+ "0.873500, 0.873500, 0.873498, 0.873489, 0.873469",\
+ "2.140095, 2.140101, 2.140141, 2.140298, 2.140647",\
+ "0.135665, 0.135698, 0.135954, 0.136441, 0.137409",\
+ "0.233359, 0.233354, 0.233337, 0.233240, 0.233016",\
+ "0.397360, 0.397363, 0.397387, 0.397480, 0.397689",\
+ "0.873500, 0.873500, 0.873498, 0.873489, 0.873469",\
+ "2.140096, 2.140101, 2.140141, 2.140298, 2.140648",\
+ "0.135663, 0.135699, 0.135954, 0.136442, 0.137411",\
+ "0.233359, 0.233354, 0.233337, 0.233240, 0.233016",\
+ "0.397360, 0.397363, 0.397387, 0.397480, 0.397689",\
+ "0.873500, 0.873500, 0.873498, 0.873489, 0.873469",\
+ "2.140096, 2.140101, 2.140141, 2.140299, 2.140649");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.265941, 0.478440, 0.661761, 0.953483, 1.516542",\
+ "0.295974, 0.514750, 0.693420, 0.983435, 1.546355",\
+ "0.342294, 0.561099, 0.739726, 1.029692, 1.592503",\
+ "0.466491, 0.685293, 0.863899, 1.153787, 1.716424",\
+ "0.798732, 1.017531, 1.196112, 1.485904, 2.048326",\
+ "0.354342, 0.565759, 0.749042, 1.040788, 1.603895",\
+ "0.384375, 0.602069, 0.780701, 1.070740, 1.633708",\
+ "0.430695, 0.648418, 0.827006, 1.116997, 1.679856",\
+ "0.554892, 0.772612, 0.951180, 1.241092, 1.803777",\
+ "0.887133, 1.104849, 1.283393, 1.573209, 2.135679",\
+ "0.443241, 0.646096, 0.829069, 1.120816, 1.683927",\
+ "0.473273, 0.682406, 0.860728, 1.150768, 1.713740",\
+ "0.519593, 0.728755, 0.907033, 1.197025, 1.759888",\
+ "0.643790, 0.852948, 1.031207, 1.321121, 1.883808",\
+ "0.976031, 1.185186, 1.363420, 1.653237, 2.215711",\
+ "0.506266, 0.703926, 0.886774, 1.178249, 1.740947",\
+ "0.536299, 0.740226, 0.918422, 1.208200, 1.770759",\
+ "0.582618, 0.786573, 0.964728, 1.254457, 1.816907",\
+ "0.706815, 0.910767, 1.088901, 1.378552, 1.940827",\
+ "1.039055, 1.243004, 1.421114, 1.710669, 2.272729",\
+ "0.825950, 1.009259, 1.190433, 1.481423, 2.043174",\
+ "0.864615, 1.045486, 1.222079, 1.511375, 2.072986",\
+ "0.911409, 1.091819, 1.268385, 1.557632, 2.119133",\
+ "1.035605, 1.216013, 1.392558, 1.681726, 2.243053",\
+ "1.367846, 1.548250, 1.724771, 2.013843, 2.574954");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.067593, 0.067594, 0.067599, 0.067617, 0.067659",\
+ "0.104760, 0.104760, 0.104762, 0.104772, 0.104794",\
+ "0.190700, 0.190700, 0.190699, 0.190697, 0.190692",\
+ "0.432608, 0.432613, 0.432644, 0.432766, 0.433037",\
+ "1.067886, 1.067868, 1.067749, 1.067290, 1.066264",\
+ "0.067593, 0.067594, 0.067599, 0.067617, 0.067659",\
+ "0.104760, 0.104760, 0.104762, 0.104772, 0.104794",\
+ "0.190700, 0.190700, 0.190699, 0.190697, 0.190692",\
+ "0.432608, 0.432613, 0.432644, 0.432766, 0.433037",\
+ "1.067886, 1.067868, 1.067749, 1.067290, 1.066264",\
+ "0.067593, 0.067594, 0.067599, 0.067617, 0.067659",\
+ "0.104760, 0.104760, 0.104762, 0.104772, 0.104794",\
+ "0.190700, 0.190700, 0.190699, 0.190697, 0.190692",\
+ "0.432609, 0.432613, 0.432644, 0.432766, 0.433037",\
+ "1.067884, 1.067868, 1.067749, 1.067290, 1.066264",\
+ "0.067593, 0.067594, 0.067599, 0.067617, 0.067659",\
+ "0.104760, 0.104760, 0.104762, 0.104772, 0.104794",\
+ "0.190700, 0.190700, 0.190699, 0.190697, 0.190692",\
+ "0.432609, 0.432613, 0.432644, 0.432766, 0.433038",\
+ "1.067883, 1.067868, 1.067749, 1.067289, 1.066261",\
+ "0.067593, 0.067594, 0.067599, 0.067617, 0.067659",\
+ "0.104760, 0.104760, 0.104762, 0.104772, 0.104794",\
+ "0.190700, 0.190700, 0.190699, 0.190697, 0.190692",\
+ "0.432609, 0.432613, 0.432644, 0.432766, 0.433039",\
+ "1.067883, 1.067867, 1.067749, 1.067287, 1.066258");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_min_2547*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.230530, 0.471836, 0.662565, 0.965687, 1.550670",\
+ "0.296073, 0.537386, 0.728118, 1.031247, 1.616246",\
+ "0.382561, 0.623892, 0.814634, 1.117786, 1.702834",\
+ "0.598538, 0.839995, 1.030804, 1.334111, 1.919485",\
+ "1.153092, 1.394595, 1.585429, 1.888794, 2.474288",\
+ "0.318838, 0.559155, 0.749846, 1.052992, 1.638023",\
+ "0.384382, 0.624704, 0.815398, 1.118552, 1.703600",\
+ "0.470869, 0.711210, 0.901915, 1.205091, 1.790187",\
+ "0.686851, 0.927314, 1.118085, 1.421416, 2.006838",\
+ "1.241406, 1.481914, 1.672710, 1.976099, 2.561641",\
+ "0.407830, 0.639488, 0.829873, 1.133020, 1.718055",\
+ "0.473374, 0.705038, 0.895425, 1.198581, 1.783631",\
+ "0.559863, 0.791544, 0.981942, 1.285120, 1.870219",\
+ "0.775854, 1.007647, 1.198112, 1.501445, 2.086870",\
+ "1.330413, 1.562247, 1.752737, 2.056127, 2.641673",\
+ "0.471102, 0.697352, 0.887595, 1.190479, 1.775129",\
+ "0.536647, 0.762902, 0.953148, 1.256040, 1.840706",\
+ "0.623137, 0.849408, 1.039664, 1.342579, 1.927294",\
+ "0.839138, 1.065512, 1.255835, 1.558905, 2.143945",\
+ "1.393700, 1.620112, 1.810460, 2.113587, 2.698749",\
+ "0.805138, 1.002911, 1.191255, 1.493676, 2.077422",\
+ "0.870685, 1.068460, 1.256808, 1.559237, 2.142998",\
+ "0.957184, 1.154967, 1.343324, 1.645776, 2.229586",\
+ "1.173243, 1.371074, 1.559495, 1.862102, 2.446239",\
+ "1.727827, 1.925676, 2.114120, 2.416785, 3.001042");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.135507, 0.136708, 0.137351, 0.137726, 0.138133",\
+ "0.232782, 0.232782, 0.232782, 0.232782, 0.232782",\
+ "0.397345, 0.397457, 0.397518, 0.397656, 0.397948",\
+ "0.873409, 0.873409, 0.873409, 0.873409, 0.873409",\
+ "2.140071, 2.140260, 2.140361, 2.140594, 2.141085",\
+ "0.135540, 0.136708, 0.137351, 0.137726, 0.138133",\
+ "0.232782, 0.232782, 0.232782, 0.232782, 0.232782",\
+ "0.397348, 0.397457, 0.397518, 0.397656, 0.397948",\
+ "0.873409, 0.873409, 0.873409, 0.873409, 0.873409",\
+ "2.140076, 2.140260, 2.140361, 2.140594, 2.141085",\
+ "0.135636, 0.136708, 0.137351, 0.137726, 0.138133",\
+ "0.232782, 0.232782, 0.232782, 0.232782, 0.232782",\
+ "0.397357, 0.397457, 0.397518, 0.397656, 0.397948",\
+ "0.873409, 0.873409, 0.873409, 0.873409, 0.873409",\
+ "2.140091, 2.140260, 2.140361, 2.140594, 2.141085",\
+ "0.135724, 0.136712, 0.137353, 0.137727, 0.138134",\
+ "0.232782, 0.232782, 0.232782, 0.232782, 0.232782",\
+ "0.397365, 0.397458, 0.397518, 0.397657, 0.397949",\
+ "0.873409, 0.873409, 0.873409, 0.873409, 0.873409",\
+ "2.140105, 2.140261, 2.140362, 2.140594, 2.141086",\
+ "0.136284, 0.136744, 0.137353, 0.137727, 0.138135",\
+ "0.232782, 0.232782, 0.232782, 0.232782, 0.232782",\
+ "0.397418, 0.397461, 0.397518, 0.397657, 0.397950",\
+ "0.873409, 0.873409, 0.873409, 0.873409, 0.873409",\
+ "2.140193, 2.140266, 2.140362, 2.140595, 2.141087");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.247536, 0.465909, 0.655111, 0.957872, 1.542809",\
+ "0.277578, 0.504859, 0.694166, 0.997452, 1.583596",\
+ "0.323906, 0.557991, 0.747485, 1.050859, 1.637228",\
+ "0.448115, 0.688036, 0.877811, 1.181150, 1.767445",\
+ "0.780371, 1.021927, 1.212790, 1.516219, 2.101851",\
+ "0.335860, 0.553227, 0.742392, 1.045177, 1.630162",\
+ "0.365901, 0.592177, 0.781447, 1.084757, 1.670949",\
+ "0.412227, 0.645309, 0.834766, 1.138164, 1.724581",\
+ "0.536433, 0.775355, 0.965092, 1.268455, 1.854799",\
+ "0.868686, 1.109246, 1.300071, 1.603524, 2.189205",\
+ "0.424900, 0.633561, 0.822419, 1.125205, 1.710194",\
+ "0.454934, 0.672511, 0.861474, 1.164785, 1.750981",\
+ "0.501255, 0.725643, 0.914793, 1.218192, 1.804613",\
+ "0.625454, 0.855688, 1.045119, 1.348483, 1.934830",\
+ "0.957698, 1.189579, 1.380097, 1.683553, 2.269236",\
+ "0.488215, 0.691382, 0.880139, 1.182665, 1.767268",\
+ "0.518244, 0.730333, 0.919194, 1.222246, 1.808058",\
+ "0.564561, 0.783480, 0.972513, 1.275653, 1.861690",\
+ "0.688753, 0.913547, 1.102839, 1.405944, 1.991908",\
+ "1.020988, 1.247444, 1.437820, 1.741013, 2.326312",\
+ "0.816645, 0.996641, 1.183799, 1.485862, 2.069561",\
+ "0.852522, 1.035597, 1.222854, 1.525444, 2.110354",\
+ "0.898812, 1.088847, 1.276173, 1.578852, 2.163987",\
+ "1.022959, 1.219069, 1.406500, 1.709143, 2.294204",\
+ "1.355140, 1.553009, 1.741481, 2.044211, 2.628607");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.067590, 0.067613, 0.067625, 0.067653, 0.067711",\
+ "0.104758, 0.104770, 0.104776, 0.104791, 0.104822",\
+ "0.190676, 0.190676, 0.190676, 0.190676, 0.190676",\
+ "0.432590, 0.432736, 0.432815, 0.432996, 0.433377",\
+ "1.063080, 1.063080, 1.063080, 1.063080, 1.063080",\
+ "0.067591, 0.067613, 0.067625, 0.067653, 0.067711",\
+ "0.104758, 0.104770, 0.104776, 0.104791, 0.104822",\
+ "0.190676, 0.190676, 0.190676, 0.190676, 0.190676",\
+ "0.432594, 0.432736, 0.432815, 0.432996, 0.433377",\
+ "1.063080, 1.063080, 1.063080, 1.063080, 1.063080",\
+ "0.067593, 0.067613, 0.067625, 0.067653, 0.067711",\
+ "0.104759, 0.104770, 0.104776, 0.104791, 0.104822",\
+ "0.190676, 0.190676, 0.190676, 0.190676, 0.190676",\
+ "0.432605, 0.432736, 0.432815, 0.432996, 0.433377",\
+ "1.063080, 1.063080, 1.063080, 1.063080, 1.063080",\
+ "0.067594, 0.067613, 0.067625, 0.067653, 0.067711",\
+ "0.104760, 0.104770, 0.104776, 0.104791, 0.104822",\
+ "0.190676, 0.190676, 0.190676, 0.190676, 0.190676",\
+ "0.432616, 0.432737, 0.432815, 0.432996, 0.433378",\
+ "1.063080, 1.063080, 1.063080, 1.063080, 1.063080",\
+ "0.067593, 0.067614, 0.067625, 0.067653, 0.067711",\
+ "0.104766, 0.104770, 0.104776, 0.104791, 0.104822",\
+ "0.190676, 0.190676, 0.190676, 0.190676, 0.190676",\
+ "0.432685, 0.432741, 0.432815, 0.432997, 0.433379",\
+ "1.063080, 1.063080, 1.063080, 1.063080, 1.063080");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.244473, 0.505671, 0.697935, 0.998174, 1.574785",\
+ "0.300254, 0.556634, 0.748837, 1.048824, 1.624875",\
+ "0.376032, 0.633972, 0.826223, 1.125987, 1.701451",\
+ "0.578226, 0.841738, 1.034663, 1.334155, 1.908979",\
+ "1.122810, 1.385726, 1.587938, 1.887184, 2.461388",\
+ "0.332840, 0.592988, 0.785216, 1.085479, 1.662138",\
+ "0.388618, 0.643952, 0.836118, 1.136129, 1.712228",\
+ "0.464390, 0.721290, 0.913504, 1.213292, 1.788804",\
+ "0.666574, 0.929242, 1.121944, 1.421460, 1.996333",\
+ "1.211151, 1.473226, 1.675219, 1.974489, 2.548742",\
+ "0.422672, 0.673316, 0.865243, 1.165508, 1.742170",\
+ "0.478441, 0.724280, 0.916145, 1.216158, 1.792260",\
+ "0.554191, 0.801618, 0.993531, 1.293321, 1.868836",\
+ "0.756345, 1.010087, 1.201971, 1.501488, 2.076365",\
+ "1.300900, 1.562060, 1.755246, 2.054518, 2.628773",\
+ "0.487019, 0.731152, 0.922971, 1.222957, 1.799227",\
+ "0.542778, 0.782116, 0.973873, 1.273607, 1.849315",\
+ "0.618509, 0.859454, 1.051260, 1.350769, 1.925890",\
+ "0.820633, 1.067923, 1.259699, 1.558936, 2.133417",\
+ "1.365167, 1.621171, 1.812974, 2.111965, 2.685824",\
+ "0.827863, 1.036490, 1.226631, 1.526145, 2.101498",\
+ "0.883564, 1.087454, 1.277533, 1.576794, 2.151585",\
+ "0.959165, 1.164792, 1.354919, 1.653956, 2.228158",\
+ "1.161104, 1.373262, 1.563359, 1.862122, 2.435683",\
+ "1.705499, 1.926510, 2.116634, 2.415150, 2.988089");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.150101, 0.150101, 0.150101, 0.151542, 0.155060",\
+ "0.237371, 0.237371, 0.237371, 0.238239, 0.240357",\
+ "0.400588, 0.400588, 0.400588, 0.400716, 0.401031",\
+ "0.873603, 0.873603, 0.873603, 0.873603, 0.873603",\
+ "2.136242, 2.138523, 2.138971, 2.139329, 2.139329",\
+ "0.150101, 0.150101, 0.150101, 0.151542, 0.155060",\
+ "0.237371, 0.237371, 0.237371, 0.238239, 0.240357",\
+ "0.400588, 0.400588, 0.400588, 0.400716, 0.401031",\
+ "0.873603, 0.873603, 0.873603, 0.873603, 0.873603",\
+ "2.136282, 2.138528, 2.138971, 2.139329, 2.139329",\
+ "0.150101, 0.150101, 0.150101, 0.151542, 0.155060",\
+ "0.237371, 0.237371, 0.237371, 0.238239, 0.240357",\
+ "0.400588, 0.400588, 0.400588, 0.400716, 0.401031",\
+ "0.873603, 0.873603, 0.873603, 0.873603, 0.873603",\
+ "2.136409, 2.138540, 2.138971, 2.139329, 2.139329",\
+ "0.150101, 0.150101, 0.150101, 0.151547, 0.155068",\
+ "0.237371, 0.237371, 0.237371, 0.238242, 0.240362",\
+ "0.400588, 0.400588, 0.400588, 0.400717, 0.401031",\
+ "0.873603, 0.873603, 0.873603, 0.873603, 0.873603",\
+ "2.136531, 2.137884, 2.138973, 2.139329, 2.139329",\
+ "0.150101, 0.150101, 0.150101, 0.151550, 0.155079",\
+ "0.237371, 0.237371, 0.237371, 0.238244, 0.240369",\
+ "0.400588, 0.400588, 0.400588, 0.400717, 0.401032",\
+ "0.873603, 0.873603, 0.873603, 0.873603, 0.873603",\
+ "2.137311, 2.137926, 2.138974, 2.139329, 2.139329");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.243871, 0.423733, 0.615818, 0.915684, 1.491530",\
+ "0.279786, 0.459520, 0.651316, 0.952173, 1.530680",\
+ "0.334281, 0.513862, 0.705260, 1.006477, 1.586195",\
+ "0.467807, 0.647364, 0.838496, 1.139651, 1.719442",\
+ "0.802494, 0.981904, 1.172736, 1.473617, 2.052986",\
+ "0.331272, 0.511050, 0.703099, 1.002989, 1.578883",\
+ "0.367188, 0.546838, 0.738597, 1.039478, 1.618034",\
+ "0.421683, 0.601180, 0.792541, 1.093782, 1.673548",\
+ "0.555208, 0.734681, 0.925777, 1.226957, 1.806796",\
+ "0.889896, 1.069221, 1.260017, 1.560922, 2.140339",\
+ "0.412125, 0.591378, 0.783126, 1.083017, 1.658915",\
+ "0.448040, 0.627166, 0.818624, 1.119507, 1.698066",\
+ "0.502534, 0.681508, 0.872568, 1.173811, 1.753580",\
+ "0.636060, 0.815010, 1.005804, 1.306985, 1.886827",\
+ "0.970746, 1.149549, 1.340044, 1.640951, 2.220371",\
+ "0.469856, 0.649214, 0.840854, 1.140466, 1.715970",\
+ "0.505769, 0.685001, 0.876351, 1.176959, 1.755127",\
+ "0.560262, 0.739342, 0.930294, 1.231264, 1.810644",\
+ "0.693787, 0.872844, 1.063529, 1.364439, 1.943892",\
+ "1.028472, 1.207383, 1.397769, 1.698404, 2.277434",\
+ "0.773472, 0.954547, 1.144514, 1.443653, 2.018239",\
+ "0.809371, 0.990331, 1.180011, 1.480149, 2.057404",\
+ "0.863847, 1.044668, 1.233954, 1.534456, 2.112924",\
+ "0.997369, 1.178169, 1.367189, 1.667630, 2.246172",\
+ "1.332038, 1.512705, 1.701428, 2.001595, 2.579713");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.071845, 0.072069, 0.072077, 0.072933, 0.075022",\
+ "0.105010, 0.105036, 0.105037, 0.105381, 0.106219",\
+ "0.190967, 0.191120, 0.191139, 0.191258, 0.191538",\
+ "0.431534, 0.431534, 0.431534, 0.431534, 0.431534",\
+ "1.063081, 1.064842, 1.065453, 1.065643, 1.065643",\
+ "0.071845, 0.072069, 0.072077, 0.072933, 0.075022",\
+ "0.105010, 0.105036, 0.105037, 0.105381, 0.106219",\
+ "0.190967, 0.191120, 0.191139, 0.191258, 0.191538",\
+ "0.431534, 0.431534, 0.431534, 0.431534, 0.431534",\
+ "1.063081, 1.064842, 1.065453, 1.065643, 1.065643",\
+ "0.071847, 0.072069, 0.072077, 0.072933, 0.075022",\
+ "0.105010, 0.105036, 0.105037, 0.105381, 0.106219",\
+ "0.190967, 0.191120, 0.191139, 0.191258, 0.191538",\
+ "0.431534, 0.431534, 0.431534, 0.431534, 0.431534",\
+ "1.063091, 1.064842, 1.065453, 1.065643, 1.065643",\
+ "0.071849, 0.072070, 0.072077, 0.072936, 0.075027",\
+ "0.105011, 0.105036, 0.105037, 0.105382, 0.106221",\
+ "0.190969, 0.191121, 0.191139, 0.191259, 0.191539",\
+ "0.431534, 0.431534, 0.431534, 0.431534, 0.431534",\
+ "1.063112, 1.064849, 1.065454, 1.065643, 1.065643",\
+ "0.071874, 0.072076, 0.072077, 0.072938, 0.075034",\
+ "0.105014, 0.105037, 0.105037, 0.105382, 0.106223",\
+ "0.190986, 0.191125, 0.191139, 0.191259, 0.191540",\
+ "0.431534, 0.431534, 0.431534, 0.431534, 0.431534",\
+ "1.063308, 1.064895, 1.065455, 1.065643, 1.065643");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_min_2493*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.377825, 0.634223, 0.868848, 1.157402, 1.717689",\
+ "0.428298, 0.684702, 0.914931, 1.203491, 1.763791",\
+ "0.530100, 0.786503, 1.000029, 1.288605, 1.848942",\
+ "0.768016, 1.024419, 1.221793, 1.510395, 2.070789",\
+ "1.340420, 1.596824, 1.783889, 2.072520, 2.632977",\
+ "0.466032, 0.721699, 0.956129, 1.244707, 1.805043",\
+ "0.516506, 0.772177, 1.002212, 1.290796, 1.851145",\
+ "0.618307, 0.873978, 1.087310, 1.375910, 1.936295",\
+ "0.856223, 1.111895, 1.309074, 1.597700, 2.158142",\
+ "1.428628, 1.684300, 1.871170, 2.159825, 2.720331",\
+ "0.554696, 0.810512, 1.036155, 1.324735, 1.885074",\
+ "0.605170, 0.860990, 1.082239, 1.370825, 1.931176",\
+ "0.706971, 0.962791, 1.167337, 1.455939, 2.016327",\
+ "0.944887, 1.200708, 1.389101, 1.677728, 2.238174",\
+ "1.517292, 1.773113, 1.951197, 2.239853, 2.800363",\
+ "0.617648, 0.875902, 1.093848, 1.382165, 1.942089",\
+ "0.668122, 0.926381, 1.139932, 1.428254, 1.988191",\
+ "0.769923, 1.028182, 1.225029, 1.513368, 2.073342",\
+ "1.007839, 1.266098, 1.446793, 1.735158, 2.295189",\
+ "1.580244, 1.831772, 2.008889, 2.297283, 2.857378",\
+ "0.949653, 1.221972, 1.397504, 1.685336, 2.244309",\
+ "1.000127, 1.268054, 1.443587, 1.731425, 2.290411",\
+ "1.101928, 1.353148, 1.528685, 1.816540, 2.375562",\
+ "1.339844, 1.574905, 1.750449, 2.038329, 2.597409",\
+ "1.912249, 2.136994, 2.312545, 2.600454, 3.159598");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.041017, 0.041026, 0.041033, 0.041274, 0.041853",\
+ "0.147926, 0.147927, 0.147928, 0.147959, 0.148033",\
+ "0.374819, 0.374818, 0.374816, 0.374779, 0.374688",\
+ "0.869171, 0.869170, 0.869169, 0.869164, 0.869153",\
+ "2.137120, 2.137120, 2.137119, 2.137116, 2.137110",\
+ "0.041017, 0.041026, 0.041033, 0.041274, 0.041853",\
+ "0.147926, 0.147927, 0.147928, 0.147959, 0.148033",\
+ "0.374819, 0.374818, 0.374816, 0.374779, 0.374688",\
+ "0.869171, 0.869170, 0.869169, 0.869164, 0.869153",\
+ "2.137120, 2.137120, 2.137119, 2.137116, 2.137110",\
+ "0.041017, 0.041026, 0.041033, 0.041274, 0.041853",\
+ "0.147926, 0.147927, 0.147928, 0.147959, 0.148033",\
+ "0.374819, 0.374817, 0.374816, 0.374779, 0.374688",\
+ "0.869171, 0.869170, 0.869169, 0.869164, 0.869153",\
+ "2.137120, 2.137120, 2.137119, 2.137116, 2.137110",\
+ "0.041017, 0.041026, 0.041033, 0.041275, 0.041855",\
+ "0.147926, 0.147927, 0.147928, 0.147959, 0.148033",\
+ "0.374819, 0.374817, 0.374816, 0.374778, 0.374688",\
+ "0.869171, 0.869170, 0.869169, 0.869164, 0.869153",\
+ "2.137120, 2.137120, 2.137119, 2.137116, 2.137110",\
+ "0.041017, 0.041017, 0.041033, 0.041276, 0.041856",\
+ "0.147926, 0.147926, 0.147928, 0.147959, 0.148034",\
+ "0.374819, 0.374819, 0.374816, 0.374778, 0.374687",\
+ "0.869171, 0.869171, 0.869169, 0.869164, 0.869153",\
+ "2.137120, 2.137120, 2.137119, 2.137116, 2.137110");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.419293, 0.629601, 0.807148, 1.095622, 1.655731",\
+ "0.441693, 0.683002, 0.860568, 1.149118, 1.709396",\
+ "0.483042, 0.739446, 0.921121, 1.209730, 1.770140",\
+ "0.605027, 0.861431, 1.052488, 1.341094, 1.901499",\
+ "0.936548, 1.192951, 1.389827, 1.678402, 2.238737",\
+ "0.507500, 0.716919, 0.894429, 1.182927, 1.743084",\
+ "0.529901, 0.770320, 0.947849, 1.236423, 1.796750",\
+ "0.571249, 0.826922, 1.008402, 1.297035, 1.857493",\
+ "0.693234, 0.948907, 1.139769, 1.428399, 1.988852",\
+ "1.024755, 1.280427, 1.477108, 1.765707, 2.326091",\
+ "0.596164, 0.797253, 0.974456, 1.262956, 1.823116",\
+ "0.618565, 0.850654, 1.027876, 1.316451, 1.876781",\
+ "0.659913, 0.911193, 1.088429, 1.377064, 1.937525",\
+ "0.781898, 1.037719, 1.219796, 1.508428, 2.068884",\
+ "1.113419, 1.369240, 1.557135, 1.845736, 2.406122",\
+ "0.659116, 0.855070, 1.032148, 1.320385, 1.880130",\
+ "0.681517, 0.908471, 1.085568, 1.373881, 1.933796",\
+ "0.722865, 0.969009, 1.146121, 1.434493, 1.994540",\
+ "0.844850, 1.100376, 1.277488, 1.565857, 2.125898",\
+ "1.176371, 1.434630, 1.614827, 1.903165, 2.463137",\
+ "0.981445, 1.160292, 1.335804, 1.623556, 2.182350",\
+ "1.013522, 1.213693, 1.389224, 1.677052, 2.236016",\
+ "1.054870, 1.274231, 1.449777, 1.737664, 2.296760",\
+ "1.176855, 1.405599, 1.581144, 1.869029, 2.428119",\
+ "1.508376, 1.742946, 1.918483, 2.206336, 2.765357");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.045770, 0.045770, 0.045769, 0.045752, 0.045711",\
+ "0.091340, 0.091340, 0.091340, 0.091330, 0.091307",\
+ "0.185791, 0.185791, 0.185790, 0.185786, 0.185775",\
+ "0.432252, 0.432252, 0.432252, 0.432251, 0.432251",\
+ "1.064249, 1.064249, 1.064249, 1.064249, 1.064250",\
+ "0.045770, 0.045770, 0.045769, 0.045752, 0.045711",\
+ "0.091340, 0.091340, 0.091340, 0.091330, 0.091307",\
+ "0.185791, 0.185791, 0.185790, 0.185786, 0.185775",\
+ "0.432252, 0.432252, 0.432252, 0.432251, 0.432251",\
+ "1.064249, 1.064249, 1.064249, 1.064249, 1.064250",\
+ "0.045770, 0.045770, 0.045769, 0.045752, 0.045711",\
+ "0.091340, 0.091340, 0.091340, 0.091330, 0.091307",\
+ "0.185791, 0.185791, 0.185790, 0.185786, 0.185775",\
+ "0.432252, 0.432252, 0.432252, 0.432251, 0.432251",\
+ "1.064249, 1.064249, 1.064249, 1.064249, 1.064250",\
+ "0.045770, 0.045770, 0.045769, 0.045752, 0.045711",\
+ "0.091340, 0.091340, 0.091340, 0.091330, 0.091307",\
+ "0.185791, 0.185791, 0.185790, 0.185786, 0.185775",\
+ "0.432252, 0.432252, 0.432252, 0.432251, 0.432251",\
+ "1.064249, 1.064249, 1.064249, 1.064249, 1.064250",\
+ "0.045770, 0.045770, 0.045769, 0.045752, 0.045711",\
+ "0.091340, 0.091340, 0.091340, 0.091330, 0.091307",\
+ "0.185791, 0.185791, 0.185790, 0.185786, 0.185775",\
+ "0.432252, 0.432252, 0.432252, 0.432251, 0.432251",\
+ "1.064249, 1.064249, 1.064249, 1.064249, 1.064250");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[10]_redg_min_2445*/
+
+} /* end of pin tl_o[10] */
+
+pin("tl_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.020161 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.555398, 0.819461, 1.110403, 1.621818, 2.644648",\
+ "0.601280, 0.865373, 1.156432, 1.668153, 2.691596",\
+ "0.685796, 0.949972, 1.241371, 1.753978, 2.779193",\
+ "0.906647, 1.170955, 1.462887, 1.976883, 3.004877",\
+ "1.467724, 1.732179, 2.024706, 2.540253, 3.571347",\
+ "0.642813, 0.907018, 1.198106, 1.708533, 2.730582",\
+ "0.688695, 0.952929, 1.244136, 1.754869, 2.777529",\
+ "0.773211, 1.037529, 1.329078, 1.840694, 2.865127",\
+ "0.994062, 1.258512, 1.550598, 2.063599, 3.090810",\
+ "1.555139, 1.819737, 2.112422, 2.626968, 3.657281",\
+ "0.724929, 0.996034, 1.286073, 1.796156, 2.817537",\
+ "0.770813, 1.041946, 1.332103, 1.842491, 2.864485",\
+ "0.855331, 1.126547, 1.417045, 1.928316, 2.952082",\
+ "1.076186, 1.347532, 1.638566, 2.151221, 3.177765",\
+ "1.637269, 1.908760, 2.200390, 2.714591, 3.744236",\
+ "0.787882, 1.061721, 1.350220, 1.860070, 2.881046",\
+ "0.833767, 1.107633, 1.396250, 1.906405, 2.927994",\
+ "0.918287, 1.192236, 1.481192, 1.992230, 3.015591",\
+ "1.139145, 1.413225, 1.702713, 2.215135, 3.241274",\
+ "1.700230, 1.974455, 2.264537, 2.778505, 3.807745",\
+ "1.119904, 1.426659, 1.702520, 2.209597, 3.226502",\
+ "1.165792, 1.472579, 1.748554, 2.255933, 3.273450",\
+ "1.250324, 1.557204, 1.833505, 2.341762, 3.361047",\
+ "1.471201, 1.778225, 2.055039, 2.564673, 3.586730",\
+ "2.032307, 2.339493, 2.616879, 3.128049, 4.153201");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.051283, 0.051370, 0.051891, 0.053400, 0.056417",\
+ "0.173670, 0.173612, 0.173379, 0.172770, 0.171552",\
+ "0.376316, 0.376196, 0.375752, 0.374635, 0.372400",\
+ "0.881676, 0.881670, 0.881647, 0.881590, 0.881477",\
+ "2.159552, 2.159744, 2.159980, 2.159997, 2.160033",\
+ "0.051283, 0.051370, 0.051896, 0.053400, 0.056417",\
+ "0.173670, 0.173612, 0.173377, 0.172770, 0.171552",\
+ "0.376316, 0.376195, 0.375749, 0.374635, 0.372400",\
+ "0.881676, 0.881670, 0.881647, 0.881590, 0.881477",\
+ "2.159552, 2.159745, 2.159980, 2.159997, 2.160033",\
+ "0.051286, 0.051372, 0.051896, 0.053400, 0.056417",\
+ "0.173668, 0.173611, 0.173377, 0.172770, 0.171552",\
+ "0.376312, 0.376193, 0.375749, 0.374635, 0.372400",\
+ "0.881675, 0.881670, 0.881647, 0.881590, 0.881477",\
+ "2.159557, 2.159749, 2.159980, 2.159997, 2.160033",\
+ "0.051287, 0.051374, 0.051896, 0.053400, 0.056417",\
+ "0.173667, 0.173610, 0.173377, 0.172770, 0.171552",\
+ "0.376309, 0.376191, 0.375749, 0.374635, 0.372400",\
+ "0.881675, 0.881670, 0.881647, 0.881590, 0.881477",\
+ "2.159559, 2.159753, 2.159980, 2.159997, 2.160033",\
+ "0.051300, 0.051396, 0.051912, 0.053406, 0.056417",\
+ "0.173659, 0.173595, 0.173370, 0.172767, 0.171552",\
+ "0.376292, 0.376160, 0.375737, 0.374630, 0.372400",\
+ "0.881675, 0.881668, 0.881646, 0.881590, 0.881477",\
+ "2.159577, 2.159810, 2.159980, 2.159997, 2.160033");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.496610, 0.760268, 1.051112, 1.563657, 2.588749",\
+ "0.547372, 0.811417, 1.102287, 1.613514, 2.635968",\
+ "0.606137, 0.870487, 1.162590, 1.677032, 2.705914",\
+ "0.741015, 1.005340, 1.297339, 1.811510, 2.839852",\
+ "1.088533, 1.352702, 1.644074, 2.156609, 3.181679",\
+ "0.584025, 0.847822, 1.138818, 1.650373, 2.674682",\
+ "0.634786, 0.898974, 1.189989, 1.700229, 2.721902",\
+ "0.693552, 0.958046, 1.250303, 1.763747, 2.791848",\
+ "0.828430, 1.092898, 1.385051, 1.898225, 2.925786",\
+ "1.175948, 1.440259, 1.731781, 2.243324, 3.267613",\
+ "0.666128, 0.936832, 1.226786, 1.737995, 2.761637",\
+ "0.716902, 0.987989, 1.277956, 1.787852, 2.808857",\
+ "0.775678, 1.047066, 1.338270, 1.851369, 2.878803",\
+ "0.910556, 1.181918, 1.473018, 1.985848, 3.012741",\
+ "1.258068, 1.529277, 1.819748, 2.330947, 3.354568",\
+ "0.729072, 1.002510, 1.290933, 1.801909, 2.825146",\
+ "0.779855, 1.053676, 1.342103, 1.851766, 2.872366",\
+ "0.838638, 1.112759, 1.402418, 1.915283, 2.942312",\
+ "0.973515, 1.247610, 1.537165, 2.049762, 3.076250",\
+ "1.321024, 1.594967, 1.883895, 2.394861, 3.418077",\
+ "1.061036, 1.367345, 1.643245, 2.151441, 3.170603",\
+ "1.111874, 1.418610, 1.694402, 2.201292, 3.217822",\
+ "1.170700, 1.477770, 1.754749, 2.264823, 3.287768",\
+ "1.305573, 1.612615, 1.889494, 2.399300, 3.421706",\
+ "1.653060, 1.959932, 2.236207, 2.744392, 3.763533");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.056276, 0.056853, 0.059193, 0.065291, 0.077487",\
+ "0.108806, 0.109601, 0.112826, 0.121230, 0.138038",\
+ "0.194961, 0.195687, 0.198632, 0.206304, 0.221649",\
+ "0.444958, 0.445039, 0.445369, 0.446227, 0.447944",\
+ "1.101681, 1.101643, 1.101491, 1.101094, 1.100299",\
+ "0.056276, 0.056857, 0.059213, 0.065291, 0.077487",\
+ "0.108806, 0.109606, 0.112853, 0.121230, 0.138038",\
+ "0.194961, 0.195692, 0.198656, 0.206304, 0.221649",\
+ "0.444958, 0.445040, 0.445371, 0.446227, 0.447944",\
+ "1.101681, 1.101643, 1.101490, 1.101094, 1.100299",\
+ "0.056295, 0.056865, 0.059213, 0.065291, 0.077487",\
+ "0.108832, 0.109618, 0.112853, 0.121230, 0.138038",\
+ "0.194985, 0.195703, 0.198657, 0.206304, 0.221649",\
+ "0.444961, 0.445041, 0.445371, 0.446227, 0.447944",\
+ "1.101680, 1.101642, 1.101490, 1.101094, 1.100299",\
+ "0.056308, 0.056878, 0.059214, 0.065291, 0.077487",\
+ "0.108850, 0.109635, 0.112855, 0.121230, 0.138038",\
+ "0.195002, 0.195719, 0.198658, 0.206304, 0.221649",\
+ "0.444963, 0.445043, 0.445372, 0.446227, 0.447944",\
+ "1.101679, 1.101642, 1.101490, 1.101094, 1.100299",\
+ "0.056389, 0.057025, 0.059276, 0.065316, 0.077487",\
+ "0.108962, 0.109837, 0.112940, 0.121265, 0.138038",\
+ "0.195104, 0.195903, 0.198736, 0.206336, 0.221649",\
+ "0.444974, 0.445063, 0.445380, 0.446231, 0.447944",\
+ "1.101673, 1.101632, 1.101485, 1.101092, 1.100299");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_2686*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.541885, 0.785038, 1.063858, 1.534026, 2.474360",\
+ "0.587770, 0.830960, 1.109901, 1.580353, 2.521255",\
+ "0.672293, 0.915590, 1.194882, 1.666154, 2.608697",\
+ "0.893156, 1.136622, 1.416462, 1.889021, 2.834138",\
+ "1.454245, 1.697900, 1.978353, 2.452348, 3.400338",\
+ "0.629296, 0.872602, 1.151428, 1.620740, 2.560294",\
+ "0.675181, 0.918525, 1.197473, 1.667067, 2.607188",\
+ "0.759703, 1.003156, 1.282456, 1.752868, 2.694631",\
+ "0.980566, 1.224188, 1.504040, 1.975736, 2.920072",\
+ "1.541656, 1.785468, 2.065936, 2.539063, 3.486272",\
+ "0.710134, 0.961613, 1.239393, 1.708362, 2.647249",\
+ "0.756019, 1.007537, 1.285437, 1.754689, 2.694144",\
+ "0.840542, 1.092169, 1.370420, 1.840490, 2.781586",\
+ "1.061405, 1.313204, 1.592004, 2.063357, 3.007027",\
+ "1.622495, 1.874487, 2.153900, 2.626685, 3.573227",\
+ "0.767752, 1.027293, 1.303532, 1.772275, 2.710758",\
+ "0.813637, 1.073217, 1.349577, 1.818602, 2.757653",\
+ "0.898160, 1.157852, 1.434560, 1.904403, 2.845095",\
+ "1.119024, 1.378891, 1.656144, 2.127271, 3.070536",\
+ "1.680114, 1.940177, 2.218040, 2.690598, 3.636736",\
+ "1.089850, 1.392206, 1.655411, 2.121627, 3.056214",\
+ "1.135741, 1.438139, 1.701459, 2.167955, 3.103108",\
+ "1.220283, 1.522803, 1.786450, 2.253759, 3.190551",\
+ "1.441176, 1.743885, 2.008048, 2.476632, 3.415992",\
+ "2.002299, 2.305221, 2.569958, 3.039965, 3.982192");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.051290, 0.051402, 0.051767, 0.052622, 0.054331",\
+ "0.173665, 0.173591, 0.173350, 0.172786, 0.171658",\
+ "0.376306, 0.376151, 0.375734, 0.374850, 0.373082",\
+ "0.881676, 0.881673, 0.881655, 0.881609, 0.881516",\
+ "2.159523, 2.159652, 2.159853, 2.159909, 2.160021",\
+ "0.051290, 0.051403, 0.051770, 0.052622, 0.054331",\
+ "0.173665, 0.173591, 0.173349, 0.172786, 0.171658",\
+ "0.376306, 0.376150, 0.375732, 0.374850, 0.373082",\
+ "0.881676, 0.881673, 0.881655, 0.881609, 0.881516",\
+ "2.159523, 2.159653, 2.159854, 2.159909, 2.160021",\
+ "0.051290, 0.051405, 0.051770, 0.052622, 0.054331",\
+ "0.173665, 0.173589, 0.173349, 0.172786, 0.171658",\
+ "0.376305, 0.376148, 0.375732, 0.374850, 0.373082",\
+ "0.881676, 0.881673, 0.881655, 0.881609, 0.881516",\
+ "2.159523, 2.159656, 2.159854, 2.159909, 2.160021",\
+ "0.051291, 0.051407, 0.051770, 0.052622, 0.054331",\
+ "0.173665, 0.173588, 0.173348, 0.172786, 0.171658",\
+ "0.376305, 0.376145, 0.375731, 0.374850, 0.373082",\
+ "0.881676, 0.881673, 0.881655, 0.881609, 0.881516",\
+ "2.159523, 2.159659, 2.159854, 2.159909, 2.160021",\
+ "0.051310, 0.051436, 0.051779, 0.052625, 0.054331",\
+ "0.173652, 0.173569, 0.173343, 0.172784, 0.171658",\
+ "0.376278, 0.376105, 0.375722, 0.374847, 0.373082",\
+ "0.881676, 0.881672, 0.881655, 0.881609, 0.881516",\
+ "2.159524, 2.159705, 2.159854, 2.159909, 2.160021");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.483063, 0.725694, 1.002821, 1.469018, 2.401413",\
+ "0.533858, 0.776987, 1.055733, 1.525727, 2.465714",\
+ "0.592650, 0.836170, 1.116186, 1.589157, 2.535098",\
+ "0.727526, 0.971013, 1.250922, 1.723643, 2.669083",\
+ "1.075030, 1.318318, 1.597581, 2.068786, 3.011196",\
+ "0.570473, 0.813255, 1.090379, 1.555733, 2.487347",\
+ "0.621268, 0.864551, 1.143303, 1.612441, 2.551647",\
+ "0.680060, 0.923737, 1.203766, 1.675871, 2.621032",\
+ "0.814936, 1.058579, 1.338501, 1.810357, 2.755017",\
+ "1.162440, 1.405883, 1.685155, 2.155501, 3.097130",\
+ "0.651310, 0.902258, 1.178342, 1.643355, 2.574302",\
+ "0.702106, 0.953562, 1.231267, 1.700063, 2.638602",\
+ "0.760899, 1.012754, 1.291730, 1.763493, 2.707987",\
+ "0.895775, 1.147596, 1.426465, 1.897979, 2.841972",\
+ "1.243279, 1.494897, 1.773119, 2.243123, 3.184085",\
+ "0.708926, 0.967926, 1.242482, 1.707268, 2.637811",\
+ "0.759724, 1.019241, 1.295407, 1.763976, 2.702111",\
+ "0.818518, 1.078441, 1.355870, 1.827407, 2.771496",\
+ "0.953394, 1.213283, 1.490605, 1.961892, 2.905481",\
+ "1.300897, 1.560579, 1.837259, 2.307036, 3.247594",\
+ "1.030934, 1.332704, 1.594321, 2.056603, 2.983267",\
+ "1.081818, 1.384149, 1.647285, 2.113327, 3.047567",\
+ "1.140679, 1.443450, 1.707778, 2.176770, 3.116952",\
+ "1.275549, 1.578283, 1.842510, 2.311255, 3.250937",\
+ "1.623018, 1.925528, 2.189149, 2.656392, 3.593050");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.056326, 0.057067, 0.059477, 0.065125, 0.076422",\
+ "0.108874, 0.109896, 0.113217, 0.121001, 0.136571",\
+ "0.195024, 0.195957, 0.198988, 0.206096, 0.220310",\
+ "0.444965, 0.445069, 0.445409, 0.446204, 0.447794",\
+ "1.101678, 1.101629, 1.101472, 1.101105, 1.100369",\
+ "0.056326, 0.057072, 0.059494, 0.065125, 0.076422",\
+ "0.108874, 0.109903, 0.113241, 0.121001, 0.136571",\
+ "0.195024, 0.195963, 0.199011, 0.206096, 0.220310",\
+ "0.444965, 0.445070, 0.445411, 0.446204, 0.447794",\
+ "1.101678, 1.101629, 1.101471, 1.101105, 1.100369",\
+ "0.056327, 0.057083, 0.059495, 0.065125, 0.076422",\
+ "0.108876, 0.109918, 0.113242, 0.121001, 0.136571",\
+ "0.195025, 0.195977, 0.199011, 0.206096, 0.220310",\
+ "0.444965, 0.445072, 0.445411, 0.446204, 0.447794",\
+ "1.101678, 1.101628, 1.101471, 1.101105, 1.100369",\
+ "0.056330, 0.057100, 0.059496, 0.065125, 0.076422",\
+ "0.108880, 0.109941, 0.113243, 0.121001, 0.136571",\
+ "0.195029, 0.195998, 0.199012, 0.206096, 0.220310",\
+ "0.444966, 0.445074, 0.445411, 0.446204, 0.447794",\
+ "1.101677, 1.101627, 1.101471, 1.101105, 1.100369",\
+ "0.056457, 0.057292, 0.059553, 0.065149, 0.076422",\
+ "0.109056, 0.110205, 0.113322, 0.121034, 0.136571",\
+ "0.195189, 0.196239, 0.199085, 0.206125, 0.220310",\
+ "0.444983, 0.445101, 0.445419, 0.446207, 0.447794",\
+ "1.101669, 1.101615, 1.101467, 1.101103, 1.100369");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_2573*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.565069, 0.820938, 1.075987, 1.513367, 2.388129",\
+ "0.610722, 0.866590, 1.121640, 1.559020, 2.433781",\
+ "0.694431, 0.950300, 1.205350, 1.642730, 2.517491",\
+ "0.914051, 1.169920, 1.424969, 1.862349, 2.737111",\
+ "1.473307, 1.729176, 1.984225, 2.421606, 3.296367",\
+ "0.653273, 0.908426, 1.163451, 1.600080, 2.474062",\
+ "0.698926, 0.954078, 1.209104, 1.645733, 2.519715",\
+ "0.782636, 1.037788, 1.292814, 1.729443, 2.603425",\
+ "1.002255, 1.257407, 1.512433, 1.949062, 2.823044",\
+ "1.561512, 1.816664, 2.071689, 2.508319, 3.382300",\
+ "0.742600, 0.997231, 1.251411, 1.687701, 2.561017",\
+ "0.788253, 1.042883, 1.297064, 1.733354, 2.606670",\
+ "0.871963, 1.126593, 1.380774, 1.817064, 2.690380",\
+ "1.091582, 1.346213, 1.600393, 2.036683, 2.909999",\
+ "1.650838, 1.905469, 2.159649, 2.595939, 3.469255",\
+ "0.806459, 1.062609, 1.315545, 1.751614, 2.624526",\
+ "0.852112, 1.108261, 1.361198, 1.797266, 2.670179",\
+ "0.935822, 1.191971, 1.444908, 1.880976, 2.753889",\
+ "1.155441, 1.411591, 1.664527, 2.100595, 2.973508",\
+ "1.714697, 1.970847, 2.223783, 2.659852, 3.532764",\
+ "1.144184, 1.424102, 1.667087, 2.100822, 2.969982",\
+ "1.189837, 1.469755, 1.712740, 2.146475, 3.015635",\
+ "1.273547, 1.553465, 1.796450, 2.230185, 3.099345",\
+ "1.493166, 1.773084, 2.016069, 2.449804, 3.318964",\
+ "2.052423, 2.332341, 2.575326, 3.009061, 3.878221");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.051575, 0.051575, 0.051575, 0.051575, 0.051575",\
+ "0.175957, 0.175957, 0.175957, 0.175957, 0.175957",\
+ "0.378358, 0.378358, 0.378358, 0.378358, 0.378358",\
+ "0.881680, 0.881680, 0.881680, 0.881680, 0.881680",\
+ "2.159378, 2.159378, 2.159378, 2.159378, 2.159378",\
+ "0.051575, 0.051575, 0.051575, 0.051575, 0.051575",\
+ "0.175957, 0.175957, 0.175957, 0.175957, 0.175957",\
+ "0.378358, 0.378358, 0.378358, 0.378358, 0.378358",\
+ "0.881680, 0.881680, 0.881680, 0.881680, 0.881680",\
+ "2.159378, 2.159378, 2.159378, 2.159378, 2.159378",\
+ "0.051575, 0.051575, 0.051575, 0.051575, 0.051575",\
+ "0.175957, 0.175957, 0.175957, 0.175957, 0.175957",\
+ "0.378358, 0.378358, 0.378358, 0.378358, 0.378358",\
+ "0.881680, 0.881680, 0.881680, 0.881680, 0.881680",\
+ "2.159378, 2.159378, 2.159378, 2.159378, 2.159378",\
+ "0.051575, 0.051575, 0.051575, 0.051575, 0.051575",\
+ "0.175957, 0.175957, 0.175957, 0.175957, 0.175957",\
+ "0.378358, 0.378358, 0.378358, 0.378358, 0.378358",\
+ "0.881680, 0.881680, 0.881680, 0.881680, 0.881680",\
+ "2.159378, 2.159378, 2.159378, 2.159378, 2.159378",\
+ "0.051575, 0.051575, 0.051575, 0.051575, 0.051575",\
+ "0.175957, 0.175957, 0.175957, 0.175957, 0.175957",\
+ "0.378358, 0.378358, 0.378358, 0.378358, 0.378358",\
+ "0.881680, 0.881680, 0.881680, 0.881680, 0.881680",\
+ "2.159378, 2.159378, 2.159378, 2.159378, 2.159378");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.512229, 0.768098, 1.023147, 1.460527, 2.335289",\
+ "0.557112, 0.812981, 1.068030, 1.505411, 2.380172",\
+ "0.613030, 0.868899, 1.123949, 1.561329, 2.436090",\
+ "0.748455, 1.004324, 1.259373, 1.696754, 2.571515",\
+ "1.097588, 1.353456, 1.608506, 2.045886, 2.920648",\
+ "0.600433, 0.855585, 1.110611, 1.547240, 2.421222",\
+ "0.645316, 0.900469, 1.155494, 1.592124, 2.466105",\
+ "0.701235, 0.956387, 1.211413, 1.648042, 2.522024",\
+ "0.836659, 1.091812, 1.346837, 1.783467, 2.657449",\
+ "1.185792, 1.440944, 1.695970, 2.132599, 3.006581",\
+ "0.689760, 0.944391, 1.198571, 1.634861, 2.508177",\
+ "0.734643, 0.989274, 1.243454, 1.679744, 2.553061",\
+ "0.790562, 1.045192, 1.299373, 1.735663, 2.608979",\
+ "0.925986, 1.180617, 1.434798, 1.871087, 2.744404",\
+ "1.275119, 1.529750, 1.783930, 2.220220, 3.093536",\
+ "0.753619, 1.009769, 1.262705, 1.698774, 2.571686",\
+ "0.798502, 1.054652, 1.307589, 1.743657, 2.616570",\
+ "0.854421, 1.110570, 1.363507, 1.799575, 2.672488",\
+ "0.989845, 1.245995, 1.498932, 1.935000, 2.807913",\
+ "1.338978, 1.595128, 1.848064, 2.284132, 3.157045",\
+ "1.091344, 1.371262, 1.614247, 2.047982, 2.917142",\
+ "1.136228, 1.416146, 1.659131, 2.092866, 2.962026",\
+ "1.192146, 1.472064, 1.715049, 2.148784, 3.017944",\
+ "1.327571, 1.607489, 1.850474, 2.284209, 3.153369",\
+ "1.676703, 1.956621, 2.199606, 2.633341, 3.502501");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.047854, 0.047854, 0.047854, 0.047854, 0.047854",\
+ "0.098249, 0.098249, 0.098249, 0.098249, 0.098249",\
+ "0.188801, 0.188801, 0.188801, 0.188801, 0.188801",\
+ "0.444112, 0.444112, 0.444112, 0.444112, 0.444112",\
+ "1.101794, 1.101794, 1.101794, 1.101794, 1.101794",\
+ "0.047854, 0.047854, 0.047854, 0.047854, 0.047854",\
+ "0.098249, 0.098249, 0.098249, 0.098249, 0.098249",\
+ "0.188801, 0.188801, 0.188801, 0.188801, 0.188801",\
+ "0.444112, 0.444112, 0.444112, 0.444112, 0.444112",\
+ "1.101794, 1.101794, 1.101794, 1.101794, 1.101794",\
+ "0.047854, 0.047854, 0.047854, 0.047854, 0.047854",\
+ "0.098249, 0.098249, 0.098249, 0.098249, 0.098249",\
+ "0.188801, 0.188801, 0.188801, 0.188801, 0.188801",\
+ "0.444112, 0.444112, 0.444112, 0.444112, 0.444112",\
+ "1.101794, 1.101794, 1.101794, 1.101794, 1.101794",\
+ "0.047854, 0.047854, 0.047854, 0.047854, 0.047854",\
+ "0.098249, 0.098249, 0.098249, 0.098249, 0.098249",\
+ "0.188801, 0.188801, 0.188801, 0.188801, 0.188801",\
+ "0.444112, 0.444112, 0.444112, 0.444112, 0.444112",\
+ "1.101794, 1.101794, 1.101794, 1.101794, 1.101794",\
+ "0.047854, 0.047854, 0.047854, 0.047854, 0.047854",\
+ "0.098249, 0.098249, 0.098249, 0.098249, 0.098249",\
+ "0.188801, 0.188801, 0.188801, 0.188801, 0.188801",\
+ "0.444112, 0.444112, 0.444112, 0.444112, 0.444112",\
+ "1.101794, 1.101794, 1.101794, 1.101794, 1.101794");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_2453*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.405081, 0.661604, 0.918671, 1.360881, 2.245302",\
+ "0.455961, 0.712483, 0.969534, 1.411694, 2.296014",\
+ "0.533364, 0.789887, 1.046932, 1.489066, 2.373335",\
+ "0.741794, 0.998316, 1.255349, 1.697444, 2.581634",\
+ "1.295078, 1.551601, 1.808624, 2.250684, 3.134805",\
+ "0.493291, 0.749080, 1.006153, 1.447596, 2.331236",\
+ "0.544172, 0.799959, 1.057016, 1.498409, 2.381948",\
+ "0.621574, 0.877363, 1.134413, 1.575781, 2.459269",\
+ "0.830004, 1.085792, 1.342831, 1.784158, 2.667568",\
+ "1.383288, 1.639076, 1.896105, 2.337399, 3.220738",\
+ "0.581963, 0.837893, 1.094115, 1.535218, 2.418191",\
+ "0.632844, 0.888772, 1.144979, 1.586031, 2.468903",\
+ "0.710247, 0.966176, 1.222376, 1.663403, 2.546224",\
+ "0.918676, 1.174605, 1.430793, 1.871780, 2.754523",\
+ "1.471960, 1.727890, 1.984068, 2.425020, 3.307693",\
+ "0.644923, 0.903284, 1.158251, 1.599131, 2.481700",\
+ "0.695804, 0.954163, 1.209114, 1.649944, 2.532412",\
+ "0.773206, 1.031567, 1.286511, 1.727316, 2.609733",\
+ "0.981636, 1.239996, 1.494928, 1.935694, 2.818032",\
+ "1.534920, 1.793280, 2.048203, 2.488934, 3.371202",\
+ "0.976976, 1.264814, 1.509846, 1.948367, 2.827156",\
+ "1.027857, 1.315693, 1.560709, 1.999180, 2.877868",\
+ "1.105260, 1.393097, 1.638106, 2.076551, 2.955189",\
+ "1.313689, 1.601526, 1.846523, 2.284929, 3.163488",\
+ "1.866973, 2.154810, 2.399797, 2.838169, 3.716659");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.235856, 0.236036, 0.236876, 0.239059, 0.243424",\
+ "0.297458, 0.297578, 0.298135, 0.299584, 0.302483",\
+ "0.424282, 0.424361, 0.424727, 0.425678, 0.427582",\
+ "0.882507, 0.882519, 0.882580, 0.882733, 0.883038",\
+ "2.159515, 2.159525, 2.159563, 2.159647, 2.159816",\
+ "0.235857, 0.236037, 0.236883, 0.239059, 0.243424",\
+ "0.297459, 0.297578, 0.298140, 0.299584, 0.302483",\
+ "0.424283, 0.424361, 0.424730, 0.425678, 0.427582",\
+ "0.882507, 0.882519, 0.882580, 0.882733, 0.883038",\
+ "2.159515, 2.159525, 2.159563, 2.159647, 2.159816",\
+ "0.235860, 0.236040, 0.236883, 0.239059, 0.243424",\
+ "0.297461, 0.297581, 0.298140, 0.299584, 0.302483",\
+ "0.424284, 0.424363, 0.424730, 0.425678, 0.427582",\
+ "0.882507, 0.882519, 0.882580, 0.882733, 0.883038",\
+ "2.159515, 2.159525, 2.159563, 2.159647, 2.159816",\
+ "0.235863, 0.236045, 0.236883, 0.239059, 0.243424",\
+ "0.297463, 0.297583, 0.298140, 0.299584, 0.302483",\
+ "0.424285, 0.424365, 0.424730, 0.425678, 0.427582",\
+ "0.882507, 0.882519, 0.882580, 0.882733, 0.883038",\
+ "2.159515, 2.159525, 2.159563, 2.159647, 2.159816",\
+ "0.235880, 0.236097, 0.236905, 0.239068, 0.243424",\
+ "0.297474, 0.297618, 0.298155, 0.299590, 0.302483",\
+ "0.424293, 0.424387, 0.424740, 0.425682, 0.427582",\
+ "0.882507, 0.882524, 0.882582, 0.882733, 0.883038",\
+ "2.159515, 2.159528, 2.159564, 2.159647, 2.159816");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.367521, 0.579425, 0.836465, 1.278595, 2.162855",\
+ "0.401633, 0.614821, 0.871879, 1.314094, 2.198523",\
+ "0.451390, 0.668626, 0.925663, 1.367835, 2.252179",\
+ "0.579943, 0.801765, 1.058753, 1.500789, 2.384860",\
+ "0.915527, 1.146173, 1.403096, 1.844941, 2.728633",\
+ "0.454931, 0.666901, 0.923947, 1.365310, 2.248789",\
+ "0.489043, 0.702297, 0.959362, 1.400808, 2.284457",\
+ "0.538801, 0.756101, 1.013145, 1.454550, 2.338113",\
+ "0.667354, 0.889241, 1.146235, 1.587503, 2.470794",\
+ "1.002937, 1.233649, 1.490577, 1.931656, 2.814567",\
+ "0.535766, 0.755714, 1.011909, 1.452931, 2.335744",\
+ "0.569878, 0.791110, 1.047324, 1.488430, 2.371412",\
+ "0.619635, 0.844914, 1.101107, 1.542171, 2.425068",\
+ "0.748188, 0.978053, 1.234197, 1.675125, 2.557749",\
+ "1.083772, 1.322461, 1.578539, 2.019278, 2.901522",\
+ "0.593373, 0.821105, 1.076045, 1.516845, 2.399253",\
+ "0.627485, 0.856501, 1.111459, 1.552344, 2.434921",\
+ "0.677243, 0.910304, 1.165242, 1.606085, 2.488577",\
+ "0.805795, 1.043444, 1.298333, 1.739039, 2.621258",\
+ "1.141379, 1.387851, 1.642674, 2.083191, 2.965031",\
+ "0.895433, 1.182634, 1.427639, 1.866081, 2.744709",\
+ "0.930201, 1.218028, 1.463055, 1.901580, 2.780377",\
+ "0.984012, 1.271830, 1.516838, 1.955320, 2.834033",\
+ "1.117159, 1.404967, 1.649927, 2.088274, 2.966714",\
+ "1.461575, 1.749372, 1.994267, 2.432426, 3.310487");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.080902, 0.080967, 0.081775, 0.084238, 0.089162",\
+ "0.117510, 0.117523, 0.117812, 0.118746, 0.120614",\
+ "0.210641, 0.210651, 0.210781, 0.211182, 0.211986",\
+ "0.448308, 0.448315, 0.448372, 0.448536, 0.448865",\
+ "1.101372, 1.101392, 1.101478, 1.101676, 1.102071",\
+ "0.080902, 0.080968, 0.081783, 0.084238, 0.089162",\
+ "0.117510, 0.117523, 0.117815, 0.118746, 0.120614",\
+ "0.210641, 0.210651, 0.210782, 0.211182, 0.211986",\
+ "0.448308, 0.448315, 0.448373, 0.448536, 0.448865",\
+ "1.101372, 1.101392, 1.101479, 1.101676, 1.102071",\
+ "0.080902, 0.080970, 0.081783, 0.084238, 0.089162",\
+ "0.117510, 0.117523, 0.117815, 0.118746, 0.120614",\
+ "0.210641, 0.210651, 0.210782, 0.211182, 0.211986",\
+ "0.448308, 0.448315, 0.448373, 0.448536, 0.448865",\
+ "1.101372, 1.101393, 1.101479, 1.101676, 1.102071",\
+ "0.080902, 0.080972, 0.081783, 0.084238, 0.089162",\
+ "0.117510, 0.117524, 0.117815, 0.118746, 0.120614",\
+ "0.210641, 0.210651, 0.210782, 0.211182, 0.211986",\
+ "0.448308, 0.448315, 0.448373, 0.448536, 0.448865",\
+ "1.101372, 1.101393, 1.101479, 1.101676, 1.102071",\
+ "0.080902, 0.080995, 0.081808, 0.084248, 0.089162",\
+ "0.117510, 0.117529, 0.117825, 0.118750, 0.120614",\
+ "0.210641, 0.210655, 0.210786, 0.211184, 0.211986",\
+ "0.448308, 0.448318, 0.448374, 0.448537, 0.448865",\
+ "1.101372, 1.101400, 1.101481, 1.101677, 1.102071");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.350120, 0.565633, 0.746735, 1.037548, 1.600373",\
+ "0.398981, 0.614494, 0.795596, 1.086408, 1.649232",\
+ "0.501090, 0.716603, 0.897704, 1.188518, 1.751342",\
+ "0.737189, 0.952702, 1.133804, 1.424618, 1.987443",\
+ "1.308796, 1.524309, 1.705411, 1.996226, 2.559053",\
+ "0.438515, 0.652951, 0.834015, 1.124853, 1.687726",\
+ "0.487376, 0.701812, 0.882876, 1.173713, 1.736585",\
+ "0.589485, 0.803921, 0.984985, 1.275823, 1.838695",\
+ "0.825584, 1.040021, 1.221085, 1.511923, 2.074796",\
+ "1.397191, 1.611628, 1.792692, 2.083531, 2.646406",\
+ "0.527399, 0.733288, 0.914042, 1.204882, 1.767758",\
+ "0.576260, 0.782149, 0.962903, 1.253742, 1.816617",\
+ "0.678369, 0.884258, 1.065012, 1.355851, 1.918727",\
+ "0.914468, 1.120357, 1.301112, 1.591951, 2.154828",\
+ "1.486075, 1.691964, 1.872719, 2.163559, 2.726438",\
+ "0.590410, 0.791118, 0.971742, 1.262314, 1.824777",\
+ "0.639271, 0.839979, 1.020603, 1.311174, 1.873636",\
+ "0.741380, 0.942088, 1.122712, 1.413283, 1.975746",\
+ "0.977479, 1.178187, 1.358811, 1.649383, 2.211848",\
+ "1.549087, 1.749794, 1.930419, 2.220991, 2.783457",\
+ "0.913253, 1.096448, 1.275400, 1.565488, 2.127003",\
+ "0.962113, 1.145308, 1.324261, 1.614348, 2.175863",\
+ "1.064222, 1.247418, 1.426370, 1.716458, 2.277973",\
+ "1.300322, 1.483517, 1.662469, 1.952558, 2.514074",\
+ "1.871929, 2.055124, 2.234077, 2.524166, 3.085683");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.032791, 0.032791, 0.032792, 0.032797, 0.032808",\
+ "0.150563, 0.150563, 0.150562, 0.150560, 0.150555",\
+ "0.376248, 0.376248, 0.376248, 0.376247, 0.376244",\
+ "0.869894, 0.869894, 0.869894, 0.869892, 0.869888",\
+ "2.137202, 2.137202, 2.137202, 2.137203, 2.137204",\
+ "0.032791, 0.032791, 0.032792, 0.032797, 0.032808",\
+ "0.150563, 0.150563, 0.150562, 0.150560, 0.150555",\
+ "0.376248, 0.376248, 0.376248, 0.376247, 0.376244",\
+ "0.869894, 0.869894, 0.869894, 0.869892, 0.869888",\
+ "2.137202, 2.137202, 2.137202, 2.137203, 2.137204",\
+ "0.032791, 0.032791, 0.032792, 0.032797, 0.032808",\
+ "0.150563, 0.150563, 0.150562, 0.150560, 0.150555",\
+ "0.376248, 0.376248, 0.376248, 0.376247, 0.376244",\
+ "0.869894, 0.869894, 0.869894, 0.869892, 0.869888",\
+ "2.137202, 2.137202, 2.137202, 2.137203, 2.137204",\
+ "0.032791, 0.032791, 0.032792, 0.032797, 0.032808",\
+ "0.150563, 0.150563, 0.150562, 0.150560, 0.150555",\
+ "0.376248, 0.376248, 0.376248, 0.376247, 0.376244",\
+ "0.869894, 0.869894, 0.869894, 0.869892, 0.869888",\
+ "2.137202, 2.137202, 2.137202, 2.137203, 2.137204",\
+ "0.032791, 0.032791, 0.032792, 0.032797, 0.032808",\
+ "0.150563, 0.150563, 0.150562, 0.150560, 0.150555",\
+ "0.376248, 0.376248, 0.376248, 0.376247, 0.376244",\
+ "0.869894, 0.869894, 0.869894, 0.869892, 0.869888",\
+ "2.137202, 2.137202, 2.137202, 2.137203, 2.137204");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.373967, 0.592587, 0.771355, 1.061366, 1.624150",\
+ "0.409637, 0.625150, 0.806253, 1.097068, 1.659896",\
+ "0.450922, 0.666435, 0.847537, 1.138352, 1.701180",\
+ "0.573066, 0.788579, 0.969681, 1.260496, 1.823323",\
+ "0.905340, 1.120854, 1.301956, 1.592770, 2.155596",\
+ "0.462362, 0.679906, 0.858636, 1.148671, 1.711503",\
+ "0.498033, 0.712469, 0.893534, 1.184373, 1.747249",\
+ "0.539317, 0.753753, 0.934818, 1.225657, 1.788534",\
+ "0.661461, 0.875897, 1.056962, 1.347801, 1.910677",\
+ "0.993736, 1.208172, 1.389236, 1.680075, 2.242949",\
+ "0.551246, 0.760243, 0.938663, 1.228699, 1.791535",\
+ "0.586916, 0.792806, 0.973560, 1.264401, 1.827281",\
+ "0.628201, 0.834090, 1.014845, 1.305686, 1.868565",\
+ "0.750345, 0.956234, 1.136989, 1.427829, 1.990708",\
+ "1.082619, 1.288509, 1.469263, 1.760103, 2.322981",\
+ "0.614257, 0.818060, 0.996357, 1.286131, 1.848554",\
+ "0.649928, 0.850636, 1.031260, 1.321833, 1.884300",\
+ "0.691212, 0.891920, 1.072545, 1.363118, 1.925585",\
+ "0.813356, 1.014064, 1.194689, 1.485261, 2.047728",\
+ "1.145631, 1.346339, 1.526963, 1.817535, 2.380001",\
+ "0.943056, 1.123302, 1.300014, 1.589306, 2.150780",\
+ "0.972770, 1.155965, 1.334918, 1.625008, 2.186526",\
+ "1.014054, 1.197250, 1.376202, 1.666292, 2.227811",\
+ "1.136198, 1.319394, 1.498346, 1.788436, 2.349954",\
+ "1.468473, 1.651668, 1.830621, 2.120710, 2.682227");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.047453, 0.047453, 0.047453, 0.047451, 0.047447",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186056, 0.186055",\
+ "0.432423, 0.432423, 0.432423, 0.432422, 0.432422",\
+ "1.065140, 1.065140, 1.065140, 1.065138, 1.065135",\
+ "0.047453, 0.047453, 0.047453, 0.047451, 0.047447",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186056, 0.186055",\
+ "0.432423, 0.432423, 0.432423, 0.432422, 0.432422",\
+ "1.065140, 1.065140, 1.065140, 1.065138, 1.065135",\
+ "0.047453, 0.047453, 0.047453, 0.047451, 0.047447",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186056, 0.186055",\
+ "0.432423, 0.432423, 0.432423, 0.432422, 0.432422",\
+ "1.065140, 1.065140, 1.065140, 1.065138, 1.065135",\
+ "0.047453, 0.047453, 0.047453, 0.047451, 0.047447",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186056, 0.186055",\
+ "0.432423, 0.432423, 0.432423, 0.432422, 0.432422",\
+ "1.065140, 1.065140, 1.065140, 1.065138, 1.065135",\
+ "0.047453, 0.047453, 0.047453, 0.047451, 0.047447",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186056, 0.186055",\
+ "0.432423, 0.432423, 0.432423, 0.432422, 0.432422",\
+ "1.065140, 1.065140, 1.065140, 1.065138, 1.065135");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_min_2531*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[57]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.331760, 0.553188, 0.742512, 1.045826, 1.632024",\
+ "0.380621, 0.602049, 0.791372, 1.094686, 1.680882",\
+ "0.482730, 0.704158, 0.893481, 1.196795, 1.782993",\
+ "0.718830, 0.940258, 1.129582, 1.432896, 2.019095",\
+ "1.290437, 1.511866, 1.701190, 2.004506, 2.590707",\
+ "0.420081, 0.640507, 0.829793, 1.133131, 1.719378",\
+ "0.468942, 0.689367, 0.878653, 1.181991, 1.768235",\
+ "0.571051, 0.791476, 0.980762, 1.284101, 1.870346",\
+ "0.807150, 1.027576, 1.216862, 1.520201, 2.106449",\
+ "1.378757, 1.599184, 1.788471, 2.091811, 2.678061",\
+ "0.509110, 0.720840, 0.909820, 1.213160, 1.799409",\
+ "0.557971, 0.769701, 0.958680, 1.262019, 1.848267",\
+ "0.660080, 0.871810, 1.060789, 1.364129, 1.950378",\
+ "0.896179, 1.107910, 1.296889, 1.600230, 2.186480",\
+ "1.467786, 1.679518, 1.868498, 2.171839, 2.758092",\
+ "0.572416, 0.778663, 0.967540, 1.270620, 1.856487",\
+ "0.621277, 0.827523, 1.016400, 1.319480, 1.905344",\
+ "0.723386, 0.929632, 1.118510, 1.421590, 2.007455",\
+ "0.959485, 1.165732, 1.354610, 1.657691, 2.243557",\
+ "1.531092, 1.737340, 1.926218, 2.229300, 2.815169",\
+ "0.903758, 1.083926, 1.271200, 1.573819, 2.158782",\
+ "0.952619, 1.132786, 1.320060, 1.622678, 2.207640",\
+ "1.054728, 1.234896, 1.422170, 1.724788, 2.309751",\
+ "1.290827, 1.470996, 1.658270, 1.960889, 2.545854",\
+ "1.862434, 2.042603, 2.229878, 2.532498, 3.117465");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.032790, 0.032796, 0.032799, 0.032806, 0.032822",\
+ "0.150563, 0.150560, 0.150559, 0.150556, 0.150549",\
+ "0.376248, 0.376247, 0.376246, 0.376245, 0.376241",\
+ "0.869894, 0.869894, 0.869894, 0.869893, 0.869890",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137204",\
+ "0.032790, 0.032796, 0.032799, 0.032806, 0.032822",\
+ "0.150563, 0.150560, 0.150559, 0.150556, 0.150549",\
+ "0.376248, 0.376247, 0.376246, 0.376245, 0.376241",\
+ "0.869894, 0.869894, 0.869894, 0.869893, 0.869890",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137204",\
+ "0.032791, 0.032796, 0.032799, 0.032806, 0.032822",\
+ "0.150563, 0.150560, 0.150559, 0.150556, 0.150549",\
+ "0.376248, 0.376247, 0.376246, 0.376245, 0.376241",\
+ "0.869894, 0.869894, 0.869894, 0.869893, 0.869890",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137204",\
+ "0.032791, 0.032796, 0.032799, 0.032806, 0.032822",\
+ "0.150562, 0.150560, 0.150559, 0.150556, 0.150549",\
+ "0.376248, 0.376247, 0.376246, 0.376245, 0.376241",\
+ "0.869894, 0.869894, 0.869894, 0.869893, 0.869890",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137204",\
+ "0.032791, 0.032796, 0.032799, 0.032807, 0.032822",\
+ "0.150563, 0.150560, 0.150559, 0.150556, 0.150549",\
+ "0.376248, 0.376247, 0.376246, 0.376245, 0.376241",\
+ "0.869894, 0.869894, 0.869894, 0.869893, 0.869890",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137204");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.355611, 0.590269, 0.779821, 1.083137, 1.669339",\
+ "0.391278, 0.612708, 0.802032, 1.105348, 1.691551",\
+ "0.432562, 0.653992, 0.843316, 1.146633, 1.732836",\
+ "0.554706, 0.776136, 0.965460, 1.268776, 1.854978",\
+ "0.886981, 1.108410, 1.297734, 1.601049, 2.187249",\
+ "0.443930, 0.677587, 0.867102, 1.170442, 1.756692",\
+ "0.479599, 0.700026, 0.889313, 1.192653, 1.778904",\
+ "0.520883, 0.741310, 0.930597, 1.233938, 1.820189",\
+ "0.643027, 0.863454, 1.052741, 1.356081, 1.942332",\
+ "0.975302, 1.195728, 1.385015, 1.688354, 2.274603",\
+ "0.532956, 0.757921, 0.947129, 1.250471, 1.836724",\
+ "0.568627, 0.780360, 0.969340, 1.272682, 1.858936",\
+ "0.609912, 0.821644, 1.010624, 1.313967, 1.900221",\
+ "0.732056, 0.943788, 1.132768, 1.436110, 2.022363",\
+ "1.064331, 1.276062, 1.465042, 1.768383, 2.354635",\
+ "0.596259, 0.815760, 1.004849, 1.307931, 1.893801",\
+ "0.631934, 0.838182, 1.027060, 1.330143, 1.916013",\
+ "0.673218, 0.879466, 1.068345, 1.371427, 1.957298",\
+ "0.795362, 1.001610, 1.190488, 1.493571, 2.079441",\
+ "1.127637, 1.333884, 1.522762, 1.825843, 2.411712",\
+ "0.930491, 1.121142, 1.308509, 1.611130, 2.196097",\
+ "0.963275, 1.143445, 1.330720, 1.633341, 2.218309",\
+ "1.004560, 1.184730, 1.372005, 1.674626, 2.259594",\
+ "1.126704, 1.306873, 1.494148, 1.796769, 2.381737",\
+ "1.458978, 1.639148, 1.826422, 2.129042, 2.714008");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002160, 0.075158, 0.162122, 0.322085, 0.642011");
+ values ( "0.047454, 0.047451, 0.047450, 0.047447, 0.047442",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186055, 0.186055",\
+ "0.432423, 0.432422, 0.432422, 0.432422, 0.432421",\
+ "1.065141, 1.065139, 1.065138, 1.065135, 1.065130",\
+ "0.047453, 0.047451, 0.047450, 0.047447, 0.047442",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186055, 0.186055",\
+ "0.432423, 0.432422, 0.432422, 0.432422, 0.432421",\
+ "1.065141, 1.065139, 1.065138, 1.065135, 1.065130",\
+ "0.047453, 0.047451, 0.047450, 0.047447, 0.047442",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186055, 0.186055",\
+ "0.432423, 0.432422, 0.432422, 0.432422, 0.432421",\
+ "1.065140, 1.065139, 1.065138, 1.065135, 1.065130",\
+ "0.047453, 0.047451, 0.047450, 0.047447, 0.047442",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186055, 0.186055",\
+ "0.432423, 0.432422, 0.432422, 0.432422, 0.432421",\
+ "1.065140, 1.065139, 1.065138, 1.065135, 1.065130",\
+ "0.047452, 0.047451, 0.047450, 0.047447, 0.047442",\
+ "0.092188, 0.092188, 0.092188, 0.092188, 0.092187",\
+ "0.186056, 0.186056, 0.186056, 0.186055, 0.186055",\
+ "0.432423, 0.432422, 0.432422, 0.432422, 0.432421",\
+ "1.065140, 1.065139, 1.065138, 1.065135, 1.065130");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[58]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.441216, 0.635561, 0.817859, 1.110553, 1.677168",\
+ "0.490035, 0.684380, 0.866679, 1.159372, 1.725988",\
+ "0.592166, 0.786511, 0.968809, 1.261503, 1.828118",\
+ "0.828311, 1.022655, 1.204954, 1.497648, 2.064263",\
+ "1.399982, 1.594326, 1.776625, 2.069319, 2.635934",\
+ "0.529420, 0.722878, 0.905140, 1.197858, 1.764521",\
+ "0.578240, 0.771698, 0.953960, 1.246678, 1.813341",\
+ "0.680371, 0.873829, 1.056091, 1.348809, 1.915472",\
+ "0.916515, 1.109973, 1.292235, 1.584953, 2.151616",\
+ "1.488186, 1.681644, 1.863906, 2.156624, 2.723287",\
+ "0.618747, 0.803206, 0.985167, 1.277887, 1.844553",\
+ "0.667567, 0.852026, 1.033987, 1.326706, 1.893373",\
+ "0.769697, 0.954157, 1.136117, 1.428837, 1.995504",\
+ "1.005842, 1.190301, 1.372262, 1.664981, 2.231648",\
+ "1.577513, 1.761972, 1.943933, 2.236652, 2.803319",\
+ "0.681460, 0.861042, 1.042871, 1.335324, 1.901586",\
+ "0.730280, 0.909862, 1.091691, 1.384144, 1.950405",\
+ "0.832411, 1.011993, 1.193822, 1.486274, 2.052536",\
+ "1.068555, 1.248137, 1.429966, 1.722419, 2.288681",\
+ "1.640226, 1.819808, 2.001637, 2.294090, 2.860352",\
+ "0.985102, 1.166382, 1.346527, 1.638502, 2.203828",\
+ "1.033922, 1.215202, 1.395347, 1.687321, 2.252647",\
+ "1.136052, 1.317332, 1.497478, 1.789452, 2.354778",\
+ "1.372197, 1.553477, 1.733622, 2.025596, 2.590923",\
+ "1.943868, 2.125148, 2.305293, 2.597268, 3.162594");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.033216, 0.033216, 0.033216, 0.033216, 0.033216",\
+ "0.150378, 0.150378, 0.150378, 0.150378, 0.150378",\
+ "0.376160, 0.376160, 0.376160, 0.376160, 0.376160",\
+ "0.870043, 0.870043, 0.870043, 0.870043, 0.870043",\
+ "2.137131, 2.137131, 2.137131, 2.137131, 2.137131",\
+ "0.033216, 0.033216, 0.033216, 0.033216, 0.033216",\
+ "0.150378, 0.150378, 0.150378, 0.150378, 0.150378",\
+ "0.376160, 0.376160, 0.376160, 0.376160, 0.376160",\
+ "0.870043, 0.870043, 0.870043, 0.870043, 0.870043",\
+ "2.137131, 2.137131, 2.137131, 2.137131, 2.137131",\
+ "0.033216, 0.033216, 0.033216, 0.033216, 0.033216",\
+ "0.150378, 0.150378, 0.150378, 0.150378, 0.150378",\
+ "0.376160, 0.376160, 0.376160, 0.376160, 0.376160",\
+ "0.870043, 0.870043, 0.870043, 0.870043, 0.870043",\
+ "2.137131, 2.137131, 2.137131, 2.137131, 2.137131",\
+ "0.033216, 0.033216, 0.033216, 0.033216, 0.033216",\
+ "0.150378, 0.150378, 0.150378, 0.150378, 0.150378",\
+ "0.376160, 0.376160, 0.376160, 0.376160, 0.376160",\
+ "0.870043, 0.870043, 0.870043, 0.870043, 0.870043",\
+ "2.137131, 2.137131, 2.137131, 2.137131, 2.137131",\
+ "0.033216, 0.033216, 0.033216, 0.033216, 0.033216",\
+ "0.150378, 0.150378, 0.150378, 0.150378, 0.150378",\
+ "0.376160, 0.376160, 0.376160, 0.376160, 0.376160",\
+ "0.870043, 0.870043, 0.870043, 0.870043, 0.870043",\
+ "2.137131, 2.137131, 2.137131, 2.137131, 2.137131");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.478632, 0.663448, 0.845746, 1.138440, 1.705055",\
+ "0.500859, 0.695203, 0.877502, 1.170196, 1.736811",\
+ "0.542150, 0.736495, 0.918793, 1.211487, 1.778102",\
+ "0.664276, 0.858621, 1.040919, 1.333613, 1.900228",\
+ "0.996499, 1.190843, 1.373142, 1.665835, 2.232451",\
+ "0.566836, 0.750765, 0.933027, 1.225745, 1.792408",\
+ "0.589063, 0.782521, 0.964783, 1.257501, 1.824164",\
+ "0.630354, 0.823812, 1.006074, 1.298792, 1.865455",\
+ "0.752480, 0.945938, 1.128200, 1.420918, 1.987581",\
+ "1.084703, 1.278161, 1.460423, 1.753141, 2.319804",\
+ "0.651614, 0.831093, 1.013054, 1.305773, 1.872440",\
+ "0.678390, 0.862849, 1.044810, 1.337529, 1.904196",\
+ "0.719681, 0.904140, 1.086101, 1.378820, 1.945487",\
+ "0.841807, 1.026266, 1.208227, 1.500947, 2.067613",\
+ "1.174030, 1.358489, 1.540450, 1.833169, 2.399836",\
+ "0.709347, 0.888930, 1.070759, 1.363211, 1.929473",\
+ "0.741103, 0.920685, 1.102514, 1.394967, 1.961228",\
+ "0.782394, 0.961976, 1.143806, 1.436258, 2.002520",\
+ "0.904520, 1.084103, 1.265932, 1.558384, 2.124646",\
+ "1.236743, 1.416325, 1.598154, 1.890607, 2.456868",\
+ "1.012989, 1.194269, 1.374414, 1.666389, 2.231715",\
+ "1.044745, 1.226025, 1.406170, 1.698144, 2.263471",\
+ "1.086036, 1.267316, 1.447461, 1.739436, 2.304762",\
+ "1.208162, 1.389442, 1.569587, 1.861562, 2.426888",\
+ "1.540385, 1.721665, 1.901810, 2.193784, 2.759110");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003360, 0.076358, 0.163022, 0.322685, 0.642011");
+ values ( "0.047293, 0.047293, 0.047293, 0.047293, 0.047293",\
+ "0.092166, 0.092166, 0.092166, 0.092166, 0.092166",\
+ "0.186036, 0.186036, 0.186036, 0.186036, 0.186036",\
+ "0.432397, 0.432397, 0.432397, 0.432397, 0.432397",\
+ "1.065004, 1.065004, 1.065004, 1.065004, 1.065004",\
+ "0.047293, 0.047293, 0.047293, 0.047293, 0.047293",\
+ "0.092166, 0.092166, 0.092166, 0.092166, 0.092166",\
+ "0.186036, 0.186036, 0.186036, 0.186036, 0.186036",\
+ "0.432397, 0.432397, 0.432397, 0.432397, 0.432397",\
+ "1.065004, 1.065004, 1.065004, 1.065004, 1.065004",\
+ "0.047293, 0.047293, 0.047293, 0.047293, 0.047293",\
+ "0.092166, 0.092166, 0.092166, 0.092166, 0.092166",\
+ "0.186036, 0.186036, 0.186036, 0.186036, 0.186036",\
+ "0.432397, 0.432397, 0.432397, 0.432397, 0.432397",\
+ "1.065004, 1.065004, 1.065004, 1.065004, 1.065004",\
+ "0.047293, 0.047293, 0.047293, 0.047293, 0.047293",\
+ "0.092166, 0.092166, 0.092166, 0.092166, 0.092166",\
+ "0.186036, 0.186036, 0.186036, 0.186036, 0.186036",\
+ "0.432397, 0.432397, 0.432397, 0.432397, 0.432397",\
+ "1.065004, 1.065004, 1.065004, 1.065004, 1.065004",\
+ "0.047293, 0.047293, 0.047293, 0.047293, 0.047293",\
+ "0.092166, 0.092166, 0.092166, 0.092166, 0.092166",\
+ "0.186036, 0.186036, 0.186036, 0.186036, 0.186036",\
+ "0.432397, 0.432397, 0.432397, 0.432397, 0.432397",\
+ "1.065004, 1.065004, 1.065004, 1.065004, 1.065004");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_min_2476*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[62]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.348914, 0.525100, 0.702588, 0.991299, 1.552048",\
+ "0.404496, 0.580679, 0.758142, 1.046740, 1.607235",\
+ "0.479870, 0.656050, 0.833489, 1.121981, 1.682238",\
+ "0.681478, 0.857653, 1.035056, 1.323386, 1.883276",\
+ "1.225627, 1.401797, 1.579170, 1.867368, 2.426959",\
+ "0.436324, 0.612419, 0.789869, 1.078604, 1.639402",\
+ "0.491907, 0.667998, 0.845423, 1.134045, 1.694588",\
+ "0.567281, 0.743368, 0.920770, 1.209286, 1.769591",\
+ "0.768889, 0.944971, 1.122336, 1.410691, 1.970629",\
+ "1.313037, 1.489116, 1.666451, 1.954674, 2.514312",\
+ "0.517159, 0.692753, 0.869896, 1.158633, 1.719433",\
+ "0.572742, 0.748332, 0.925450, 1.214074, 1.774620",\
+ "0.648115, 0.823702, 1.000796, 1.289315, 1.849623",\
+ "0.849723, 1.025305, 1.202363, 1.490720, 2.050661",\
+ "1.393872, 1.569450, 1.746478, 2.034702, 2.594344",\
+ "0.574766, 0.750569, 0.927588, 1.216063, 1.776449",\
+ "0.630349, 0.806149, 0.983142, 1.271503, 1.831635",\
+ "0.705722, 0.881519, 1.058488, 1.346744, 1.906637",\
+ "0.907331, 1.083122, 1.260055, 1.548149, 2.107674",\
+ "1.451479, 1.627266, 1.804170, 2.092131, 2.651357",\
+ "0.876826, 1.055796, 1.231244, 1.519234, 2.078671",\
+ "0.932408, 1.111374, 1.286798, 1.574675, 2.133856",\
+ "1.007782, 1.186745, 1.362144, 1.649915, 2.208858",\
+ "1.209389, 1.388348, 1.563711, 1.851319, 2.409893",\
+ "1.753537, 1.932492, 2.107826, 2.395301, 2.953575");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.151029, 0.151029, 0.151029, 0.151092, 0.151248",\
+ "0.243808, 0.243808, 0.243808, 0.243837, 0.243906",\
+ "0.409516, 0.409519, 0.409535, 0.409607, 0.409769",\
+ "0.874760, 0.874761, 0.874769, 0.874803, 0.874880",\
+ "2.138597, 2.138606, 2.138675, 2.138985, 2.139684",\
+ "0.151029, 0.151029, 0.151029, 0.151092, 0.151248",\
+ "0.243808, 0.243808, 0.243808, 0.243837, 0.243906",\
+ "0.409516, 0.409519, 0.409535, 0.409607, 0.409769",\
+ "0.874760, 0.874761, 0.874769, 0.874803, 0.874880",\
+ "2.138597, 2.138606, 2.138675, 2.138985, 2.139684",\
+ "0.151029, 0.151029, 0.151029, 0.151092, 0.151248",\
+ "0.243808, 0.243808, 0.243808, 0.243837, 0.243906",\
+ "0.409516, 0.409519, 0.409535, 0.409607, 0.409769",\
+ "0.874760, 0.874761, 0.874769, 0.874803, 0.874880",\
+ "2.138597, 2.138606, 2.138675, 2.138985, 2.139684",\
+ "0.151029, 0.151029, 0.151029, 0.151092, 0.151248",\
+ "0.243808, 0.243808, 0.243808, 0.243837, 0.243907",\
+ "0.409516, 0.409519, 0.409535, 0.409607, 0.409769",\
+ "0.874760, 0.874761, 0.874769, 0.874803, 0.874880",\
+ "2.138597, 2.138606, 2.138675, 2.138986, 2.139686",\
+ "0.151029, 0.151029, 0.151029, 0.151092, 0.151249",\
+ "0.243808, 0.243808, 0.243808, 0.243837, 0.243907",\
+ "0.409517, 0.409519, 0.409535, 0.409607, 0.409770",\
+ "0.874760, 0.874761, 0.874769, 0.874803, 0.874881",\
+ "2.138598, 2.138607, 2.138675, 2.138986, 2.139688");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.322905, 0.543708, 0.721197, 1.009915, 1.570680",\
+ "0.358307, 0.577820, 0.755311, 1.044036, 1.604817",\
+ "0.412119, 0.627577, 0.805068, 1.093794, 1.654579",\
+ "0.545267, 0.756130, 0.933618, 1.222334, 1.783093",\
+ "0.889685, 1.091714, 1.269206, 1.557937, 2.118731",\
+ "0.411116, 0.631026, 0.808478, 1.097220, 1.658034",\
+ "0.446518, 0.665138, 0.842591, 1.131341, 1.692170",\
+ "0.500329, 0.714895, 0.892349, 1.181100, 1.741932",\
+ "0.633477, 0.843448, 1.020899, 1.309639, 1.870447",\
+ "0.977895, 1.179032, 1.356487, 1.645242, 2.206084",\
+ "0.499788, 0.711360, 0.888505, 1.177248, 1.738065",\
+ "0.535189, 0.745472, 0.922618, 1.211369, 1.772202",\
+ "0.589001, 0.795229, 0.972376, 1.261128, 1.821964",\
+ "0.722149, 0.923782, 1.100926, 1.389667, 1.950478",\
+ "1.066566, 1.259366, 1.436514, 1.725270, 2.286115",\
+ "0.562748, 0.769177, 0.946197, 1.234678, 1.795081",\
+ "0.598149, 0.803289, 0.980311, 1.268799, 1.829218",\
+ "0.651961, 0.853046, 1.030068, 1.318558, 1.878979",\
+ "0.785108, 0.981599, 1.158618, 1.447097, 2.007494",\
+ "1.129526, 1.317183, 1.494206, 1.782700, 2.343131",\
+ "0.894800, 1.074403, 1.249853, 1.537850, 2.097302",\
+ "0.929545, 1.108515, 1.283966, 1.571971, 2.131439",\
+ "0.979303, 1.158272, 1.333724, 1.621730, 2.181201",\
+ "1.107856, 1.286825, 1.462274, 1.750269, 2.309716",\
+ "1.443439, 1.622409, 1.797862, 2.085872, 2.645353");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002088, 0.075087, 0.162069, 0.322049, 0.642011");
+ values ( "0.073594, 0.073593, 0.073590, 0.073574, 0.073539",\
+ "0.105770, 0.105770, 0.105771, 0.105778, 0.105792",\
+ "0.191100, 0.191101, 0.191103, 0.191113, 0.191136",\
+ "0.432555, 0.432553, 0.432541, 0.432487, 0.432365",\
+ "1.065544, 1.065545, 1.065557, 1.065609, 1.065728",\
+ "0.073594, 0.073593, 0.073590, 0.073574, 0.073539",\
+ "0.105770, 0.105770, 0.105771, 0.105778, 0.105792",\
+ "0.191100, 0.191101, 0.191103, 0.191113, 0.191136",\
+ "0.432555, 0.432553, 0.432541, 0.432487, 0.432365",\
+ "1.065544, 1.065545, 1.065557, 1.065609, 1.065728",\
+ "0.073594, 0.073593, 0.073590, 0.073574, 0.073539",\
+ "0.105770, 0.105770, 0.105771, 0.105778, 0.105792",\
+ "0.191100, 0.191101, 0.191103, 0.191113, 0.191136",\
+ "0.432554, 0.432553, 0.432541, 0.432487, 0.432365",\
+ "1.065544, 1.065545, 1.065557, 1.065609, 1.065728",\
+ "0.073594, 0.073593, 0.073590, 0.073574, 0.073539",\
+ "0.105770, 0.105770, 0.105771, 0.105778, 0.105792",\
+ "0.191100, 0.191101, 0.191103, 0.191113, 0.191136",\
+ "0.432554, 0.432553, 0.432541, 0.432487, 0.432365",\
+ "1.065544, 1.065545, 1.065557, 1.065610, 1.065728",\
+ "0.073594, 0.073593, 0.073590, 0.073574, 0.073539",\
+ "0.105770, 0.105770, 0.105771, 0.105778, 0.105792",\
+ "0.191100, 0.191101, 0.191103, 0.191113, 0.191136",\
+ "0.432554, 0.432553, 0.432541, 0.432487, 0.432365",\
+ "1.065544, 1.065545, 1.065557, 1.065610, 1.065729");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[9]_redg_min_2427*/
+
+} /* end of pin tl_o[9] */
+
+pin("tl_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.154883 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.373916, 0.599728, 0.894574, 1.388503, 2.376363",\
+ "0.415183, 0.640172, 0.934074, 1.428691, 2.417925",\
+ "0.491066, 0.715879, 1.009866, 1.504530, 2.493859",\
+ "0.745862, 0.970981, 1.264787, 1.759400, 2.748624",\
+ "1.670986, 1.894752, 2.189083, 2.684630, 3.675724",\
+ "0.461357, 0.687335, 0.982222, 1.475219, 2.462296",\
+ "0.502624, 0.727773, 1.021724, 1.515406, 2.503859",\
+ "0.578507, 0.803480, 1.097517, 1.591246, 2.579792",\
+ "0.833304, 1.058581, 1.352438, 1.846115, 2.834558",\
+ "1.758428, 1.982354, 2.276736, 2.771345, 3.761657",\
+ "0.542237, 0.776480, 1.070189, 1.562842, 2.549252",\
+ "0.583504, 0.816901, 1.109691, 1.603029, 2.590814",\
+ "0.659387, 0.892609, 1.185483, 1.678869, 2.666748",\
+ "0.914185, 1.147708, 1.440404, 1.933738, 2.921513",\
+ "1.839308, 2.071485, 2.364703, 2.858968, 3.848613",\
+ "0.599958, 0.842354, 1.134332, 1.626756, 2.612761",\
+ "0.641225, 0.882751, 1.173835, 1.666943, 2.654323",\
+ "0.717108, 0.958461, 1.249627, 1.742782, 2.730257",\
+ "0.971907, 1.213556, 1.504548, 1.997652, 2.985022",\
+ "1.897030, 2.137338, 2.428847, 2.922882, 3.912122",\
+ "0.902648, 1.209455, 1.486456, 1.976211, 2.958217",\
+ "0.943914, 1.249574, 1.525966, 2.016402, 2.999779",\
+ "1.019797, 1.325301, 1.601758, 2.092241, 3.075712",\
+ "1.274609, 1.580356, 1.856679, 2.347110, 3.330478",\
+ "2.199727, 2.504201, 2.780987, 3.272345, 4.257577");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.034807, 0.034870, 0.035021, 0.035342, 0.035983",\
+ "0.083278, 0.083283, 0.083326, 0.083445, 0.083683",\
+ "0.208556, 0.208575, 0.208609, 0.208619, 0.208640",\
+ "0.692765, 0.692765, 0.692980, 0.693734, 0.695242",\
+ "2.477403, 2.477403, 2.477403, 2.477403, 2.477403",\
+ "0.034807, 0.034871, 0.035022, 0.035342, 0.035983",\
+ "0.083278, 0.083283, 0.083327, 0.083445, 0.083683",\
+ "0.208556, 0.208576, 0.208609, 0.208619, 0.208640",\
+ "0.692765, 0.692765, 0.692982, 0.693734, 0.695242",\
+ "2.477403, 2.477403, 2.477403, 2.477403, 2.477403",\
+ "0.034807, 0.034872, 0.035022, 0.035342, 0.035983",\
+ "0.083278, 0.083284, 0.083327, 0.083445, 0.083683",\
+ "0.208556, 0.208576, 0.208609, 0.208619, 0.208640",\
+ "0.692765, 0.692765, 0.692982, 0.693734, 0.695242",\
+ "2.477403, 2.477403, 2.477403, 2.477403, 2.477403",\
+ "0.034808, 0.034873, 0.035022, 0.035342, 0.035983",\
+ "0.083278, 0.083284, 0.083327, 0.083445, 0.083683",\
+ "0.208556, 0.208577, 0.208609, 0.208619, 0.208640",\
+ "0.692765, 0.692765, 0.692982, 0.693734, 0.695242",\
+ "2.477403, 2.477403, 2.477403, 2.477403, 2.477403",\
+ "0.034810, 0.034887, 0.035026, 0.035343, 0.035983",\
+ "0.083278, 0.083286, 0.083328, 0.083446, 0.083683",\
+ "0.208556, 0.208584, 0.208609, 0.208619, 0.208640",\
+ "0.692765, 0.692765, 0.692990, 0.693737, 0.695242",\
+ "2.477403, 2.477403, 2.477403, 2.477403, 2.477403");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.420490, 0.645190, 0.938944, 1.432430, 2.419402",\
+ "0.461359, 0.686264, 0.979881, 1.473291, 2.460111",\
+ "0.521542, 0.746363, 1.040033, 1.533430, 2.520226",\
+ "0.690406, 0.915382, 1.209000, 1.702350, 2.689050",\
+ "1.273072, 1.496794, 1.790318, 2.283708, 3.270487",\
+ "0.507931, 0.732792, 1.026591, 1.519145, 2.505336",\
+ "0.548801, 0.773865, 1.067528, 1.560006, 2.546045",\
+ "0.608983, 0.833965, 1.127680, 1.620146, 2.606159",\
+ "0.777848, 1.002983, 1.296647, 1.789066, 2.774984",\
+ "1.360514, 1.584395, 1.877965, 2.370424, 3.356421",\
+ "0.588811, 0.821923, 1.114557, 1.606768, 2.592291",\
+ "0.629680, 0.862994, 1.155494, 1.647629, 2.633000",\
+ "0.689863, 0.923095, 1.215646, 1.707769, 2.693114",\
+ "0.858728, 1.092113, 1.384613, 1.876689, 2.861939",\
+ "1.441395, 1.673523, 1.965932, 2.458046, 3.443376",\
+ "0.646531, 0.887777, 1.178701, 1.670682, 2.655800",\
+ "0.687400, 0.928846, 1.219638, 1.711543, 2.696509",\
+ "0.747584, 0.988947, 1.279790, 1.771683, 2.756623",\
+ "0.916448, 1.157964, 1.448757, 1.940602, 2.925448",\
+ "1.499118, 1.739372, 2.030076, 2.521960, 3.506885",\
+ "0.949211, 1.254642, 1.530820, 2.020136, 3.001256",\
+ "0.990081, 1.295683, 1.571756, 2.060997, 3.041965",\
+ "1.050271, 1.355798, 1.631908, 2.121136, 3.102079",\
+ "1.219138, 1.524806, 1.800875, 2.290056, 3.270904",\
+ "1.801826, 2.106188, 2.382194, 2.871414, 3.852341");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.042658, 0.042646, 0.042619, 0.042581, 0.042505",\
+ "0.078946, 0.078946, 0.078946, 0.078946, 0.078946",\
+ "0.155293, 0.155293, 0.155279, 0.155230, 0.155132",\
+ "0.431058, 0.431058, 0.431019, 0.430882, 0.430609",\
+ "1.497229, 1.495745, 1.494360, 1.494360, 1.494360",\
+ "0.042658, 0.042646, 0.042618, 0.042581, 0.042505",\
+ "0.078946, 0.078946, 0.078946, 0.078946, 0.078946",\
+ "0.155293, 0.155293, 0.155279, 0.155230, 0.155132",\
+ "0.431058, 0.431058, 0.431018, 0.430882, 0.430609",\
+ "1.497229, 1.495736, 1.494360, 1.494360, 1.494360",\
+ "0.042658, 0.042646, 0.042618, 0.042581, 0.042505",\
+ "0.078946, 0.078946, 0.078946, 0.078946, 0.078946",\
+ "0.155293, 0.155293, 0.155279, 0.155230, 0.155132",\
+ "0.431058, 0.431058, 0.431018, 0.430882, 0.430609",\
+ "1.497225, 1.495716, 1.494360, 1.494360, 1.494360",\
+ "0.042658, 0.042646, 0.042618, 0.042581, 0.042505",\
+ "0.078946, 0.078946, 0.078946, 0.078946, 0.078946",\
+ "0.155293, 0.155293, 0.155278, 0.155230, 0.155132",\
+ "0.431058, 0.431058, 0.431018, 0.430882, 0.430609",\
+ "1.497218, 1.495687, 1.494360, 1.494360, 1.494360",\
+ "0.042658, 0.042642, 0.042618, 0.042580, 0.042505",\
+ "0.078946, 0.078946, 0.078946, 0.078946, 0.078946",\
+ "0.155293, 0.155293, 0.155278, 0.155230, 0.155132",\
+ "0.431058, 0.431058, 0.431017, 0.430882, 0.430609",\
+ "1.497153, 1.495349, 1.494360, 1.494360, 1.494360");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2694*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.746021, 1.001665, 1.285647, 1.784442, 2.782033",\
+ "0.780412, 1.036056, 1.320037, 1.818832, 2.816423",\
+ "0.851654, 1.107299, 1.391280, 1.890076, 2.887667",\
+ "1.105821, 1.361465, 1.645446, 2.144242, 3.141833",\
+ "2.030393, 2.286036, 2.570016, 3.068810, 4.066399",\
+ "0.833430, 1.089212, 1.373307, 1.871157, 2.867967",\
+ "0.867821, 1.123603, 1.407697, 1.905547, 2.902357",\
+ "0.939063, 1.194845, 1.478940, 1.976790, 2.973600",\
+ "1.193229, 1.449012, 1.733106, 2.230957, 3.227767",\
+ "2.117802, 2.373583, 2.657676, 3.155524, 4.152333",\
+ "0.914308, 1.178178, 1.461272, 1.958778, 2.954922",\
+ "0.948698, 1.212569, 1.495662, 1.993168, 2.989312",\
+ "1.019941, 1.283811, 1.566905, 2.064412, 3.060555",\
+ "1.274107, 1.537978, 1.821072, 2.318578, 3.314722",\
+ "2.198680, 2.462549, 2.745641, 3.243146, 4.239288",\
+ "0.974568, 1.243791, 1.525417, 2.022691, 3.018431",\
+ "1.008959, 1.278181, 1.559807, 2.057082, 3.052821",\
+ "1.080201, 1.349424, 1.631050, 2.128325, 3.124064",\
+ "1.334368, 1.603591, 1.885216, 2.382491, 3.378231",\
+ "2.258940, 2.528162, 2.809785, 3.307059, 4.302797",\
+ "1.309682, 1.607944, 1.877586, 2.372160, 3.363887",\
+ "1.344072, 1.642334, 1.911976, 2.406550, 3.398277",\
+ "1.415315, 1.713577, 1.983219, 2.477793, 3.469521",\
+ "1.669481, 1.967744, 2.237385, 2.731960, 3.723687",\
+ "2.594053, 2.892314, 3.161954, 3.656528, 4.648253");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208405, 0.208405, 0.208405",\
+ "0.692758, 0.692758, 0.692759, 0.692761, 0.692766",\
+ "2.464359, 2.464359, 2.464359, 2.464359, 2.464359",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208405, 0.208405, 0.208405",\
+ "0.692758, 0.692758, 0.692759, 0.692761, 0.692766",\
+ "2.464359, 2.464359, 2.464359, 2.464359, 2.464359",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208405, 0.208405, 0.208405",\
+ "0.692758, 0.692758, 0.692759, 0.692761, 0.692766",\
+ "2.464359, 2.464359, 2.464359, 2.464359, 2.464359",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208405, 0.208405, 0.208405",\
+ "0.692758, 0.692758, 0.692759, 0.692761, 0.692766",\
+ "2.464359, 2.464359, 2.464359, 2.464359, 2.464359",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208405, 0.208405, 0.208405",\
+ "0.692758, 0.692758, 0.692759, 0.692761, 0.692766",\
+ "2.464359, 2.464359, 2.464359, 2.464359, 2.464359");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.777783, 1.033425, 1.317405, 1.816199, 2.813788",\
+ "0.819535, 1.075178, 1.359157, 1.857951, 2.855540",\
+ "0.879465, 1.135108, 1.419087, 1.917882, 2.915471",\
+ "1.047583, 1.303225, 1.587205, 2.085999, 3.083588",\
+ "1.629496, 1.885133, 2.169106, 2.667897, 3.665479",\
+ "0.865191, 1.120972, 1.405064, 1.902913, 2.899722",\
+ "0.906944, 1.162724, 1.446817, 1.944666, 2.941474",\
+ "0.966874, 1.222655, 1.506747, 2.004596, 3.001405",\
+ "1.134991, 1.390772, 1.674865, 2.172714, 3.169522",\
+ "1.716905, 1.972680, 2.256766, 2.754611, 3.751413",\
+ "0.946069, 1.209938, 1.493030, 1.990535, 2.986677",\
+ "0.987822, 1.251690, 1.534782, 2.032288, 3.028429",\
+ "1.047752, 1.311621, 1.594713, 2.092218, 3.088360",\
+ "1.215869, 1.479738, 1.762830, 2.260335, 3.256477",\
+ "1.797783, 2.061646, 2.344732, 2.842233, 3.838368",\
+ "1.006330, 1.275551, 1.557174, 2.054448, 3.050186",\
+ "1.048082, 1.317303, 1.598927, 2.096201, 3.091938",\
+ "1.108012, 1.377234, 1.658857, 2.156131, 3.151869",\
+ "1.276130, 1.545351, 1.826975, 2.324248, 3.319986",\
+ "1.858043, 2.127259, 2.408876, 2.906147, 3.901877",\
+ "1.341443, 1.639703, 1.909343, 2.403917, 3.395642",\
+ "1.383195, 1.681456, 1.951096, 2.445669, 3.437394",\
+ "1.443126, 1.741386, 2.011026, 2.505599, 3.497324",\
+ "1.611243, 1.909503, 2.179143, 2.673717, 3.665442",\
+ "2.193155, 2.491410, 2.761045, 3.255615, 4.247333");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.045877, 0.045877, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2719*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.329434, 0.567970, 0.849310, 1.349062, 2.348564",\
+ "0.370729, 0.609110, 0.889780, 1.387186, 2.381998",\
+ "0.446657, 0.684926, 0.965184, 1.461121, 2.452996",\
+ "0.702252, 0.940104, 1.219789, 1.715647, 2.707363",\
+ "1.626635, 1.863892, 2.145200, 2.640602, 3.631406",\
+ "0.416843, 0.655497, 0.936973, 1.435776, 2.434498",\
+ "0.458138, 0.696638, 0.977436, 1.473900, 2.467931",\
+ "0.534066, 0.772454, 1.052835, 1.547836, 2.538929",\
+ "0.789661, 1.027628, 1.307440, 1.802361, 2.793297",\
+ "1.714044, 1.951428, 2.232849, 2.727316, 3.717340",\
+ "0.497703, 0.744421, 1.024939, 1.523398, 2.521453",\
+ "0.538998, 0.785561, 1.065401, 1.561522, 2.554886",\
+ "0.614927, 0.861378, 1.140800, 1.635457, 2.625884",\
+ "0.870521, 1.116544, 1.395405, 1.889983, 2.880252",\
+ "1.794904, 2.040369, 2.320814, 2.814938, 3.804295",\
+ "0.555377, 0.809972, 1.089084, 1.587311, 2.584962",\
+ "0.596671, 0.851113, 1.129546, 1.625435, 2.618395",\
+ "0.672599, 0.926930, 1.204945, 1.699371, 2.689393",\
+ "0.928193, 1.182084, 1.459549, 1.953896, 2.943761",\
+ "1.852575, 2.105947, 2.384958, 2.878851, 3.867804",\
+ "0.876916, 1.173402, 1.441262, 1.936784, 2.930418",\
+ "0.918063, 1.214545, 1.481701, 1.974898, 2.963851",\
+ "0.993829, 1.290365, 1.557085, 2.048828, 3.034849",\
+ "1.249296, 1.545383, 1.811688, 2.303353, 3.289217",\
+ "2.172819, 2.469679, 2.737093, 3.228306, 4.213260");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.035016, 0.035016, 0.035955, 0.039196, 0.045676",\
+ "0.083549, 0.083549, 0.083885, 0.085044, 0.087361",\
+ "0.208718, 0.208718, 0.208874, 0.209415, 0.210496",\
+ "0.692609, 0.692819, 0.692927, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477148, 2.477552, 2.478359",\
+ "0.035016, 0.035016, 0.035965, 0.039196, 0.045676",\
+ "0.083549, 0.083549, 0.083888, 0.085044, 0.087361",\
+ "0.208718, 0.208718, 0.208876, 0.209415, 0.210496",\
+ "0.692609, 0.692820, 0.692927, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477552, 2.478359",\
+ "0.035016, 0.035016, 0.035966, 0.039196, 0.045676",\
+ "0.083549, 0.083549, 0.083888, 0.085044, 0.087361",\
+ "0.208718, 0.208718, 0.208876, 0.209415, 0.210496",\
+ "0.692610, 0.692821, 0.692927, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477552, 2.478359",\
+ "0.035016, 0.035016, 0.035966, 0.039196, 0.045676",\
+ "0.083549, 0.083549, 0.083889, 0.085044, 0.087361",\
+ "0.208718, 0.208718, 0.208876, 0.209415, 0.210496",\
+ "0.692612, 0.692822, 0.692927, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477552, 2.478359",\
+ "0.035016, 0.035016, 0.035999, 0.039209, 0.045676",\
+ "0.083549, 0.083549, 0.083900, 0.085048, 0.087361",\
+ "0.208718, 0.208718, 0.208882, 0.209417, 0.210496",\
+ "0.692711, 0.692838, 0.692929, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477154, 2.477553, 2.478359");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.376302, 0.614890, 0.892196, 1.378119, 2.349964",\
+ "0.417201, 0.655792, 0.932845, 1.417492, 2.386786",\
+ "0.477347, 0.716035, 0.992408, 1.474614, 2.439025",\
+ "0.646325, 0.884988, 1.160689, 1.640497, 2.600112",\
+ "1.229570, 1.466407, 1.742451, 2.222424, 3.182369",\
+ "0.463711, 0.702417, 0.979816, 1.464833, 2.435898",\
+ "0.504610, 0.743320, 1.020461, 1.504206, 2.472719",\
+ "0.564756, 0.803563, 1.080016, 1.561328, 2.524959",\
+ "0.733734, 0.972517, 1.248289, 1.727211, 2.686046",\
+ "1.316979, 1.553937, 1.830052, 2.309139, 3.268303",\
+ "0.544574, 0.791340, 1.067780, 1.552455, 2.522853",\
+ "0.585473, 0.832245, 1.108425, 1.591828, 2.559674",\
+ "0.645618, 0.892489, 1.167980, 1.648950, 2.611914",\
+ "0.814594, 1.061442, 1.336253, 1.814833, 2.773001",\
+ "1.397827, 1.642867, 1.918017, 2.396760, 3.355258",\
+ "0.602253, 0.856891, 1.131923, 1.616368, 2.586362",\
+ "0.643149, 0.897798, 1.172568, 1.655741, 2.623183",\
+ "0.703295, 0.958043, 1.232122, 1.712863, 2.675423",\
+ "0.872267, 1.126997, 1.400395, 1.878746, 2.836510",\
+ "1.455475, 1.708427, 1.982158, 2.460673, 3.418767",\
+ "0.923807, 1.220314, 1.483961, 1.965784, 2.931818",\
+ "0.964736, 1.261250, 1.524593, 2.005152, 2.968639",\
+ "1.024895, 1.321501, 1.584123, 2.062263, 3.020879",\
+ "1.193870, 1.490460, 1.752371, 2.228136, 3.181966",\
+ "1.775178, 2.071965, 2.334136, 2.810064, 3.764223");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.042685, 0.042788, 0.042938, 0.042938, 0.042938",\
+ "0.078477, 0.079298, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431182, 0.431182, 0.431182, 0.431182, 0.431182",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042789, 0.042938, 0.042938, 0.042938",\
+ "0.078477, 0.079299, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431182, 0.431182, 0.431182, 0.431182, 0.431182",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042791, 0.042938, 0.042938, 0.042938",\
+ "0.078482, 0.079299, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431182, 0.431182, 0.431182, 0.431182, 0.431182",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042794, 0.042938, 0.042938, 0.042938",\
+ "0.078491, 0.079301, 0.079365, 0.079365, 0.079365",\
+ "0.155271, 0.155315, 0.155322, 0.155322, 0.155322",\
+ "0.431182, 0.431182, 0.431182, 0.431182, 0.431182",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042831, 0.042938, 0.042938, 0.042938",\
+ "0.078956, 0.079318, 0.079365, 0.079365, 0.079365",\
+ "0.155294, 0.155316, 0.155322, 0.155322, 0.155322",\
+ "0.431182, 0.431182, 0.431182, 0.431182, 0.431182",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.731951, 0.980905, 1.256242, 1.719746, 2.646754",\
+ "0.766341, 1.015295, 1.290632, 1.754136, 2.681144",\
+ "0.837584, 1.086538, 1.361876, 1.825380, 2.752387",\
+ "1.091750, 1.340704, 1.616042, 2.079546, 3.006554",\
+ "2.016322, 2.265275, 2.540610, 3.004114, 3.931121",\
+ "0.819353, 1.068475, 1.343788, 1.806459, 2.732687",\
+ "0.853744, 1.102866, 1.378179, 1.840850, 2.767077",\
+ "0.924986, 1.174109, 1.449422, 1.912093, 2.838321",\
+ "1.179153, 1.428275, 1.703588, 2.166259, 3.092487",\
+ "2.103725, 2.352845, 2.628156, 3.090827, 4.017055",\
+ "0.900166, 1.157465, 1.431751, 1.894080, 2.819643",\
+ "0.934556, 1.191856, 1.466141, 1.928470, 2.854033",\
+ "1.005799, 1.263098, 1.537384, 1.999714, 2.925276",\
+ "1.259965, 1.517265, 1.791550, 2.253880, 3.179442",\
+ "2.184537, 2.441835, 2.716118, 3.178448, 4.104010",\
+ "0.957806, 1.223112, 1.495889, 1.957993, 2.883152",\
+ "0.992196, 1.257502, 1.530279, 1.992383, 2.917542",\
+ "1.063439, 1.328745, 1.601523, 2.063626, 2.988785",\
+ "1.317605, 1.582911, 1.855689, 2.317793, 3.242951",\
+ "2.242177, 2.507481, 2.780257, 3.242361, 4.167519",\
+ "1.292888, 1.587742, 1.847697, 2.307310, 3.228608",\
+ "1.327278, 1.622132, 1.882087, 2.341700, 3.262998",\
+ "1.398521, 1.693375, 1.953330, 2.412943, 3.334241",\
+ "1.652687, 1.947541, 2.207496, 2.667110, 3.588408",\
+ "2.577259, 2.872111, 3.132065, 3.591678, 4.512975");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692758, 0.692758, 0.692759, 0.692760, 0.692764",\
+ "2.464354, 2.464354, 2.464354, 2.464354, 2.464354",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692758, 0.692758, 0.692759, 0.692760, 0.692764",\
+ "2.464354, 2.464354, 2.464354, 2.464354, 2.464354",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692758, 0.692758, 0.692759, 0.692760, 0.692764",\
+ "2.464354, 2.464354, 2.464354, 2.464354, 2.464354",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692758, 0.692758, 0.692759, 0.692760, 0.692764",\
+ "2.464354, 2.464354, 2.464354, 2.464354, 2.464354",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083751",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692758, 0.692758, 0.692759, 0.692760, 0.692764",\
+ "2.464354, 2.464354, 2.464354, 2.464354, 2.464354");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.763712, 1.012664, 1.287999, 1.751503, 2.678509",\
+ "0.805464, 1.054416, 1.329752, 1.793255, 2.720262",\
+ "0.865395, 1.114347, 1.389682, 1.853185, 2.780192",\
+ "1.033512, 1.282464, 1.557799, 2.021303, 2.948309",\
+ "1.615425, 1.864370, 2.139697, 2.603199, 3.530203",\
+ "0.851115, 1.100234, 1.375545, 1.838216, 2.764443",\
+ "0.892867, 1.141987, 1.417298, 1.879968, 2.806196",\
+ "0.952797, 1.201917, 1.477228, 1.939899, 2.866126",\
+ "1.120914, 1.370034, 1.645345, 2.108016, 3.034243",\
+ "1.702827, 1.951940, 2.227243, 2.689913, 3.616137",\
+ "0.931927, 1.189224, 1.463507, 1.925837, 2.851398",\
+ "0.973680, 1.230977, 1.505260, 1.967589, 2.893151",\
+ "1.033610, 1.290907, 1.565190, 2.027519, 2.953081",\
+ "1.201727, 1.459024, 1.733307, 2.195637, 3.121198",\
+ "1.783640, 2.040930, 2.315206, 2.777534, 3.703092",\
+ "0.989567, 1.254871, 1.527646, 1.989749, 2.914907",\
+ "1.031319, 1.296623, 1.569398, 2.031502, 2.956660",\
+ "1.091250, 1.356553, 1.629329, 2.091432, 3.016590",\
+ "1.259367, 1.524671, 1.797446, 2.259549, 3.184707",\
+ "1.841280, 2.106576, 2.379344, 2.841446, 3.766601",\
+ "1.324649, 1.619500, 1.879453, 2.339067, 3.260363",\
+ "1.366401, 1.661253, 1.921206, 2.380819, 3.302116",\
+ "1.426332, 1.721183, 1.981136, 2.440749, 3.362046",\
+ "1.594449, 1.889300, 2.149253, 2.608866, 3.530163",\
+ "2.176360, 2.471204, 2.731152, 3.190763, 4.112057");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2432*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.602525, 0.840752, 1.118848, 1.606867, 2.582905",\
+ "0.636915, 0.875142, 1.153247, 1.641296, 2.617393",\
+ "0.708158, 0.946386, 1.224478, 1.712482, 2.688491",\
+ "0.962324, 1.200552, 1.478688, 1.966845, 2.943158",\
+ "1.886897, 2.125118, 2.403212, 2.891220, 3.867236",\
+ "0.689934, 0.928280, 1.206475, 1.693581, 2.668839",\
+ "0.724325, 0.962670, 1.240873, 1.728010, 2.703327",\
+ "0.795567, 1.033914, 1.312104, 1.799197, 2.774425",\
+ "1.049734, 1.288080, 1.566315, 2.053559, 3.029092",\
+ "1.974307, 2.212646, 2.490838, 2.977934, 3.953170",\
+ "0.770795, 1.017206, 1.294439, 1.781203, 2.755794",\
+ "0.805185, 1.051596, 1.328838, 1.815632, 2.790282",\
+ "0.876428, 1.122840, 1.400069, 1.886818, 2.861380",\
+ "1.130594, 1.377006, 1.654280, 2.141181, 3.116047",\
+ "2.055167, 2.301572, 2.578803, 3.065556, 4.040125",\
+ "0.828465, 1.082761, 1.358582, 1.845116, 2.819303",\
+ "0.862855, 1.117151, 1.392981, 1.879545, 2.853791",\
+ "0.934098, 1.188395, 1.464212, 1.950732, 2.924889",\
+ "1.188264, 1.442561, 1.718422, 2.205094, 3.179556",\
+ "2.112837, 2.367127, 2.642946, 3.129469, 4.103634",\
+ "1.149414, 1.446227, 1.710642, 2.194541, 3.164759",\
+ "1.183804, 1.480617, 1.745041, 2.228970, 3.199247",\
+ "1.255047, 1.551860, 1.816271, 2.300156, 3.270345",\
+ "1.509214, 1.806027, 2.070484, 2.554519, 3.525012",\
+ "2.433782, 2.730593, 2.995005, 3.478894, 4.449090");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083749, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692757, 0.692767, 0.692798, 0.692859",\
+ "2.464362, 2.464362, 2.464362, 2.464362, 2.464362",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083749, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692757, 0.692767, 0.692798, 0.692859",\
+ "2.464362, 2.464362, 2.464362, 2.464362, 2.464362",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083749, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692757, 0.692767, 0.692798, 0.692859",\
+ "2.464362, 2.464362, 2.464362, 2.464362, 2.464362",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083749, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692757, 0.692767, 0.692798, 0.692859",\
+ "2.464362, 2.464362, 2.464362, 2.464362, 2.464362",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083749, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692757, 0.692767, 0.692798, 0.692859",\
+ "2.464362, 2.464362, 2.464362, 2.464362, 2.464362");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.634287, 0.872507, 1.150200, 1.636823, 2.610071",\
+ "0.676039, 0.914259, 1.192001, 1.678792, 2.652375",\
+ "0.735970, 0.974190, 1.251983, 1.738955, 2.712900",\
+ "0.904087, 1.142307, 1.420172, 1.907391, 2.881829",\
+ "1.486003, 1.724197, 2.002198, 2.489875, 3.465229",\
+ "0.721696, 0.960035, 1.237821, 1.723538, 2.696005",\
+ "0.763449, 1.001787, 1.279623, 1.765507, 2.738309",\
+ "0.823379, 1.061718, 1.339606, 1.825670, 2.798834",\
+ "0.991496, 1.229835, 1.507796, 1.994106, 2.967763",\
+ "1.573412, 1.811725, 2.089823, 2.576589, 3.551162",\
+ "0.802557, 1.048961, 1.325786, 1.811159, 2.782960",\
+ "0.844309, 1.090713, 1.367588, 1.853128, 2.825264",\
+ "0.904240, 1.150644, 1.427571, 1.913292, 2.885789",\
+ "1.072357, 1.318761, 1.595761, 2.081728, 3.054718",\
+ "1.654273, 1.900651, 2.177788, 2.664211, 3.638118",\
+ "0.860227, 1.114515, 1.389929, 1.875073, 2.846469",\
+ "0.901979, 1.156268, 1.431731, 1.917042, 2.888773",\
+ "0.961910, 1.216198, 1.491714, 1.977205, 2.949298",\
+ "1.130027, 1.384316, 1.659903, 2.145641, 3.118227",\
+ "1.711942, 1.966206, 2.241930, 2.728124, 3.701627",\
+ "1.181171, 1.477981, 1.741974, 2.224492, 3.191925",\
+ "1.222923, 1.519734, 1.783778, 2.266461, 3.234229",\
+ "1.282854, 1.579664, 1.843763, 2.326625, 3.294754",\
+ "1.450971, 1.747782, 2.011955, 2.495062, 3.463683",\
+ "2.032870, 2.329673, 2.593987, 3.077547, 4.047082");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494119, 1.494120, 1.494126, 1.494136",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494119, 1.494120, 1.494126, 1.494136",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494119, 1.494120, 1.494126, 1.494136",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494119, 1.494120, 1.494126, 1.494136",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494119, 1.494120, 1.494126, 1.494136");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2526*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.555636, 0.806104, 1.084905, 1.584821, 2.584653",\
+ "0.590029, 0.840498, 1.119303, 1.619235, 2.619098",\
+ "0.661266, 0.911734, 1.190528, 1.690421, 2.690205",\
+ "0.915433, 1.165901, 1.444770, 1.944926, 2.945236",\
+ "1.840038, 2.090508, 2.369324, 2.869289, 3.869217",\
+ "0.643048, 0.893609, 1.172570, 1.671536, 2.670587",\
+ "0.677441, 0.928003, 1.206968, 1.705950, 2.705032",\
+ "0.748679, 0.999240, 1.278193, 1.777135, 2.776139",\
+ "1.002845, 1.253406, 1.532436, 2.031641, 3.031170",\
+ "1.927450, 2.178014, 2.456990, 2.956004, 3.955151",\
+ "0.723905, 0.982497, 1.260536, 1.759158, 2.757542",\
+ "0.758298, 1.016890, 1.294935, 1.793572, 2.791987",\
+ "0.829535, 1.088127, 1.366160, 1.864758, 2.863094",\
+ "1.083702, 1.342294, 1.620402, 2.119263, 3.118125",\
+ "2.008307, 2.266901, 2.544956, 3.043626, 4.042106",\
+ "0.781799, 1.047996, 1.324681, 1.823071, 2.821051",\
+ "0.816193, 1.082390, 1.359079, 1.857485, 2.855496",\
+ "0.887430, 1.153626, 1.430304, 1.928671, 2.926603",\
+ "1.141596, 1.407793, 1.684547, 2.183176, 3.181634",\
+ "2.066201, 2.332401, 2.609101, 3.107539, 4.105615",\
+ "1.114657, 1.410772, 1.676864, 2.172549, 3.166507",\
+ "1.149050, 1.445166, 1.711262, 2.206963, 3.200952",\
+ "1.220287, 1.516402, 1.782487, 2.278148, 3.272059",\
+ "1.474454, 1.770569, 2.036732, 2.532654, 3.527090",\
+ "2.399059, 2.695177, 2.961284, 3.457017, 4.451071");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466091, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466100, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466100, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465200, 2.466101, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083751, 0.083752, 0.083762, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692768, 0.692812, 0.692941, 0.693203",\
+ "2.465173, 2.465210, 2.466131, 2.469072, 2.474999");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.587433, 0.837905, 1.116317, 1.614875, 2.611990",\
+ "0.629185, 0.879656, 1.158119, 1.656853, 2.654322",\
+ "0.689115, 0.939586, 1.218100, 1.717010, 2.714829",\
+ "0.857231, 1.107703, 1.386286, 1.885441, 2.883749",\
+ "1.439262, 1.689742, 1.968444, 2.467987, 3.467073",\
+ "0.674846, 0.925410, 1.203978, 1.701590, 2.697924",\
+ "0.716597, 0.967161, 1.245781, 1.743568, 2.740255",\
+ "0.776528, 1.027092, 1.305762, 1.803725, 2.800763",\
+ "0.944644, 1.195208, 1.473949, 1.972156, 2.969683",\
+ "1.526675, 1.777247, 2.056108, 2.554702, 3.553007",\
+ "0.755703, 1.014297, 1.291944, 1.789212, 2.784879",\
+ "0.797454, 1.056048, 1.333747, 1.831190, 2.827210",\
+ "0.857384, 1.115979, 1.393728, 1.891347, 2.887718",\
+ "1.025501, 1.284095, 1.561916, 2.059778, 3.056638",\
+ "1.607531, 1.866135, 2.144074, 2.642324, 3.639962",\
+ "0.813597, 1.079797, 1.356089, 1.853126, 2.848388",\
+ "0.855349, 1.121548, 1.397891, 1.895104, 2.890719",\
+ "0.915279, 1.181478, 1.457873, 1.955260, 2.951227",\
+ "1.083395, 1.349595, 1.626060, 2.123692, 3.120147",\
+ "1.665427, 1.931634, 2.208219, 2.706238, 3.703471",\
+ "1.146455, 1.442573, 1.708257, 2.202597, 3.193844",\
+ "1.188207, 1.484324, 1.750062, 2.244576, 3.236176",\
+ "1.248137, 1.544255, 1.810045, 2.304733, 3.296683",\
+ "1.416253, 1.712371, 1.978235, 2.473166, 3.465603",\
+ "1.998287, 2.294412, 2.560398, 3.055713, 4.048927");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045874, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155802, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2616*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.634427, 0.872697, 1.149292, 1.635475, 2.607842",\
+ "0.668851, 0.907120, 1.183712, 1.669888, 2.642240",\
+ "0.739833, 0.978100, 1.254713, 1.740957, 2.713446",\
+ "0.993985, 1.232251, 1.508868, 1.995127, 2.967646",\
+ "1.919059, 2.157313, 2.433878, 2.919960, 3.892124",\
+ "0.721829, 0.960233, 1.236908, 1.722188, 2.693776",\
+ "0.756252, 0.994656, 1.271329, 1.756601, 2.728174",\
+ "0.827235, 1.065637, 1.342330, 1.827670, 2.799379",\
+ "1.081387, 1.319787, 1.596485, 2.081840, 3.053579",\
+ "2.006460, 2.244850, 2.521494, 3.006673, 3.978058",\
+ "0.802677, 1.049143, 1.324872, 1.809809, 2.780731",\
+ "0.837101, 1.083566, 1.359292, 1.844222, 2.815129",\
+ "0.908083, 1.154546, 1.430293, 1.915291, 2.886334",\
+ "1.162235, 1.408697, 1.684448, 2.169461, 3.140534",\
+ "2.087309, 2.333760, 2.609457, 3.094293, 4.065013",\
+ "0.860401, 1.114674, 1.389014, 1.873721, 2.844240",\
+ "0.894825, 1.149096, 1.423434, 1.908134, 2.878638",\
+ "0.965807, 1.220077, 1.494435, 1.979203, 2.949843",\
+ "1.219959, 1.474228, 1.748591, 2.233373, 3.204043",\
+ "2.145033, 2.399290, 2.673600, 3.158206, 4.128522",\
+ "1.188527, 1.477957, 1.741051, 2.223131, 3.189696",\
+ "1.222950, 1.512379, 1.775471, 2.257544, 3.224094",\
+ "1.293931, 1.583360, 1.846473, 2.328613, 3.295300",\
+ "1.548083, 1.837511, 2.100628, 2.582783, 3.549500",\
+ "2.473149, 2.762573, 3.025636, 3.507615, 4.473978");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.034240, 0.034240, 0.034242, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083588, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.661467, 0.899737, 1.176348, 1.662586, 2.635063",\
+ "0.703763, 0.942033, 1.218582, 1.704611, 2.676670",\
+ "0.764325, 1.002595, 1.279082, 1.764899, 2.736534",\
+ "0.933255, 1.171525, 1.447944, 1.933534, 2.904712",\
+ "1.516509, 1.754779, 2.031088, 2.516304, 3.486737",\
+ "0.748868, 0.987273, 1.263965, 1.749299, 2.720997",\
+ "0.791164, 1.029569, 1.306198, 1.791324, 2.762603",\
+ "0.851727, 1.090131, 1.366697, 1.851612, 2.822468",\
+ "1.020657, 1.259062, 1.535559, 2.020247, 2.990646",\
+ "1.603910, 1.842315, 2.118701, 2.603017, 3.572671",\
+ "0.829717, 1.076183, 1.351928, 1.836920, 2.807952",\
+ "0.872012, 1.118479, 1.394161, 1.878945, 2.849558",\
+ "0.932575, 1.179041, 1.454660, 1.939233, 2.909423",\
+ "1.101505, 1.347972, 1.623522, 2.107867, 3.077601",\
+ "1.684759, 1.931225, 2.206665, 2.690638, 3.659626",\
+ "0.887441, 1.141714, 1.416070, 1.900832, 2.871461",\
+ "0.929737, 1.184009, 1.458303, 1.942857, 2.913067",\
+ "0.990299, 1.244572, 1.518803, 2.003145, 2.972932",\
+ "1.159229, 1.413502, 1.687665, 2.171780, 3.141110",\
+ "1.742483, 1.996755, 2.270807, 2.754550, 3.723135",\
+ "1.215567, 1.504997, 1.768108, 2.250242, 3.216917",\
+ "1.257862, 1.547292, 1.810339, 2.292266, 3.258523",\
+ "1.318425, 1.607855, 1.870836, 2.352553, 3.318388",\
+ "1.487355, 1.776785, 2.039696, 2.521187, 3.486566",\
+ "2.070609, 2.360038, 2.622834, 3.103956, 4.068591");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2722*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.584050, 0.834549, 1.112490, 1.609591, 2.603792",\
+ "0.618482, 0.868982, 1.146923, 1.644024, 2.638226",\
+ "0.689476, 0.939977, 1.217929, 1.715062, 2.709330",\
+ "0.943640, 1.194143, 1.472115, 1.969317, 2.963722",\
+ "1.868820, 2.119334, 2.397313, 2.894526, 3.888954",\
+ "0.671463, 0.922054, 1.200147, 1.696306, 2.689726",\
+ "0.705894, 0.956486, 1.234580, 1.730739, 2.724160",\
+ "0.776888, 1.027482, 1.305585, 1.801777, 2.795263",\
+ "1.031053, 1.281648, 1.559772, 2.056032, 3.049656",\
+ "1.956232, 2.206839, 2.484970, 2.981241, 3.974888",\
+ "0.752319, 1.010941, 1.288113, 1.783928, 2.776681",\
+ "0.786751, 1.045373, 1.322546, 1.818361, 2.811115",\
+ "0.857745, 1.116369, 1.393551, 1.889400, 2.882218",\
+ "1.111909, 1.370534, 1.647738, 2.143654, 3.136611",\
+ "2.037089, 2.295726, 2.572936, 3.068864, 4.061843",\
+ "0.810059, 1.076439, 1.352257, 1.847842, 2.840190",\
+ "0.844490, 1.110871, 1.386690, 1.882275, 2.874624",\
+ "0.915485, 1.181867, 1.457695, 1.953313, 2.945727",\
+ "1.169649, 1.436033, 1.711882, 2.207568, 3.200120",\
+ "2.094831, 2.361224, 2.637080, 3.132777, 4.125352",\
+ "1.143033, 1.439203, 1.704411, 2.197307, 3.185646",\
+ "1.177464, 1.473635, 1.738844, 2.231740, 3.220080",\
+ "1.248459, 1.544631, 1.809850, 2.302778, 3.291183",\
+ "1.502625, 1.798797, 2.064037, 2.557034, 3.545576",\
+ "2.427809, 2.723989, 2.989235, 3.482243, 4.470808");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.034240, 0.034241, 0.034251, 0.034278, 0.034331",\
+ "0.083583, 0.083586, 0.083606, 0.083665, 0.083782",\
+ "0.208067, 0.208069, 0.208085, 0.208132, 0.208225",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470758, 2.470775, 2.471205, 2.472677, 2.475621",\
+ "0.034240, 0.034241, 0.034251, 0.034278, 0.034331",\
+ "0.083583, 0.083586, 0.083607, 0.083665, 0.083782",\
+ "0.208067, 0.208069, 0.208085, 0.208132, 0.208225",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470758, 2.470775, 2.471210, 2.472677, 2.475621",\
+ "0.034240, 0.034241, 0.034251, 0.034278, 0.034331",\
+ "0.083583, 0.083586, 0.083607, 0.083665, 0.083782",\
+ "0.208067, 0.208069, 0.208085, 0.208132, 0.208225",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470758, 2.470775, 2.471210, 2.472677, 2.475621",\
+ "0.034240, 0.034241, 0.034251, 0.034278, 0.034331",\
+ "0.083583, 0.083586, 0.083607, 0.083665, 0.083782",\
+ "0.208067, 0.208069, 0.208085, 0.208132, 0.208225",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470760, 2.470775, 2.471210, 2.472677, 2.475621",\
+ "0.034240, 0.034242, 0.034251, 0.034278, 0.034331",\
+ "0.083584, 0.083587, 0.083607, 0.083665, 0.083782",\
+ "0.208067, 0.208070, 0.208086, 0.208132, 0.208225",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470765, 2.470777, 2.471225, 2.472683, 2.475621");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.611087, 0.861585, 1.139535, 1.636665, 2.630925",\
+ "0.653383, 0.903882, 1.181783, 1.678745, 2.672669",\
+ "0.713946, 0.964444, 1.242285, 1.739034, 2.732533",\
+ "0.882876, 1.133375, 1.411144, 1.907646, 2.900649",\
+ "1.466128, 1.716626, 1.994359, 2.490734, 3.483483",\
+ "0.698499, 0.949090, 1.227192, 1.723380, 2.716859",\
+ "0.740795, 0.991387, 1.269439, 1.765460, 2.758603",\
+ "0.801358, 1.051949, 1.329940, 1.825749, 2.818467",\
+ "0.970289, 1.220880, 1.498799, 1.994361, 2.986582",\
+ "1.553540, 1.804131, 2.082013, 2.577449, 3.569417",\
+ "0.779356, 1.037977, 1.315158, 1.811002, 2.803814",\
+ "0.821652, 1.080273, 1.357405, 1.853082, 2.845558",\
+ "0.882215, 1.140836, 1.417906, 1.913371, 2.905422",\
+ "1.051145, 1.309767, 1.586765, 2.081983, 3.073537",\
+ "1.634397, 1.893018, 2.169979, 2.665071, 3.656372",\
+ "0.837095, 1.103475, 1.379302, 1.874916, 2.867323",\
+ "0.879392, 1.145772, 1.421550, 1.916996, 2.909067",\
+ "0.939954, 1.206334, 1.482050, 1.977285, 2.968931",\
+ "1.108885, 1.375265, 1.650909, 2.145896, 3.137046",\
+ "1.692136, 1.958516, 2.234123, 2.728984, 3.719881",\
+ "1.170069, 1.466239, 1.731456, 2.224381, 3.212779",\
+ "1.212365, 1.508535, 1.773702, 2.266461, 3.254523",\
+ "1.272928, 1.569098, 1.834201, 2.326749, 3.314387",\
+ "1.441859, 1.738029, 2.003057, 2.495359, 3.482502",\
+ "2.025110, 2.321280, 2.586270, 3.078447, 4.065337");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045859, 0.045858, 0.045856, 0.045847, 0.045830",\
+ "0.079972, 0.079972, 0.079972, 0.079972, 0.079972",\
+ "0.155685, 0.155685, 0.155683, 0.155678, 0.155666",\
+ "0.431271, 0.431271, 0.431271, 0.431270, 0.431268",\
+ "1.498064, 1.498063, 1.498061, 1.498051, 1.498033",\
+ "0.045859, 0.045858, 0.045856, 0.045847, 0.045830",\
+ "0.079972, 0.079972, 0.079972, 0.079972, 0.079972",\
+ "0.155685, 0.155685, 0.155683, 0.155678, 0.155666",\
+ "0.431271, 0.431271, 0.431271, 0.431270, 0.431268",\
+ "1.498064, 1.498063, 1.498060, 1.498051, 1.498033",\
+ "0.045859, 0.045858, 0.045856, 0.045847, 0.045830",\
+ "0.079972, 0.079972, 0.079972, 0.079972, 0.079972",\
+ "0.155685, 0.155685, 0.155683, 0.155678, 0.155666",\
+ "0.431271, 0.431271, 0.431271, 0.431270, 0.431268",\
+ "1.498064, 1.498063, 1.498060, 1.498051, 1.498033",\
+ "0.045859, 0.045858, 0.045856, 0.045847, 0.045830",\
+ "0.079972, 0.079972, 0.079972, 0.079972, 0.079972",\
+ "0.155685, 0.155685, 0.155683, 0.155678, 0.155666",\
+ "0.431271, 0.431271, 0.431271, 0.431270, 0.431268",\
+ "1.498064, 1.498063, 1.498060, 1.498051, 1.498033",\
+ "0.045858, 0.045858, 0.045856, 0.045847, 0.045830",\
+ "0.079972, 0.079972, 0.079972, 0.079972, 0.079972",\
+ "0.155685, 0.155685, 0.155683, 0.155678, 0.155666",\
+ "0.431271, 0.431271, 0.431271, 0.431270, 0.431268",\
+ "1.498063, 1.498063, 1.498060, 1.498051, 1.498033");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2499*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.576605, 0.831535, 1.088524, 1.527728, 2.406135",\
+ "0.611028, 0.865958, 1.122948, 1.562156, 2.440572",\
+ "0.682011, 0.936939, 1.193932, 1.633147, 2.511575",\
+ "0.936163, 1.191091, 1.448086, 1.887307, 2.765749",\
+ "1.861240, 2.116160, 2.373173, 2.812451, 3.691008",\
+ "0.664013, 0.919020, 1.175996, 1.614442, 2.492069",\
+ "0.698437, 0.953443, 1.210420, 1.648871, 2.526506",\
+ "0.769419, 1.024424, 1.281404, 1.719861, 2.597509",\
+ "1.023571, 1.278576, 1.535558, 1.974021, 2.851683",\
+ "1.948648, 2.203645, 2.460645, 2.899166, 3.776942",\
+ "0.751657, 1.007845, 1.263958, 1.702063, 2.579024",\
+ "0.786080, 1.042268, 1.298382, 1.736492, 2.613461",\
+ "0.857063, 1.113249, 1.369366, 1.807482, 2.684464",\
+ "1.111215, 1.367401, 1.623520, 2.061643, 2.938638",\
+ "2.036291, 2.292470, 2.548607, 2.986787, 3.863897",\
+ "0.814841, 1.073252, 1.328092, 1.765976, 2.642533",\
+ "0.849265, 1.107675, 1.362517, 1.800405, 2.676970",\
+ "0.920247, 1.178657, 1.433500, 1.871395, 2.747973",\
+ "1.174399, 1.432808, 1.687654, 2.125556, 3.002147",\
+ "2.099474, 2.357878, 2.612742, 3.050700, 3.927406",\
+ "1.148308, 1.435007, 1.679656, 2.115198, 2.987988",\
+ "1.182731, 1.469430, 1.714081, 2.149627, 3.022426",\
+ "1.253713, 1.540412, 1.785064, 2.220617, 3.093429",\
+ "1.507865, 1.794564, 2.039218, 2.474777, 3.347603",\
+ "2.432936, 2.719633, 2.964306, 3.399922, 4.272861");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208076, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470714, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470715, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470716, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470716, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693297, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470721, 2.471301, 2.472467");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.603644, 0.858574, 1.115563, 1.554765, 2.433169",\
+ "0.645940, 0.900870, 1.157859, 1.597061, 2.475466",\
+ "0.706502, 0.961433, 1.218421, 1.657624, 2.536028",\
+ "0.875433, 1.130363, 1.387352, 1.826554, 2.704960",\
+ "1.458686, 1.713616, 1.970605, 2.409806, 3.288209",\
+ "0.691052, 0.946059, 1.203035, 1.641479, 2.519103",\
+ "0.733348, 0.988355, 1.245331, 1.683775, 2.561400",\
+ "0.793911, 1.048918, 1.305893, 1.744338, 2.621962",\
+ "0.962841, 1.217848, 1.474824, 1.913269, 2.790894",\
+ "1.546094, 1.801101, 2.058077, 2.496521, 3.374143",\
+ "0.778696, 1.034884, 1.290997, 1.729101, 2.606058",\
+ "0.820992, 1.077180, 1.333292, 1.771397, 2.648355",\
+ "0.881555, 1.137743, 1.393855, 1.831960, 2.708917",\
+ "1.050485, 1.306673, 1.562785, 2.000890, 2.877849",\
+ "1.633738, 1.889926, 2.146038, 2.584142, 3.461098",\
+ "0.841881, 1.100292, 1.355131, 1.793014, 2.669567",\
+ "0.884176, 1.142587, 1.397427, 1.835310, 2.711864",\
+ "0.944739, 1.203150, 1.457990, 1.895873, 2.772426",\
+ "1.113669, 1.372080, 1.626920, 2.064803, 2.941358",\
+ "1.696922, 1.955333, 2.210173, 2.648055, 3.524607",\
+ "1.175348, 1.462047, 1.706695, 2.142236, 3.015023",\
+ "1.217643, 1.504343, 1.748991, 2.184532, 3.057320",\
+ "1.278206, 1.564905, 1.809554, 2.245094, 3.117882",\
+ "1.447136, 1.733835, 1.978484, 2.414025, 3.286813",\
+ "2.030389, 2.317089, 2.561737, 2.997277, 3.870063");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2578*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.703817, 0.965190, 1.250386, 1.755046, 2.764366",\
+ "0.738210, 0.999583, 1.284779, 1.789440, 2.798762",\
+ "0.809448, 1.070821, 1.356016, 1.860676, 2.869994",\
+ "1.063614, 1.324987, 1.610183, 2.114842, 3.124160",\
+ "1.988218, 2.249590, 2.534788, 3.039459, 4.048801",\
+ "0.791226, 1.052733, 1.338065, 1.841760, 2.850300",\
+ "0.825619, 1.087126, 1.372458, 1.876155, 2.884696",\
+ "0.896857, 1.158363, 1.443695, 1.947390, 2.955927",\
+ "1.151023, 1.412530, 1.697862, 2.201556, 3.210094",\
+ "2.075627, 2.337133, 2.622467, 3.126173, 4.134735",\
+ "0.874336, 1.141692, 1.426031, 1.929382, 2.937255",\
+ "0.908729, 1.176085, 1.460424, 1.963776, 2.971651",\
+ "0.979967, 1.247323, 1.531661, 2.035012, 3.042882",\
+ "1.234133, 1.501489, 1.785827, 2.289178, 3.297049",\
+ "2.158737, 2.426092, 2.710433, 3.213795, 4.221690",\
+ "0.937775, 1.207295, 1.490176, 1.993295, 3.000764",\
+ "0.972168, 1.241688, 1.524569, 2.027689, 3.035160",\
+ "1.043406, 1.312926, 1.595807, 2.098925, 3.106391",\
+ "1.297572, 1.567092, 1.849973, 2.353091, 3.360558",\
+ "2.222176, 2.491695, 2.774579, 3.277709, 4.285199",\
+ "1.272869, 1.571325, 1.842405, 2.342789, 3.346220",\
+ "1.307262, 1.605718, 1.876798, 2.377183, 3.380616",\
+ "1.378499, 1.676956, 1.948035, 2.448418, 3.451848",\
+ "1.632666, 1.931122, 2.202202, 2.702585, 3.706014",\
+ "2.557269, 2.855725, 3.126807, 3.627202, 4.630655");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.034112, 0.034112, 0.034113, 0.034115, 0.034118",\
+ "0.083750, 0.083751, 0.083754, 0.083762, 0.083778",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692763, 0.692780, 0.692819, 0.692898",\
+ "2.465101, 2.465101, 2.465179, 2.465445, 2.465979",\
+ "0.034112, 0.034112, 0.034113, 0.034115, 0.034118",\
+ "0.083750, 0.083751, 0.083754, 0.083762, 0.083778",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692763, 0.692780, 0.692819, 0.692898",\
+ "2.465101, 2.465101, 2.465179, 2.465445, 2.465979",\
+ "0.034112, 0.034112, 0.034113, 0.034115, 0.034118",\
+ "0.083750, 0.083751, 0.083754, 0.083762, 0.083778",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692763, 0.692780, 0.692819, 0.692898",\
+ "2.465101, 2.465101, 2.465179, 2.465445, 2.465979",\
+ "0.034112, 0.034112, 0.034113, 0.034115, 0.034118",\
+ "0.083750, 0.083751, 0.083754, 0.083762, 0.083778",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692763, 0.692780, 0.692819, 0.692898",\
+ "2.465101, 2.465101, 2.465180, 2.465445, 2.465979",\
+ "0.034112, 0.034112, 0.034113, 0.034115, 0.034118",\
+ "0.083750, 0.083751, 0.083754, 0.083762, 0.083778",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692765, 0.692780, 0.692820, 0.692898",\
+ "2.465101, 2.465101, 2.465182, 2.465446, 2.465979");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.735613, 0.996985, 1.282184, 1.786857, 2.796203",\
+ "0.777364, 1.038737, 1.323936, 1.828608, 2.837953",\
+ "0.837295, 1.098667, 1.383866, 1.888539, 2.897883",\
+ "1.005411, 1.266784, 1.551982, 2.056655, 3.065999",\
+ "1.587437, 1.848807, 2.134015, 2.638729, 3.648157",\
+ "0.823022, 1.084528, 1.369863, 1.873571, 2.882137",\
+ "0.864774, 1.126280, 1.411614, 1.915322, 2.923887",\
+ "0.924704, 1.186210, 1.471545, 1.975253, 2.983817",\
+ "1.092821, 1.354327, 1.639661, 2.143369, 3.151933",\
+ "1.674846, 1.936350, 2.221694, 2.725443, 3.734090",\
+ "0.906132, 1.173487, 1.457829, 1.961193, 2.969092",\
+ "0.947883, 1.215239, 1.499580, 2.002944, 3.010842",\
+ "1.007814, 1.275169, 1.559510, 2.062875, 3.070772",\
+ "1.175930, 1.443286, 1.727627, 2.230991, 3.238888",\
+ "1.757956, 2.025309, 2.309659, 2.813065, 3.821045",\
+ "0.969571, 1.239090, 1.521974, 2.025106, 3.032601",\
+ "1.011322, 1.280842, 1.563726, 2.066857, 3.074351",\
+ "1.071253, 1.340772, 1.623656, 2.126788, 3.134281",\
+ "1.239369, 1.508889, 1.791773, 2.294904, 3.302397",\
+ "1.821394, 2.090912, 2.373805, 2.876978, 3.884554",\
+ "1.304665, 1.603120, 1.874203, 2.374600, 3.378057",\
+ "1.346416, 1.644871, 1.915954, 2.416351, 3.419807",\
+ "1.406347, 1.704802, 1.975885, 2.476281, 3.479737",\
+ "1.574463, 1.872918, 2.144001, 2.644397, 3.647853",\
+ "2.156488, 2.454941, 2.726034, 3.226472, 4.230011");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494123, 1.494129, 1.494143",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494123, 1.494129, 1.494143",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494123, 1.494129, 1.494143",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494123, 1.494129, 1.494143",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494123, 1.494129, 1.494143");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2448*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.689792, 0.930744, 1.201013, 1.654265, 2.560769",\
+ "0.724185, 0.965137, 1.235406, 1.688659, 2.595164",\
+ "0.795422, 1.036375, 1.306643, 1.759894, 2.666397",\
+ "1.049588, 1.290541, 1.560810, 2.014061, 2.920563",\
+ "1.974192, 2.215145, 2.485415, 2.938676, 3.845196",\
+ "0.777198, 1.018294, 1.288529, 1.740979, 2.646702",\
+ "0.811591, 1.052687, 1.322922, 1.775373, 2.681098",\
+ "0.882828, 1.123924, 1.394159, 1.846608, 2.752330",\
+ "1.136994, 1.378091, 1.648325, 2.100775, 3.006497",\
+ "2.061598, 2.302694, 2.572931, 3.025389, 3.931130",\
+ "0.858027, 1.107253, 1.376491, 1.828600, 2.733657",\
+ "0.892420, 1.141646, 1.410884, 1.862994, 2.768053",\
+ "0.963658, 1.212883, 1.482121, 1.934230, 2.839285",\
+ "1.217824, 1.467050, 1.736287, 2.188396, 3.093452",\
+ "2.142428, 2.391653, 2.660893, 3.113011, 4.018085",\
+ "0.915670, 1.172855, 1.440628, 1.892513, 2.797166",\
+ "0.950063, 1.207248, 1.475021, 1.926907, 2.831562",\
+ "1.021300, 1.278486, 1.546258, 1.998143, 2.902794",\
+ "1.275467, 1.532652, 1.800424, 2.252309, 3.156961",\
+ "2.200070, 2.457256, 2.725030, 3.176924, 4.081594",\
+ "1.241554, 1.536923, 1.792333, 2.241791, 3.142622",\
+ "1.275947, 1.571316, 1.826726, 2.276185, 3.177018",\
+ "1.347184, 1.642554, 1.897963, 2.347420, 3.248250",\
+ "1.601351, 1.896721, 2.152130, 2.601587, 3.502417",\
+ "2.525954, 2.821324, 3.076735, 3.526202, 4.427050");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083751, 0.083753, 0.083759, 0.083772",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692773, 0.692804, 0.692866",\
+ "2.465102, 2.465102, 2.465164, 2.465378, 2.465806",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083751, 0.083753, 0.083759, 0.083772",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692774, 0.692804, 0.692866",\
+ "2.465102, 2.465102, 2.465165, 2.465378, 2.465806",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083751, 0.083753, 0.083759, 0.083772",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692774, 0.692804, 0.692866",\
+ "2.465102, 2.465102, 2.465165, 2.465378, 2.465806",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083751, 0.083753, 0.083759, 0.083772",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692774, 0.692804, 0.692866",\
+ "2.465102, 2.465102, 2.465165, 2.465378, 2.465806",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083751, 0.083753, 0.083759, 0.083772",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692774, 0.692805, 0.692866",\
+ "2.465102, 2.465102, 2.465167, 2.465379, 2.465806");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.721587, 0.962540, 1.232811, 1.686073, 2.592597",\
+ "0.763339, 1.004291, 1.274563, 1.727824, 2.634348",\
+ "0.823269, 1.064222, 1.334493, 1.787755, 2.694278",\
+ "0.991386, 1.232338, 1.502609, 1.955871, 2.862394",\
+ "1.573411, 1.814363, 2.084642, 2.537936, 3.444525",\
+ "0.808993, 1.050089, 1.320327, 1.772787, 2.678531",\
+ "0.850745, 1.091841, 1.362078, 1.814538, 2.720282",\
+ "0.910675, 1.151771, 1.422008, 1.874469, 2.780212",\
+ "1.078792, 1.319888, 1.590125, 2.042585, 2.948328",\
+ "1.660817, 1.901912, 2.172157, 2.624650, 3.530459",\
+ "0.889823, 1.139049, 1.408289, 1.860408, 2.765486",\
+ "0.931575, 1.180800, 1.450040, 1.902159, 2.807237",\
+ "0.991505, 1.240730, 1.509970, 1.962090, 2.867167",\
+ "1.159622, 1.408847, 1.678087, 2.130206, 3.035283",\
+ "1.741647, 1.990871, 2.260119, 2.712271, 3.617414",\
+ "0.947466, 1.204651, 1.472426, 1.924321, 2.828995",\
+ "0.989217, 1.246402, 1.514177, 1.966072, 2.870746",\
+ "1.049147, 1.306333, 1.574107, 2.026003, 2.930676",\
+ "1.217264, 1.474449, 1.742224, 2.194119, 3.098792",\
+ "1.799289, 2.056473, 2.324256, 2.776184, 3.680923",\
+ "1.273350, 1.568719, 1.824131, 2.273599, 3.174451",\
+ "1.315101, 1.610470, 1.865882, 2.315350, 3.216202",\
+ "1.375032, 1.670401, 1.925813, 2.375281, 3.276132",\
+ "1.543148, 1.838517, 2.093929, 2.543397, 3.444248",\
+ "2.125174, 2.420541, 2.675962, 3.125462, 4.026379");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.045877, 0.045876, 0.045872, 0.045863, 0.045844",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155801, 0.155793, 0.155779",\
+ "0.431307, 0.431307, 0.431306, 0.431304, 0.431301",\
+ "1.494119, 1.494119, 1.494121, 1.494127, 1.494137",\
+ "0.045877, 0.045876, 0.045872, 0.045863, 0.045844",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155801, 0.155793, 0.155779",\
+ "0.431307, 0.431307, 0.431306, 0.431304, 0.431301",\
+ "1.494119, 1.494120, 1.494121, 1.494127, 1.494137",\
+ "0.045877, 0.045876, 0.045872, 0.045863, 0.045844",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155801, 0.155793, 0.155779",\
+ "0.431307, 0.431307, 0.431306, 0.431304, 0.431301",\
+ "1.494119, 1.494120, 1.494121, 1.494127, 1.494137",\
+ "0.045877, 0.045876, 0.045872, 0.045863, 0.045844",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155801, 0.155793, 0.155779",\
+ "0.431307, 0.431307, 0.431306, 0.431304, 0.431301",\
+ "1.494119, 1.494120, 1.494121, 1.494127, 1.494137",\
+ "0.045877, 0.045876, 0.045872, 0.045863, 0.045844",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155803, 0.155801, 0.155793, 0.155779",\
+ "0.431307, 0.431307, 0.431306, 0.431304, 0.431301",\
+ "1.494119, 1.494120, 1.494121, 1.494127, 1.494137");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2742*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.554088, 0.796303, 1.062117, 1.540354, 2.496829",\
+ "0.588520, 0.830735, 1.096550, 1.574794, 2.531283",\
+ "0.659515, 0.901730, 1.167548, 1.645811, 2.602338",\
+ "0.913680, 1.155895, 1.421738, 1.900092, 2.856801",\
+ "1.838864, 2.081077, 2.346923, 2.825343, 3.782184",\
+ "0.641494, 0.883776, 1.149711, 1.627068, 2.582762",\
+ "0.675925, 0.918208, 1.184143, 1.661508, 2.617217",\
+ "0.746920, 0.989202, 1.255142, 1.732525, 2.688272",\
+ "1.001085, 1.243367, 1.509332, 1.986806, 2.942735",\
+ "1.926270, 2.168550, 2.434517, 2.912057, 3.868118",\
+ "0.722307, 0.972564, 1.237674, 1.714689, 2.669717",\
+ "0.756739, 1.006995, 1.272107, 1.749129, 2.704172",\
+ "0.827734, 1.077990, 1.343105, 1.820146, 2.775227",\
+ "1.081899, 1.332155, 1.597295, 2.074427, 3.029690",\
+ "2.007083, 2.257337, 2.522481, 2.999678, 3.955073",\
+ "0.781255, 1.037917, 1.301816, 1.778602, 2.733226",\
+ "0.815687, 1.072348, 1.336248, 1.813042, 2.767681",\
+ "0.886682, 1.143343, 1.407246, 1.884059, 2.838736",\
+ "1.140847, 1.397507, 1.661436, 2.138340, 3.093199",\
+ "2.066033, 2.322690, 2.586622, 3.063591, 4.018582",\
+ "1.116786, 1.399065, 1.653774, 2.127983, 3.078682",\
+ "1.151218, 1.433496, 1.688207, 2.162423, 3.113137",\
+ "1.222213, 1.504490, 1.759205, 2.233440, 3.184192",\
+ "1.476379, 1.758654, 2.013396, 2.487721, 3.438655",\
+ "2.401570, 2.683832, 2.938582, 3.412973, 4.364038");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.034240, 0.034243, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083624, 0.083701, 0.083855",\
+ "0.208066, 0.208072, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471502, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208072, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471509, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208073, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471509, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208073, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470764, 2.470782, 2.471510, 2.473964, 2.478889",\
+ "0.034240, 0.034245, 0.034262, 0.034304, 0.034388",\
+ "0.083583, 0.083594, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208075, 0.208100, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470774, 2.470782, 2.471535, 2.473974, 2.478889");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.581124, 0.823340, 1.089156, 1.567400, 2.523887",\
+ "0.623421, 0.865636, 1.131410, 1.609509, 2.565706",\
+ "0.683983, 0.926199, 1.191909, 1.669792, 2.625559",\
+ "0.852914, 1.095129, 1.360763, 1.838384, 2.793625",\
+ "1.436165, 1.678380, 1.944001, 2.421576, 3.376727",\
+ "0.668530, 0.910813, 1.176750, 1.654113, 2.609821",\
+ "0.710826, 0.953109, 1.219003, 1.696222, 2.651640",\
+ "0.771389, 1.013672, 1.279502, 1.756506, 2.711493",\
+ "0.940320, 1.182602, 1.448355, 1.925098, 2.879559",\
+ "1.523571, 1.765853, 2.031593, 2.508290, 3.462660",\
+ "0.749343, 0.999600, 1.264713, 1.741735, 2.696776",\
+ "0.791640, 1.041896, 1.306967, 1.783844, 2.738595",\
+ "0.852202, 1.102459, 1.367465, 1.844127, 2.798448",\
+ "1.021133, 1.271390, 1.536319, 2.012719, 2.966514",\
+ "1.604384, 1.854641, 2.119556, 2.595911, 3.549615",\
+ "0.808291, 1.064953, 1.328854, 1.805647, 2.760285",\
+ "0.850588, 1.107249, 1.371108, 1.847756, 2.802104",\
+ "0.911150, 1.167812, 1.431607, 1.908040, 2.861957",\
+ "1.080081, 1.336743, 1.600460, 2.076632, 3.030023",\
+ "1.663332, 1.919994, 2.183697, 2.659824, 3.613124",\
+ "1.143822, 1.426101, 1.680813, 2.155028, 3.105741",\
+ "1.186118, 1.468397, 1.723065, 2.197137, 3.147560",\
+ "1.246681, 1.528960, 1.783561, 2.257420, 3.207412",\
+ "1.415612, 1.697891, 1.952412, 2.426010, 3.375479",\
+ "1.998863, 2.281142, 2.535649, 3.009202, 3.958580");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045871, 0.045908, 0.045983",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_2612*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.306542, 0.508788, 0.717853, 1.042526, 1.663915",\
+ "0.340106, 0.542413, 0.751464, 1.076125, 1.697497",\
+ "0.411112, 0.613496, 0.822458, 1.147079, 1.768433",\
+ "0.665955, 0.868524, 1.077364, 1.401917, 2.023216",\
+ "1.591125, 1.794899, 2.003187, 2.327733, 2.949505",\
+ "0.395283, 0.596107, 0.805134, 1.129831, 1.751269",\
+ "0.428854, 0.629732, 0.838745, 1.163429, 1.784850",\
+ "0.499862, 0.700815, 0.909738, 1.234384, 1.855787",\
+ "0.754705, 0.955843, 1.164644, 1.489222, 2.110569",\
+ "1.679862, 1.882218, 2.090468, 2.415038, 3.036858",\
+ "0.484964, 0.676444, 0.885161, 1.209860, 1.831300",\
+ "0.518558, 0.710069, 0.918772, 1.243458, 1.864882",\
+ "0.589569, 0.781152, 0.989765, 1.314412, 1.935818",\
+ "0.844412, 1.036181, 1.244671, 1.569251, 2.190600",\
+ "1.769534, 1.962556, 2.170495, 2.495067, 3.116889",\
+ "0.543833, 0.734313, 0.942926, 1.267362, 1.888460",\
+ "0.577463, 0.767939, 0.976537, 1.300961, 1.922042",\
+ "0.648577, 0.839021, 1.047530, 1.371915, 1.992978",\
+ "0.903624, 1.094050, 1.302436, 1.626753, 2.247760",\
+ "1.830206, 2.020424, 2.228258, 2.552570, 3.174051",\
+ "0.846614, 1.039923, 1.246594, 1.570597, 2.190856",\
+ "0.880244, 1.073548, 1.280205, 1.604196, 2.224438",\
+ "0.951354, 1.144630, 1.351198, 1.675150, 2.295374",\
+ "1.206399, 1.399658, 1.606104, 1.929988, 2.550156",\
+ "2.132956, 2.326026, 2.531926, 2.855805, 3.476448");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.023786, 0.023786, 0.023786, 0.023810, 0.023868",\
+ "0.069294, 0.069294, 0.069294, 0.069316, 0.069369",\
+ "0.199985, 0.199985, 0.199985, 0.199985, 0.199985",\
+ "0.685151, 0.685311, 0.685321, 0.685321, 0.685321",\
+ "2.446158, 2.446158, 2.446667, 2.447885, 2.450424",\
+ "0.023786, 0.023786, 0.023786, 0.023810, 0.023868",\
+ "0.069294, 0.069294, 0.069294, 0.069316, 0.069369",\
+ "0.199985, 0.199985, 0.199985, 0.199985, 0.199985",\
+ "0.685156, 0.685311, 0.685321, 0.685321, 0.685321",\
+ "2.446158, 2.446158, 2.446667, 2.447885, 2.450424",\
+ "0.023786, 0.023786, 0.023786, 0.023810, 0.023868",\
+ "0.069294, 0.069294, 0.069294, 0.069316, 0.069369",\
+ "0.199985, 0.199985, 0.199985, 0.199985, 0.199985",\
+ "0.685169, 0.685311, 0.685321, 0.685321, 0.685321",\
+ "2.446158, 2.446158, 2.446667, 2.447885, 2.450424",\
+ "0.023786, 0.023786, 0.023786, 0.023810, 0.023869",\
+ "0.069294, 0.069294, 0.069294, 0.069316, 0.069369",\
+ "0.199985, 0.199985, 0.199985, 0.199985, 0.199985",\
+ "0.685155, 0.685312, 0.685321, 0.685321, 0.685321",\
+ "2.446158, 2.446158, 2.446668, 2.447888, 2.450430",\
+ "0.023786, 0.023786, 0.023786, 0.023810, 0.023869",\
+ "0.069294, 0.069294, 0.069294, 0.069316, 0.069370",\
+ "0.199985, 0.199985, 0.199985, 0.199985, 0.199985",\
+ "0.685173, 0.685316, 0.685321, 0.685321, 0.685321",\
+ "2.446158, 2.446158, 2.446668, 2.447891, 2.450438");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.300762, 0.504583, 0.713270, 1.038101, 1.660218",\
+ "0.333089, 0.537036, 0.745749, 1.070675, 1.693005",\
+ "0.383451, 0.587349, 0.796071, 1.121057, 1.743526",\
+ "0.544532, 0.748090, 0.956809, 1.281806, 1.904306",\
+ "1.125564, 1.330456, 1.540080, 1.865115, 2.486899",\
+ "0.389512, 0.591901, 0.800551, 1.125406, 1.747571",\
+ "0.421839, 0.624354, 0.833030, 1.157980, 1.780358",\
+ "0.472201, 0.674668, 0.883352, 1.208362, 1.830879",\
+ "0.633282, 0.835409, 1.044090, 1.369112, 1.991659",\
+ "1.214288, 1.417775, 1.627361, 1.952420, 2.574253",\
+ "0.479218, 0.672239, 0.880578, 1.205435, 1.827603",\
+ "0.511548, 0.704692, 0.913057, 1.238009, 1.860390",\
+ "0.561908, 0.755005, 0.963379, 1.288391, 1.910911",\
+ "0.722989, 0.915746, 1.124117, 1.449140, 2.071691",\
+ "1.303923, 1.498112, 1.707387, 2.032449, 2.654284",\
+ "0.539760, 0.730108, 0.938342, 1.262939, 1.884765",\
+ "0.572206, 0.762561, 0.970821, 1.295513, 1.917552",\
+ "0.622521, 0.812874, 1.021143, 1.345895, 1.968074",\
+ "0.783248, 0.973615, 1.181881, 1.506644, 2.128853",\
+ "1.365347, 1.555982, 1.765154, 2.089952, 2.711445",\
+ "0.842526, 1.035714, 1.242010, 1.566174, 2.187163",\
+ "0.874973, 1.068167, 1.274489, 1.598749, 2.219951",\
+ "0.925287, 1.118480, 1.324811, 1.649131, 2.270473",\
+ "1.086016, 1.279222, 1.485549, 1.809880, 2.431253",\
+ "1.668147, 1.861596, 2.068822, 2.393188, 3.013843");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.030099, 0.030091, 0.030091, 0.030077, 0.030045",\
+ "0.059380, 0.059246, 0.059238, 0.059238, 0.059238",\
+ "0.131641, 0.131636, 0.131630, 0.131627, 0.131627",\
+ "0.418133, 0.418133, 0.418133, 0.418133, 0.418133",\
+ "1.484352, 1.482541, 1.482428, 1.482428, 1.482428",\
+ "0.030099, 0.030091, 0.030091, 0.030077, 0.030045",\
+ "0.059376, 0.059246, 0.059238, 0.059238, 0.059238",\
+ "0.131641, 0.131636, 0.131630, 0.131627, 0.131627",\
+ "0.418133, 0.418133, 0.418133, 0.418133, 0.418133",\
+ "1.484298, 1.482541, 1.482428, 1.482428, 1.482428",\
+ "0.030098, 0.030091, 0.030091, 0.030077, 0.030045",\
+ "0.059366, 0.059246, 0.059238, 0.059238, 0.059238",\
+ "0.131641, 0.131636, 0.131630, 0.131627, 0.131627",\
+ "0.418133, 0.418133, 0.418133, 0.418133, 0.418133",\
+ "1.484152, 1.482541, 1.482428, 1.482428, 1.482428",\
+ "0.030099, 0.030091, 0.030091, 0.030077, 0.030045",\
+ "0.059378, 0.059246, 0.059238, 0.059238, 0.059238",\
+ "0.131641, 0.131636, 0.131630, 0.131627, 0.131627",\
+ "0.418133, 0.418133, 0.418133, 0.418133, 0.418133",\
+ "1.484315, 1.482534, 1.482428, 1.482428, 1.482428",\
+ "0.030098, 0.030091, 0.030091, 0.030077, 0.030045",\
+ "0.059362, 0.059242, 0.059238, 0.059238, 0.059238",\
+ "0.131641, 0.131636, 0.131630, 0.131627, 0.131627",\
+ "0.418133, 0.418133, 0.418133, 0.418133, 0.418133",\
+ "1.484105, 1.482485, 1.482428, 1.482428, 1.482428");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2559*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.534853, 0.754941, 0.932292, 1.220792, 1.781149",\
+ "0.576549, 0.796638, 0.973989, 1.262489, 1.822845",\
+ "0.652730, 0.872819, 1.050170, 1.338670, 1.899026",\
+ "0.908126, 1.128215, 1.305566, 1.594066, 2.154422",\
+ "1.832504, 2.052592, 2.229943, 2.518443, 3.078799",\
+ "0.623250, 0.842260, 1.019573, 1.308098, 1.868502",\
+ "0.664946, 0.883956, 1.061270, 1.349794, 1.910198",\
+ "0.741127, 0.960137, 1.137451, 1.425975, 1.986380",\
+ "0.996523, 1.215533, 1.392847, 1.681371, 2.241775",\
+ "1.920900, 2.139910, 2.317224, 2.605748, 3.166152",\
+ "0.712601, 0.922592, 1.099600, 1.388126, 1.948534",\
+ "0.754297, 0.964289, 1.141297, 1.429822, 1.990230",\
+ "0.830478, 1.040470, 1.217478, 1.506004, 2.066411",\
+ "1.085874, 1.295865, 1.472873, 1.761399, 2.321807",\
+ "2.010251, 2.220243, 2.397251, 2.685777, 3.246184",\
+ "0.776250, 0.980408, 1.157292, 1.445555, 2.005549",\
+ "0.817947, 1.022105, 1.198989, 1.487252, 2.047245",\
+ "0.894128, 1.098286, 1.275170, 1.563433, 2.123426",\
+ "1.149523, 1.353682, 1.530566, 1.818829, 2.378822",\
+ "2.073901, 2.278059, 2.454943, 2.743206, 3.303199",\
+ "1.107332, 1.285624, 1.460948, 1.748727, 2.307770",\
+ "1.149029, 1.327321, 1.502644, 1.790423, 2.349466",\
+ "1.225210, 1.403502, 1.578825, 1.866605, 2.425647",\
+ "1.480606, 1.658898, 1.834221, 2.122000, 2.681043",\
+ "2.404983, 2.583275, 2.758598, 3.046378, 3.605420");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685787",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685787",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685787",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685787",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685787",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.555098, 0.775186, 0.952537, 1.241037, 1.801394",\
+ "0.587348, 0.807436, 0.984787, 1.273287, 1.833643",\
+ "0.637660, 0.857748, 1.035099, 1.323599, 1.883955",\
+ "0.798324, 1.018412, 1.195763, 1.484263, 2.044619",\
+ "1.379457, 1.599546, 1.776897, 2.065397, 2.625753",\
+ "0.643495, 0.862505, 1.039818, 1.328343, 1.888747",\
+ "0.675744, 0.894754, 1.072068, 1.360592, 1.920997",\
+ "0.726057, 0.945067, 1.122380, 1.410905, 1.971309",\
+ "0.886720, 1.105730, 1.283044, 1.571568, 2.131973",\
+ "1.467854, 1.686864, 1.864178, 2.152702, 2.713106",\
+ "0.732846, 0.942837, 1.119845, 1.408371, 1.968779",\
+ "0.765095, 0.975087, 1.152095, 1.440621, 2.001028",\
+ "0.815408, 1.025399, 1.202407, 1.490933, 2.051341",\
+ "0.976071, 1.186063, 1.363071, 1.651597, 2.212004",\
+ "1.557205, 1.767197, 1.944205, 2.232730, 2.793138",\
+ "0.796495, 1.000653, 1.177537, 1.465801, 2.025794",\
+ "0.828745, 1.032903, 1.209787, 1.498050, 2.058043",\
+ "0.879057, 1.083215, 1.260099, 1.548362, 2.108356",\
+ "1.039721, 1.243879, 1.420763, 1.709026, 2.269019",\
+ "1.620855, 1.825013, 2.001897, 2.290160, 2.850153",\
+ "1.127577, 1.305869, 1.481193, 1.768972, 2.328015",\
+ "1.159827, 1.338119, 1.513443, 1.801222, 2.360265",\
+ "1.210139, 1.388431, 1.563755, 1.851534, 2.410577",\
+ "1.370803, 1.549095, 1.724418, 2.012197, 2.571240",\
+ "1.951937, 2.130229, 2.305552, 2.593331, 3.152374");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482977, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482977, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482977, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482977, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482977, 1.482976, 1.482976, 1.482976");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2577*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.256885, 0.492153, 0.681988, 0.987164, 1.577680",\
+ "0.290472, 0.525767, 0.715632, 1.020810, 1.611303",\
+ "0.361355, 0.596664, 0.786663, 1.091855, 1.682256",\
+ "0.616370, 0.851426, 1.041598, 1.346846, 1.937220",\
+ "1.541773, 1.775412, 1.968861, 2.274571, 2.863136",\
+ "0.345363, 0.579471, 0.769269, 1.074469, 1.665033",\
+ "0.378951, 0.613085, 0.802913, 1.108115, 1.698656",\
+ "0.449834, 0.683983, 0.873944, 1.179160, 1.769609",\
+ "0.704852, 0.938744, 1.128879, 1.434151, 2.024573",\
+ "1.630270, 1.862731, 2.056142, 2.361876, 2.950490",\
+ "0.434929, 0.659804, 0.849296, 1.154498, 1.745065",\
+ "0.468520, 0.693418, 0.882940, 1.188143, 1.778688",\
+ "0.539403, 0.764315, 0.953971, 1.259189, 1.849641",\
+ "0.794431, 1.019077, 1.208906, 1.514180, 2.104605",\
+ "1.719892, 1.943063, 2.136169, 2.441904, 3.030521",\
+ "0.498770, 0.717639, 0.907017, 1.211964, 1.802153",\
+ "0.532364, 0.751252, 0.940661, 1.245610, 1.835775",\
+ "0.603247, 0.822149, 1.011693, 1.316654, 1.906729",\
+ "0.858284, 1.076910, 1.266629, 1.571645, 2.161693",\
+ "1.783785, 2.000890, 2.193899, 2.499368, 3.087604",\
+ "0.836421, 1.022987, 1.210677, 1.515166, 2.104462",\
+ "0.870034, 1.056600, 1.244321, 1.548812, 2.138084",\
+ "0.940914, 1.127492, 1.315353, 1.619857, 2.209037",\
+ "1.196012, 1.382245, 1.570289, 1.874848, 2.464001",\
+ "2.121767, 2.306184, 2.497561, 2.802569, 3.389907");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454037, 2.454505, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454037, 2.454505, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454037, 2.454505, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454039, 2.454505, 2.455154",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454039, 2.454506, 2.455156");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.251684, 0.487150, 0.676755, 0.981685, 1.571796",\
+ "0.284092, 0.519474, 0.709133, 1.014097, 1.604246",\
+ "0.334486, 0.569802, 0.759438, 1.064423, 1.654643",\
+ "0.495295, 0.730692, 0.920083, 1.225063, 1.815495",\
+ "1.076466, 1.311284, 1.500832, 1.805703, 2.395659",\
+ "0.340147, 0.574468, 0.764036, 1.068990, 1.659150",\
+ "0.372555, 0.606792, 0.796414, 1.101402, 1.691600",\
+ "0.422950, 0.657120, 0.846719, 1.151728, 1.741997",\
+ "0.583764, 0.818010, 1.007364, 1.312368, 1.902848",\
+ "1.164940, 1.398602, 1.588113, 1.893008, 2.483012",\
+ "0.429671, 0.654801, 0.844063, 1.149019, 1.739182",\
+ "0.462080, 0.687125, 0.876441, 1.181431, 1.771631",\
+ "0.512476, 0.737453, 0.926746, 1.231757, 1.822028",\
+ "0.673307, 0.898343, 1.087391, 1.392396, 1.982880",\
+ "1.254498, 1.478935, 1.668140, 1.973037, 2.563044",\
+ "0.493473, 0.712635, 0.901784, 1.206484, 1.796268",\
+ "0.525883, 0.744960, 0.934162, 1.238896, 1.828718",\
+ "0.576281, 0.795287, 0.984467, 1.289223, 1.879116",\
+ "0.737126, 0.956178, 1.145111, 1.449862, 2.039968",\
+ "1.318331, 1.536764, 1.725861, 2.030502, 2.620130",\
+ "0.830874, 1.017982, 1.205444, 1.509686, 2.098576",\
+ "0.863289, 1.050307, 1.237822, 1.542099, 2.131026",\
+ "0.913697, 1.100635, 1.288127, 1.592425, 2.181424",\
+ "1.074636, 1.261533, 1.448771, 1.753065, 2.342276",\
+ "1.655932, 1.842073, 2.029521, 2.333704, 2.922437");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418303",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030171, 0.030364",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418303",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2320*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.514526, 0.752428, 0.939979, 1.239804, 1.819405",\
+ "0.556223, 0.794124, 0.981676, 1.281500, 1.861101",\
+ "0.632404, 0.870306, 1.057857, 1.357682, 1.937282",\
+ "0.887800, 1.125701, 1.313253, 1.613077, 2.192678",\
+ "1.812177, 2.050079, 2.237630, 2.537455, 3.117055",\
+ "0.602829, 0.839746, 1.027260, 1.327109, 1.906758",\
+ "0.644526, 0.881442, 1.068957, 1.368805, 1.948454",\
+ "0.720707, 0.957623, 1.145138, 1.444987, 2.024636",\
+ "0.976103, 1.213019, 1.400534, 1.700382, 2.280031",\
+ "1.900480, 2.137396, 2.324911, 2.624760, 3.204408",\
+ "0.692380, 0.920074, 1.107287, 1.407137, 1.986790",\
+ "0.734076, 0.961771, 1.148984, 1.448834, 2.028486",\
+ "0.810257, 1.037952, 1.225165, 1.525015, 2.104667",\
+ "1.065653, 1.293347, 1.480561, 1.780411, 2.360063",\
+ "1.990030, 2.217725, 2.404938, 2.704788, 3.284440",\
+ "0.756421, 0.977914, 1.165004, 1.464591, 2.043853",\
+ "0.798118, 1.019611, 1.206700, 1.506287, 2.085550",\
+ "0.874299, 1.095792, 1.282882, 1.582469, 2.161731",\
+ "1.129694, 1.351188, 1.538277, 1.837864, 2.417127",\
+ "2.054072, 2.275565, 2.462655, 2.762241, 3.341504",\
+ "1.095322, 1.283284, 1.468662, 1.767782, 2.346133",\
+ "1.137018, 1.324980, 1.510358, 1.809478, 2.387829",\
+ "1.213199, 1.401161, 1.586540, 1.885659, 2.464011",\
+ "1.468595, 1.656557, 1.841935, 2.141055, 2.719406",\
+ "2.392972, 2.580935, 2.766313, 3.065432, 3.643783");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.534772, 0.772673, 0.960224, 1.260049, 1.839650",\
+ "0.567021, 0.804923, 0.992474, 1.292299, 1.871899",\
+ "0.617333, 0.855235, 1.042786, 1.342611, 1.922212",\
+ "0.777997, 1.015898, 1.203450, 1.503274, 2.082875",\
+ "1.359131, 1.597032, 1.784584, 2.084409, 2.664009",\
+ "0.623075, 0.859991, 1.047505, 1.347354, 1.927003",\
+ "0.655324, 0.892240, 1.079755, 1.379604, 1.959253",\
+ "0.705636, 0.942553, 1.130067, 1.429916, 2.009565",\
+ "0.866300, 1.103216, 1.290731, 1.590580, 2.170229",\
+ "1.447434, 1.684350, 1.871865, 2.171714, 2.751363",\
+ "0.712625, 0.940319, 1.127532, 1.427382, 2.007035",\
+ "0.744874, 0.972569, 1.159782, 1.459632, 2.039284",\
+ "0.795187, 1.022881, 1.210094, 1.509944, 2.089597",\
+ "0.955850, 1.183545, 1.370758, 1.670608, 2.250260",\
+ "1.536984, 1.764679, 1.951892, 2.251742, 2.831394",\
+ "0.776666, 0.998159, 1.185249, 1.484836, 2.064098",\
+ "0.808916, 1.030409, 1.217499, 1.517086, 2.096348",\
+ "0.859228, 1.080721, 1.267811, 1.567398, 2.146660",\
+ "1.019892, 1.241385, 1.428475, 1.728061, 2.307324",\
+ "1.601026, 1.822519, 2.009609, 2.309195, 2.888458",\
+ "1.115567, 1.303529, 1.488907, 1.788027, 2.366378",\
+ "1.147816, 1.335778, 1.521157, 1.820276, 2.398628",\
+ "1.198129, 1.386091, 1.571469, 1.870589, 2.448940",\
+ "1.358792, 1.546754, 1.732133, 2.031252, 2.609604",\
+ "1.939926, 2.127888, 2.313267, 2.612386, 3.190738");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482977, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2351*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.430447, 0.665884, 0.855738, 1.160934, 1.751473",\
+ "0.472143, 0.707581, 0.897435, 1.202631, 1.793169",\
+ "0.548324, 0.783762, 0.973616, 1.278812, 1.869350",\
+ "0.803720, 1.039157, 1.229011, 1.534208, 2.124746",\
+ "1.728097, 1.963542, 2.153391, 2.458586, 3.049126",\
+ "0.518928, 0.753203, 0.943019, 1.248240, 1.838826",\
+ "0.560625, 0.794899, 0.984715, 1.289936, 1.880523",\
+ "0.636806, 0.871080, 1.060897, 1.366117, 1.956704",\
+ "0.892201, 1.126475, 1.316292, 1.621513, 2.212099",\
+ "1.816579, 2.050861, 2.240672, 2.545891, 3.136479",\
+ "0.608483, 0.833536, 1.023046, 1.328268, 1.918858",\
+ "0.650179, 0.875232, 1.064742, 1.369964, 1.960554",\
+ "0.726361, 0.951413, 1.140924, 1.446146, 2.036736",\
+ "0.981756, 1.206808, 1.396319, 1.701541, 2.292131",\
+ "1.906135, 2.131194, 2.320698, 2.625919, 3.216511",\
+ "0.672303, 0.891371, 1.080767, 1.385734, 1.975946",\
+ "0.713999, 0.933067, 1.122464, 1.427431, 2.017642",\
+ "0.790181, 1.009248, 1.198645, 1.503612, 2.093823",\
+ "1.045576, 1.264643, 1.454041, 1.759007, 2.349219",\
+ "1.969955, 2.189029, 2.378420, 2.683385, 3.273599",\
+ "1.009821, 1.196720, 1.384428, 1.688937, 2.278255",\
+ "1.051517, 1.238416, 1.426124, 1.730633, 2.319951",\
+ "1.127699, 1.314597, 1.502305, 1.806814, 2.396132",\
+ "1.383094, 1.569992, 1.757701, 2.062210, 2.651528",\
+ "2.307477, 2.494378, 2.682080, 2.986588, 3.575908");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199414, 0.199414, 0.199414, 0.199415, 0.199419",\
+ "0.685786, 0.685786, 0.685786, 0.685787, 0.685790",\
+ "2.455200, 2.455200, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199414, 0.199414, 0.199414, 0.199415, 0.199419",\
+ "0.685786, 0.685786, 0.685786, 0.685787, 0.685790",\
+ "2.455200, 2.455200, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199414, 0.199414, 0.199414, 0.199415, 0.199419",\
+ "0.685786, 0.685786, 0.685786, 0.685787, 0.685790",\
+ "2.455200, 2.455200, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199414, 0.199414, 0.199414, 0.199415, 0.199419",\
+ "0.685786, 0.685786, 0.685786, 0.685787, 0.685790",\
+ "2.455200, 2.455200, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199414, 0.199414, 0.199414, 0.199415, 0.199419",\
+ "0.685786, 0.685786, 0.685786, 0.685787, 0.685790",\
+ "2.455200, 2.455200, 2.455201, 2.455201, 2.455201");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.450692, 0.686130, 0.875983, 1.181180, 1.771718",\
+ "0.482941, 0.718379, 0.908233, 1.213429, 1.803968",\
+ "0.533254, 0.768692, 0.958545, 1.263741, 1.854280",\
+ "0.693917, 0.929356, 1.119209, 1.424405, 2.014944",\
+ "1.275051, 1.510488, 1.700342, 2.005539, 2.596077",\
+ "0.539173, 0.773448, 0.963264, 1.268485, 1.859071",\
+ "0.571423, 0.805697, 0.995514, 1.300734, 1.891321",\
+ "0.621735, 0.856010, 1.045826, 1.351047, 1.941633",\
+ "0.782399, 1.016674, 1.206490, 1.511710, 2.102297",\
+ "1.363533, 1.597806, 1.787623, 2.092844, 2.683430",\
+ "0.628728, 0.853781, 1.043291, 1.348513, 1.939103",\
+ "0.660978, 0.886030, 1.075541, 1.380763, 1.971353",\
+ "0.711290, 0.936343, 1.125853, 1.431075, 2.021665",\
+ "0.871954, 1.097007, 1.286517, 1.591739, 2.182329",\
+ "1.453087, 1.678139, 1.867650, 2.172873, 2.763462",\
+ "0.692548, 0.911616, 1.101013, 1.405979, 1.996191",\
+ "0.724798, 0.943865, 1.133262, 1.438229, 2.028440",\
+ "0.775110, 0.994178, 1.183574, 1.488541, 2.078753",\
+ "0.935774, 1.154842, 1.344238, 1.649205, 2.239417",\
+ "1.516907, 1.735974, 1.925371, 2.230339, 2.820550",\
+ "1.030066, 1.216965, 1.404673, 1.709182, 2.298500",\
+ "1.062316, 1.249214, 1.436922, 1.741432, 2.330750",\
+ "1.112628, 1.299527, 1.487235, 1.791744, 2.381062",\
+ "1.273292, 1.460191, 1.647898, 1.952407, 2.541725",\
+ "1.854424, 2.041323, 2.229032, 2.533541, 3.122859");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029706",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131486, 0.131486",\
+ "0.419455, 0.419455, 0.419455, 0.419455, 0.419455",\
+ "1.482976, 1.482976, 1.482976, 1.482977, 1.482979",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029706",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131486, 0.131486",\
+ "0.419455, 0.419455, 0.419455, 0.419455, 0.419455",\
+ "1.482976, 1.482976, 1.482976, 1.482977, 1.482979",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029706",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131486, 0.131486",\
+ "0.419455, 0.419455, 0.419455, 0.419455, 0.419455",\
+ "1.482976, 1.482976, 1.482976, 1.482977, 1.482979",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029706",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131486, 0.131486",\
+ "0.419455, 0.419455, 0.419455, 0.419455, 0.419455",\
+ "1.482976, 1.482976, 1.482976, 1.482977, 1.482979",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029706",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131486, 0.131486",\
+ "0.419455, 0.419455, 0.419455, 0.419455, 0.419455",\
+ "1.482976, 1.482976, 1.482976, 1.482977, 1.482979");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2670*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.408175, 0.641513, 0.827140, 1.126924, 1.707803",\
+ "0.449871, 0.683209, 0.868836, 1.168620, 1.749499",\
+ "0.526051, 0.759389, 0.945016, 1.244800, 1.825679",\
+ "0.781441, 1.014779, 1.200407, 1.500191, 2.081069",\
+ "1.705890, 1.939226, 2.124851, 2.424636, 3.005520",\
+ "0.496580, 0.728832, 0.914421, 1.214229, 1.795156",\
+ "0.538276, 0.770527, 0.956117, 1.255925, 1.836852",\
+ "0.614456, 0.846708, 1.032297, 1.332105, 1.913032",\
+ "0.869846, 1.102098, 1.287688, 1.587496, 2.168422",\
+ "1.794296, 2.026545, 2.212132, 2.511941, 3.092873",\
+ "0.585662, 0.809167, 0.994448, 1.294258, 1.875188",\
+ "0.627357, 0.850863, 1.036144, 1.335954, 1.916884",\
+ "0.703538, 0.927043, 1.112324, 1.412134, 1.993064",\
+ "0.958928, 1.182433, 1.367714, 1.667524, 2.248454",\
+ "1.883377, 2.106880, 2.292159, 2.591970, 3.172904",\
+ "0.648932, 0.866998, 1.052159, 1.351712, 1.932252",\
+ "0.690627, 0.908694, 1.093855, 1.393408, 1.973947",\
+ "0.766807, 0.984874, 1.170035, 1.469588, 2.050128",\
+ "1.022198, 1.240264, 1.425425, 1.724978, 2.305518",\
+ "1.946647, 2.164711, 2.349869, 2.649424, 3.229968",\
+ "0.982958, 1.172329, 1.355818, 1.654905, 2.234531",\
+ "1.024654, 1.214025, 1.397514, 1.696600, 2.276227",\
+ "1.100834, 1.290205, 1.473694, 1.772781, 2.352407",\
+ "1.356225, 1.545595, 1.729084, 2.028171, 2.607797",\
+ "2.280672, 2.470042, 2.653529, 2.952617, 3.532248");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.428422, 0.661761, 0.847388, 1.147172, 1.728051",\
+ "0.460669, 0.694007, 0.879634, 1.179418, 1.760297",\
+ "0.510985, 0.744323, 0.929950, 1.229734, 1.810613",\
+ "0.671649, 0.904987, 1.090614, 1.390398, 1.971277",\
+ "1.252766, 1.486104, 1.671732, 1.971516, 2.552394",\
+ "0.516828, 0.749079, 0.934668, 1.234477, 1.815404",\
+ "0.549074, 0.781326, 0.966915, 1.266723, 1.847650",\
+ "0.599390, 0.831641, 1.017231, 1.317039, 1.897966",\
+ "0.760054, 0.992305, 1.177894, 1.477703, 2.058630",\
+ "1.341171, 1.573423, 1.759013, 2.058821, 2.639747",\
+ "0.605909, 0.829414, 1.014695, 1.314505, 1.895436",\
+ "0.638156, 0.861661, 1.046942, 1.346752, 1.927682",\
+ "0.688472, 0.911977, 1.097257, 1.397068, 1.977998",\
+ "0.849135, 1.072640, 1.257921, 1.557731, 2.138662",\
+ "1.430253, 1.653758, 1.839040, 2.138849, 2.719779",\
+ "0.669179, 0.887245, 1.072406, 1.371959, 1.952499",\
+ "0.701426, 0.919492, 1.104653, 1.404206, 1.984746",\
+ "0.751741, 0.969808, 1.154969, 1.454522, 2.035062",\
+ "0.912405, 1.130471, 1.315632, 1.615185, 2.195725",\
+ "1.493523, 1.711589, 1.896750, 2.196303, 2.776842",\
+ "1.003206, 1.192577, 1.376065, 1.675152, 2.254779",\
+ "1.035452, 1.224823, 1.408312, 1.707399, 2.287025",\
+ "1.085768, 1.275139, 1.458628, 1.757715, 2.337341",\
+ "1.246432, 1.435803, 1.619291, 1.918378, 2.498005",\
+ "1.827550, 2.016920, 2.200410, 2.499496, 3.079122");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483047");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.454515, 0.687556, 0.876637, 1.181062, 1.770586",\
+ "0.496240, 0.729281, 0.918362, 1.222787, 1.812311",\
+ "0.572297, 0.805339, 0.994419, 1.298844, 1.888368",\
+ "0.827855, 1.060896, 1.249979, 1.554404, 2.143927",\
+ "1.752113, 1.985154, 2.174236, 2.478661, 3.068184",\
+ "0.542959, 0.774874, 0.963918, 1.268367, 1.857939",\
+ "0.584684, 0.816599, 1.005643, 1.310092, 1.899664",\
+ "0.660741, 0.892656, 1.081700, 1.386149, 1.975721",\
+ "0.916299, 1.148213, 1.337260, 1.641709, 2.231281",\
+ "1.840557, 2.072472, 2.261517, 2.565966, 3.155538",\
+ "0.633029, 0.855201, 1.043945, 1.348395, 1.937971",\
+ "0.674754, 0.896927, 1.085670, 1.390121, 1.979696",\
+ "0.750812, 0.972984, 1.161727, 1.466178, 2.055753",\
+ "1.006370, 1.228541, 1.417287, 1.721738, 2.311312",\
+ "1.930628, 2.152800, 2.341543, 2.645994, 3.235569",\
+ "0.697606, 0.913035, 1.101665, 1.405861, 1.995059",\
+ "0.739331, 0.954761, 1.143391, 1.447586, 2.036784",\
+ "0.815389, 1.030818, 1.219448, 1.523643, 2.112841",\
+ "1.070947, 1.286375, 1.475007, 1.779203, 2.368400",\
+ "1.995205, 2.210634, 2.399264, 2.703460, 3.292657",\
+ "1.037719, 1.218357, 1.405324, 1.709062, 2.297368",\
+ "1.079444, 1.260083, 1.447049, 1.750787, 2.339093",\
+ "1.155501, 1.336140, 1.523106, 1.826844, 2.415150",\
+ "1.411059, 1.591697, 1.778666, 2.082405, 2.670709",\
+ "2.335317, 2.515956, 2.702923, 3.006661, 3.594966");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452470, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452470, 2.452462, 2.452462, 2.452446, 2.452406");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.477114, 0.710155, 0.899236, 1.203661, 1.793185",\
+ "0.509144, 0.742185, 0.931266, 1.235691, 1.825215",\
+ "0.559532, 0.792574, 0.981654, 1.286079, 1.875603",\
+ "0.720561, 0.953603, 1.142682, 1.447107, 2.036631",\
+ "1.300536, 1.533577, 1.722657, 2.027082, 2.616606",\
+ "0.565558, 0.797473, 0.986517, 1.290966, 1.880538",\
+ "0.597588, 0.829503, 1.018547, 1.322996, 1.912568",\
+ "0.647976, 0.879891, 1.068935, 1.373384, 1.962957",\
+ "0.809005, 1.040920, 1.229963, 1.534412, 2.123985",\
+ "1.388980, 1.620895, 1.809938, 2.114387, 2.703959",\
+ "0.655628, 0.877800, 1.066544, 1.370995, 1.960570",\
+ "0.687658, 0.909830, 1.098574, 1.403025, 1.992600",\
+ "0.738047, 0.960219, 1.148962, 1.453413, 2.042988",\
+ "0.899075, 1.121248, 1.309990, 1.614440, 2.204016",\
+ "1.479050, 1.701223, 1.889965, 2.194416, 2.783991",\
+ "0.720205, 0.935634, 1.124265, 1.428460, 2.017658",\
+ "0.752235, 0.967664, 1.156295, 1.460490, 2.049688",\
+ "0.802624, 1.018053, 1.206683, 1.510878, 2.100076",\
+ "0.963652, 1.179082, 1.367711, 1.671906, 2.261104",\
+ "1.543628, 1.759057, 1.947685, 2.251881, 2.841079",\
+ "1.060318, 1.240956, 1.427923, 1.731662, 2.319967",\
+ "1.092348, 1.272986, 1.459953, 1.763692, 2.351997",\
+ "1.142736, 1.323375, 1.510341, 1.814080, 2.402385",\
+ "1.303765, 1.484404, 1.671369, 1.975107, 2.563413",\
+ "1.883740, 2.064379, 2.251344, 2.555082, 3.143388");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417786, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484506, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417786, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484506, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484493");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2361*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.425794, 0.659396, 0.844981, 1.144718, 1.725521",\
+ "0.467517, 0.701119, 0.886704, 1.186441, 1.767244",\
+ "0.543582, 0.777185, 0.962769, 1.262506, 1.843310",\
+ "0.799075, 1.032669, 1.218262, 1.518000, 2.098799",\
+ "1.723381, 1.956982, 2.142568, 2.442305, 3.023108",\
+ "0.514202, 0.746714, 0.932262, 1.232023, 1.812875",\
+ "0.555925, 0.788437, 0.973985, 1.273746, 1.854598",\
+ "0.631990, 0.864504, 1.050050, 1.349811, 1.930663",\
+ "0.887482, 1.119988, 1.305543, 1.605305, 2.186153",\
+ "1.811789, 2.044301, 2.229849, 2.529610, 3.110461",\
+ "0.603290, 0.827050, 1.012289, 1.312051, 1.892906",\
+ "0.645013, 0.868772, 1.054012, 1.353774, 1.934629",\
+ "0.721078, 0.944839, 1.130077, 1.429839, 2.010695",\
+ "0.976570, 1.200323, 1.385570, 1.685334, 2.266185",\
+ "1.900877, 2.124636, 2.309876, 2.609639, 3.190493",\
+ "0.666566, 0.884881, 1.069999, 1.369505, 1.949970",\
+ "0.708289, 0.926604, 1.111723, 1.411228, 1.991693",\
+ "0.784354, 1.002670, 1.187788, 1.487293, 2.067758",\
+ "1.039845, 1.258154, 1.443280, 1.742788, 2.323248",\
+ "1.964153, 2.182467, 2.367587, 2.667093, 3.247556",\
+ "1.000632, 1.190214, 1.373659, 1.672698, 2.252249",\
+ "1.042355, 1.231937, 1.415382, 1.714421, 2.293972",\
+ "1.118420, 1.308003, 1.491447, 1.790486, 2.370037",\
+ "1.373908, 1.563487, 1.746940, 2.045980, 2.625527",\
+ "2.298218, 2.487800, 2.671246, 2.970286, 3.549836");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.025354, 0.025353, 0.025353, 0.025353, 0.025353",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199490, 0.199485, 0.199485, 0.199485, 0.199485",\
+ "0.686682, 0.686682, 0.686679, 0.686679, 0.686679",\
+ "2.452544, 2.452522, 2.452521, 2.452511, 2.452485",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025353",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199490, 0.199485, 0.199485, 0.199485, 0.199485",\
+ "0.686682, 0.686682, 0.686679, 0.686679, 0.686679",\
+ "2.452543, 2.452522, 2.452521, 2.452511, 2.452485",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025353",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199489, 0.199485, 0.199485, 0.199485, 0.199485",\
+ "0.686682, 0.686682, 0.686679, 0.686679, 0.686679",\
+ "2.452541, 2.452522, 2.452521, 2.452511, 2.452485",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025353",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199489, 0.199485, 0.199485, 0.199485, 0.199485",\
+ "0.686682, 0.686682, 0.686679, 0.686679, 0.686679",\
+ "2.452540, 2.452522, 2.452521, 2.452511, 2.452485",\
+ "0.025353, 0.025353, 0.025353, 0.025353, 0.025353",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199485, 0.199485, 0.199485, 0.199485",\
+ "0.686682, 0.686682, 0.686679, 0.686679, 0.686679",\
+ "2.452530, 2.452522, 2.452521, 2.452511, 2.452485");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.448384, 0.681985, 0.867571, 1.167308, 1.748111",\
+ "0.480409, 0.714010, 0.899596, 1.199333, 1.780136",\
+ "0.530816, 0.764419, 0.950003, 1.249740, 1.830544",\
+ "0.691874, 0.925480, 1.111061, 1.410797, 1.991603",\
+ "1.271848, 1.505453, 1.691034, 1.990770, 2.571576",\
+ "0.536792, 0.769304, 0.954852, 1.254613, 1.835465",\
+ "0.568817, 0.801328, 0.986877, 1.286638, 1.867489",\
+ "0.619224, 0.851737, 1.037284, 1.337045, 1.917897",\
+ "0.780282, 1.012799, 1.198342, 1.498102, 2.078956",\
+ "1.360255, 1.592772, 1.778315, 2.078075, 2.658929",\
+ "0.625880, 0.849639, 1.034879, 1.334642, 1.915496",\
+ "0.657905, 0.881663, 1.066904, 1.366667, 1.947521",\
+ "0.708312, 0.932072, 1.117311, 1.417073, 1.997929",\
+ "0.869371, 1.093134, 1.278369, 1.578131, 2.158988",\
+ "1.449344, 1.673107, 1.858342, 2.158104, 2.738961",\
+ "0.689156, 0.907470, 1.092590, 1.392096, 1.972560",\
+ "0.721181, 0.939495, 1.124615, 1.424121, 2.004584",\
+ "0.771588, 0.989904, 1.175022, 1.474527, 2.054992",\
+ "0.932647, 1.150965, 1.336080, 1.635585, 2.216051",\
+ "1.512620, 1.730939, 1.916053, 2.215558, 2.796025",\
+ "1.023221, 1.212804, 1.396249, 1.695289, 2.274839",\
+ "1.055246, 1.244828, 1.428274, 1.727314, 2.306864",\
+ "1.105654, 1.295237, 1.478681, 1.777720, 2.357271",\
+ "1.266715, 1.456299, 1.639739, 1.938777, 2.518331",\
+ "1.846688, 2.036272, 2.219712, 2.518751, 3.098304");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059265",\
+ "0.131513, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417810, 0.417803, 0.417803, 0.417799, 0.417790",\
+ "1.484519, 1.484515, 1.484514, 1.484513, 1.484508",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059265",\
+ "0.131513, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417810, 0.417803, 0.417803, 0.417799, 0.417790",\
+ "1.484518, 1.484515, 1.484514, 1.484513, 1.484508",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059265",\
+ "0.131513, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417810, 0.417803, 0.417803, 0.417799, 0.417790",\
+ "1.484518, 1.484515, 1.484514, 1.484513, 1.484508",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059265",\
+ "0.131513, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417809, 0.417803, 0.417803, 0.417799, 0.417790",\
+ "1.484518, 1.484515, 1.484514, 1.484513, 1.484508",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059265",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417806, 0.417803, 0.417803, 0.417799, 0.417790",\
+ "1.484516, 1.484515, 1.484514, 1.484513, 1.484508");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2707*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.411437, 0.641763, 0.827440, 1.121826, 1.689429",\
+ "0.453163, 0.683488, 0.869165, 1.163551, 1.731154",\
+ "0.529220, 0.759545, 0.945221, 1.239608, 1.807211",\
+ "0.784777, 1.015107, 1.200787, 1.495173, 2.062773",\
+ "1.709036, 1.939362, 2.125040, 2.419426, 2.987028",\
+ "0.499750, 0.729081, 0.914721, 1.209131, 1.776782",\
+ "0.541475, 0.770807, 0.956446, 1.250857, 1.818508",\
+ "0.617533, 0.846863, 1.032502, 1.326913, 1.894564",\
+ "0.873090, 1.102426, 1.288068, 1.582478, 2.150126",\
+ "1.797349, 2.026680, 2.212321, 2.506731, 3.074381",\
+ "0.588895, 0.809414, 0.994747, 1.289160, 1.856814",\
+ "0.630620, 0.851139, 1.036473, 1.330885, 1.898539",\
+ "0.706677, 0.927196, 1.112529, 1.406941, 1.974596",\
+ "0.962234, 1.182758, 1.368095, 1.662507, 2.230158",\
+ "1.886493, 2.107013, 2.292347, 2.586760, 3.154413",\
+ "0.652369, 0.867238, 1.052459, 1.346598, 1.913847",\
+ "0.694094, 0.908963, 1.094185, 1.388323, 1.955572",\
+ "0.770151, 0.985020, 1.170241, 1.464380, 2.031629",\
+ "1.025709, 1.240582, 1.425807, 1.719945, 2.287190",\
+ "1.949967, 2.164837, 2.350059, 2.644198, 3.211446",\
+ "0.987682, 1.172511, 1.356118, 1.649777, 2.216089",\
+ "1.029408, 1.214237, 1.397843, 1.691502, 2.257815",\
+ "1.105465, 1.290294, 1.473899, 1.767559, 2.333871",\
+ "1.361025, 1.545856, 1.729465, 2.023124, 2.589433",\
+ "2.285281, 2.470111, 2.653718, 2.947377, 3.513689");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686589, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686589, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686588, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686588, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686585, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452422");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.434036, 0.664363, 0.850040, 1.144426, 1.712028",\
+ "0.466066, 0.696393, 0.882070, 1.176457, 1.744059",\
+ "0.516455, 0.746780, 0.932457, 1.226843, 1.794446",\
+ "0.677484, 0.907807, 1.093482, 1.387868, 1.955473",\
+ "1.257459, 1.487782, 1.673457, 1.967843, 2.535448",\
+ "0.522349, 0.751681, 0.937321, 1.231731, 1.799382",\
+ "0.554379, 0.783711, 0.969351, 1.263762, 1.831412",\
+ "0.604768, 0.834099, 1.019738, 1.314148, 1.881800",\
+ "0.765797, 0.995125, 1.180763, 1.475173, 2.042827",\
+ "1.345772, 1.575100, 1.760738, 2.055148, 2.622802",\
+ "0.611494, 0.832013, 1.017348, 1.311760, 1.879413",\
+ "0.643524, 0.864044, 1.049378, 1.343790, 1.911444",\
+ "0.693912, 0.914431, 1.099764, 1.394177, 1.961831",\
+ "0.854941, 1.075458, 1.260790, 1.555202, 2.122858",\
+ "1.434916, 1.655433, 1.840765, 2.135177, 2.702833",\
+ "0.674968, 0.889838, 1.075059, 1.369198, 1.936446",\
+ "0.706998, 0.921868, 1.107090, 1.401229, 1.968477",\
+ "0.757386, 0.972255, 1.157476, 1.451615, 2.018864",\
+ "0.918415, 1.133282, 1.318501, 1.612640, 2.179891",\
+ "1.498390, 1.713257, 1.898476, 2.192615, 2.759866",\
+ "1.010282, 1.195111, 1.378718, 1.672377, 2.238689",\
+ "1.042312, 1.227141, 1.410748, 1.704407, 2.270719",\
+ "1.092700, 1.277529, 1.461135, 1.754794, 2.321106",\
+ "1.253727, 1.438555, 1.622160, 1.915819, 2.482133",\
+ "1.833702, 2.018530, 2.202135, 2.495794, 3.062109");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2292*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.506400, 0.723405, 0.901534, 1.190767, 1.752239",\
+ "0.548095, 0.765101, 0.943229, 1.232462, 1.793935",\
+ "0.624275, 0.841281, 1.019409, 1.308642, 1.870115",\
+ "0.879665, 1.096670, 1.274799, 1.564032, 2.125504",\
+ "1.804122, 2.021127, 2.199255, 2.488489, 3.049961",\
+ "0.594776, 0.810723, 0.988814, 1.278072, 1.839592",\
+ "0.636472, 0.852419, 1.030510, 1.319767, 1.881288",\
+ "0.712652, 0.928599, 1.106690, 1.395947, 1.957468",\
+ "0.968041, 1.183989, 1.362080, 1.651337, 2.212858",\
+ "1.892498, 2.108445, 2.286536, 2.575794, 3.137315",\
+ "0.684027, 0.891056, 1.068841, 1.358100, 1.919624",\
+ "0.725722, 0.932752, 1.110537, 1.399796, 1.961320",\
+ "0.801902, 1.008932, 1.186717, 1.475976, 2.037500",\
+ "1.057292, 1.264322, 1.442107, 1.731366, 2.292889",\
+ "1.981749, 2.188778, 2.366563, 2.655822, 3.217346",\
+ "0.747566, 0.948873, 1.126535, 1.415531, 1.976642",\
+ "0.789261, 0.990569, 1.168231, 1.457227, 2.018338",\
+ "0.865441, 1.066749, 1.244411, 1.533407, 2.094518",\
+ "1.120831, 1.322138, 1.499801, 1.788796, 2.349907",\
+ "2.045288, 2.246595, 2.424257, 2.713253, 3.274364",\
+ "1.075492, 1.254095, 1.430191, 1.718704, 2.278866",\
+ "1.117188, 1.295791, 1.471887, 1.760399, 2.320562",\
+ "1.193368, 1.371971, 1.548067, 1.836579, 2.396742",\
+ "1.448757, 1.627361, 1.803456, 2.091969, 2.652131",\
+ "2.373214, 2.551817, 2.727913, 3.016426, 3.576588");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199408, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199408, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199408, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199408, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199408, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.526648, 0.743653, 0.921781, 1.211015, 1.772487",\
+ "0.558894, 0.775899, 0.954027, 1.243261, 1.804733",\
+ "0.609210, 0.826215, 1.004344, 1.293577, 1.855049",\
+ "0.769874, 0.986879, 1.165008, 1.454241, 2.015713",\
+ "1.350989, 1.567995, 1.746123, 2.035356, 2.596828",\
+ "0.615024, 0.830971, 1.009062, 1.298320, 1.859840",\
+ "0.647270, 0.863217, 1.041308, 1.330566, 1.892087",\
+ "0.697586, 0.913533, 1.091625, 1.380882, 1.942403",\
+ "0.858250, 1.074197, 1.252288, 1.541546, 2.103066",\
+ "1.439366, 1.655313, 1.833404, 2.122661, 2.684182",\
+ "0.704275, 0.911304, 1.089089, 1.378348, 1.939872",\
+ "0.736521, 0.943550, 1.121335, 1.410594, 1.972118",\
+ "0.786837, 0.993866, 1.171651, 1.460910, 2.022434",\
+ "0.947501, 1.154530, 1.332315, 1.621574, 2.183098",\
+ "1.528616, 1.735646, 1.913431, 2.202690, 2.764214",\
+ "0.767814, 0.969121, 1.146783, 1.435779, 1.996890",\
+ "0.800060, 1.001367, 1.179029, 1.468025, 2.029136",\
+ "0.850376, 1.051683, 1.229346, 1.518341, 2.079452",\
+ "1.011040, 1.212347, 1.390009, 1.679005, 2.240116",\
+ "1.592155, 1.793463, 1.971125, 2.260120, 2.821231",\
+ "1.095740, 1.274343, 1.450439, 1.738951, 2.299114",\
+ "1.127986, 1.306589, 1.482685, 1.771198, 2.331360",\
+ "1.178302, 1.356906, 1.533001, 1.821514, 2.381676",\
+ "1.338966, 1.517570, 1.693665, 1.982178, 2.542340",\
+ "1.920082, 2.098685, 2.274781, 2.563293, 3.123456");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419485, 0.419485, 0.419484, 0.419483, 0.419481",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419485, 0.419485, 0.419484, 0.419483, 0.419481",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419485, 0.419485, 0.419484, 0.419483, 0.419481",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419485, 0.419485, 0.419484, 0.419483, 0.419481",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419485, 0.419485, 0.419484, 0.419483, 0.419481",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2480*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.487215, 0.727664, 0.917972, 1.220770, 1.805421",\
+ "0.528910, 0.769360, 0.959668, 1.262466, 1.847117",\
+ "0.605090, 0.845540, 1.035848, 1.338646, 1.923296",\
+ "0.860480, 1.100929, 1.291238, 1.594035, 2.178686",\
+ "1.784937, 2.025386, 2.215694, 2.518492, 3.103143",\
+ "0.575514, 0.814982, 1.005253, 1.308075, 1.892774",\
+ "0.617210, 0.856678, 1.046949, 1.349771, 1.934470",\
+ "0.693390, 0.932858, 1.123129, 1.425951, 2.010650",\
+ "0.948779, 1.188247, 1.378519, 1.681340, 2.266040",\
+ "1.873236, 2.112704, 2.302975, 2.605797, 3.190496",\
+ "0.664798, 0.895313, 1.085280, 1.388104, 1.972806",\
+ "0.706493, 0.937009, 1.126976, 1.429799, 2.014502",\
+ "0.782673, 1.013189, 1.203156, 1.505979, 2.090682",\
+ "1.038063, 1.268578, 1.458545, 1.761369, 2.346071",\
+ "1.962520, 2.193035, 2.383002, 2.685826, 3.270528",\
+ "0.728479, 0.953177, 1.143002, 1.445563, 2.029881",\
+ "0.770175, 0.994873, 1.184698, 1.487259, 2.071577",\
+ "0.846355, 1.071053, 1.260878, 1.563439, 2.147756",\
+ "1.101744, 1.326442, 1.516268, 1.818828, 2.403146",\
+ "2.026201, 2.250899, 2.440724, 2.743285, 3.327603",\
+ "1.065102, 1.258723, 1.446662, 1.748759, 2.332174",\
+ "1.106798, 1.300419, 1.488358, 1.790455, 2.373869",\
+ "1.182978, 1.376599, 1.564538, 1.866635, 2.450049",\
+ "1.438367, 1.631989, 1.819927, 2.122025, 2.705439",\
+ "2.362824, 2.556445, 2.744384, 3.046481, 3.629896");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199409, 0.199409, 0.199410, 0.199412",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199409, 0.199409, 0.199410, 0.199412",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199409, 0.199409, 0.199410, 0.199412",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199409, 0.199409, 0.199410, 0.199412",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199410, 0.199412",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.507462, 0.747912, 0.938220, 1.241018, 1.825669",\
+ "0.539708, 0.780158, 0.970466, 1.273264, 1.857915",\
+ "0.590025, 0.830474, 1.020782, 1.323580, 1.908231",\
+ "0.750689, 0.991138, 1.181446, 1.484244, 2.068895",\
+ "1.331804, 1.572254, 1.762562, 2.065360, 2.650010",\
+ "0.595762, 0.835230, 1.025501, 1.328323, 1.913022",\
+ "0.628008, 0.867476, 1.057747, 1.360569, 1.945268",\
+ "0.678324, 0.917792, 1.108063, 1.410885, 1.995584",\
+ "0.838988, 1.078456, 1.268727, 1.571549, 2.156248",\
+ "1.420103, 1.659572, 1.849843, 2.152665, 2.737364",\
+ "0.685045, 0.915561, 1.105528, 1.408352, 1.993054",\
+ "0.717292, 0.947807, 1.137774, 1.440598, 2.025300",\
+ "0.767608, 0.998123, 1.188090, 1.490914, 2.075616",\
+ "0.928272, 1.158787, 1.348754, 1.651578, 2.236280",\
+ "1.509387, 1.739902, 1.929870, 2.232693, 2.817395",\
+ "0.748727, 0.973425, 1.163250, 1.465811, 2.050128",\
+ "0.780973, 1.005671, 1.195496, 1.498057, 2.082375",\
+ "0.831289, 1.055987, 1.245812, 1.548373, 2.132691",\
+ "0.991953, 1.216651, 1.406476, 1.709037, 2.293355",\
+ "1.573069, 1.797767, 1.987592, 2.290153, 2.874470",\
+ "1.085350, 1.278971, 1.466910, 1.769007, 2.352422",\
+ "1.117596, 1.311217, 1.499156, 1.801253, 2.384668",\
+ "1.167912, 1.361534, 1.549472, 1.851569, 2.434984",\
+ "1.328576, 1.522197, 1.710136, 2.012233, 2.595648",\
+ "1.909692, 2.103313, 2.291251, 2.593349, 3.176763");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419485, 0.419484, 0.419483, 0.419481, 0.419478",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419485, 0.419484, 0.419483, 0.419481, 0.419478",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419485, 0.419484, 0.419483, 0.419481, 0.419478",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419485, 0.419484, 0.419483, 0.419481, 0.419478",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419484, 0.419484, 0.419483, 0.419481, 0.419478",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2458*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.401855, 0.617772, 0.797138, 1.086913, 1.648811",\
+ "0.443578, 0.659495, 0.838861, 1.128636, 1.690534",\
+ "0.519643, 0.735561, 0.914927, 1.204702, 1.766600",\
+ "0.775133, 0.991049, 1.170417, 1.460191, 2.022084",\
+ "1.699442, 1.915359, 2.094725, 2.384500, 2.946397",\
+ "0.490138, 0.705090, 0.884419, 1.174218, 1.736165",\
+ "0.531861, 0.746813, 0.926142, 1.215941, 1.777887",\
+ "0.607927, 0.822879, 1.002208, 1.292007, 1.853954",\
+ "0.863417, 1.078367, 1.257698, 1.547496, 2.109437",\
+ "1.787725, 2.002677, 2.182006, 2.471805, 3.033750",\
+ "0.579402, 0.785421, 0.964446, 1.254247, 1.816196",\
+ "0.621125, 0.827144, 1.006169, 1.295970, 1.857919",\
+ "0.697191, 0.903209, 1.082235, 1.372035, 1.933985",\
+ "0.952680, 1.158697, 1.337725, 1.627524, 2.189469",\
+ "1.876989, 2.083007, 2.262033, 2.551833, 3.113782",\
+ "0.643076, 0.843251, 1.022143, 1.311678, 1.873216",\
+ "0.684799, 0.884974, 1.063866, 1.353401, 1.914939",\
+ "0.760865, 0.961040, 1.139932, 1.429467, 1.991005",\
+ "1.016354, 1.216527, 1.395422, 1.684956, 2.246489",\
+ "1.940663, 2.140838, 2.319730, 2.609265, 3.170802",\
+ "0.967710, 1.148559, 1.325799, 1.614851, 2.175443",\
+ "1.009433, 1.190282, 1.367522, 1.656574, 2.217166",\
+ "1.085498, 1.266348, 1.443587, 1.732640, 2.293232",\
+ "1.340988, 1.521835, 1.699077, 1.988128, 2.548716",\
+ "2.265296, 2.446146, 2.623385, 2.912438, 3.473029");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199488, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199488, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.424445, 0.640362, 0.819728, 1.109503, 1.671400",\
+ "0.456469, 0.672387, 0.851753, 1.141528, 1.703424",\
+ "0.506877, 0.722795, 0.902161, 1.191936, 1.753834",\
+ "0.667936, 0.883855, 1.063220, 1.352995, 1.914896",\
+ "1.247909, 1.463828, 1.643193, 1.932969, 2.494869",\
+ "0.512729, 0.727680, 0.907009, 1.196808, 1.758754",\
+ "0.544753, 0.759704, 0.939034, 1.228833, 1.790778",\
+ "0.595161, 0.810113, 0.989442, 1.279241, 1.841187",\
+ "0.756220, 0.971173, 1.150501, 1.440300, 2.002249",\
+ "1.336193, 1.551146, 1.730474, 2.020274, 2.582222",\
+ "0.601992, 0.808011, 0.987036, 1.276837, 1.838785",\
+ "0.634017, 0.840035, 1.019061, 1.308861, 1.870810",\
+ "0.684425, 0.890443, 1.069469, 1.359269, 1.921219",\
+ "0.845484, 1.051504, 1.230528, 1.520329, 2.082281",\
+ "1.425457, 1.631477, 1.810501, 2.100302, 2.662254",\
+ "0.665666, 0.865841, 1.044734, 1.334268, 1.895805",\
+ "0.697691, 0.897865, 1.076758, 1.366293, 1.927830",\
+ "0.748099, 0.948274, 1.127166, 1.416701, 1.978239",\
+ "0.909158, 1.109334, 1.288225, 1.577760, 2.139301",\
+ "1.489131, 1.689307, 1.868198, 2.157734, 2.719274",\
+ "0.990300, 1.171149, 1.348389, 1.637441, 2.198032",\
+ "1.022324, 1.203173, 1.380413, 1.669466, 2.230056",\
+ "1.072732, 1.253582, 1.430821, 1.719874, 2.280466",\
+ "1.233791, 1.414642, 1.591880, 1.880933, 2.441528",\
+ "1.813765, 1.994615, 2.171854, 2.460907, 3.021501");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[8]_redg_min_2440*/
+
+} /* end of pin tl_o[8] */
+
+pin("tl_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.035370 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.763083, 1.005361, 1.270323, 1.744250, 2.692104",\
+ "0.776922, 1.019201, 1.284163, 1.758090, 2.705944",\
+ "0.800433, 1.042711, 1.307673, 1.781600, 2.729455",\
+ "1.069305, 1.311583, 1.576544, 2.050472, 2.998326",\
+ "1.663833, 1.906111, 2.171072, 2.644999, 3.592854",\
+ "0.850491, 1.092832, 1.357904, 1.830964, 2.778038",\
+ "0.864331, 1.106672, 1.371744, 1.844804, 2.791878",\
+ "0.887842, 1.130182, 1.395254, 1.868315, 2.815388",\
+ "1.156713, 1.399054, 1.664126, 2.137186, 3.084260",\
+ "1.751242, 1.993582, 2.258653, 2.731714, 3.678787",\
+ "0.931306, 1.181626, 1.445868, 1.918586, 2.864993",\
+ "0.945146, 1.195466, 1.459708, 1.932426, 2.878833",\
+ "0.968656, 1.218976, 1.483218, 1.955936, 2.902343",\
+ "1.237528, 1.487848, 1.752090, 2.224808, 3.171215",\
+ "1.832057, 2.082376, 2.346617, 2.819335, 3.765743",\
+ "0.989274, 1.246989, 1.510009, 1.982499, 2.928502",\
+ "1.003114, 1.260829, 1.523849, 1.996339, 2.942342",\
+ "1.026624, 1.284340, 1.547359, 2.019849, 2.965852",\
+ "1.295496, 1.553211, 1.816230, 2.288721, 3.234724",\
+ "1.890025, 2.147739, 2.410758, 2.883248, 3.829252",\
+ "1.322822, 1.608220, 1.861925, 2.331865, 3.273958",\
+ "1.336662, 1.622059, 1.875765, 2.345705, 3.287798",\
+ "1.360173, 1.645570, 1.899276, 2.369215, 3.311308",\
+ "1.629045, 1.914441, 2.168147, 2.638086, 3.580180",\
+ "2.223573, 2.508969, 2.762674, 3.232614, 4.174707");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.129963, 0.129969, 0.129995, 0.130055, 0.130175",\
+ "0.157856, 0.157859, 0.157877, 0.157917, 0.157996",\
+ "0.203046, 0.203047, 0.203054, 0.203070, 0.203103",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129969, 0.129995, 0.130055, 0.130175",\
+ "0.157856, 0.157859, 0.157877, 0.157917, 0.157996",\
+ "0.203046, 0.203047, 0.203054, 0.203070, 0.203103",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129969, 0.129995, 0.130055, 0.130175",\
+ "0.157856, 0.157860, 0.157877, 0.157917, 0.157996",\
+ "0.203046, 0.203047, 0.203054, 0.203070, 0.203103",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129969, 0.129995, 0.130055, 0.130175",\
+ "0.157856, 0.157860, 0.157877, 0.157917, 0.157996",\
+ "0.203046, 0.203047, 0.203054, 0.203070, 0.203103",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129972, 0.129996, 0.130055, 0.130175",\
+ "0.157856, 0.157861, 0.157877, 0.157917, 0.157996",\
+ "0.203046, 0.203048, 0.203055, 0.203071, 0.203103",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.698169, 0.940449, 1.205412, 1.679339, 2.627193",\
+ "0.711314, 0.953594, 1.218557, 1.692484, 2.640338",\
+ "0.732465, 0.974745, 1.239707, 1.713634, 2.661488",\
+ "0.908675, 1.150953, 1.415913, 1.889840, 2.837695",\
+ "1.242989, 1.485267, 1.750227, 2.224154, 3.172009",\
+ "0.785578, 1.027920, 1.292994, 1.766054, 2.713127",\
+ "0.798723, 1.041065, 1.306139, 1.779198, 2.726272",\
+ "0.819874, 1.062215, 1.327289, 1.800348, 2.747422",\
+ "0.996084, 1.238424, 1.503495, 1.976555, 2.923629",\
+ "1.330398, 1.572737, 1.837808, 2.310869, 3.257943",\
+ "0.866392, 1.116714, 1.380958, 1.853675, 2.800082",\
+ "0.879538, 1.129859, 1.394103, 1.866820, 2.813227",\
+ "0.900689, 1.151010, 1.415252, 1.887970, 2.834377",\
+ "1.076899, 1.327218, 1.591458, 2.064176, 3.010584",\
+ "1.411212, 1.661532, 1.925772, 2.398490, 3.344898",\
+ "0.924360, 1.182077, 1.445098, 1.917589, 2.863591",\
+ "0.937505, 1.195222, 1.458243, 1.930733, 2.876736",\
+ "0.958657, 1.216373, 1.479393, 1.951883, 2.897886",\
+ "1.134866, 1.392581, 1.655599, 2.128089, 3.074093",\
+ "1.469180, 1.726895, 1.989913, 2.462403, 3.408407",\
+ "1.257909, 1.543308, 1.797015, 2.266954, 3.209047",\
+ "1.271054, 1.556453, 1.810160, 2.280099, 3.222192",\
+ "1.292205, 1.577603, 1.831310, 2.301249, 3.243342",\
+ "1.468415, 1.753811, 2.007515, 2.477455, 3.419549",\
+ "1.802729, 2.088125, 2.341829, 2.811769, 3.753863");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.086495, 0.086495, 0.086495, 0.086495, 0.086495",\
+ "0.090876, 0.090876, 0.090876, 0.090876, 0.090876",\
+ "0.110244, 0.110244, 0.110244, 0.110244, 0.110244",\
+ "0.380767, 0.380767, 0.380767, 0.380768, 0.380769",\
+ "1.026303, 1.026303, 1.026304, 1.026307, 1.026312",\
+ "0.086495, 0.086495, 0.086495, 0.086495, 0.086495",\
+ "0.090876, 0.090876, 0.090876, 0.090876, 0.090876",\
+ "0.110244, 0.110244, 0.110244, 0.110244, 0.110244",\
+ "0.380767, 0.380767, 0.380767, 0.380768, 0.380769",\
+ "1.026303, 1.026303, 1.026305, 1.026307, 1.026312",\
+ "0.086495, 0.086495, 0.086495, 0.086495, 0.086495",\
+ "0.090876, 0.090876, 0.090876, 0.090876, 0.090876",\
+ "0.110244, 0.110244, 0.110244, 0.110244, 0.110244",\
+ "0.380767, 0.380767, 0.380767, 0.380768, 0.380769",\
+ "1.026303, 1.026303, 1.026305, 1.026307, 1.026312",\
+ "0.086495, 0.086495, 0.086495, 0.086495, 0.086495",\
+ "0.090876, 0.090876, 0.090876, 0.090876, 0.090876",\
+ "0.110244, 0.110244, 0.110244, 0.110244, 0.110244",\
+ "0.380767, 0.380767, 0.380767, 0.380768, 0.380769",\
+ "1.026303, 1.026303, 1.026305, 1.026307, 1.026312",\
+ "0.086495, 0.086495, 0.086495, 0.086495, 0.086495",\
+ "0.090876, 0.090876, 0.090876, 0.090876, 0.090876",\
+ "0.110244, 0.110244, 0.110244, 0.110244, 0.110244",\
+ "0.380767, 0.380767, 0.380767, 0.380768, 0.380769",\
+ "1.026303, 1.026303, 1.026305, 1.026307, 1.026312");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2625*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.787208, 1.042240, 1.299016, 1.737737, 2.615179",\
+ "0.801048, 1.056080, 1.312856, 1.751576, 2.629018",\
+ "0.824558, 1.079590, 1.336366, 1.775087, 2.652528",\
+ "1.093430, 1.348462, 1.605238, 2.043957, 2.921395",\
+ "1.687959, 1.942991, 2.199766, 2.638483, 3.515917",\
+ "0.874617, 1.129725, 1.386486, 1.824451, 2.701113",\
+ "0.888456, 1.143564, 1.400326, 1.838291, 2.714952",\
+ "0.911967, 1.167075, 1.423836, 1.861801, 2.738462",\
+ "1.180839, 1.435947, 1.692708, 2.130671, 3.007329",\
+ "1.775367, 2.030476, 2.287236, 2.725197, 3.601851",\
+ "0.962301, 1.218548, 1.474448, 1.912073, 2.788068",\
+ "0.976141, 1.232388, 1.488288, 1.925912, 2.801907",\
+ "0.999652, 1.255898, 1.511798, 1.949423, 2.825417",\
+ "1.268523, 1.524770, 1.780670, 2.218293, 3.094284",\
+ "1.863052, 2.119299, 2.375198, 2.812819, 3.688806",\
+ "1.025488, 1.283954, 1.538583, 1.975986, 2.851577",\
+ "1.039328, 1.297794, 1.552423, 1.989825, 2.865416",\
+ "1.062838, 1.321304, 1.575933, 2.013336, 2.888926",\
+ "1.331710, 1.590176, 1.844805, 2.282206, 3.157793",\
+ "1.926239, 2.184705, 2.439332, 2.876732, 3.752315",\
+ "1.358969, 1.645690, 1.890142, 2.325206, 3.197033",\
+ "1.372809, 1.659530, 1.903982, 2.339045, 3.210872",\
+ "1.396320, 1.683041, 1.927492, 2.362556, 3.234382",\
+ "1.665192, 1.951913, 2.196364, 2.631425, 3.503249",\
+ "2.259720, 2.546442, 2.790892, 3.225951, 4.097771");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.129962, 0.129962, 0.129971, 0.130001, 0.130060",\
+ "0.157855, 0.157855, 0.157861, 0.157880, 0.157920",\
+ "0.203046, 0.203046, 0.203048, 0.203056, 0.203072",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129962, 0.129962, 0.129971, 0.130001, 0.130060",\
+ "0.157855, 0.157855, 0.157861, 0.157880, 0.157920",\
+ "0.203046, 0.203046, 0.203048, 0.203056, 0.203072",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129962, 0.129962, 0.129971, 0.130001, 0.130060",\
+ "0.157855, 0.157855, 0.157861, 0.157880, 0.157920",\
+ "0.203046, 0.203046, 0.203048, 0.203056, 0.203072",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129962, 0.129962, 0.129971, 0.130001, 0.130060",\
+ "0.157855, 0.157855, 0.157861, 0.157880, 0.157920",\
+ "0.203046, 0.203046, 0.203048, 0.203056, 0.203072",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129962, 0.129962, 0.129971, 0.130001, 0.130060",\
+ "0.157855, 0.157855, 0.157861, 0.157880, 0.157920",\
+ "0.203046, 0.203046, 0.203048, 0.203056, 0.203072",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.722294, 0.977326, 1.234104, 1.672832, 2.550288",\
+ "0.735440, 0.990472, 1.247249, 1.685975, 2.563427",\
+ "0.756591, 1.011623, 1.268399, 1.707123, 2.584570",\
+ "0.932801, 1.187833, 1.444607, 1.883322, 2.760752",\
+ "1.267115, 1.522147, 1.778921, 2.217637, 3.095068",\
+ "0.809702, 1.064811, 1.321574, 1.759546, 2.636222",\
+ "0.822848, 1.077956, 1.334719, 1.772689, 2.649361",\
+ "0.843999, 1.099107, 1.355870, 1.793837, 2.670504",\
+ "1.020210, 1.275318, 1.532078, 1.970036, 2.846686",\
+ "1.354523, 1.609631, 1.866392, 2.304351, 3.181002",\
+ "0.897387, 1.153634, 1.409536, 1.847168, 2.723177",\
+ "0.910533, 1.166780, 1.422681, 1.860311, 2.736316",\
+ "0.931684, 1.187931, 1.443832, 1.881459, 2.757459",\
+ "1.107894, 1.364141, 1.620039, 2.057658, 2.933641",\
+ "1.442208, 1.698455, 1.954353, 2.391973, 3.267957",\
+ "0.960574, 1.219040, 1.473671, 1.911081, 2.786686",\
+ "0.973719, 1.232186, 1.486816, 1.924224, 2.799825",\
+ "0.994870, 1.253337, 1.507966, 1.945372, 2.820968",\
+ "1.171081, 1.429547, 1.684174, 2.121571, 2.997150",\
+ "1.505394, 1.763861, 2.018488, 2.455886, 3.331466",\
+ "1.294055, 1.580776, 1.825230, 2.260301, 3.132142",\
+ "1.307201, 1.593922, 1.838375, 2.273444, 3.145281",\
+ "1.328352, 1.615073, 1.859525, 2.294591, 3.166424",\
+ "1.504562, 1.791284, 2.035733, 2.470791, 3.342606",\
+ "1.838876, 2.125597, 2.370047, 2.805105, 3.676922");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.086495, 0.086495, 0.086490, 0.086470, 0.086430",\
+ "0.090877, 0.090877, 0.090872, 0.090854, 0.090818",\
+ "0.110245, 0.110245, 0.110240, 0.110223, 0.110189",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026303, 1.026305, 1.026307",\
+ "0.086495, 0.086495, 0.086490, 0.086470, 0.086430",\
+ "0.090877, 0.090877, 0.090872, 0.090854, 0.090818",\
+ "0.110245, 0.110245, 0.110240, 0.110223, 0.110189",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026303, 1.026305, 1.026307",\
+ "0.086495, 0.086495, 0.086490, 0.086470, 0.086430",\
+ "0.090877, 0.090877, 0.090872, 0.090854, 0.090818",\
+ "0.110245, 0.110245, 0.110240, 0.110223, 0.110189",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026303, 1.026305, 1.026307",\
+ "0.086495, 0.086495, 0.086490, 0.086470, 0.086430",\
+ "0.090877, 0.090877, 0.090872, 0.090854, 0.090818",\
+ "0.110245, 0.110245, 0.110240, 0.110223, 0.110189",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026303, 1.026305, 1.026307",\
+ "0.086495, 0.086495, 0.086489, 0.086470, 0.086430",\
+ "0.090877, 0.090877, 0.090872, 0.090854, 0.090818",\
+ "0.110245, 0.110245, 0.110240, 0.110223, 0.110189",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026303, 1.026305, 1.026307");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2692*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.841286, 1.079720, 1.357044, 1.842422, 2.813178",\
+ "0.855126, 1.093560, 1.370884, 1.856262, 2.827017",\
+ "0.878637, 1.117071, 1.394394, 1.879772, 2.850528",\
+ "1.147509, 1.385943, 1.663266, 2.148643, 3.119398",\
+ "1.742037, 1.980471, 2.257795, 2.743171, 3.713924",\
+ "0.928696, 1.167248, 1.444662, 1.929136, 2.899111",\
+ "0.942536, 1.181088, 1.458502, 1.942976, 2.912951",\
+ "0.966046, 1.204598, 1.482012, 1.966486, 2.936461",\
+ "1.234918, 1.473470, 1.750884, 2.235358, 3.205331",\
+ "1.829447, 2.067999, 2.345412, 2.829885, 3.799858",\
+ "1.009558, 1.256174, 1.532627, 2.016758, 2.986066",\
+ "1.023398, 1.270014, 1.546467, 2.030598, 2.999906",\
+ "1.046908, 1.293524, 1.569977, 2.054108, 3.023416",\
+ "1.315780, 1.562396, 1.838849, 2.322979, 3.292286",\
+ "1.910309, 2.156925, 2.433377, 2.917507, 3.886813",\
+ "1.067230, 1.321729, 1.596769, 2.080671, 3.049575",\
+ "1.081070, 1.335569, 1.610609, 2.094511, 3.063415",\
+ "1.104580, 1.359079, 1.634119, 2.118021, 3.086925",\
+ "1.373452, 1.627951, 1.902991, 2.386893, 3.355795",\
+ "1.967981, 2.222480, 2.497520, 2.981421, 3.950322",\
+ "1.388249, 1.685192, 1.948802, 2.430085, 3.395031",\
+ "1.402089, 1.699032, 1.962642, 2.443925, 3.408871",\
+ "1.425600, 1.722542, 1.986153, 2.467435, 3.432381",\
+ "1.694472, 1.991414, 2.255024, 2.736306, 3.701252",\
+ "2.289001, 2.585943, 2.849553, 3.330834, 4.295778");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.129963, 0.129963, 0.129966, 0.129976, 0.129998",\
+ "0.157855, 0.157855, 0.157857, 0.157864, 0.157879",\
+ "0.203046, 0.203046, 0.203046, 0.203049, 0.203055",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129963, 0.129966, 0.129976, 0.129998",\
+ "0.157855, 0.157855, 0.157857, 0.157864, 0.157879",\
+ "0.203046, 0.203046, 0.203046, 0.203049, 0.203055",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129963, 0.129966, 0.129976, 0.129998",\
+ "0.157855, 0.157855, 0.157857, 0.157864, 0.157879",\
+ "0.203046, 0.203046, 0.203046, 0.203049, 0.203055",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129963, 0.129966, 0.129976, 0.129998",\
+ "0.157855, 0.157855, 0.157857, 0.157864, 0.157879",\
+ "0.203046, 0.203046, 0.203046, 0.203049, 0.203055",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129963, 0.129963, 0.129966, 0.129977, 0.129998",\
+ "0.157855, 0.157855, 0.157857, 0.157864, 0.157879",\
+ "0.203046, 0.203046, 0.203047, 0.203049, 0.203055",\
+ "0.823721, 0.823721, 0.823721, 0.823721, 0.823721",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.776372, 1.014807, 1.292131, 1.777511, 2.748272",\
+ "0.789518, 1.027952, 1.305276, 1.790656, 2.761415",\
+ "0.810669, 1.049103, 1.326427, 1.811806, 2.782563",\
+ "0.986879, 1.225313, 1.502636, 1.988012, 2.958764",\
+ "1.321193, 1.559627, 1.836950, 2.322326, 3.293078",\
+ "0.863782, 1.102334, 1.379749, 1.864226, 2.834206",\
+ "0.876927, 1.115480, 1.392894, 1.877370, 2.847349",\
+ "0.898079, 1.136631, 1.414045, 1.898520, 2.868497",\
+ "1.074289, 1.312841, 1.590254, 2.074727, 3.044697",\
+ "1.408602, 1.647155, 1.924568, 2.409040, 3.379012",\
+ "0.944644, 1.191260, 1.467714, 1.951848, 2.921161",\
+ "0.957790, 1.204406, 1.480859, 1.964992, 2.934304",\
+ "0.978941, 1.225557, 1.502010, 1.986142, 2.955452",\
+ "1.155151, 1.401767, 1.678219, 2.162348, 3.131652",\
+ "1.489465, 1.736081, 2.012533, 2.496662, 3.465967",\
+ "1.002316, 1.256815, 1.531856, 2.015761, 2.984670",\
+ "1.015462, 1.269960, 1.545001, 2.028905, 2.997813",\
+ "1.036613, 1.291111, 1.566152, 2.050055, 3.018961",\
+ "1.212823, 1.467322, 1.742362, 2.226262, 3.195161",\
+ "1.547137, 1.801636, 2.076675, 2.560575, 3.529476",\
+ "1.323336, 1.620278, 1.883889, 2.365174, 3.330126",\
+ "1.336481, 1.633424, 1.897034, 2.378319, 3.343269",\
+ "1.357632, 1.654575, 1.918185, 2.399469, 3.364417",\
+ "1.533842, 1.830785, 2.094395, 2.575675, 3.540617",\
+ "1.868156, 2.165099, 2.428709, 2.909989, 3.874932");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.086495, 0.086495, 0.086493, 0.086486, 0.086471",\
+ "0.090877, 0.090877, 0.090875, 0.090868, 0.090855",\
+ "0.110244, 0.110244, 0.110243, 0.110237, 0.110224",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380767",\
+ "1.026303, 1.026303, 1.026303, 1.026304, 1.026305",\
+ "0.086495, 0.086495, 0.086493, 0.086486, 0.086471",\
+ "0.090877, 0.090877, 0.090875, 0.090868, 0.090855",\
+ "0.110244, 0.110244, 0.110243, 0.110237, 0.110224",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380767",\
+ "1.026303, 1.026303, 1.026303, 1.026304, 1.026305",\
+ "0.086495, 0.086495, 0.086493, 0.086486, 0.086471",\
+ "0.090877, 0.090877, 0.090875, 0.090868, 0.090855",\
+ "0.110244, 0.110244, 0.110243, 0.110237, 0.110224",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380767",\
+ "1.026303, 1.026303, 1.026303, 1.026304, 1.026305",\
+ "0.086495, 0.086495, 0.086493, 0.086486, 0.086471",\
+ "0.090877, 0.090877, 0.090875, 0.090868, 0.090855",\
+ "0.110244, 0.110244, 0.110243, 0.110237, 0.110224",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380767",\
+ "1.026303, 1.026303, 1.026303, 1.026304, 1.026305",\
+ "0.086495, 0.086495, 0.086493, 0.086486, 0.086471",\
+ "0.090877, 0.090877, 0.090875, 0.090868, 0.090855",\
+ "0.110244, 0.110244, 0.110243, 0.110237, 0.110224",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380767",\
+ "1.026303, 1.026303, 1.026303, 1.026304, 1.026305");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.798247, 1.048384, 1.323795, 1.814843, 2.796940",\
+ "0.812087, 1.062224, 1.337635, 1.828683, 2.810778",\
+ "0.835598, 1.085734, 1.361145, 1.852193, 2.834289",\
+ "1.104470, 1.354606, 1.630016, 2.121061, 3.103152",\
+ "1.698998, 1.949135, 2.224544, 2.715585, 3.697667",\
+ "0.885653, 1.135896, 1.411429, 1.901557, 2.882874",\
+ "0.899493, 1.149736, 1.425268, 1.915396, 2.896712",\
+ "0.923003, 1.173246, 1.448779, 1.938907, 2.920223",\
+ "1.191875, 1.442118, 1.717650, 2.207775, 3.189086",\
+ "1.786403, 2.036647, 2.312177, 2.802298, 3.783601",\
+ "0.966497, 1.224769, 1.499393, 1.989178, 2.969829",\
+ "0.980337, 1.238609, 1.513233, 2.003017, 2.983667",\
+ "1.003847, 1.262119, 1.536743, 2.026528, 3.007178",\
+ "1.272719, 1.530991, 1.805614, 2.295396, 3.276041",\
+ "1.867248, 2.125520, 2.400141, 2.889919, 3.870556",\
+ "1.026473, 1.290246, 1.563536, 2.053091, 3.033338",\
+ "1.040313, 1.304086, 1.577376, 2.066930, 3.047176",\
+ "1.063823, 1.327596, 1.600886, 2.090441, 3.070687",\
+ "1.332695, 1.596468, 1.869757, 2.359309, 3.339550",\
+ "1.927224, 2.190996, 2.464285, 2.953832, 3.934065",\
+ "1.363781, 1.652852, 1.915624, 2.402524, 3.378794",\
+ "1.377621, 1.666692, 1.929464, 2.416363, 3.392632",\
+ "1.401132, 1.690202, 1.952974, 2.439874, 3.416142",\
+ "1.670003, 1.959074, 2.221846, 2.708742, 3.685006",\
+ "2.264532, 2.553603, 2.816373, 3.303265, 4.279521");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.129964, 0.129964, 0.129977, 0.130025, 0.130119",\
+ "0.157856, 0.157856, 0.157865, 0.157896, 0.157959",\
+ "0.203046, 0.203046, 0.203050, 0.203062, 0.203088",\
+ "0.823721, 0.823721, 0.823721, 0.823720, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129964, 0.129964, 0.129978, 0.130025, 0.130119",\
+ "0.157856, 0.157856, 0.157865, 0.157896, 0.157959",\
+ "0.203046, 0.203046, 0.203050, 0.203062, 0.203088",\
+ "0.823721, 0.823721, 0.823721, 0.823720, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129964, 0.129964, 0.129978, 0.130025, 0.130119",\
+ "0.157856, 0.157856, 0.157865, 0.157896, 0.157959",\
+ "0.203046, 0.203046, 0.203050, 0.203062, 0.203088",\
+ "0.823721, 0.823721, 0.823721, 0.823720, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129964, 0.129964, 0.129978, 0.130025, 0.130119",\
+ "0.157856, 0.157856, 0.157865, 0.157896, 0.157959",\
+ "0.203046, 0.203046, 0.203050, 0.203062, 0.203088",\
+ "0.823721, 0.823721, 0.823721, 0.823720, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145",\
+ "0.129964, 0.129964, 0.129978, 0.130025, 0.130119",\
+ "0.157856, 0.157856, 0.157865, 0.157896, 0.157959",\
+ "0.203046, 0.203046, 0.203050, 0.203062, 0.203088",\
+ "0.823721, 0.823721, 0.823721, 0.823720, 0.823720",\
+ "2.222145, 2.222145, 2.222145, 2.222145, 2.222145");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.733334, 0.983470, 1.258885, 1.749946, 2.732069",\
+ "0.746479, 0.996616, 1.272029, 1.763087, 2.745203",\
+ "0.767630, 1.017767, 1.293179, 1.784232, 2.766337",\
+ "0.943840, 1.193977, 1.469384, 1.960422, 2.942497",\
+ "1.278154, 1.528290, 1.803698, 2.294737, 3.276814",\
+ "0.820739, 1.070982, 1.346519, 1.836660, 2.818002",\
+ "0.833884, 1.084128, 1.359663, 1.849801, 2.831136",\
+ "0.855036, 1.105279, 1.380813, 1.870946, 2.852271",\
+ "1.031245, 1.281489, 1.557018, 2.047136, 3.028431",\
+ "1.365559, 1.615803, 1.891332, 2.381451, 3.362748",\
+ "0.901583, 1.159855, 1.434483, 1.924281, 2.904958",\
+ "0.914729, 1.173001, 1.447627, 1.937422, 2.918091",\
+ "0.935880, 1.194152, 1.468777, 1.958567, 2.939226",\
+ "1.112090, 1.370362, 1.644982, 2.134757, 3.115386",\
+ "1.446404, 1.704675, 1.979296, 2.469072, 3.449703",\
+ "0.961559, 1.225332, 1.498626, 1.988194, 2.968467",\
+ "0.974705, 1.238478, 1.511771, 2.001335, 2.981600",\
+ "0.995856, 1.259629, 1.532920, 2.022480, 3.002735",\
+ "1.172065, 1.435838, 1.709126, 2.198669, 3.178895",\
+ "1.506379, 1.770152, 2.043440, 2.532985, 3.513212",\
+ "1.298868, 1.587939, 1.850715, 2.337627, 3.313922",\
+ "1.312013, 1.601084, 1.863859, 2.350768, 3.327056",\
+ "1.333164, 1.622235, 1.885009, 2.371913, 3.348191",\
+ "1.509374, 1.798445, 2.061214, 2.548103, 3.524351",\
+ "1.843688, 2.132759, 2.395528, 2.882418, 3.858668");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.086494, 0.086494, 0.086484, 0.086448, 0.086375",\
+ "0.090876, 0.090876, 0.090867, 0.090834, 0.090768",\
+ "0.110244, 0.110244, 0.110235, 0.110204, 0.110143",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026304, 1.026306, 1.026310",\
+ "0.086494, 0.086494, 0.086484, 0.086448, 0.086375",\
+ "0.090876, 0.090876, 0.090867, 0.090834, 0.090768",\
+ "0.110244, 0.110244, 0.110235, 0.110204, 0.110143",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026304, 1.026306, 1.026310",\
+ "0.086494, 0.086494, 0.086484, 0.086448, 0.086375",\
+ "0.090876, 0.090876, 0.090867, 0.090834, 0.090768",\
+ "0.110244, 0.110244, 0.110235, 0.110204, 0.110143",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026304, 1.026306, 1.026310",\
+ "0.086494, 0.086494, 0.086484, 0.086448, 0.086375",\
+ "0.090876, 0.090876, 0.090867, 0.090834, 0.090768",\
+ "0.110244, 0.110244, 0.110235, 0.110204, 0.110143",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026304, 1.026306, 1.026310",\
+ "0.086494, 0.086494, 0.086483, 0.086447, 0.086375",\
+ "0.090876, 0.090876, 0.090866, 0.090834, 0.090768",\
+ "0.110244, 0.110244, 0.110234, 0.110204, 0.110143",\
+ "0.380767, 0.380767, 0.380767, 0.380767, 0.380768",\
+ "1.026303, 1.026303, 1.026304, 1.026306, 1.026310");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2506*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.669029, 0.924047, 1.180422, 1.619320, 2.497118",\
+ "0.682742, 0.937760, 1.194134, 1.633031, 2.510826",\
+ "0.706267, 0.961286, 1.217660, 1.656557, 2.534352",\
+ "0.974450, 1.229468, 1.485840, 1.924731, 2.802514",\
+ "1.567911, 1.822930, 2.079299, 2.518181, 3.395944",\
+ "0.756434, 1.011535, 1.267892, 1.706034, 2.583051",\
+ "0.770147, 1.025247, 1.281604, 1.719745, 2.596760",\
+ "0.793673, 1.048773, 1.305130, 1.743271, 2.620286",\
+ "1.061855, 1.316955, 1.573310, 2.011445, 2.888448",\
+ "1.655316, 1.910417, 2.166769, 2.604894, 3.481877",\
+ "0.844902, 1.100352, 1.355853, 1.793655, 2.670006",\
+ "0.858615, 1.114065, 1.369565, 1.807366, 2.683715",\
+ "0.882141, 1.137591, 1.393091, 1.830892, 2.707241",\
+ "1.150323, 1.405773, 1.661271, 2.099066, 2.975403",\
+ "1.743784, 1.999234, 2.254730, 2.692515, 3.568832",\
+ "0.908398, 1.165749, 1.419987, 1.857568, 2.733515",\
+ "0.922111, 1.179461, 1.433699, 1.871279, 2.747224",\
+ "0.945637, 1.202987, 1.457225, 1.894805, 2.770750",\
+ "1.213819, 1.471169, 1.725405, 2.162979, 3.038912",\
+ "1.807280, 2.064631, 2.318864, 2.756428, 3.632341",\
+ "1.243831, 1.527415, 1.771546, 2.206786, 3.078971",\
+ "1.257544, 1.541128, 1.785259, 2.220497, 3.092680",\
+ "1.281070, 1.564654, 1.808785, 2.244023, 3.116206",\
+ "1.549252, 1.832836, 2.076965, 2.512197, 3.384368",\
+ "2.142714, 2.426297, 2.670424, 3.105646, 3.977798");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.126073, 0.126073, 0.126073, 0.126072, 0.126070",\
+ "0.155270, 0.155270, 0.155270, 0.155269, 0.155268",\
+ "0.202000, 0.202000, 0.202000, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823663",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126072, 0.126070",\
+ "0.155270, 0.155270, 0.155270, 0.155269, 0.155268",\
+ "0.202000, 0.202000, 0.202000, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823663",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126072, 0.126070",\
+ "0.155270, 0.155270, 0.155270, 0.155269, 0.155268",\
+ "0.202000, 0.202000, 0.202000, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823663",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126072, 0.126070",\
+ "0.155270, 0.155270, 0.155270, 0.155269, 0.155268",\
+ "0.202000, 0.202000, 0.202000, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823663",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126072, 0.126070",\
+ "0.155270, 0.155270, 0.155270, 0.155269, 0.155268",\
+ "0.202000, 0.202000, 0.202000, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823663",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.607434, 0.862452, 1.118835, 1.557764, 2.435622",\
+ "0.619657, 0.874676, 1.131056, 1.569977, 2.447818",\
+ "0.639561, 0.894580, 1.150957, 1.589866, 2.467684",\
+ "0.811812, 1.066830, 1.323197, 1.762070, 2.639816",\
+ "1.146382, 1.401400, 1.657768, 2.096643, 2.974393",\
+ "0.694839, 0.949939, 1.206305, 1.644478, 2.521555",\
+ "0.707062, 0.962163, 1.218526, 1.656691, 2.533751",\
+ "0.726967, 0.982067, 1.238427, 1.676580, 2.553618",\
+ "0.899217, 1.154317, 1.410667, 1.848784, 2.725749",\
+ "1.233787, 1.488888, 1.745238, 2.183357, 3.060327",\
+ "0.783307, 1.038757, 1.294266, 1.732099, 2.608510",\
+ "0.795531, 1.050981, 1.306487, 1.744312, 2.620707",\
+ "0.815435, 1.070885, 1.326388, 1.764201, 2.640573",\
+ "0.987685, 1.243135, 1.498628, 1.936405, 2.812705",\
+ "1.322255, 1.577705, 1.833199, 2.270978, 3.147282",\
+ "0.846803, 1.104153, 1.358401, 1.796012, 2.672019",\
+ "0.859026, 1.116377, 1.370622, 1.808224, 2.684216",\
+ "0.878930, 1.136281, 1.390523, 1.828114, 2.704082",\
+ "1.051181, 1.308532, 1.562762, 2.000318, 2.876214",\
+ "1.385751, 1.643102, 1.897333, 2.334891, 3.210791",\
+ "1.182236, 1.465820, 1.709960, 2.145230, 3.017476",\
+ "1.194460, 1.478043, 1.722182, 2.157442, 3.029672",\
+ "1.214364, 1.497947, 1.742082, 2.177332, 3.049538",\
+ "1.386614, 1.670198, 1.914322, 2.349535, 3.221670",\
+ "1.721184, 2.004768, 2.248892, 2.684108, 3.556247");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.077163, 0.077163, 0.077138, 0.077052, 0.076882",\
+ "0.082420, 0.082420, 0.082398, 0.082320, 0.082166",\
+ "0.102329, 0.102329, 0.102308, 0.102236, 0.102091",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077163, 0.077163, 0.077137, 0.077052, 0.076882",\
+ "0.082420, 0.082420, 0.082397, 0.082320, 0.082166",\
+ "0.102329, 0.102329, 0.102308, 0.102236, 0.102091",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077163, 0.077163, 0.077137, 0.077052, 0.076882",\
+ "0.082420, 0.082420, 0.082397, 0.082320, 0.082166",\
+ "0.102329, 0.102329, 0.102308, 0.102236, 0.102091",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077163, 0.077163, 0.077137, 0.077052, 0.076882",\
+ "0.082420, 0.082420, 0.082397, 0.082320, 0.082166",\
+ "0.102329, 0.102329, 0.102308, 0.102236, 0.102091",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077163, 0.077163, 0.077137, 0.077052, 0.076882",\
+ "0.082420, 0.082420, 0.082397, 0.082320, 0.082166",\
+ "0.102329, 0.102329, 0.102307, 0.102236, 0.102091",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2663*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.646825, 0.888812, 1.155481, 1.637557, 2.601710",\
+ "0.660538, 0.902524, 1.169192, 1.651265, 2.615411",\
+ "0.684064, 0.926050, 1.192718, 1.674791, 2.638938",\
+ "0.952246, 1.194231, 1.460892, 1.942948, 2.907060",\
+ "1.545707, 1.787690, 2.054341, 2.536369, 3.500427",\
+ "0.734227, 0.976289, 1.243085, 1.724270, 2.687644",\
+ "0.747939, 0.990001, 1.256796, 1.737978, 2.701345",\
+ "0.771465, 1.013527, 1.280322, 1.761504, 2.724872",\
+ "1.039647, 1.281708, 1.548496, 2.029661, 2.992994",\
+ "1.633109, 1.875167, 2.141944, 2.623083, 3.586361",\
+ "0.815033, 1.065071, 1.331047, 1.811891, 2.774599",\
+ "0.828746, 1.078784, 1.344759, 1.825599, 2.788300",\
+ "0.852272, 1.102309, 1.368284, 1.849125, 2.811827",\
+ "1.120454, 1.370490, 1.636458, 2.117281, 3.079949",\
+ "1.713915, 1.963950, 2.229907, 2.710703, 3.673316",\
+ "0.875218, 1.130416, 1.395189, 1.875803, 2.838108",\
+ "0.888931, 1.144128, 1.408900, 1.889511, 2.851809",\
+ "0.912457, 1.167654, 1.432426, 1.913038, 2.875336",\
+ "1.180639, 1.435834, 1.700600, 2.181194, 3.143458",\
+ "1.774100, 2.029294, 2.294049, 2.774616, 3.736825",\
+ "1.213104, 1.491515, 1.747184, 2.225196, 3.183564",\
+ "1.226817, 1.505228, 1.760895, 2.238904, 3.197265",\
+ "1.250343, 1.528753, 1.784421, 2.262430, 3.220792",\
+ "1.518525, 1.796934, 2.052595, 2.530586, 3.488914",\
+ "2.111986, 2.390392, 2.646044, 3.124008, 4.082281");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.126070, 0.126070, 0.126065, 0.126046, 0.126010",\
+ "0.155268, 0.155268, 0.155265, 0.155253, 0.155228",\
+ "0.201999, 0.201999, 0.201998, 0.201993, 0.201983",\
+ "0.823664, 0.823664, 0.823664, 0.823662, 0.823659",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126065, 0.126046, 0.126010",\
+ "0.155268, 0.155268, 0.155265, 0.155253, 0.155228",\
+ "0.201999, 0.201999, 0.201998, 0.201993, 0.201983",\
+ "0.823664, 0.823664, 0.823664, 0.823662, 0.823659",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126065, 0.126046, 0.126010",\
+ "0.155268, 0.155268, 0.155265, 0.155253, 0.155228",\
+ "0.201999, 0.201999, 0.201998, 0.201993, 0.201983",\
+ "0.823664, 0.823664, 0.823664, 0.823662, 0.823659",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126065, 0.126046, 0.126010",\
+ "0.155268, 0.155268, 0.155265, 0.155253, 0.155228",\
+ "0.201999, 0.201999, 0.201998, 0.201993, 0.201983",\
+ "0.823664, 0.823664, 0.823664, 0.823662, 0.823659",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126065, 0.126046, 0.126010",\
+ "0.155268, 0.155268, 0.155265, 0.155253, 0.155228",\
+ "0.201999, 0.201999, 0.201998, 0.201993, 0.201983",\
+ "0.823664, 0.823664, 0.823664, 0.823662, 0.823659",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.585231, 0.827223, 1.093925, 1.576086, 2.540408",\
+ "0.597454, 0.839445, 1.106138, 1.588275, 2.552550",\
+ "0.617358, 0.859347, 1.126027, 1.608132, 2.572344",\
+ "0.789607, 1.031589, 1.298230, 1.780235, 2.744245",\
+ "1.124177, 1.366160, 1.632803, 2.114814, 3.078838",\
+ "0.672632, 0.914701, 1.181530, 1.662799, 2.626341",\
+ "0.684856, 0.926922, 1.193742, 1.674988, 2.638484",\
+ "0.704759, 0.946824, 1.213631, 1.694846, 2.658278",\
+ "0.877009, 1.119066, 1.385834, 1.866948, 2.830179",\
+ "1.211579, 1.453637, 1.720407, 2.201528, 3.164772",\
+ "0.753439, 1.003483, 1.269492, 1.750420, 2.713296",\
+ "0.765663, 1.015705, 1.281705, 1.762609, 2.725439",\
+ "0.785566, 1.035606, 1.301594, 1.782466, 2.745233",\
+ "0.957816, 1.207848, 1.473796, 1.954568, 2.917134",\
+ "1.292386, 1.542419, 1.808370, 2.289148, 3.251727",\
+ "0.813624, 1.068828, 1.333634, 1.814332, 2.776805",\
+ "0.825847, 1.081049, 1.345847, 1.826521, 2.788948",\
+ "0.845751, 1.100950, 1.365736, 1.846379, 2.808742",\
+ "1.018000, 1.273192, 1.537938, 2.018481, 2.980643",\
+ "1.352571, 1.607763, 1.872511, 2.353061, 3.315236",\
+ "1.151510, 1.429929, 1.685630, 2.163725, 3.122262",\
+ "1.163733, 1.442150, 1.697842, 2.175914, 3.134404",\
+ "1.183637, 1.462051, 1.717731, 2.195772, 3.154198",\
+ "1.355886, 1.634290, 1.889933, 2.367873, 3.326099",\
+ "1.690457, 1.968861, 2.224506, 2.702453, 3.660692");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.077160, 0.077143, 0.077050, 0.076813, 0.076339",\
+ "0.082418, 0.082403, 0.082319, 0.082104, 0.081674",\
+ "0.102327, 0.102313, 0.102234, 0.102033, 0.101631",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380732",\
+ "1.026132, 1.026132, 1.026131, 1.026130, 1.026129",\
+ "0.077160, 0.077143, 0.077050, 0.076813, 0.076339",\
+ "0.082418, 0.082403, 0.082318, 0.082104, 0.081674",\
+ "0.102327, 0.102313, 0.102234, 0.102033, 0.101631",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380732",\
+ "1.026132, 1.026132, 1.026131, 1.026130, 1.026129",\
+ "0.077160, 0.077143, 0.077050, 0.076813, 0.076339",\
+ "0.082418, 0.082402, 0.082318, 0.082104, 0.081674",\
+ "0.102327, 0.102313, 0.102234, 0.102033, 0.101631",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380732",\
+ "1.026132, 1.026132, 1.026131, 1.026130, 1.026129",\
+ "0.077160, 0.077142, 0.077050, 0.076813, 0.076339",\
+ "0.082418, 0.082402, 0.082318, 0.082104, 0.081674",\
+ "0.102327, 0.102312, 0.102234, 0.102033, 0.101631",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380732",\
+ "1.026132, 1.026132, 1.026131, 1.026130, 1.026129",\
+ "0.077160, 0.077137, 0.077047, 0.076812, 0.076339",\
+ "0.082418, 0.082397, 0.082316, 0.082103, 0.081674",\
+ "0.102327, 0.102307, 0.102232, 0.102032, 0.101631",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380732",\
+ "1.026132, 1.026132, 1.026131, 1.026130, 1.026129");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2738*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.837009, 1.103664, 1.394023, 1.889858, 2.881526",\
+ "0.850722, 1.117377, 1.407736, 1.903570, 2.895239",\
+ "0.874247, 1.140903, 1.431262, 1.927096, 2.918765",\
+ "1.142429, 1.409085, 1.699444, 2.195278, 3.186947",\
+ "1.735891, 2.002547, 2.292906, 2.788740, 3.780409",\
+ "0.924420, 1.191252, 1.481675, 1.976572, 2.967460",\
+ "0.938133, 1.204965, 1.495388, 1.990285, 2.981173",\
+ "0.961659, 1.228491, 1.518914, 2.013811, 3.004699",\
+ "1.229841, 1.496673, 1.787096, 2.281993, 3.272881",\
+ "1.823303, 2.090135, 2.380557, 2.875455, 3.866343",\
+ "1.005339, 1.280324, 1.569641, 2.064194, 3.054415",\
+ "1.019052, 1.294036, 1.583354, 2.077907, 3.068128",\
+ "1.042578, 1.317562, 1.606879, 2.101433, 3.091654",\
+ "1.310760, 1.585744, 1.875061, 2.369615, 3.359836",\
+ "1.904221, 2.179206, 2.468523, 2.963077, 3.953298",\
+ "1.066406, 1.346091, 1.633785, 2.128108, 3.117924",\
+ "1.080119, 1.359803, 1.647498, 2.141821, 3.131637",\
+ "1.103644, 1.383329, 1.671023, 2.165346, 3.155163",\
+ "1.371826, 1.651511, 1.939205, 2.433528, 3.423345",\
+ "1.965288, 2.244973, 2.532667, 3.026990, 4.016807",\
+ "1.402561, 1.712010, 1.985925, 2.477567, 3.463380",\
+ "1.416273, 1.725723, 1.999638, 2.491279, 3.477093",\
+ "1.439799, 1.749248, 2.023164, 2.514805, 3.500619",\
+ "1.707981, 2.017431, 2.291346, 2.782987, 3.768801",\
+ "2.301443, 2.610892, 2.884808, 3.376449, 4.362263");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.775414, 1.042069, 1.332428, 1.828263, 2.819932",\
+ "0.787637, 1.054293, 1.344652, 1.840486, 2.832155",\
+ "0.807541, 1.074197, 1.364556, 1.860390, 2.852059",\
+ "0.979792, 1.246447, 1.536806, 2.032640, 3.024309",\
+ "1.314362, 1.581017, 1.871376, 2.367211, 3.358880",\
+ "0.862825, 1.129657, 1.420080, 1.914977, 2.905865",\
+ "0.875049, 1.141881, 1.432303, 1.927201, 2.918089",\
+ "0.894953, 1.161785, 1.452208, 1.947105, 2.937993",\
+ "1.067203, 1.334035, 1.624458, 2.119355, 3.110243",\
+ "1.401773, 1.668605, 1.959028, 2.453925, 3.444813",\
+ "0.943744, 1.218729, 1.508046, 2.002599, 2.992820",\
+ "0.955968, 1.230952, 1.520269, 2.014823, 3.005044",\
+ "0.975872, 1.250856, 1.540173, 2.034727, 3.024948",\
+ "1.148122, 1.423107, 1.712424, 2.206977, 3.197198",\
+ "1.482692, 1.757677, 2.046994, 2.541547, 3.531768",\
+ "1.004811, 1.284495, 1.572190, 2.066513, 3.056329",\
+ "1.017034, 1.296719, 1.584413, 2.078736, 3.068553",\
+ "1.036938, 1.316623, 1.604317, 2.098640, 3.088457",\
+ "1.209189, 1.488873, 1.776568, 2.270891, 3.260707",\
+ "1.543759, 1.823443, 2.111138, 2.605461, 3.595277",\
+ "1.340966, 1.650415, 1.924330, 2.415972, 3.401785",\
+ "1.353189, 1.662638, 1.936553, 2.428195, 3.414009",\
+ "1.373093, 1.682542, 1.956458, 2.448099, 3.433913",\
+ "1.545344, 1.854793, 2.128708, 2.620349, 3.606163",\
+ "1.879914, 2.189363, 2.463278, 2.954920, 3.940733");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2382*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.820636, 1.072596, 1.352895, 1.817949, 2.748057",\
+ "0.834349, 1.086309, 1.366608, 1.831662, 2.761770",\
+ "0.857874, 1.109835, 1.390133, 1.855188, 2.785295",\
+ "1.126056, 1.378017, 1.658316, 2.123370, 3.053478",\
+ "1.719518, 1.971479, 2.251777, 2.716831, 3.646940",\
+ "0.908045, 1.160181, 1.440449, 1.904663, 2.833991",\
+ "0.921758, 1.173894, 1.454162, 1.918376, 2.847703",\
+ "0.945284, 1.197419, 1.477687, 1.941902, 2.871229",\
+ "1.213466, 1.465601, 1.745869, 2.210084, 3.139411",\
+ "1.806928, 2.059063, 2.339331, 2.803546, 3.732873",\
+ "0.988950, 1.249236, 1.528412, 1.992285, 2.920946",\
+ "1.002662, 1.262948, 1.542125, 2.005998, 2.934659",\
+ "1.026188, 1.286474, 1.565651, 2.029524, 2.958184",\
+ "1.294370, 1.554656, 1.833833, 2.297706, 3.226367",\
+ "1.887832, 2.148118, 2.427295, 2.891167, 3.819828",\
+ "1.046704, 1.314977, 1.592551, 2.056198, 2.984455",\
+ "1.060416, 1.328690, 1.606264, 2.069911, 2.998168",\
+ "1.083942, 1.352216, 1.629790, 2.093437, 3.021693",\
+ "1.352124, 1.620398, 1.897972, 2.361619, 3.289876",\
+ "1.945586, 2.213860, 2.491434, 2.955081, 3.883337",\
+ "1.375818, 1.680630, 1.944378, 2.405528, 3.329911",\
+ "1.389531, 1.694343, 1.958091, 2.419240, 3.343624",\
+ "1.413056, 1.717869, 1.981617, 2.442766, 3.367149",\
+ "1.681239, 1.986051, 2.249799, 2.710948, 3.635332",\
+ "2.274700, 2.579513, 2.843261, 3.304410, 4.228793");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126073, 0.126073, 0.126073, 0.126073, 0.126073",\
+ "0.155270, 0.155270, 0.155270, 0.155270, 0.155270",\
+ "0.202000, 0.202000, 0.202000, 0.202000, 0.202000",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.759041, 1.011001, 1.291300, 1.756354, 2.686462",\
+ "0.771264, 1.023225, 1.303523, 1.768578, 2.698686",\
+ "0.791168, 1.043129, 1.323427, 1.788481, 2.718590",\
+ "0.963419, 1.215379, 1.495678, 1.960732, 2.890840",\
+ "1.297989, 1.549949, 1.830248, 2.295302, 3.225410",\
+ "0.846450, 1.098586, 1.378854, 1.843068, 2.772396",\
+ "0.858674, 1.110809, 1.391077, 1.855292, 2.784619",\
+ "0.878578, 1.130713, 1.410981, 1.875196, 2.804523",\
+ "1.050828, 1.302964, 1.583232, 2.047446, 2.976774",\
+ "1.385398, 1.637534, 1.917802, 2.382016, 3.311344",\
+ "0.927355, 1.187640, 1.466817, 1.930690, 2.859351",\
+ "0.939578, 1.199864, 1.479041, 1.942914, 2.871574",\
+ "0.959482, 1.219768, 1.498945, 1.962818, 2.891478",\
+ "1.131733, 1.392018, 1.671195, 2.135068, 3.063729",\
+ "1.466303, 1.726588, 2.005765, 2.469638, 3.398299",\
+ "0.985108, 1.253382, 1.530956, 1.994603, 2.922860",\
+ "0.997332, 1.265606, 1.543180, 2.006827, 2.935083",\
+ "1.017236, 1.285510, 1.563084, 2.026731, 2.954987",\
+ "1.189487, 1.457760, 1.735334, 2.198981, 3.127238",\
+ "1.524057, 1.792330, 2.069904, 2.533551, 3.461808",\
+ "1.314223, 1.619035, 1.882783, 2.343933, 3.268316",\
+ "1.326446, 1.631259, 1.895007, 2.356156, 3.280540",\
+ "1.346350, 1.651163, 1.914911, 2.376060, 3.300443",\
+ "1.518601, 1.823413, 2.087161, 2.548311, 3.472694",\
+ "1.853171, 2.157983, 2.421731, 2.882881, 3.807264");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132",\
+ "0.077162, 0.077162, 0.077162, 0.077162, 0.077162",\
+ "0.082420, 0.082420, 0.082420, 0.082420, 0.082420",\
+ "0.102329, 0.102329, 0.102329, 0.102329, 0.102329",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026132");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2443*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.834699, 1.095622, 1.384637, 1.885838, 2.888237",\
+ "0.848411, 1.109334, 1.398350, 1.899550, 2.901949",\
+ "0.871937, 1.132860, 1.421876, 1.923076, 2.925475",\
+ "1.140119, 1.401042, 1.690057, 2.191256, 3.193652",\
+ "1.733580, 1.994503, 2.283517, 2.784714, 3.787106",\
+ "0.922107, 1.183198, 1.472305, 1.972552, 2.974171",\
+ "0.935819, 1.196910, 1.486017, 1.986264, 2.987883",\
+ "0.959345, 1.220436, 1.509543, 2.009790, 3.011409",\
+ "1.227527, 1.488618, 1.777724, 2.277970, 3.279586",\
+ "1.820988, 2.082079, 2.371185, 2.871428, 3.873040",\
+ "1.002997, 1.272227, 1.560270, 2.060173, 3.061126",\
+ "1.016710, 1.285939, 1.573983, 2.073886, 3.074838",\
+ "1.040236, 1.309465, 1.597508, 2.097411, 3.098364",\
+ "1.308417, 1.577647, 1.865690, 2.365591, 3.366541",\
+ "1.901878, 2.171108, 2.459150, 2.959049, 3.959995",\
+ "1.063922, 1.337931, 1.624415, 2.124086, 3.124635",\
+ "1.077635, 1.351643, 1.638128, 2.137799, 3.138347",\
+ "1.101161, 1.375169, 1.661654, 2.161325, 3.161873",\
+ "1.369342, 1.643351, 1.929835, 2.429504, 3.430050",\
+ "1.962803, 2.236812, 2.523295, 3.022963, 4.023504",\
+ "1.400271, 1.703161, 1.976608, 2.473565, 3.470091",\
+ "1.413984, 1.716874, 1.990321, 2.487277, 3.483803",\
+ "1.437509, 1.740399, 2.013846, 2.510803, 3.507329",\
+ "1.705691, 2.008581, 2.282028, 2.778982, 3.775506",\
+ "2.299152, 2.602042, 2.875488, 3.372441, 4.368960");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201998",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201998",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201998",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201998",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201998",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.773106, 1.034029, 1.323047, 1.824254, 2.826667",\
+ "0.785329, 1.046252, 1.335269, 1.836474, 2.838884",\
+ "0.805232, 1.066155, 1.355171, 1.856374, 2.858778",\
+ "0.977479, 1.238403, 1.527417, 2.028611, 3.031000",\
+ "1.312050, 1.572973, 1.861987, 2.363182, 3.365571",\
+ "0.860514, 1.121605, 1.410714, 1.910968, 2.912601",\
+ "0.872737, 1.133828, 1.422936, 1.923188, 2.924818",\
+ "0.892640, 1.153731, 1.442839, 1.943088, 2.944712",\
+ "1.064888, 1.325979, 1.615084, 2.115325, 3.116933",\
+ "1.399458, 1.660549, 1.949654, 2.449896, 3.451505",\
+ "0.941405, 1.210634, 1.498679, 1.998589, 2.999556",\
+ "0.953628, 1.222857, 1.510902, 2.010810, 3.011773",\
+ "0.973531, 1.242760, 1.530804, 2.030710, 3.031667",\
+ "1.145778, 1.415007, 1.703049, 2.202947, 3.203888",\
+ "1.480349, 1.749578, 2.037620, 2.537518, 3.538460",\
+ "1.002329, 1.276338, 1.562824, 2.062502, 3.063065",\
+ "1.014552, 1.288561, 1.575047, 2.074723, 3.075282",\
+ "1.034455, 1.308464, 1.594949, 2.094623, 3.095176",\
+ "1.206703, 1.480712, 1.767194, 2.266860, 3.267397",\
+ "1.541273, 1.815282, 2.101765, 2.601431, 3.601969",\
+ "1.338678, 1.641568, 1.915017, 2.411981, 3.408521",\
+ "1.350901, 1.653791, 1.927240, 2.424201, 3.420738",\
+ "1.370804, 1.673694, 1.947142, 2.444101, 3.440632",\
+ "1.543052, 1.845942, 2.119387, 2.616338, 3.612854",\
+ "1.877622, 2.180512, 2.453958, 2.950909, 3.947425");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.077156, 0.077156, 0.077150, 0.077131, 0.077093",\
+ "0.082414, 0.082414, 0.082409, 0.082392, 0.082357",\
+ "0.102324, 0.102324, 0.102319, 0.102303, 0.102270",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077150, 0.077131, 0.077093",\
+ "0.082414, 0.082414, 0.082409, 0.082392, 0.082357",\
+ "0.102324, 0.102324, 0.102319, 0.102303, 0.102270",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077150, 0.077131, 0.077093",\
+ "0.082414, 0.082414, 0.082409, 0.082392, 0.082357",\
+ "0.102324, 0.102324, 0.102319, 0.102303, 0.102270",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077150, 0.077131, 0.077093",\
+ "0.082414, 0.082414, 0.082409, 0.082392, 0.082357",\
+ "0.102324, 0.102324, 0.102319, 0.102303, 0.102270",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077150, 0.077131, 0.077093",\
+ "0.082414, 0.082414, 0.082409, 0.082392, 0.082357",\
+ "0.102324, 0.102324, 0.102319, 0.102303, 0.102270",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2590*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.813664, 1.067787, 1.348972, 1.815159, 2.747532",\
+ "0.827376, 1.081499, 1.362685, 1.828871, 2.761244",\
+ "0.850902, 1.105025, 1.386211, 1.852397, 2.784770",\
+ "1.119084, 1.373207, 1.654392, 2.120577, 3.052948",\
+ "1.712545, 1.966668, 2.247853, 2.714036, 3.646404",\
+ "0.901073, 1.155375, 1.436530, 1.901873, 2.833466",\
+ "0.914786, 1.169088, 1.450242, 1.915586, 2.847178",\
+ "0.938311, 1.192614, 1.473768, 1.939111, 2.870703",\
+ "1.206493, 1.460795, 1.741949, 2.207292, 3.138882",\
+ "1.799954, 2.054256, 2.335410, 2.800751, 3.732338",\
+ "0.981887, 1.244438, 1.524493, 1.989495, 2.920421",\
+ "0.995600, 1.258151, 1.538206, 2.003207, 2.934133",\
+ "1.019126, 1.281676, 1.561732, 2.026733, 2.957659",\
+ "1.287307, 1.549858, 1.829913, 2.294913, 3.225837",\
+ "1.880768, 2.143319, 2.423373, 2.888372, 3.819293",\
+ "1.039467, 1.310192, 1.588632, 2.053408, 2.983930",\
+ "1.053180, 1.323904, 1.602345, 2.067121, 2.997642",\
+ "1.076705, 1.347430, 1.625871, 2.090646, 3.021168",\
+ "1.344887, 1.615612, 1.894052, 2.358827, 3.289346",\
+ "1.938348, 2.209073, 2.487513, 2.952286, 3.882802",\
+ "1.371275, 1.675984, 1.940471, 2.402742, 3.329386",\
+ "1.384988, 1.689697, 1.954183, 2.416455, 3.343098",\
+ "1.408514, 1.713222, 1.977709, 2.439981, 3.366623",\
+ "1.676695, 1.981404, 2.245890, 2.708161, 3.634802",\
+ "2.270156, 2.574865, 2.839351, 3.301620, 4.228258");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140",\
+ "0.126070, 0.126070, 0.126070, 0.126069, 0.126068",\
+ "0.155268, 0.155268, 0.155268, 0.155268, 0.155267",\
+ "0.201999, 0.201999, 0.201999, 0.201999, 0.201999",\
+ "0.823664, 0.823664, 0.823664, 0.823664, 0.823664",\
+ "2.222140, 2.222140, 2.222140, 2.222140, 2.222140");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.752071, 1.006194, 1.287381, 1.753572, 2.685955",\
+ "0.764294, 1.018417, 1.299603, 1.765793, 2.698174",\
+ "0.784197, 1.038320, 1.319506, 1.785694, 2.718071",\
+ "0.956445, 1.210568, 1.491752, 1.957934, 2.890299",\
+ "1.291015, 1.545138, 1.826322, 2.292505, 3.224871",\
+ "0.839480, 1.093783, 1.374938, 1.840287, 2.771889",\
+ "0.851703, 1.106005, 1.387161, 1.852508, 2.784107",\
+ "0.871606, 1.125909, 1.407063, 1.872409, 2.804004",\
+ "1.043854, 1.298156, 1.579309, 2.044649, 2.976233",\
+ "1.378424, 1.632726, 1.913880, 2.379220, 3.310805",\
+ "0.920294, 1.182845, 1.462902, 1.927908, 2.858844",\
+ "0.932517, 1.195068, 1.475124, 1.940130, 2.871062",\
+ "0.952420, 1.214971, 1.495027, 1.960030, 2.890960",\
+ "1.124668, 1.387219, 1.667273, 2.132271, 3.063188",\
+ "1.459238, 1.721789, 2.001843, 2.466841, 3.397760",\
+ "0.977874, 1.248599, 1.527041, 1.991822, 2.922353",\
+ "0.990097, 1.260822, 1.539264, 2.004043, 2.934571",\
+ "1.010000, 1.280725, 1.559166, 2.023944, 2.954468",\
+ "1.182248, 1.452972, 1.731412, 2.196184, 3.126697",\
+ "1.516818, 1.787543, 2.065982, 2.530755, 3.461269",\
+ "1.309683, 1.614391, 1.878880, 2.341156, 3.267809",\
+ "1.321906, 1.626614, 1.891102, 2.353377, 3.280027",\
+ "1.341809, 1.646517, 1.911005, 2.373278, 3.299924",\
+ "1.514056, 1.818765, 2.083251, 2.545518, 3.472153",\
+ "1.848626, 2.153335, 2.417821, 2.880089, 3.806725");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.077156, 0.077156, 0.077152, 0.077138, 0.077112",\
+ "0.082414, 0.082414, 0.082410, 0.082398, 0.082374",\
+ "0.102323, 0.102323, 0.102320, 0.102309, 0.102286",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077152, 0.077138, 0.077112",\
+ "0.082414, 0.082414, 0.082410, 0.082398, 0.082374",\
+ "0.102323, 0.102323, 0.102320, 0.102309, 0.102286",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077152, 0.077138, 0.077112",\
+ "0.082414, 0.082414, 0.082410, 0.082398, 0.082374",\
+ "0.102323, 0.102323, 0.102320, 0.102309, 0.102286",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077152, 0.077138, 0.077112",\
+ "0.082414, 0.082414, 0.082410, 0.082398, 0.082374",\
+ "0.102323, 0.102323, 0.102320, 0.102309, 0.102286",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131",\
+ "0.077156, 0.077156, 0.077151, 0.077138, 0.077112",\
+ "0.082414, 0.082414, 0.082410, 0.082398, 0.082374",\
+ "0.102323, 0.102323, 0.102320, 0.102309, 0.102286",\
+ "0.380733, 0.380733, 0.380733, 0.380733, 0.380733",\
+ "1.026132, 1.026132, 1.026132, 1.026132, 1.026131");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2633*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.689280, 0.957537, 1.249948, 1.745707, 2.737226",\
+ "0.703254, 0.971515, 1.263950, 1.759776, 2.751428",\
+ "0.726748, 0.995009, 1.287441, 1.783259, 2.774894",\
+ "0.996345, 1.264632, 1.557197, 2.053374, 3.045727",\
+ "1.591995, 1.860324, 2.153094, 2.649826, 3.643289",\
+ "0.776693, 1.045135, 1.337600, 1.832422, 2.823160",\
+ "0.790666, 1.059113, 1.351603, 1.846491, 2.837361",\
+ "0.814160, 1.082607, 1.375093, 1.869974, 2.860828",\
+ "1.083757, 1.352230, 1.644851, 2.140089, 3.131661",\
+ "1.679408, 1.947922, 2.240750, 2.736541, 3.729223",\
+ "0.857617, 1.134236, 1.425566, 1.920044, 2.910115",\
+ "0.871591, 1.148215, 1.439569, 1.934113, 2.924316",\
+ "0.895085, 1.171708, 1.463060, 1.957596, 2.947783",\
+ "1.164682, 1.441333, 1.732817, 2.227711, 3.218616",\
+ "1.760333, 2.037025, 2.328716, 2.824163, 3.816178",\
+ "0.918265, 1.200047, 1.489710, 1.983958, 2.973624",\
+ "0.932239, 1.214026, 1.503713, 1.998027, 2.987825",\
+ "0.955733, 1.237519, 1.527204, 2.021510, 3.011292",\
+ "1.225332, 1.507144, 1.796961, 2.291625, 3.282125",\
+ "1.820984, 2.102838, 2.392860, 2.888076, 3.879687",\
+ "1.253788, 1.566464, 1.841850, 2.333418, 3.319080",\
+ "1.267763, 1.580444, 1.855854, 2.347487, 3.333282",\
+ "1.291257, 1.603937, 1.879344, 2.370970, 3.356748",\
+ "1.560858, 1.873569, 2.149106, 2.641086, 3.627581",\
+ "2.156515, 2.469274, 2.745010, 3.237540, 4.225142");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.130558, 0.130764, 0.132053, 0.135744, 0.143126",\
+ "0.158251, 0.158388, 0.159397, 0.162380, 0.168346",\
+ "0.203206, 0.203261, 0.203904, 0.205928, 0.209976",\
+ "0.823780, 0.823782, 0.823793, 0.823822, 0.823881",\
+ "2.222146, 2.222146, 2.222146, 2.222146, 2.222146",\
+ "0.130558, 0.130766, 0.132065, 0.135744, 0.143126",\
+ "0.158251, 0.158389, 0.159406, 0.162380, 0.168346",\
+ "0.203206, 0.203262, 0.203910, 0.205928, 0.209976",\
+ "0.823780, 0.823782, 0.823793, 0.823822, 0.823881",\
+ "2.222146, 2.222146, 2.222146, 2.222146, 2.222146",\
+ "0.130559, 0.130769, 0.132065, 0.135744, 0.143126",\
+ "0.158251, 0.158391, 0.159406, 0.162380, 0.168346",\
+ "0.203206, 0.203262, 0.203910, 0.205928, 0.209976",\
+ "0.823780, 0.823782, 0.823793, 0.823822, 0.823881",\
+ "2.222146, 2.222146, 2.222146, 2.222146, 2.222146",\
+ "0.130568, 0.130774, 0.132066, 0.135744, 0.143126",\
+ "0.158257, 0.158394, 0.159407, 0.162380, 0.168346",\
+ "0.203208, 0.203264, 0.203911, 0.205928, 0.209976",\
+ "0.823780, 0.823782, 0.823793, 0.823822, 0.823881",\
+ "2.222146, 2.222146, 2.222146, 2.222146, 2.222146",\
+ "0.130591, 0.130830, 0.132103, 0.135759, 0.143126",\
+ "0.158273, 0.158432, 0.159437, 0.162392, 0.168346",\
+ "0.203215, 0.203279, 0.203931, 0.205936, 0.209976",\
+ "0.823780, 0.823783, 0.823793, 0.823822, 0.823881",\
+ "2.222146, 2.222146, 2.222146, 2.222146, 2.222146");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.620877, 0.889007, 1.180779, 1.674812, 2.662879",\
+ "0.634992, 0.903157, 1.195106, 1.689619, 2.678645",\
+ "0.657454, 0.925667, 1.217856, 1.713018, 2.703341",\
+ "0.837827, 1.106191, 1.399143, 1.896364, 2.890807",\
+ "1.171871, 1.440226, 1.733128, 2.230216, 3.224392",\
+ "0.708289, 0.976604, 1.268425, 1.761527, 2.748812",\
+ "0.722404, 0.990754, 1.282755, 1.776334, 2.764579",\
+ "0.744867, 1.013264, 1.305507, 1.799733, 2.789275",\
+ "0.925240, 1.193790, 1.486800, 1.983079, 2.976740",\
+ "1.259284, 1.527824, 1.820785, 2.316931, 3.310326",\
+ "0.789214, 1.065703, 1.356391, 1.849149, 2.835768",\
+ "0.803329, 1.079854, 1.370721, 1.863956, 2.851534",\
+ "0.825791, 1.102365, 1.393473, 1.887355, 2.876230",\
+ "1.006165, 1.282894, 1.574766, 2.070702, 3.063695",\
+ "1.340209, 1.616928, 1.908751, 2.404553, 3.397281",\
+ "0.849857, 1.131511, 1.420535, 1.913063, 2.899276",\
+ "0.863973, 1.145663, 1.434865, 1.927870, 2.915043",\
+ "0.886438, 1.168175, 1.457617, 1.951269, 2.939739",\
+ "1.066817, 1.348707, 1.638911, 2.134615, 3.127204",\
+ "1.400861, 1.682741, 1.972895, 2.468467, 3.460790",\
+ "1.185366, 1.497892, 1.772658, 2.262515, 3.244732",\
+ "1.199486, 1.512054, 1.786992, 2.277325, 3.260499",\
+ "1.221956, 1.534580, 1.809751, 2.300726, 3.285195",\
+ "1.402352, 1.715153, 1.991066, 2.484081, 3.472661",\
+ "1.736395, 2.049184, 2.325049, 2.817932, 3.806246");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.096307, 0.096664, 0.098460, 0.103314, 0.113023",\
+ "0.099768, 0.100091, 0.101719, 0.106118, 0.114915",\
+ "0.118566, 0.118869, 0.120392, 0.124509, 0.132743",\
+ "0.380772, 0.380786, 0.381010, 0.381719, 0.383137",\
+ "1.026329, 1.026338, 1.026379, 1.026486, 1.026699",\
+ "0.096307, 0.096666, 0.098476, 0.103314, 0.113023",\
+ "0.099768, 0.100093, 0.101733, 0.106118, 0.114915",\
+ "0.118566, 0.118871, 0.120405, 0.124509, 0.132743",\
+ "0.380772, 0.380786, 0.381012, 0.381719, 0.383137",\
+ "1.026329, 1.026338, 1.026379, 1.026486, 1.026699",\
+ "0.096307, 0.096672, 0.098476, 0.103314, 0.113023",\
+ "0.099768, 0.100099, 0.101733, 0.106118, 0.114915",\
+ "0.118566, 0.118876, 0.120406, 0.124509, 0.132743",\
+ "0.380772, 0.380786, 0.381012, 0.381719, 0.383137",\
+ "1.026329, 1.026339, 1.026379, 1.026486, 1.026699",\
+ "0.096322, 0.096680, 0.098477, 0.103314, 0.113023",\
+ "0.099782, 0.100106, 0.101734, 0.106118, 0.114915",\
+ "0.118579, 0.118883, 0.120406, 0.124509, 0.132743",\
+ "0.380772, 0.380787, 0.381012, 0.381719, 0.383137",\
+ "1.026330, 1.026339, 1.026379, 1.026486, 1.026699",\
+ "0.096361, 0.096780, 0.098526, 0.103335, 0.113023",\
+ "0.099817, 0.100196, 0.101779, 0.106136, 0.114915",\
+ "0.118612, 0.118967, 0.120448, 0.124526, 0.132743",\
+ "0.380772, 0.380792, 0.381019, 0.381722, 0.383137",\
+ "1.026331, 1.026341, 1.026381, 1.026486, 1.026699");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2683*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.195231, 0.463005, 0.734474, 1.195010, 2.116083",\
+ "0.209369, 0.477311, 0.748785, 1.209873, 2.132048",\
+ "0.233103, 0.501280, 0.772498, 1.233725, 2.156177",\
+ "0.505445, 0.772942, 1.041862, 1.499718, 2.415430",\
+ "1.101330, 1.368410, 1.636340, 2.092443, 3.004649",\
+ "0.282639, 0.550544, 0.822013, 1.281725, 2.202017",\
+ "0.296777, 0.564849, 0.836326, 1.296587, 2.217982",\
+ "0.320749, 0.588817, 0.860040, 1.320439, 2.242111",\
+ "0.593808, 0.860470, 1.129393, 1.586432, 2.501364",\
+ "1.189691, 1.455935, 1.723865, 2.179157, 3.090583",\
+ "0.371453, 0.639490, 0.909976, 1.369346, 2.288972",\
+ "0.385884, 0.653793, 0.924289, 1.384209, 2.304937",\
+ "0.410095, 0.677755, 0.948003, 1.408060, 2.329066",\
+ "0.683117, 0.949390, 1.217355, 1.674054, 2.588319",\
+ "1.278993, 1.544848, 1.811828, 2.266779, 3.177538",\
+ "0.435127, 0.705073, 0.974115, 1.433259, 2.352481",\
+ "0.449557, 0.719372, 0.988428, 1.448122, 2.368446",\
+ "0.473764, 0.743329, 1.012141, 1.471974, 2.392575",\
+ "0.746751, 1.014935, 1.281493, 1.737967, 2.651828",\
+ "1.342621, 1.610383, 1.875965, 2.330692, 3.241047",\
+ "0.771711, 1.068883, 1.325895, 1.782569, 2.697937",\
+ "0.786132, 1.083144, 1.340213, 1.797434, 2.713902",\
+ "0.810321, 1.107028, 1.363928, 1.821286, 2.738031",\
+ "1.083085, 1.378307, 1.633246, 2.087266, 2.997284",\
+ "1.678917, 1.973635, 2.227701, 2.679984, 3.586503");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.185659, 0.236480, 0.332306, 0.503768, 0.846690",\
+ "0.203762, 0.251201, 0.346416, 0.519962, 0.867054",\
+ "0.237818, 0.275998, 0.366817, 0.542132, 0.892761",\
+ "0.823305, 0.824108, 0.854501, 0.958291, 1.165871",\
+ "2.222180, 2.222247, 2.228687, 2.250859, 2.295203",\
+ "0.185659, 0.236778, 0.332846, 0.503768, 0.846690",\
+ "0.203762, 0.251491, 0.346963, 0.519962, 0.867054",\
+ "0.238090, 0.276257, 0.367369, 0.542132, 0.892761",\
+ "0.823322, 0.824110, 0.854828, 0.958291, 1.165871",\
+ "2.222181, 2.222247, 2.228756, 2.250859, 2.295203",\
+ "0.187582, 0.237448, 0.332856, 0.503768, 0.846690",\
+ "0.205428, 0.252143, 0.346973, 0.519962, 0.867054",\
+ "0.238891, 0.276838, 0.367379, 0.542132, 0.892761",\
+ "0.823369, 0.824113, 0.854835, 0.958291, 1.165871",\
+ "2.222186, 2.222247, 2.228758, 2.250859, 2.295203",\
+ "0.188921, 0.238422, 0.332885, 0.503768, 0.846690",\
+ "0.206588, 0.253091, 0.347002, 0.519962, 0.867054",\
+ "0.239638, 0.277682, 0.367409, 0.542132, 0.892761",\
+ "0.823414, 0.824119, 0.854852, 0.958291, 1.165871",\
+ "2.222191, 2.222247, 2.228761, 2.250859, 2.295203",\
+ "0.197449, 0.249827, 0.334624, 0.504477, 0.846690",\
+ "0.213977, 0.264195, 0.348763, 0.520680, 0.867054",\
+ "0.244398, 0.287568, 0.369187, 0.542857, 0.892761",\
+ "0.823697, 0.824180, 0.855905, 0.958721, 1.165871",\
+ "2.222221, 2.222247, 2.228986, 2.250950, 2.295203");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.199835, 0.394068, 0.663502, 1.119151, 2.030450",\
+ "0.208748, 0.404375, 0.677456, 1.139816, 2.064535",\
+ "0.223610, 0.421071, 0.699454, 1.171923, 2.116862",\
+ "0.380613, 0.582386, 0.880612, 1.405667, 2.455778",\
+ "0.716679, 0.922290, 1.228480, 1.784735, 2.897244",\
+ "0.287243, 0.481603, 0.751025, 1.205865, 2.116384",\
+ "0.296156, 0.491921, 0.765001, 1.226530, 2.150469",\
+ "0.311018, 0.508632, 0.787030, 1.258637, 2.202796",\
+ "0.468021, 0.669977, 0.968355, 1.492382, 2.541712",\
+ "0.804087, 1.009874, 1.316321, 1.871449, 2.983178",\
+ "0.368115, 0.570540, 0.838988, 1.293487, 2.203339",\
+ "0.377029, 0.580882, 0.852964, 1.314152, 2.237424",\
+ "0.391890, 0.597628, 0.874994, 1.346259, 2.289751",\
+ "0.548893, 0.759039, 1.056321, 1.580003, 2.628667",\
+ "0.884959, 1.098920, 1.404289, 1.959070, 3.070133",\
+ "0.425818, 0.636109, 0.903125, 1.357400, 2.266848",\
+ "0.434733, 0.646488, 0.917102, 1.378065, 2.300933",\
+ "0.449593, 0.663284, 0.939134, 1.410172, 2.353260",\
+ "0.606596, 0.824792, 1.120470, 1.643916, 2.692176",\
+ "0.942662, 1.164649, 1.468444, 2.022984, 3.133642",\
+ "0.728861, 0.999767, 1.254856, 1.706689, 2.612304",\
+ "0.737784, 1.010567, 1.268901, 1.727382, 2.646389",\
+ "0.752638, 1.027949, 1.291036, 1.759531, 2.698716",\
+ "0.909639, 1.190589, 1.472905, 1.993493, 3.037632",\
+ "1.245701, 1.530174, 1.821195, 2.372689, 3.479098");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.051713, 0.082206, 0.146667, 0.272496, 0.524154",\
+ "0.059242, 0.084148, 0.146833, 0.273232, 0.526032",\
+ "0.082676, 0.098099, 0.151707, 0.276480, 0.526025",\
+ "0.382075, 0.382564, 0.407345, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042321, 1.092011, 1.191392",\
+ "0.051713, 0.082387, 0.147063, 0.272496, 0.524154",\
+ "0.059242, 0.084316, 0.147231, 0.273232, 0.526032",\
+ "0.082676, 0.098212, 0.152100, 0.276480, 0.526025",\
+ "0.382075, 0.382568, 0.407606, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042477, 1.092011, 1.191392",\
+ "0.051782, 0.082793, 0.147071, 0.272496, 0.524154",\
+ "0.059284, 0.084694, 0.147238, 0.273232, 0.526032",\
+ "0.082697, 0.098465, 0.152108, 0.276480, 0.526025",\
+ "0.382075, 0.382579, 0.407611, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042480, 1.092011, 1.191392",\
+ "0.051916, 0.083384, 0.147092, 0.272496, 0.524154",\
+ "0.059368, 0.085243, 0.147259, 0.273232, 0.526032",\
+ "0.082738, 0.098832, 0.152128, 0.276480, 0.526025",\
+ "0.382075, 0.382594, 0.407625, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042489, 1.092011, 1.191392",\
+ "0.053133, 0.090301, 0.148368, 0.273016, 0.524154",\
+ "0.060124, 0.091679, 0.148542, 0.273755, 0.526032",\
+ "0.083110, 0.103136, 0.153394, 0.276996, 0.526025",\
+ "0.382075, 0.382769, 0.408465, 0.490571, 0.655996",\
+ "1.027888, 1.027888, 1.042993, 1.092217, 1.191392");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2504*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.107724, 0.368276, 0.625542, 1.061117, 1.932266",\
+ "0.118290, 0.379979, 0.639987, 1.079831, 1.959519",\
+ "0.141262, 0.402747, 0.664893, 1.109231, 1.997905",\
+ "0.466405, 0.694370, 0.967258, 1.421195, 2.329069",\
+ "1.080370, 1.299790, 1.592495, 2.085614, 3.071851",\
+ "0.196001, 0.455768, 0.713003, 1.147831, 2.018200",\
+ "0.206570, 0.467481, 0.727462, 1.166545, 2.045453",\
+ "0.229522, 0.490254, 0.752382, 1.195945, 2.083839",\
+ "0.553814, 0.781928, 1.054777, 1.507910, 2.415003",\
+ "1.167779, 1.387403, 1.680137, 2.172328, 3.157785",\
+ "0.284966, 0.544612, 0.800965, 1.235453, 2.105155",\
+ "0.295543, 0.556347, 0.815424, 1.254167, 2.132408",\
+ "0.318436, 0.579132, 0.840344, 1.283567, 2.170794",\
+ "0.634637, 0.870922, 1.142740, 1.595531, 2.501958",\
+ "1.248620, 1.476519, 1.768103, 2.259950, 3.244740",\
+ "0.348239, 0.610047, 0.865099, 1.299366, 2.168664",\
+ "0.358823, 0.621814, 0.879558, 1.318080, 2.195917",\
+ "0.381662, 0.644617, 0.904480, 1.347480, 2.234303",\
+ "0.692234, 0.936575, 1.206877, 1.659445, 2.565467",\
+ "1.306252, 1.542352, 1.832246, 2.323863, 3.308249",\
+ "0.682278, 0.972118, 1.216627, 1.648574, 2.514120",\
+ "0.692910, 0.984256, 1.231130, 1.667306, 2.541373",\
+ "0.715403, 1.007266, 1.256096, 1.696724, 2.579759",\
+ "1.001252, 1.301193, 1.558591, 2.008728, 2.910923",\
+ "1.608596, 1.909065, 2.184358, 2.673309, 3.653705");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.074735, 0.092677, 0.146088, 0.239899, 0.427522",\
+ "0.102638, 0.120071, 0.176792, 0.284601, 0.500219",\
+ "0.161882, 0.174744, 0.229174, 0.352169, 0.598157",\
+ "0.823637, 0.823637, 0.866367, 1.013938, 1.309078",\
+ "2.221941, 2.221941, 2.244685, 2.323231, 2.480325",\
+ "0.074735, 0.092846, 0.146384, 0.239899, 0.427522",\
+ "0.102638, 0.120235, 0.177132, 0.284601, 0.500219",\
+ "0.161882, 0.174865, 0.229562, 0.352169, 0.598157",\
+ "0.823637, 0.823637, 0.866833, 1.013938, 1.309078",\
+ "2.221941, 2.221941, 2.244933, 2.323231, 2.480325",\
+ "0.074735, 0.093227, 0.146389, 0.239899, 0.427522",\
+ "0.102638, 0.120606, 0.177138, 0.284601, 0.500219",\
+ "0.161882, 0.175138, 0.229569, 0.352169, 0.598157",\
+ "0.823637, 0.823637, 0.866841, 1.013938, 1.309078",\
+ "2.221941, 2.221941, 2.244937, 2.323231, 2.480325",\
+ "0.074735, 0.093782, 0.146405, 0.239899, 0.427522",\
+ "0.102638, 0.121144, 0.177156, 0.284601, 0.500219",\
+ "0.161882, 0.175536, 0.229590, 0.352169, 0.598157",\
+ "0.823637, 0.823637, 0.866866, 1.013938, 1.309078",\
+ "2.221941, 2.221941, 2.244950, 2.323231, 2.480325",\
+ "0.074735, 0.100272, 0.147356, 0.240288, 0.427522",\
+ "0.102638, 0.127451, 0.178250, 0.285047, 0.500219",\
+ "0.161882, 0.180189, 0.230838, 0.352678, 0.598157",\
+ "0.823637, 0.823637, 0.868363, 1.014548, 1.309078",\
+ "2.221941, 2.221941, 2.245747, 2.323557, 2.480325");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.140111, 0.321611, 0.507696, 0.851050, 1.569056",\
+ "0.146136, 0.328572, 0.525511, 0.902870, 1.657587",\
+ "0.156561, 0.339884, 0.570480, 0.970939, 1.771856",\
+ "0.297184, 0.522021, 0.807737, 1.302651, 2.292479",\
+ "0.634484, 0.861679, 1.151767, 1.684827, 2.750947",\
+ "0.227520, 0.408999, 0.595163, 0.937764, 1.654990",\
+ "0.233545, 0.415960, 0.612788, 0.989584, 1.743521",\
+ "0.243970, 0.427273, 0.657830, 1.057653, 1.857790",\
+ "0.384593, 0.609585, 0.895385, 1.389365, 2.378412",\
+ "0.721893, 0.949200, 1.239535, 1.771541, 2.836881",\
+ "0.308387, 0.489332, 0.675190, 1.025386, 1.741945",\
+ "0.314418, 0.496293, 0.700747, 1.077206, 1.830476",\
+ "0.324849, 0.509849, 0.745789, 1.145275, 1.944745",\
+ "0.465472, 0.698592, 0.983351, 1.476987, 2.465368",\
+ "0.802748, 1.038111, 1.327502, 1.859163, 2.923836",\
+ "0.366068, 0.546880, 0.732732, 1.089299, 1.805454",\
+ "0.372111, 0.553842, 0.764871, 1.141119, 1.893985",\
+ "0.382553, 0.575066, 0.809918, 1.209188, 2.008254",\
+ "0.523176, 0.764266, 1.047495, 1.540900, 2.528877",\
+ "0.860406, 1.103644, 1.391653, 1.923076, 2.987345",\
+ "0.668860, 0.879530, 1.082095, 1.438189, 2.150910",\
+ "0.675009, 0.902838, 1.115808, 1.490086, 2.239441",\
+ "0.685552, 0.934577, 1.161089, 1.558250, 2.353710",\
+ "0.829810, 1.129123, 1.399624, 1.890354, 2.874332",\
+ "1.174406, 1.466850, 1.744170, 2.272687, 3.332801");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.063168, 0.063168, 0.086358, 0.196253, 0.354186",\
+ "0.068741, 0.068741, 0.139035, 0.228534, 0.407534",\
+ "0.084603, 0.084603, 0.170977, 0.272661, 0.476028",\
+ "0.381099, 0.384014, 0.432690, 0.586065, 0.892815",\
+ "1.028844, 1.028844, 1.069535, 1.210064, 1.491123",\
+ "0.063168, 0.063168, 0.086418, 0.196253, 0.354186",\
+ "0.068741, 0.068741, 0.139317, 0.228534, 0.407534",\
+ "0.084603, 0.084603, 0.171298, 0.272661, 0.476028",\
+ "0.381099, 0.384041, 0.433173, 0.586065, 0.892815",\
+ "1.028844, 1.028844, 1.069978, 1.210064, 1.491123",\
+ "0.063168, 0.063168, 0.086418, 0.196253, 0.354186",\
+ "0.068741, 0.068741, 0.139322, 0.228534, 0.407534",\
+ "0.084603, 0.108427, 0.171304, 0.272661, 0.476028",\
+ "0.381099, 0.384103, 0.433182, 0.586065, 0.892815",\
+ "1.028844, 1.028844, 1.069987, 1.210064, 1.491123",\
+ "0.063168, 0.063168, 0.086418, 0.196253, 0.354186",\
+ "0.068741, 0.068741, 0.139337, 0.228534, 0.407534",\
+ "0.084603, 0.109141, 0.171320, 0.272661, 0.476028",\
+ "0.381099, 0.384193, 0.433208, 0.586065, 0.892815",\
+ "1.028844, 1.028844, 1.070010, 1.210064, 1.491123",\
+ "0.063168, 0.081229, 0.118354, 0.196580, 0.354186",\
+ "0.068741, 0.094387, 0.140245, 0.228905, 0.407534",\
+ "0.084603, 0.117503, 0.172352, 0.273082, 0.476028",\
+ "0.381099, 0.385248, 0.434764, 0.586700, 0.892815",\
+ "1.028844, 1.028844, 1.071436, 1.210646, 1.491123");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2464*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.666340, 0.928130, 1.212847, 1.689620, 2.643166",\
+ "0.680315, 0.942109, 1.226845, 1.703665, 2.657306",\
+ "0.703809, 0.965603, 1.250336, 1.727151, 2.680780",\
+ "0.973410, 1.235228, 1.520067, 1.997139, 2.951283",\
+ "1.569066, 1.830922, 2.115924, 2.593394, 3.548335",\
+ "0.753746, 1.015729, 1.300436, 1.776334, 2.729100",\
+ "0.767721, 1.029708, 1.314434, 1.790379, 2.743240",\
+ "0.791215, 1.053202, 1.337926, 1.813865, 2.766714",\
+ "1.060816, 1.322827, 1.607657, 2.083853, 3.037217",\
+ "1.656472, 1.918522, 2.203516, 2.680108, 3.634269",\
+ "0.834559, 1.104799, 1.388400, 1.863955, 2.816055",\
+ "0.848533, 1.118778, 1.402398, 1.878000, 2.830195",\
+ "0.872027, 1.142272, 1.425889, 1.901486, 2.853669",\
+ "1.141628, 1.411898, 1.695621, 2.171474, 3.124172",\
+ "1.737284, 2.007593, 2.291479, 2.767729, 3.721224",\
+ "0.896255, 1.170562, 1.452541, 1.927868, 2.879564",\
+ "0.910230, 1.184541, 1.466539, 1.941913, 2.893704",\
+ "0.933724, 1.208035, 1.490030, 1.965399, 2.917178",\
+ "1.203325, 1.477661, 1.759762, 2.235387, 3.187681",\
+ "1.798983, 2.073358, 2.355620, 2.831642, 3.784733",\
+ "1.233218, 1.536514, 1.804484, 2.277243, 3.225020",\
+ "1.247192, 1.550495, 1.818483, 2.291289, 3.239160",\
+ "1.270686, 1.573988, 1.841974, 2.314774, 3.262634",\
+ "1.540289, 1.843622, 2.111709, 2.584763, 3.533137",\
+ "2.135948, 2.439330, 2.707571, 3.181020, 4.130188");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.130524, 0.130598, 0.131270, 0.133249, 0.137207",\
+ "0.158228, 0.158278, 0.158724, 0.160039, 0.162669",\
+ "0.203197, 0.203217, 0.203397, 0.203929, 0.204993",\
+ "0.823780, 0.823782, 0.823791, 0.823812, 0.823854",\
+ "2.222145, 2.222146, 2.222146, 2.222149, 2.222153",\
+ "0.130524, 0.130599, 0.131276, 0.133249, 0.137207",\
+ "0.158228, 0.158278, 0.158728, 0.160039, 0.162669",\
+ "0.203197, 0.203217, 0.203399, 0.203929, 0.204993",\
+ "0.823780, 0.823782, 0.823791, 0.823812, 0.823854",\
+ "2.222145, 2.222146, 2.222146, 2.222149, 2.222153",\
+ "0.130525, 0.130600, 0.131276, 0.133249, 0.137207",\
+ "0.158229, 0.158279, 0.158728, 0.160039, 0.162669",\
+ "0.203197, 0.203217, 0.203399, 0.203929, 0.204993",\
+ "0.823780, 0.823782, 0.823791, 0.823812, 0.823854",\
+ "2.222145, 2.222146, 2.222146, 2.222149, 2.222153",\
+ "0.130526, 0.130602, 0.131276, 0.133249, 0.137207",\
+ "0.158229, 0.158280, 0.158728, 0.160039, 0.162669",\
+ "0.203197, 0.203218, 0.203399, 0.203929, 0.204993",\
+ "0.823780, 0.823782, 0.823791, 0.823812, 0.823854",\
+ "2.222145, 2.222146, 2.222146, 2.222149, 2.222153",\
+ "0.130530, 0.130626, 0.131296, 0.133257, 0.137207",\
+ "0.158232, 0.158296, 0.158741, 0.160044, 0.162669",\
+ "0.203198, 0.203224, 0.203404, 0.203931, 0.204993",\
+ "0.823780, 0.823783, 0.823791, 0.823812, 0.823854",\
+ "2.222146, 2.222146, 2.222146, 2.222149, 2.222153");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.597919, 0.859592, 1.143801, 1.619336, 2.570405",\
+ "0.612039, 0.873744, 1.158095, 1.633973, 2.585731",\
+ "0.634508, 0.896258, 1.180798, 1.657142, 2.609831",\
+ "0.814903, 1.076792, 1.361938, 1.839759, 2.795403",\
+ "1.148946, 1.410826, 1.695932, 2.173658, 3.129110",\
+ "0.685326, 0.947190, 1.231387, 1.706050, 2.656339",\
+ "0.699445, 0.961343, 1.245681, 1.720687, 2.671665",\
+ "0.721914, 0.983856, 1.268386, 1.743856, 2.695765",\
+ "0.902309, 1.164392, 1.449531, 1.926473, 2.881336",\
+ "1.236352, 1.498426, 1.783525, 2.260372, 3.215044",\
+ "0.766138, 1.036258, 1.319350, 1.793671, 2.743294",\
+ "0.780258, 1.050411, 1.333645, 1.808309, 2.758620",\
+ "0.802727, 1.072925, 1.356350, 1.831478, 2.782720",\
+ "0.983121, 1.253464, 1.537494, 2.014095, 2.968292",\
+ "1.317164, 1.587497, 1.871488, 2.347994, 3.301999",\
+ "0.827832, 1.102018, 1.383491, 1.857584, 2.806803",\
+ "0.841953, 1.116172, 1.397786, 1.872221, 2.822129",\
+ "0.864423, 1.138688, 1.420491, 1.895391, 2.846229",\
+ "1.044820, 1.319229, 1.601635, 2.078008, 3.031801",\
+ "1.378863, 1.653263, 1.935629, 2.411906, 3.365508",\
+ "1.164787, 1.467934, 1.735422, 2.206954, 3.152259",\
+ "1.178910, 1.482098, 1.749720, 2.221593, 3.167585",\
+ "1.201382, 1.504627, 1.772430, 2.244764, 3.191684",\
+ "1.381788, 1.685212, 1.953590, 2.427387, 3.377256",\
+ "1.715830, 2.019242, 2.287583, 2.761285, 3.710964");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.096357, 0.096687, 0.098113, 0.101595, 0.108560",\
+ "0.099813, 0.100112, 0.101404, 0.104560, 0.110871",\
+ "0.118608, 0.118888, 0.120098, 0.123051, 0.128958",\
+ "0.380772, 0.380788, 0.380959, 0.381468, 0.382485",\
+ "1.026328, 1.026331, 1.026361, 1.026448, 1.026622",\
+ "0.096357, 0.096690, 0.098124, 0.101595, 0.108560",\
+ "0.099813, 0.100115, 0.101414, 0.104560, 0.110871",\
+ "0.118608, 0.118891, 0.120107, 0.123051, 0.128958",\
+ "0.380772, 0.380788, 0.380960, 0.381468, 0.382485",\
+ "1.026328, 1.026331, 1.026361, 1.026448, 1.026622",\
+ "0.096357, 0.096696, 0.098124, 0.101595, 0.108560",\
+ "0.099813, 0.100120, 0.101415, 0.104560, 0.110871",\
+ "0.118609, 0.118896, 0.120107, 0.123051, 0.128958",\
+ "0.380772, 0.380788, 0.380960, 0.381468, 0.382485",\
+ "1.026328, 1.026331, 1.026361, 1.026448, 1.026622",\
+ "0.096364, 0.096704, 0.098125, 0.101595, 0.108560",\
+ "0.099820, 0.100128, 0.101415, 0.104560, 0.110871",\
+ "0.118615, 0.118903, 0.120108, 0.123051, 0.128958",\
+ "0.380772, 0.380789, 0.380961, 0.381468, 0.382485",\
+ "1.026328, 1.026331, 1.026361, 1.026448, 1.026622",\
+ "0.096383, 0.096806, 0.098160, 0.101610, 0.108560",\
+ "0.099837, 0.100220, 0.101447, 0.104573, 0.110871",\
+ "0.118631, 0.118989, 0.120138, 0.123064, 0.128958",\
+ "0.380772, 0.380794, 0.380966, 0.381470, 0.382485",\
+ "1.026328, 1.026332, 1.026362, 1.026448, 1.026622");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_2715*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.476785, 0.693340, 0.873015, 1.163119, 1.725535",\
+ "0.496002, 0.712556, 0.892232, 1.182336, 1.744752",\
+ "0.527650, 0.744204, 0.923880, 1.213984, 1.776400",\
+ "0.818239, 1.034793, 1.214469, 1.504573, 2.066989",\
+ "1.412242, 1.628797, 1.808472, 2.098576, 2.660992",\
+ "0.565076, 0.780658, 0.960296, 1.250424, 1.812889",\
+ "0.584292, 0.799874, 0.979512, 1.269641, 1.832105",\
+ "0.615941, 0.831523, 1.011161, 1.301289, 1.863753",\
+ "0.906530, 1.122112, 1.301750, 1.591878, 2.154342",\
+ "1.500533, 1.716115, 1.895753, 2.185881, 2.748345",\
+ "0.654117, 0.860991, 1.040323, 1.330453, 1.892920",\
+ "0.673334, 0.880207, 1.059539, 1.349669, 1.912137",\
+ "0.704982, 0.911855, 1.091188, 1.381318, 1.943785",\
+ "0.995571, 1.202444, 1.381777, 1.671907, 2.234374",\
+ "1.589574, 1.796447, 1.975780, 2.265910, 2.828377",\
+ "0.717479, 0.918821, 1.098020, 1.387885, 1.949940",\
+ "0.736695, 0.938038, 1.117237, 1.407101, 1.969157",\
+ "0.768343, 0.969686, 1.148885, 1.438750, 2.000805",\
+ "1.058932, 1.260275, 1.439474, 1.729339, 2.291394",\
+ "1.652935, 1.854278, 2.033477, 2.323342, 2.885397",\
+ "1.042371, 1.224140, 1.401676, 1.691058, 2.252168",\
+ "1.061587, 1.243356, 1.420893, 1.710275, 2.271384",\
+ "1.093235, 1.275004, 1.452541, 1.741923, 2.303032",\
+ "1.383824, 1.565593, 1.743130, 2.032512, 2.593621",\
+ "1.977827, 2.159596, 2.337133, 2.626515, 3.187624");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.489199, 0.705753, 0.885429, 1.175533, 1.737949",\
+ "0.497006, 0.713560, 0.893235, 1.183340, 1.745756",\
+ "0.510387, 0.726941, 0.906617, 1.196721, 1.759137",\
+ "0.662333, 0.878887, 1.058563, 1.348667, 1.911083",\
+ "0.995767, 1.212322, 1.391997, 1.682102, 2.244518",\
+ "0.577490, 0.793071, 0.972710, 1.262838, 1.825302",\
+ "0.585296, 0.800878, 0.980516, 1.270645, 1.833109",\
+ "0.598678, 0.814260, 0.993898, 1.284026, 1.846490",\
+ "0.750624, 0.966205, 1.145844, 1.435972, 1.998436",\
+ "1.084058, 1.299640, 1.479278, 1.769407, 2.331871",\
+ "0.666531, 0.873404, 1.052737, 1.342866, 1.905334",\
+ "0.674337, 0.881211, 1.060543, 1.350673, 1.913141",\
+ "0.687719, 0.894592, 1.073925, 1.364055, 1.926522",\
+ "0.839665, 1.046538, 1.225871, 1.516001, 2.078468",\
+ "1.173099, 1.379973, 1.559305, 1.849435, 2.411902",\
+ "0.729892, 0.931235, 1.110434, 1.400298, 1.962354",\
+ "0.737699, 0.939041, 1.118240, 1.408105, 1.970161",\
+ "0.751080, 0.952423, 1.131622, 1.421487, 1.983542",\
+ "0.903026, 1.104369, 1.283568, 1.573432, 2.135488",\
+ "1.236461, 1.437803, 1.617002, 1.906867, 2.468923",\
+ "1.054784, 1.236553, 1.414090, 1.703472, 2.264581",\
+ "1.062591, 1.244360, 1.421896, 1.711279, 2.272388",\
+ "1.075972, 1.257741, 1.435278, 1.724660, 2.285769",\
+ "1.227918, 1.409687, 1.587224, 1.876606, 2.437715",\
+ "1.561353, 1.743122, 1.920659, 2.210041, 2.771150");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2568*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.486016, 0.718373, 0.902601, 1.196441, 1.764052",\
+ "0.505233, 0.737590, 0.921817, 1.215657, 1.783269",\
+ "0.536881, 0.769238, 0.953465, 1.247305, 1.814917",\
+ "0.827470, 1.059827, 1.244054, 1.537894, 2.105506",\
+ "1.421473, 1.653830, 1.838057, 2.131897, 2.699509",\
+ "0.574330, 0.805691, 0.989882, 1.283746, 1.851406",\
+ "0.593546, 0.824908, 1.009098, 1.302962, 1.870622",\
+ "0.625194, 0.856556, 1.040746, 1.334610, 1.902271",\
+ "0.915783, 1.147145, 1.331335, 1.625199, 2.192860",\
+ "1.509786, 1.741148, 1.925338, 2.219203, 2.786862",\
+ "0.663471, 0.886024, 1.069909, 1.363774, 1.931437",\
+ "0.682687, 0.905240, 1.089125, 1.382991, 1.950654",\
+ "0.714335, 0.936888, 1.120773, 1.414639, 1.982302",\
+ "1.004924, 1.227477, 1.411362, 1.705228, 2.272891",\
+ "1.598927, 1.821480, 2.005365, 2.299231, 2.866894",\
+ "0.726940, 0.943856, 1.127617, 1.421213, 1.988470",\
+ "0.746156, 0.963072, 1.146833, 1.440429, 2.007687",\
+ "0.777804, 0.994720, 1.178482, 1.472077, 2.039335",\
+ "1.068393, 1.285309, 1.469070, 1.762666, 2.329924",\
+ "1.662396, 1.879312, 2.063073, 2.356669, 2.923927",\
+ "1.062221, 1.249183, 1.431275, 1.724391, 2.290713",\
+ "1.081437, 1.268400, 1.450491, 1.743608, 2.309929",\
+ "1.113086, 1.300048, 1.482139, 1.775256, 2.341578",\
+ "1.403675, 1.590637, 1.772728, 2.065845, 2.632166",\
+ "1.997678, 2.184640, 2.366731, 2.659848, 3.226169");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.498430, 0.730787, 0.915014, 1.208854, 1.776466",\
+ "0.506236, 0.738593, 0.922821, 1.216661, 1.784272",\
+ "0.519618, 0.751975, 0.936202, 1.230042, 1.797654",\
+ "0.671564, 0.903921, 1.088148, 1.381988, 1.949600",\
+ "1.004998, 1.237355, 1.421583, 1.715423, 2.283034",\
+ "0.586743, 0.818105, 1.002295, 1.296159, 1.863819",\
+ "0.594550, 0.825911, 1.010102, 1.303966, 1.871626",\
+ "0.607931, 0.839293, 1.023483, 1.317347, 1.885008",\
+ "0.759877, 0.991239, 1.175429, 1.469293, 2.036953",\
+ "1.093312, 1.324673, 1.508864, 1.802728, 2.370388",\
+ "0.675884, 0.898437, 1.082322, 1.376188, 1.943851",\
+ "0.683691, 0.906244, 1.090129, 1.383994, 1.951658",\
+ "0.697072, 0.919625, 1.103510, 1.397376, 1.965039",\
+ "0.849018, 1.071571, 1.255456, 1.549322, 2.116985",\
+ "1.182453, 1.405006, 1.588891, 1.882756, 2.450419",\
+ "0.739353, 0.956269, 1.140030, 1.433626, 2.000884",\
+ "0.747160, 0.964076, 1.147837, 1.441433, 2.008690",\
+ "0.760541, 0.977457, 1.161218, 1.454814, 2.022072",\
+ "0.912487, 1.129403, 1.313164, 1.606760, 2.174018",\
+ "1.245922, 1.462838, 1.646599, 1.940195, 2.507452",\
+ "1.074634, 1.261597, 1.443688, 1.736805, 2.303126",\
+ "1.082441, 1.269403, 1.451495, 1.744612, 2.310933",\
+ "1.095823, 1.282785, 1.464876, 1.757993, 2.324314",\
+ "1.247769, 1.434731, 1.616822, 1.909939, 2.476260",\
+ "1.581203, 1.768166, 1.950257, 2.243373, 2.809695");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2617*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.524148, 0.759556, 0.949466, 1.254683, 1.845217",\
+ "0.543365, 0.778772, 0.968683, 1.273899, 1.864433",\
+ "0.575013, 0.810420, 1.000331, 1.305547, 1.896082",\
+ "0.865602, 1.101009, 1.290920, 1.596136, 2.186671",\
+ "1.459605, 1.695012, 1.884923, 2.190139, 2.780674",\
+ "0.612629, 0.846874, 1.036747, 1.341988, 1.932570",\
+ "0.631845, 0.866090, 1.055964, 1.361204, 1.951787",\
+ "0.663493, 0.897739, 1.087612, 1.392852, 1.983435",\
+ "0.954082, 1.188328, 1.378201, 1.683442, 2.274024",\
+ "1.548085, 1.782331, 1.972204, 2.277444, 2.868027",\
+ "0.702172, 0.927207, 1.116774, 1.422016, 2.012602",\
+ "0.721389, 0.946423, 1.135991, 1.441233, 2.031818",\
+ "0.753037, 0.978072, 1.167639, 1.472881, 2.063467",\
+ "1.043626, 1.268661, 1.458228, 1.763470, 2.354056",\
+ "1.637629, 1.862664, 2.052231, 2.357473, 2.948059",\
+ "0.765979, 0.985042, 1.174496, 1.479482, 2.069690",\
+ "0.785195, 1.004258, 1.193712, 1.498699, 2.088906",\
+ "0.816843, 1.035906, 1.225360, 1.530347, 2.120554",\
+ "1.107432, 1.326495, 1.515949, 1.820936, 2.411143",\
+ "1.701435, 1.920498, 2.109952, 2.414939, 3.005147",\
+ "1.103410, 1.290390, 1.478156, 1.782685, 2.371999",\
+ "1.122626, 1.309606, 1.497372, 1.801901, 2.391215",\
+ "1.154274, 1.341254, 1.529020, 1.833550, 2.422863",\
+ "1.444863, 1.631843, 1.819609, 2.124139, 2.713452",\
+ "2.038866, 2.225846, 2.413612, 2.718142, 3.307455");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115267, 0.115267, 0.115267, 0.115267, 0.115267",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.536562, 0.771969, 0.961880, 1.267096, 1.857630",\
+ "0.544368, 0.779776, 0.969686, 1.274903, 1.865437",\
+ "0.557750, 0.793157, 0.983068, 1.288284, 1.878819",\
+ "0.709696, 0.945103, 1.135014, 1.440230, 2.030764",\
+ "1.043130, 1.278538, 1.468448, 1.773665, 2.364199",\
+ "0.625042, 0.859287, 1.049161, 1.354401, 1.944984",\
+ "0.632849, 0.867094, 1.056967, 1.362208, 1.952790",\
+ "0.646230, 0.880476, 1.070349, 1.375589, 1.966172",\
+ "0.798176, 1.032422, 1.222295, 1.527535, 2.118118",\
+ "1.131611, 1.365856, 1.555729, 1.860970, 2.451552",\
+ "0.714586, 0.939620, 1.129188, 1.434430, 2.025015",\
+ "0.722392, 0.947427, 1.136994, 1.442236, 2.032822",\
+ "0.735774, 0.960809, 1.150376, 1.455618, 2.046204",\
+ "0.887720, 1.112755, 1.302322, 1.607564, 2.198149",\
+ "1.221154, 1.446189, 1.635756, 1.940998, 2.531584",\
+ "0.778392, 0.997455, 1.186909, 1.491896, 2.082103",\
+ "0.786199, 1.005262, 1.194716, 1.499702, 2.089910",\
+ "0.799580, 1.018643, 1.208097, 1.513084, 2.103292",\
+ "0.951526, 1.170589, 1.360043, 1.665030, 2.255237",\
+ "1.284961, 1.504024, 1.693478, 1.998464, 2.588672",\
+ "1.115823, 1.302803, 1.490569, 1.795098, 2.384412",\
+ "1.123630, 1.310610, 1.498376, 1.802905, 2.392219",\
+ "1.137011, 1.323991, 1.511757, 1.816287, 2.405600",\
+ "1.288957, 1.475937, 1.663703, 1.968233, 2.557546",\
+ "1.622392, 1.809372, 1.997138, 2.301667, 2.890981");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.507236, 0.738300, 0.923184, 1.222269, 1.802199",\
+ "0.526452, 0.757517, 0.942400, 1.241485, 1.821415",\
+ "0.558100, 0.789165, 0.974048, 1.273133, 1.853063",\
+ "0.848689, 1.079754, 1.264637, 1.563722, 2.143652",\
+ "1.442692, 1.673757, 1.858641, 2.157725, 2.737655",\
+ "0.595614, 0.825618, 1.010465, 1.309574, 1.889552",\
+ "0.614831, 0.844835, 1.029681, 1.328790, 1.908768",\
+ "0.646479, 0.876483, 1.061329, 1.360438, 1.940417",\
+ "0.937068, 1.167072, 1.351918, 1.651027, 2.231006",\
+ "1.531071, 1.761075, 1.945922, 2.245030, 2.825009",\
+ "0.685193, 0.905949, 1.090492, 1.389602, 1.969584",\
+ "0.704409, 0.925165, 1.109708, 1.408819, 1.988800",\
+ "0.736058, 0.956813, 1.141356, 1.440467, 2.020448",\
+ "1.026647, 1.247402, 1.431945, 1.731056, 2.311038",\
+ "1.620650, 1.841405, 2.025949, 2.325059, 2.905041",\
+ "0.749178, 0.963779, 1.148202, 1.447056, 2.026647",\
+ "0.768394, 0.982995, 1.167418, 1.466272, 2.045864",\
+ "0.800042, 1.014643, 1.199067, 1.497920, 2.077512",\
+ "1.090631, 1.305233, 1.489656, 1.788509, 2.368101",\
+ "1.684634, 1.899235, 2.083659, 2.382513, 2.962104",\
+ "1.087729, 1.269086, 1.451859, 1.750247, 2.328927",\
+ "1.106946, 1.288302, 1.471076, 1.769464, 2.348143",\
+ "1.138594, 1.319950, 1.502724, 1.801112, 2.379791",\
+ "1.429183, 1.610539, 1.793313, 2.091701, 2.670381",\
+ "2.023186, 2.204542, 2.387316, 2.685704, 3.264384");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.115268, 0.115268, 0.115268, 0.115268, 0.115268",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115268, 0.115268, 0.115268, 0.115268, 0.115268",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115268, 0.115268, 0.115268, 0.115268, 0.115268",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115268, 0.115268, 0.115268, 0.115268, 0.115268",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353",\
+ "0.115268, 0.115268, 0.115268, 0.115268, 0.115268",\
+ "0.141939, 0.141939, 0.141939, 0.141939, 0.141939",\
+ "0.190556, 0.190556, 0.190556, 0.190556, 0.190556",\
+ "0.817533, 0.817533, 0.817533, 0.817533, 0.817533",\
+ "2.193353, 2.193353, 2.193353, 2.193353, 2.193353");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.519649, 0.750714, 0.935597, 1.234682, 1.814612",\
+ "0.527456, 0.758521, 0.943404, 1.242489, 1.822419",\
+ "0.540837, 0.771902, 0.956786, 1.255870, 1.835800",\
+ "0.692783, 0.923848, 1.108731, 1.407816, 1.987746",\
+ "1.026218, 1.257282, 1.442166, 1.741251, 2.321181",\
+ "0.608028, 0.838032, 1.022878, 1.321987, 1.901966",\
+ "0.615835, 0.845838, 1.030685, 1.329794, 1.909772",\
+ "0.629216, 0.859220, 1.044067, 1.343176, 1.923154",\
+ "0.781162, 1.011166, 1.196012, 1.495121, 2.075100",\
+ "1.114597, 1.344600, 1.529447, 1.828556, 2.408534",\
+ "0.697607, 0.918362, 1.102905, 1.402016, 1.981997",\
+ "0.705413, 0.926169, 1.110712, 1.409823, 1.989804",\
+ "0.718795, 0.939550, 1.124094, 1.423204, 2.003186",\
+ "0.870741, 1.091496, 1.276039, 1.575150, 2.155131",\
+ "1.204175, 1.424931, 1.609474, 1.908584, 2.488566",\
+ "0.761591, 0.976192, 1.160616, 1.459469, 2.039061",\
+ "0.769398, 0.983999, 1.168422, 1.467276, 2.046868",\
+ "0.782779, 0.997381, 1.181804, 1.480658, 2.060249",\
+ "0.934725, 1.149326, 1.333750, 1.632603, 2.212195",\
+ "1.268160, 1.482761, 1.667184, 1.966038, 2.545630",\
+ "1.100143, 1.281499, 1.464273, 1.762661, 2.341341",\
+ "1.107950, 1.289306, 1.472080, 1.770468, 2.349147",\
+ "1.121331, 1.302687, 1.485461, 1.783849, 2.362529",\
+ "1.273277, 1.454633, 1.637407, 1.935795, 2.514474",\
+ "1.606712, 1.788068, 1.970841, 2.269229, 2.847909");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262",\
+ "0.049723, 0.049723, 0.049723, 0.049723, 0.049723",\
+ "0.055443, 0.055443, 0.055443, 0.055443, 0.055443",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368589, 0.368589, 0.368589, 0.368589, 0.368589",\
+ "1.002262, 1.002262, 1.002262, 1.002262, 1.002262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2419*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.424754, 0.655573, 0.839933, 1.133631, 1.700828",\
+ "0.443986, 0.674805, 0.859165, 1.152863, 1.720060",\
+ "0.475654, 0.706473, 0.890833, 1.184531, 1.751728",\
+ "0.765910, 0.996730, 1.181089, 1.474787, 2.041985",\
+ "1.359893, 1.590712, 1.775072, 2.068770, 2.635967",\
+ "0.513060, 0.742891, 0.927214, 1.220936, 1.788182",\
+ "0.532291, 0.762123, 0.946446, 1.240168, 1.807413",\
+ "0.563959, 0.793791, 0.978114, 1.271836, 1.839081",\
+ "0.854216, 1.084048, 1.268370, 1.562092, 2.129338",\
+ "1.448198, 1.678030, 1.862353, 2.156075, 2.723320",\
+ "0.602427, 0.823222, 1.007241, 1.300965, 1.868213",\
+ "0.621658, 0.842453, 1.026473, 1.320196, 1.887445",\
+ "0.653326, 0.874121, 1.058141, 1.351864, 1.919113",\
+ "0.943583, 1.164378, 1.348397, 1.642121, 2.209370",\
+ "1.537565, 1.758360, 1.942380, 2.236103, 2.803352",\
+ "0.666215, 0.881051, 1.064950, 1.358403, 1.925246",\
+ "0.685446, 0.900283, 1.084182, 1.377634, 1.944478",\
+ "0.717114, 0.931951, 1.115850, 1.409302, 1.976146",\
+ "1.007371, 1.222207, 1.406106, 1.699559, 2.266402",\
+ "1.601353, 1.816190, 2.000089, 2.293541, 2.860385",\
+ "1.003512, 1.186351, 1.368608, 1.661581, 2.227489",\
+ "1.022744, 1.205583, 1.387839, 1.680812, 2.246720",\
+ "1.054412, 1.237251, 1.419507, 1.712481, 2.278388",\
+ "1.344668, 1.527507, 1.709764, 2.002737, 2.568645",\
+ "1.938651, 2.121490, 2.303746, 2.596720, 3.162627");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.436529, 0.667348, 0.851708, 1.145406, 1.712603",\
+ "0.444331, 0.675151, 0.859510, 1.153208, 1.720405",\
+ "0.457727, 0.688547, 0.872906, 1.166604, 1.733801",\
+ "0.609942, 0.840761, 1.025121, 1.318819, 1.886016",\
+ "0.943575, 1.174394, 1.358754, 1.652452, 2.219649",\
+ "0.524834, 0.754666, 0.938989, 1.232711, 1.799956",\
+ "0.532637, 0.762468, 0.946791, 1.240513, 1.807759",\
+ "0.546033, 0.775864, 0.960187, 1.253909, 1.821155",\
+ "0.698247, 0.928079, 1.112402, 1.406124, 1.973369",\
+ "1.031881, 1.261712, 1.446035, 1.739757, 2.307003",\
+ "0.614201, 0.834996, 1.019016, 1.312739, 1.879988",\
+ "0.622004, 0.842799, 1.026818, 1.320542, 1.887790",\
+ "0.635400, 0.856195, 1.040214, 1.333938, 1.901186",\
+ "0.787614, 1.008409, 1.192429, 1.486152, 2.053401",\
+ "1.121248, 1.342043, 1.526062, 1.819786, 2.387034",\
+ "0.677989, 0.892826, 1.076725, 1.370177, 1.937021",\
+ "0.685792, 0.900628, 1.084527, 1.377980, 1.944823",\
+ "0.699188, 0.914024, 1.097923, 1.391376, 1.958219",\
+ "0.851402, 1.066239, 1.250138, 1.543590, 2.110434",\
+ "1.185036, 1.399872, 1.583771, 1.877224, 2.444067",\
+ "1.015287, 1.198126, 1.380382, 1.673356, 2.239263",\
+ "1.023089, 1.205928, 1.388185, 1.681158, 2.247066",\
+ "1.036485, 1.219324, 1.401581, 1.694554, 2.260462",\
+ "1.188700, 1.371539, 1.553795, 1.846768, 2.412676",\
+ "1.522333, 1.705172, 1.887429, 2.180402, 2.746310");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2319*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.417176, 0.631777, 0.810666, 1.100090, 1.661570",\
+ "0.436407, 0.651008, 0.829897, 1.119321, 1.680801",\
+ "0.468075, 0.682676, 0.861565, 1.150989, 1.712470",\
+ "0.758331, 0.972932, 1.151822, 1.441245, 2.002726",\
+ "1.352314, 1.566915, 1.745804, 2.035228, 2.596708",\
+ "0.505449, 0.719094, 0.897947, 1.187395, 1.748923",\
+ "0.524681, 0.738326, 0.917178, 1.206626, 1.768155",\
+ "0.556349, 0.769994, 0.948847, 1.238294, 1.799823",\
+ "0.846605, 1.060250, 1.239103, 1.528551, 2.090079",\
+ "1.440588, 1.654232, 1.833085, 2.122533, 2.684062",\
+ "0.594993, 0.799422, 0.977974, 1.267423, 1.828955",\
+ "0.614224, 0.818654, 0.997205, 1.286655, 1.848186",\
+ "0.645892, 0.850322, 1.028873, 1.318323, 1.879855",\
+ "0.936148, 1.140578, 1.319129, 1.608579, 2.170111",\
+ "1.530131, 1.734560, 1.913112, 2.202561, 2.764093",\
+ "0.659061, 0.857252, 1.035670, 1.324854, 1.885975",\
+ "0.678293, 0.876483, 1.054902, 1.344086, 1.905207",\
+ "0.709961, 0.908151, 1.086570, 1.375754, 1.936875",\
+ "1.000217, 1.198407, 1.376826, 1.666010, 2.227131",\
+ "1.594199, 1.792390, 1.970809, 2.259993, 2.821113",\
+ "0.982918, 1.162544, 1.339325, 1.628026, 2.188202",\
+ "1.002150, 1.181776, 1.358556, 1.647258, 2.207434",\
+ "1.033818, 1.213444, 1.390224, 1.678926, 2.239102",\
+ "1.324074, 1.503700, 1.680480, 1.969182, 2.529358",\
+ "1.918056, 2.097682, 2.274463, 2.563165, 3.123341");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.428949, 0.643550, 0.822439, 1.111863, 1.673344",\
+ "0.436752, 0.651353, 0.830242, 1.119666, 1.681146",\
+ "0.450148, 0.664749, 0.843638, 1.133062, 1.694542",\
+ "0.602363, 0.816964, 0.995853, 1.285277, 1.846757",\
+ "0.935996, 1.150597, 1.329487, 1.618910, 2.180391",\
+ "0.517223, 0.730868, 0.909721, 1.199168, 1.760697",\
+ "0.525026, 0.738670, 0.917523, 1.206971, 1.768500",\
+ "0.538422, 0.752066, 0.930919, 1.220367, 1.781896",\
+ "0.690637, 0.904281, 1.083134, 1.372582, 1.934110",\
+ "1.024270, 1.237915, 1.416768, 1.706216, 2.267744",\
+ "0.606766, 0.811196, 0.989747, 1.279197, 1.840729",\
+ "0.614569, 0.818998, 0.997550, 1.286999, 1.848531",\
+ "0.627965, 0.832394, 1.010946, 1.300395, 1.861927",\
+ "0.780180, 0.984609, 1.163161, 1.452610, 2.014142",\
+ "1.113814, 1.318243, 1.496794, 1.786244, 2.347776",\
+ "0.670835, 0.869025, 1.047444, 1.336628, 1.897749",\
+ "0.678637, 0.876828, 1.055247, 1.344431, 1.905551",\
+ "0.692033, 0.890224, 1.068643, 1.357827, 1.918947",\
+ "0.844248, 1.042439, 1.220857, 1.510042, 2.071162",\
+ "1.177882, 1.376072, 1.554491, 1.843675, 2.404796",\
+ "0.994692, 1.174318, 1.351099, 1.639800, 2.199976",\
+ "1.002494, 1.182121, 1.358901, 1.647603, 2.207778",\
+ "1.015890, 1.195517, 1.372297, 1.660999, 2.221174",\
+ "1.168105, 1.347732, 1.524512, 1.813214, 2.373389",\
+ "1.501739, 1.681365, 1.858145, 2.146847, 2.707023");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2377*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.566889, 0.778471, 0.964383, 1.255517, 1.814850",\
+ "0.586120, 0.797703, 0.983615, 1.274748, 1.834081",\
+ "0.617788, 0.829371, 1.015283, 1.306417, 1.865749",\
+ "0.908045, 1.119627, 1.305539, 1.596673, 2.156006",\
+ "1.502027, 1.713610, 1.899522, 2.190655, 2.749988",\
+ "0.655251, 0.865790, 1.051664, 1.342822, 1.902203",\
+ "0.674483, 0.885021, 1.070896, 1.362054, 1.921435",\
+ "0.706151, 0.916689, 1.102564, 1.393722, 1.953103",\
+ "0.996407, 1.206946, 1.392820, 1.683978, 2.243359",\
+ "1.590390, 1.800928, 1.986803, 2.277961, 2.837342",\
+ "0.744310, 0.946124, 1.131691, 1.422850, 1.982235",\
+ "0.763542, 0.965355, 1.150923, 1.442082, 2.001466",\
+ "0.795210, 0.997024, 1.182591, 1.473750, 2.033134",\
+ "1.085467, 1.287280, 1.472847, 1.764007, 2.323391",\
+ "1.679449, 1.881263, 2.066830, 2.357989, 2.917373",\
+ "0.807605, 1.003952, 1.189403, 1.480278, 2.039247",\
+ "0.826837, 1.023183, 1.208634, 1.499510, 2.058478",\
+ "0.858505, 1.054851, 1.240302, 1.531178, 2.090147",\
+ "1.148761, 1.345108, 1.530559, 1.821435, 2.380403",\
+ "1.742744, 1.939090, 2.124541, 2.415417, 2.974385",\
+ "1.127529, 1.309255, 1.493062, 1.783449, 2.341464",\
+ "1.146761, 1.328487, 1.512293, 1.802681, 2.360695",\
+ "1.178429, 1.360155, 1.543962, 1.834349, 2.392364",\
+ "1.468686, 1.650411, 1.834218, 2.124605, 2.682620",\
+ "2.062668, 2.244394, 2.428200, 2.718588, 3.276602");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.578663, 0.790246, 0.976158, 1.267292, 1.826624",\
+ "0.586466, 0.798048, 0.983960, 1.275094, 1.834427",\
+ "0.599862, 0.811444, 0.997356, 1.288490, 1.847823",\
+ "0.752076, 0.963659, 1.149571, 1.440704, 2.000037",\
+ "1.085710, 1.297292, 1.483204, 1.774338, 2.333671",\
+ "0.667026, 0.877564, 1.063439, 1.354597, 1.913978",\
+ "0.674828, 0.885367, 1.071241, 1.362399, 1.921780",\
+ "0.688224, 0.898763, 1.084637, 1.375795, 1.935176",\
+ "0.840439, 1.050977, 1.236852, 1.528010, 2.087391",\
+ "1.174072, 1.384611, 1.570485, 1.861643, 2.421024",\
+ "0.756085, 0.957898, 1.143466, 1.434625, 1.994009",\
+ "0.763888, 0.965701, 1.151268, 1.442428, 2.001812",\
+ "0.777284, 0.979097, 1.164664, 1.455824, 2.015208",\
+ "0.929498, 1.131311, 1.316879, 1.608038, 2.167422",\
+ "1.263131, 1.464945, 1.650512, 1.941671, 2.501056",\
+ "0.819380, 1.015726, 1.201177, 1.492053, 2.051021",\
+ "0.827182, 1.023529, 1.208980, 1.499856, 2.058824",\
+ "0.840578, 1.036925, 1.222376, 1.513252, 2.072220",\
+ "0.992793, 1.189139, 1.374590, 1.665466, 2.224434",\
+ "1.326426, 1.522773, 1.708224, 1.999099, 2.558068",\
+ "1.139304, 1.321030, 1.504837, 1.795224, 2.353239",\
+ "1.147106, 1.328832, 1.512639, 1.803026, 2.361041",\
+ "1.160502, 1.342228, 1.526035, 1.816422, 2.374437",\
+ "1.312717, 1.494443, 1.678249, 1.968637, 2.526651",\
+ "1.646350, 1.828076, 2.011883, 2.302270, 2.860285");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2596*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.541408, 0.751703, 0.928714, 1.212888, 1.762989",\
+ "0.560640, 0.770935, 0.947946, 1.232119, 1.782221",\
+ "0.592308, 0.802603, 0.979614, 1.263787, 1.813889",\
+ "0.882565, 1.092860, 1.269870, 1.554044, 2.104145",\
+ "1.476547, 1.686842, 1.863853, 2.148026, 2.698128",\
+ "0.629685, 0.839022, 1.015995, 1.300193, 1.850343",\
+ "0.648917, 0.858253, 1.035227, 1.319424, 1.869574",\
+ "0.680585, 0.889921, 1.066895, 1.351092, 1.901242",\
+ "0.970842, 1.180178, 1.357151, 1.641349, 2.191499",\
+ "1.564824, 1.774160, 1.951134, 2.235331, 2.785481",\
+ "0.718639, 0.919355, 1.096022, 1.380221, 1.930374",\
+ "0.737870, 0.938586, 1.115254, 1.399453, 1.949606",\
+ "0.769538, 0.970254, 1.146922, 1.431121, 1.981274",\
+ "1.059795, 1.260511, 1.437178, 1.721377, 2.271530",\
+ "1.653777, 1.854493, 2.031161, 2.315360, 2.865513",\
+ "0.781897, 0.977177, 1.153713, 1.437638, 1.987364",\
+ "0.801129, 0.996408, 1.172945, 1.456870, 2.006596",\
+ "0.832797, 1.028076, 1.204613, 1.488538, 2.038264",\
+ "1.123053, 1.318333, 1.494869, 1.778794, 2.328521",\
+ "1.717036, 1.912315, 2.088852, 2.372777, 2.922503",\
+ "1.102548, 1.282436, 1.457368, 1.740799, 2.289555",\
+ "1.121780, 1.301668, 1.476600, 1.760030, 2.308787",\
+ "1.153448, 1.333336, 1.508268, 1.791698, 2.340455",\
+ "1.443705, 1.623593, 1.798525, 2.081955, 2.630712",\
+ "2.037687, 2.217575, 2.392507, 2.675937, 3.224694");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227",\
+ "0.112220, 0.112220, 0.112220, 0.112220, 0.112220",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189997, 0.189997, 0.189997, 0.189997, 0.189997",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194227, 2.194227, 2.194227, 2.194227, 2.194227");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.553183, 0.763478, 0.940489, 1.224662, 1.774764",\
+ "0.560986, 0.771280, 0.948291, 1.232465, 1.782566",\
+ "0.574382, 0.784676, 0.961687, 1.245861, 1.795962",\
+ "0.726596, 0.936891, 1.113902, 1.398075, 1.948177",\
+ "1.060230, 1.270525, 1.447535, 1.731709, 2.281810",\
+ "0.641460, 0.850796, 1.027770, 1.311967, 1.862117",\
+ "0.649263, 0.858599, 1.035572, 1.319770, 1.869920",\
+ "0.662659, 0.871995, 1.048968, 1.333166, 1.883316",\
+ "0.814873, 1.024209, 1.201183, 1.485380, 2.035530",\
+ "1.148507, 1.357843, 1.534816, 1.819014, 2.369164",\
+ "0.730413, 0.931129, 1.107797, 1.391996, 1.942149",\
+ "0.738216, 0.938932, 1.115599, 1.399798, 1.949951",\
+ "0.751612, 0.952328, 1.128995, 1.413194, 1.963347",\
+ "0.903826, 1.104542, 1.281210, 1.565409, 2.115561",\
+ "1.237460, 1.438176, 1.614843, 1.899042, 2.449195",\
+ "0.793672, 0.988951, 1.165488, 1.449413, 1.999139",\
+ "0.801474, 0.996754, 1.173290, 1.457215, 2.006941",\
+ "0.814870, 1.010150, 1.186686, 1.470611, 2.020338",\
+ "0.967085, 1.162364, 1.338901, 1.622826, 2.172552",\
+ "1.300718, 1.495998, 1.672534, 1.956459, 2.506185",\
+ "1.114323, 1.294211, 1.469143, 1.752573, 2.301330",\
+ "1.122126, 1.302013, 1.476946, 1.760376, 2.309132",\
+ "1.135522, 1.315410, 1.490342, 1.773772, 2.322528",\
+ "1.287736, 1.467624, 1.642556, 1.925986, 2.474743",\
+ "1.621369, 1.801257, 1.976189, 2.259620, 2.808376");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055489, 0.055489, 0.055489, 0.055489, 0.055489",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2653*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.563785, 0.784261, 0.961831, 1.250241, 1.810232",\
+ "0.583017, 0.803492, 0.981063, 1.269472, 1.829463",\
+ "0.614685, 0.835161, 1.012731, 1.301141, 1.861132",\
+ "0.904941, 1.125417, 1.302987, 1.591397, 2.151388",\
+ "1.498924, 1.719399, 1.896969, 2.185379, 2.745370",\
+ "0.652174, 0.871579, 1.049112, 1.337546, 1.897585",\
+ "0.671405, 0.890811, 1.068343, 1.356778, 1.916817",\
+ "0.703073, 0.922479, 1.100012, 1.388446, 1.948485",\
+ "0.993330, 1.212735, 1.390268, 1.678702, 2.238741",\
+ "1.587312, 1.806717, 1.984250, 2.272684, 2.832724",\
+ "0.741539, 0.951911, 1.129139, 1.417575, 1.977617",\
+ "0.760771, 0.971143, 1.148370, 1.436806, 1.996849",\
+ "0.792439, 1.002811, 1.180039, 1.468474, 2.028517",\
+ "1.082695, 1.293067, 1.470295, 1.758730, 2.318773",\
+ "1.676677, 1.887050, 2.064277, 2.352713, 2.912755",\
+ "0.805219, 1.009732, 1.186831, 1.475004, 2.034631",\
+ "0.824451, 1.028963, 1.206063, 1.494235, 2.053863",\
+ "0.856119, 1.060631, 1.237731, 1.525903, 2.085531",\
+ "1.146375, 1.350887, 1.527987, 1.816159, 2.375787",\
+ "1.740357, 1.944870, 2.121970, 2.410142, 2.969770",\
+ "1.135828, 1.314976, 1.490487, 1.778174, 2.336852",\
+ "1.155060, 1.334207, 1.509718, 1.797406, 2.356083",\
+ "1.186728, 1.365875, 1.541386, 1.829074, 2.387752",\
+ "1.476984, 1.656131, 1.831642, 2.119330, 2.678008",\
+ "2.070967, 2.250114, 2.425625, 2.713313, 3.271990");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.575559, 0.796035, 0.973605, 1.262015, 1.822006",\
+ "0.583362, 0.803837, 0.981407, 1.269817, 1.829808",\
+ "0.596758, 0.817233, 0.994803, 1.283213, 1.843204",\
+ "0.748972, 0.969448, 1.147018, 1.435428, 1.995419",\
+ "1.082606, 1.303082, 1.480652, 1.769062, 2.329053",\
+ "0.663947, 0.883353, 1.060886, 1.349320, 1.909359",\
+ "0.671750, 0.891155, 1.068688, 1.357122, 1.917162",\
+ "0.685146, 0.904551, 1.082084, 1.370518, 1.930558",\
+ "0.837361, 1.056766, 1.234299, 1.522733, 2.082772",\
+ "1.170995, 1.390400, 1.567933, 1.856367, 2.416406",\
+ "0.753313, 0.963685, 1.140913, 1.429348, 1.989391",\
+ "0.761115, 0.971488, 1.148715, 1.437151, 1.997193",\
+ "0.774511, 0.984884, 1.162111, 1.450547, 2.010589",\
+ "0.926726, 1.137099, 1.314326, 1.602762, 2.162804",\
+ "1.260360, 1.470732, 1.647960, 1.936395, 2.496438",\
+ "0.816993, 1.021505, 1.198605, 1.486777, 2.046405",\
+ "0.824796, 1.029308, 1.206408, 1.494580, 2.054208",\
+ "0.838192, 1.042704, 1.219804, 1.507976, 2.067604",\
+ "0.990406, 1.194919, 1.372019, 1.660191, 2.219819",\
+ "1.324040, 1.528552, 1.705652, 1.993824, 2.553452",\
+ "1.147602, 1.326749, 1.502260, 1.789948, 2.348625",\
+ "1.155405, 1.334552, 1.510063, 1.797751, 2.356428",\
+ "1.168801, 1.347948, 1.523459, 1.811147, 2.369824",\
+ "1.321016, 1.500163, 1.675674, 1.963362, 2.522039",\
+ "1.654649, 1.833796, 2.009307, 2.296995, 2.855672");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2304*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.537611, 0.765413, 0.949557, 1.244019, 1.813116",\
+ "0.556843, 0.784645, 0.968788, 1.263250, 1.832347",\
+ "0.588511, 0.816313, 1.000457, 1.294918, 1.864016",\
+ "0.878767, 1.106569, 1.290713, 1.585174, 2.154272",\
+ "1.472749, 1.700552, 1.884695, 2.179157, 2.748254",\
+ "0.625940, 0.852732, 1.036838, 1.331324, 1.900469",\
+ "0.645171, 0.871963, 1.056069, 1.350555, 1.919701",\
+ "0.676839, 0.903631, 1.087738, 1.382223, 1.951369",\
+ "0.967095, 1.193887, 1.377994, 1.672480, 2.241625",\
+ "1.561078, 1.787870, 1.971976, 2.266462, 2.835608",\
+ "0.715049, 0.933065, 1.116865, 1.411352, 1.980501",\
+ "0.734280, 0.952296, 1.136096, 1.430584, 1.999732",\
+ "0.765948, 0.983964, 1.167764, 1.462252, 2.031401",\
+ "1.056204, 1.274220, 1.458020, 1.752508, 2.321657",\
+ "1.650187, 1.868203, 2.052003, 2.346490, 2.915639",\
+ "0.778454, 0.990889, 1.174573, 1.468792, 2.037537",\
+ "0.797686, 1.010120, 1.193804, 1.488024, 2.056769",\
+ "0.829354, 1.041789, 1.225472, 1.519692, 2.088437",\
+ "1.119610, 1.332045, 1.515728, 1.809948, 2.378693",\
+ "1.713592, 1.926027, 2.109711, 2.403930, 2.972675",\
+ "1.113336, 1.296163, 1.478231, 1.771973, 2.339783",\
+ "1.132567, 1.315395, 1.497462, 1.791204, 2.359015",\
+ "1.164236, 1.347063, 1.529130, 1.822872, 2.390683",\
+ "1.454492, 1.637319, 1.819386, 2.113128, 2.680939",\
+ "2.048474, 2.231302, 2.413369, 2.707111, 3.274921");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229",\
+ "0.112216, 0.112216, 0.112216, 0.112216, 0.112216",\
+ "0.140967, 0.140967, 0.140967, 0.140967, 0.140967",\
+ "0.189998, 0.189998, 0.189998, 0.189998, 0.189998",\
+ "0.817613, 0.817613, 0.817613, 0.817613, 0.817613",\
+ "2.194229, 2.194229, 2.194229, 2.194229, 2.194229");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.549385, 0.777187, 0.961331, 1.255792, 1.824890",\
+ "0.557187, 0.784990, 0.969133, 1.263595, 1.832692",\
+ "0.570583, 0.798386, 0.982529, 1.276991, 1.846088",\
+ "0.722798, 0.950600, 1.134744, 1.429206, 1.998303",\
+ "1.056432, 1.284234, 1.468378, 1.762839, 2.331937",\
+ "0.637713, 0.864505, 1.048611, 1.343097, 1.912243",\
+ "0.645516, 0.872308, 1.056414, 1.350900, 1.920045",\
+ "0.658912, 0.885704, 1.069810, 1.364296, 1.933442",\
+ "0.811127, 1.037919, 1.222025, 1.516511, 2.085656",\
+ "1.144760, 1.371552, 1.555659, 1.850145, 2.419290",\
+ "0.726822, 0.944838, 1.128638, 1.423126, 1.992275",\
+ "0.734625, 0.952641, 1.136441, 1.430928, 2.000077",\
+ "0.748021, 0.966037, 1.149837, 1.444324, 2.013473",\
+ "0.900236, 1.118252, 1.302052, 1.596539, 2.165688",\
+ "1.233869, 1.451885, 1.635685, 1.930173, 2.499322",\
+ "0.790228, 1.002663, 1.186347, 1.480566, 2.049311",\
+ "0.798030, 1.010465, 1.194149, 1.488369, 2.057113",\
+ "0.811427, 1.023861, 1.207545, 1.501765, 2.070509",\
+ "0.963641, 1.176076, 1.359760, 1.653979, 2.222724",\
+ "1.297275, 1.509710, 1.693393, 1.987613, 2.556358",\
+ "1.125110, 1.307937, 1.490004, 1.783746, 2.351557",\
+ "1.132912, 1.315740, 1.497807, 1.791549, 2.359360",\
+ "1.146308, 1.329136, 1.511203, 1.804945, 2.372756",\
+ "1.298523, 1.481350, 1.663418, 1.957160, 2.524971",\
+ "1.632157, 1.814984, 1.997051, 2.290793, 2.858604");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321",\
+ "0.049540, 0.049540, 0.049540, 0.049540, 0.049540",\
+ "0.055490, 0.055490, 0.055490, 0.055490, 0.055490",\
+ "0.075307, 0.075307, 0.075307, 0.075307, 0.075307",\
+ "0.368653, 0.368653, 0.368653, 0.368653, 0.368653",\
+ "1.002321, 1.002321, 1.002321, 1.002321, 1.002321");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2347*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.452626, 0.644345, 0.833940, 1.131261, 1.702487",\
+ "0.471843, 0.663562, 0.853157, 1.150478, 1.721704",\
+ "0.503492, 0.695211, 0.884806, 1.182126, 1.753352",\
+ "0.794073, 0.985792, 1.175388, 1.472708, 2.043935",\
+ "1.388076, 1.579795, 1.769390, 2.066711, 2.637938",\
+ "0.540843, 0.731664, 0.921221, 1.218566, 1.789840",\
+ "0.560059, 0.750880, 0.940438, 1.237783, 1.809057",\
+ "0.591708, 0.782529, 0.972087, 1.269431, 1.840706",\
+ "0.882290, 1.073111, 1.262668, 1.560013, 2.131288",\
+ "1.476292, 1.667113, 1.856671, 2.154016, 2.725291",\
+ "0.629383, 0.811999, 1.001248, 1.298594, 1.869872",\
+ "0.648600, 0.831216, 1.020465, 1.317811, 1.889089",\
+ "0.680249, 0.862864, 1.052114, 1.349460, 1.920737",\
+ "0.970830, 1.153446, 1.342695, 1.640042, 2.211320",\
+ "1.564833, 1.747448, 1.936698, 2.234045, 2.805323",\
+ "0.690888, 0.869827, 1.058969, 1.356037, 1.926912",\
+ "0.710105, 0.889043, 1.078185, 1.375254, 1.946129",\
+ "0.741754, 0.920692, 1.109834, 1.406902, 1.977778",\
+ "1.032335, 1.211274, 1.400416, 1.697484, 2.268360",\
+ "1.626338, 1.805276, 1.994418, 2.291487, 2.862363",\
+ "0.993056, 1.175134, 1.362629, 1.659220, 2.229164",\
+ "1.012272, 1.194351, 1.381846, 1.678436, 2.248380",\
+ "1.043921, 1.226000, 1.413495, 1.710085, 2.280029",\
+ "1.334502, 1.516581, 1.704077, 2.000667, 2.570611",\
+ "1.928505, 2.110584, 2.298079, 2.594670, 3.164614");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.115198, 0.115198, 0.115199, 0.115202, 0.115208",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817535, 0.817534",\
+ "2.193373, 2.193373, 2.193373, 2.193372, 2.193370",\
+ "0.115198, 0.115198, 0.115199, 0.115202, 0.115208",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817535, 0.817534",\
+ "2.193373, 2.193373, 2.193373, 2.193372, 2.193370",\
+ "0.115198, 0.115198, 0.115199, 0.115202, 0.115208",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817535, 0.817534",\
+ "2.193373, 2.193373, 2.193373, 2.193372, 2.193370",\
+ "0.115198, 0.115198, 0.115199, 0.115202, 0.115208",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817535, 0.817534",\
+ "2.193373, 2.193373, 2.193373, 2.193372, 2.193370",\
+ "0.115198, 0.115198, 0.115199, 0.115202, 0.115208",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817535, 0.817534",\
+ "2.193373, 2.193373, 2.193373, 2.193372, 2.193370");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.465025, 0.656744, 0.846340, 1.143661, 1.714888",\
+ "0.472832, 0.664551, 0.854146, 1.151467, 1.722695",\
+ "0.486213, 0.677933, 0.867528, 1.164849, 1.736077",\
+ "0.638165, 0.829885, 1.019480, 1.316801, 1.888028",\
+ "0.971605, 1.163324, 1.352919, 1.650240, 2.221466",\
+ "0.553242, 0.744063, 0.933621, 1.230966, 1.802242",\
+ "0.561048, 0.751869, 0.941427, 1.238772, 1.810048",\
+ "0.574430, 0.765251, 0.954809, 1.252154, 1.823430",\
+ "0.726382, 0.917203, 1.106761, 1.404106, 1.975381",\
+ "1.059821, 1.250642, 1.440200, 1.737545, 2.308820",\
+ "0.641782, 0.824398, 1.013648, 1.310994, 1.882273",\
+ "0.649589, 0.832204, 1.021454, 1.318801, 1.890080",\
+ "0.662971, 0.845586, 1.034836, 1.332183, 1.903462",\
+ "0.814923, 0.997538, 1.186788, 1.484134, 2.055413",\
+ "1.148362, 1.330977, 1.520227, 1.817573, 2.388851",\
+ "0.703287, 0.882226, 1.071368, 1.368437, 1.939313",\
+ "0.711094, 0.890032, 1.079175, 1.376243, 1.947120",\
+ "0.724476, 0.903414, 1.092556, 1.389625, 1.960502",\
+ "0.876427, 1.055366, 1.244508, 1.541577, 2.112453",\
+ "1.209867, 1.388805, 1.577947, 1.875016, 2.445891",\
+ "1.005455, 1.187533, 1.375029, 1.671620, 2.241565",\
+ "1.013261, 1.195340, 1.382835, 1.679426, 2.249371",\
+ "1.026643, 1.208722, 1.396217, 1.692808, 2.262753",\
+ "1.178595, 1.360674, 1.548169, 1.844760, 2.414704",\
+ "1.512034, 1.694113, 1.881608, 2.178198, 2.748142");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.049719, 0.049719, 0.049719, 0.049719, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049719, 0.049719, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049719, 0.049719, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049719, 0.049719, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049719, 0.049719, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2394*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.181258, 0.362750, 0.559584, 0.877059, 1.491654",\
+ "0.196091, 0.377154, 0.575199, 0.895881, 1.517263",\
+ "0.221299, 0.401436, 0.600771, 0.925894, 1.556997",\
+ "0.494050, 0.669272, 0.865120, 1.207435, 1.883536",\
+ "1.086888, 1.260498, 1.453339, 1.802428, 2.497703",\
+ "0.268666, 0.450068, 0.646865, 0.964364, 1.579007",\
+ "0.283499, 0.464472, 0.662480, 0.983186, 1.604617",\
+ "0.308707, 0.488754, 0.688052, 1.013199, 1.644350",\
+ "0.581459, 0.756590, 0.952401, 1.294740, 1.970890",\
+ "1.174296, 1.347816, 1.540620, 1.889733, 2.585056",\
+ "0.349534, 0.530400, 0.726892, 1.044393, 1.659039",\
+ "0.364365, 0.544804, 0.742507, 1.063215, 1.684648",\
+ "0.389566, 0.569086, 0.768079, 1.093227, 1.724382",\
+ "0.662286, 0.836922, 1.032428, 1.374768, 2.050921",\
+ "1.255114, 1.428148, 1.620646, 1.969761, 2.665088",\
+ "0.407230, 0.588238, 0.784630, 1.101888, 1.716185",\
+ "0.422055, 0.602641, 0.800248, 1.120718, 1.741811",\
+ "0.447245, 0.626919, 0.825823, 1.150743, 1.781568",\
+ "0.719903, 0.894737, 1.090165, 1.432339, 2.108216",\
+ "1.312710, 1.485957, 1.678376, 2.027355, 2.722429",\
+ "0.710204, 0.893608, 1.088293, 1.405116, 2.018565",\
+ "0.724980, 0.907999, 1.103911, 1.423953, 2.044210",\
+ "0.750065, 0.932253, 1.129487, 1.453987, 2.083996",\
+ "1.022164, 1.199940, 1.393827, 1.735630, 2.410775",\
+ "1.614788, 1.791118, 1.982037, 2.330666, 3.025044");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.126844, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149772, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195024, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194128, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126844, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149772, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195024, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194128, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126849, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149775, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195028, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194129, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126859, 0.127607, 0.133449, 0.151680, 0.191274",\
+ "0.149782, 0.150311, 0.154660, 0.170585, 0.205820",\
+ "0.195035, 0.195584, 0.198477, 0.210651, 0.237965",\
+ "0.816155, 0.816256, 0.816260, 0.817810, 0.821601",\
+ "2.194133, 2.194406, 2.194418, 2.195898, 2.199521",\
+ "0.126945, 0.127627, 0.133451, 0.151721, 0.191389",\
+ "0.149843, 0.150326, 0.154662, 0.170622, 0.205922",\
+ "0.195098, 0.195599, 0.198478, 0.210679, 0.238045",\
+ "0.816166, 0.816259, 0.816260, 0.817813, 0.821612",\
+ "2.194165, 2.194413, 2.194418, 2.195902, 2.199532");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.117102, 0.379947, 0.573156, 0.882174, 1.479232",\
+ "0.126091, 0.389068, 0.582472, 0.892519, 1.491929",\
+ "0.141699, 0.404157, 0.597820, 0.909153, 1.511489",\
+ "0.306945, 0.562483, 0.755606, 1.068523, 1.675209",\
+ "0.649757, 0.897030, 1.089718, 1.401787, 2.006775",\
+ "0.205481, 0.467265, 0.660437, 0.969479, 1.566586",\
+ "0.214473, 0.476386, 0.669753, 0.979824, 1.579283",\
+ "0.230076, 0.491475, 0.685100, 0.996458, 1.598842",\
+ "0.395245, 0.649801, 0.842887, 1.155828, 1.762562",\
+ "0.738017, 0.984348, 1.176999, 1.489092, 2.094129",\
+ "0.294834, 0.547598, 0.740463, 1.049507, 1.646617",\
+ "0.303840, 0.556719, 0.749780, 1.059852, 1.659314",\
+ "0.319425, 0.571807, 0.765127, 1.076486, 1.678874",\
+ "0.484368, 0.730134, 0.922914, 1.235856, 1.842594",\
+ "0.827025, 1.064680, 1.257025, 1.569121, 2.174160",\
+ "0.358511, 0.605438, 0.798193, 1.106982, 1.703722",\
+ "0.367529, 0.614560, 0.807510, 1.117329, 1.716424",\
+ "0.383098, 0.629648, 0.822858, 1.133967, 1.735991",\
+ "0.547830, 0.787974, 0.980643, 1.293342, 1.899721",\
+ "0.890379, 1.122520, 1.314754, 1.626604, 2.231284",\
+ "0.695115, 0.910825, 1.101854, 1.410191, 2.006050",\
+ "0.704209, 0.919948, 1.111171, 1.420541, 2.018759",\
+ "0.719674, 0.935035, 1.126519, 1.437182, 2.038335",\
+ "0.883062, 1.093358, 1.284304, 1.596561, 2.202077",\
+ "1.224926, 1.427904, 1.618415, 1.929822, 2.533635");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.044794, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053408, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.044917, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053471, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.045280, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053656, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.045619, 0.049410, 0.054613, 0.068702, 0.098855",\
+ "0.053828, 0.055759, 0.059110, 0.072274, 0.101681",\
+ "0.075784, 0.075784, 0.078001, 0.088634, 0.112740",\
+ "0.368045, 0.368045, 0.368835, 0.370660, 0.374443",\
+ "1.001402, 1.001402, 1.001777, 1.002639, 1.004426",\
+ "0.047777, 0.049532, 0.054615, 0.068733, 0.098943",\
+ "0.054927, 0.055821, 0.059111, 0.072304, 0.101766",\
+ "0.075784, 0.075784, 0.078002, 0.088659, 0.112810",\
+ "0.368045, 0.368045, 0.368835, 0.370664, 0.374454",\
+ "1.001402, 1.001402, 1.001777, 1.002641, 1.004432");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2316*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.098350, 0.258117, 0.412724, 0.663632, 1.151052",\
+ "0.111306, 0.279646, 0.445289, 0.710490, 1.223646",\
+ "0.138089, 0.311436, 0.490658, 0.774246, 1.320793",\
+ "0.424991, 0.637508, 0.825514, 1.153509, 1.801342",\
+ "1.020536, 1.249709, 1.439386, 1.764952, 2.405506",\
+ "0.185759, 0.345435, 0.500005, 0.750937, 1.238405",\
+ "0.198715, 0.366964, 0.532570, 0.797795, 1.310999",\
+ "0.225498, 0.398754, 0.577939, 0.861551, 1.408146",\
+ "0.513280, 0.724826, 0.912795, 1.240814, 1.888696",\
+ "1.108868, 1.337027, 1.526667, 1.852257, 2.492859",\
+ "0.266486, 0.425768, 0.580032, 0.830966, 1.318437",\
+ "0.279498, 0.447297, 0.612597, 0.877824, 1.391031",\
+ "0.306314, 0.479087, 0.657966, 0.941579, 1.488178",\
+ "0.602279, 0.805159, 0.992822, 1.320843, 1.968727",\
+ "1.197992, 1.417360, 1.606694, 1.932286, 2.572891",\
+ "0.323899, 0.483524, 0.637672, 0.888307, 1.375276",\
+ "0.337018, 0.505085, 0.670262, 0.935196, 1.447932",\
+ "0.363897, 0.536894, 0.715662, 0.998992, 1.545160",\
+ "0.665584, 0.862970, 1.050539, 1.378378, 2.025954",\
+ "1.261413, 1.475185, 1.664415, 1.989812, 2.630099",\
+ "0.624253, 0.788317, 0.941319, 1.191402, 1.677284",\
+ "0.638351, 0.810106, 0.973913, 1.238318, 1.750015",\
+ "0.665802, 0.842047, 1.019319, 1.302149, 1.847340",\
+ "0.990853, 1.168154, 1.354199, 1.681640, 2.328429",\
+ "1.596393, 1.780461, 1.968075, 2.293067, 2.932554");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.028418, 0.053830, 0.061535, 0.076150, 0.106328",\
+ "0.053925, 0.080459, 0.084933, 0.098494, 0.128975",\
+ "0.117469, 0.123739, 0.136658, 0.151484, 0.176772",\
+ "0.813025, 0.813025, 0.813025, 0.814972, 0.819748",\
+ "2.191689, 2.192946, 2.194005, 2.200700, 2.216248",\
+ "0.028418, 0.053830, 0.061535, 0.076150, 0.106328",\
+ "0.053925, 0.080459, 0.084933, 0.098494, 0.128975",\
+ "0.117469, 0.123739, 0.136658, 0.151484, 0.176772",\
+ "0.813025, 0.813025, 0.813025, 0.814972, 0.819748",\
+ "2.191723, 2.192946, 2.194005, 2.200700, 2.216248",\
+ "0.028584, 0.053830, 0.061535, 0.076150, 0.106328",\
+ "0.054098, 0.080459, 0.084933, 0.098494, 0.128975",\
+ "0.117510, 0.123739, 0.136658, 0.151484, 0.176772",\
+ "0.813025, 0.813025, 0.813025, 0.814972, 0.819748",\
+ "2.191823, 2.192946, 2.194005, 2.200700, 2.216248",\
+ "0.028905, 0.053925, 0.061551, 0.076187, 0.106401",\
+ "0.054433, 0.080559, 0.084941, 0.098531, 0.129049",\
+ "0.117589, 0.123763, 0.136688, 0.151514, 0.176833",\
+ "0.813025, 0.813025, 0.813025, 0.814978, 0.819760",\
+ "2.191915, 2.192951, 2.194008, 2.200718, 2.216285",\
+ "0.031805, 0.054598, 0.061553, 0.076218, 0.106489",\
+ "0.057461, 0.081261, 0.084942, 0.098563, 0.129138",\
+ "0.118304, 0.123929, 0.136693, 0.151541, 0.176907",\
+ "0.813025, 0.813025, 0.813025, 0.814982, 0.819773",\
+ "2.192503, 2.192984, 2.194008, 2.200735, 2.216331");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.069370, 0.283193, 0.491815, 0.800919, 1.367462",\
+ "0.075632, 0.304498, 0.517002, 0.813952, 1.385072",\
+ "0.088234, 0.333476, 0.530104, 0.830255, 1.407585",\
+ "0.254611, 0.476253, 0.671078, 0.977854, 1.568006",\
+ "0.593217, 0.801399, 0.995520, 1.304053, 1.898975",\
+ "0.156902, 0.370515, 0.579033, 0.888224, 1.454816",\
+ "0.163435, 0.391863, 0.604283, 0.901257, 1.472425",\
+ "0.176298, 0.420901, 0.617385, 0.917560, 1.494938",\
+ "0.342791, 0.563572, 0.758359, 1.065159, 1.655359",\
+ "0.681370, 0.888717, 1.082801, 1.391358, 1.986328",\
+ "0.243698, 0.458976, 0.666990, 0.968253, 1.534847",\
+ "0.251018, 0.480422, 0.684310, 0.981285, 1.552457",\
+ "0.264645, 0.506852, 0.697412, 0.997588, 1.574970",\
+ "0.431471, 0.643905, 0.838386, 1.145188, 1.735391",\
+ "0.769972, 0.969050, 1.162828, 1.471387, 2.066360",\
+ "0.304960, 0.523854, 0.731112, 1.025689, 1.591878",\
+ "0.313009, 0.545444, 0.742029, 1.038728, 1.609498",\
+ "0.327344, 0.564695, 0.755135, 1.055038, 1.632026",\
+ "0.494481, 0.701749, 0.896119, 1.202653, 1.792478",\
+ "0.832908, 1.026881, 1.220559, 1.528858, 2.123458",\
+ "0.626203, 0.851949, 1.035624, 1.328867, 1.894116",\
+ "0.638895, 0.858887, 1.045689, 1.341910, 1.911750",\
+ "0.657734, 0.870103, 1.058796, 1.358227, 1.934296",\
+ "0.821978, 1.007166, 1.199781, 1.505856, 2.094786",\
+ "1.150367, 1.332198, 1.524221, 1.832065, 2.425780");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.013843, 0.057624, 0.075770, 0.080313, 0.107471",\
+ "0.025205, 0.064739, 0.067587, 0.083073, 0.115488",\
+ "0.053856, 0.083413, 0.086593, 0.102413, 0.134994",\
+ "0.368605, 0.368605, 0.369807, 0.373448, 0.381327",\
+ "1.000406, 1.000406, 1.002130, 1.003829, 1.006481",\
+ "0.014774, 0.057698, 0.075841, 0.080313, 0.107471",\
+ "0.026141, 0.064772, 0.067587, 0.083073, 0.115488",\
+ "0.054523, 0.083449, 0.086593, 0.102413, 0.134994",\
+ "0.368605, 0.368605, 0.369807, 0.373448, 0.381327",\
+ "1.000406, 1.000406, 1.002130, 1.003829, 1.006481",\
+ "0.017481, 0.057867, 0.075842, 0.080313, 0.107471",\
+ "0.028863, 0.064847, 0.067587, 0.083073, 0.115488",\
+ "0.056460, 0.078305, 0.086593, 0.102413, 0.134994",\
+ "0.368605, 0.368605, 0.369807, 0.373448, 0.381327",\
+ "1.000406, 1.000406, 1.002130, 1.003829, 1.006481",\
+ "0.019992, 0.058113, 0.075846, 0.080346, 0.107536",\
+ "0.031388, 0.064955, 0.067602, 0.083112, 0.115566",\
+ "0.058257, 0.078397, 0.086610, 0.102452, 0.135073",\
+ "0.368605, 0.368605, 0.369809, 0.373458, 0.381346",\
+ "1.000406, 1.000406, 1.002134, 1.003832, 1.006488",\
+ "0.035969, 0.049040, 0.064123, 0.080374, 0.107616",\
+ "0.047452, 0.060595, 0.067604, 0.083146, 0.115661",\
+ "0.069690, 0.079044, 0.086613, 0.102486, 0.135168",\
+ "0.368605, 0.368605, 0.369810, 0.373466, 0.381369",\
+ "1.000406, 1.000406, 1.002134, 1.003835, 1.006495");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2285*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.431291, 0.619330, 0.796158, 1.080125, 1.629897",\
+ "0.450507, 0.638547, 0.815375, 1.099342, 1.649114",\
+ "0.482156, 0.670196, 0.847024, 1.130990, 1.680763",\
+ "0.772737, 0.960778, 1.137606, 1.421573, 1.971346",\
+ "1.366740, 1.554780, 1.731609, 2.015576, 2.565349",\
+ "0.519710, 0.706648, 0.883439, 1.167430, 1.717251",\
+ "0.538927, 0.725865, 0.902656, 1.186647, 1.736468",\
+ "0.570576, 0.757514, 0.934305, 1.218296, 1.768116",\
+ "0.861157, 1.048096, 1.224887, 1.508878, 2.058700",\
+ "1.455159, 1.642098, 1.818890, 2.102881, 2.652703",\
+ "0.609345, 0.786979, 0.963466, 1.247459, 1.797282",\
+ "0.628561, 0.806196, 0.982683, 1.266675, 1.816499",\
+ "0.660210, 0.837845, 1.014332, 1.298324, 1.848148",\
+ "0.950791, 1.128427, 1.304914, 1.588907, 2.138731",\
+ "1.544794, 1.722429, 1.898916, 2.182909, 2.732734",\
+ "0.668670, 0.844800, 1.021158, 1.304875, 1.854273",\
+ "0.687887, 0.864017, 1.040374, 1.324092, 1.873490",\
+ "0.719535, 0.895665, 1.072023, 1.355741, 1.905138",\
+ "1.010116, 1.186247, 1.362605, 1.646324, 2.195722",\
+ "1.604119, 1.780250, 1.956608, 2.240326, 2.789725",\
+ "0.971362, 1.150042, 1.324812, 1.608036, 2.156464",\
+ "0.990578, 1.169258, 1.344029, 1.627252, 2.175681",\
+ "1.022227, 1.200907, 1.375677, 1.658901, 2.207329",\
+ "1.312808, 1.491489, 1.666260, 1.949484, 2.497913",\
+ "1.906811, 2.085492, 2.260262, 2.543486, 3.091916");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.115194, 0.115201, 0.115205, 0.115209, 0.115217",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817534, 0.817534",\
+ "2.193374, 2.193372, 2.193371, 2.193370, 2.193367",\
+ "0.115194, 0.115201, 0.115205, 0.115209, 0.115217",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817534, 0.817534",\
+ "2.193374, 2.193372, 2.193371, 2.193370, 2.193367",\
+ "0.115194, 0.115201, 0.115205, 0.115209, 0.115217",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817534, 0.817534",\
+ "2.193374, 2.193372, 2.193371, 2.193370, 2.193367",\
+ "0.115194, 0.115201, 0.115205, 0.115209, 0.115217",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817534, 0.817534",\
+ "2.193374, 2.193372, 2.193371, 2.193370, 2.193367",\
+ "0.115195, 0.115202, 0.115205, 0.115209, 0.115217",\
+ "0.141976, 0.141976, 0.141976, 0.141975, 0.141974",\
+ "0.190577, 0.190577, 0.190577, 0.190577, 0.190576",\
+ "0.817535, 0.817535, 0.817535, 0.817534, 0.817534",\
+ "2.193374, 2.193372, 2.193371, 2.193370, 2.193367");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.443689, 0.631730, 0.808559, 1.092526, 1.642300",\
+ "0.451495, 0.639537, 0.816365, 1.100333, 1.650107",\
+ "0.464877, 0.652918, 0.829747, 1.113715, 1.663489",\
+ "0.616830, 0.804870, 0.981699, 1.265666, 1.815439",\
+ "0.950269, 1.138309, 1.315137, 1.599104, 2.148877",\
+ "0.532108, 0.719048, 0.895840, 1.179832, 1.729654",\
+ "0.539915, 0.726855, 0.903646, 1.187638, 1.737461",\
+ "0.553297, 0.740236, 0.917028, 1.201020, 1.750842",\
+ "0.705249, 0.892188, 1.068980, 1.352971, 1.902793",\
+ "1.038688, 1.225627, 1.402418, 1.686409, 2.236230",\
+ "0.621743, 0.799379, 0.975867, 1.259860, 1.809685",\
+ "0.629550, 0.807186, 0.983673, 1.267667, 1.817492",\
+ "0.642931, 0.820567, 0.997055, 1.281049, 1.830874",\
+ "0.794884, 0.972519, 1.149006, 1.432999, 1.982824",\
+ "1.128323, 1.305958, 1.482445, 1.766438, 2.316262",\
+ "0.681068, 0.857200, 1.033558, 1.317277, 1.866676",\
+ "0.688875, 0.865006, 1.041365, 1.325083, 1.874483",\
+ "0.702257, 0.878388, 1.054746, 1.338465, 1.887864",\
+ "0.854209, 1.030340, 1.206698, 1.490416, 2.039815",\
+ "1.187648, 1.363779, 1.540136, 1.823854, 2.373252",\
+ "0.983760, 1.162441, 1.337212, 1.620437, 2.168867",\
+ "0.991567, 1.170248, 1.345019, 1.628244, 2.176674",\
+ "1.004948, 1.183630, 1.358401, 1.641625, 2.190056",\
+ "1.156901, 1.335582, 1.510352, 1.793576, 2.342006",\
+ "1.490340, 1.669020, 1.843791, 2.127015, 2.675444");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.049719, 0.049719, 0.049720, 0.049720, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049720, 0.049720, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049720, 0.049720, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049720, 0.049720, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263",\
+ "0.049719, 0.049719, 0.049720, 0.049720, 0.049720",\
+ "0.055444, 0.055444, 0.055444, 0.055444, 0.055444",\
+ "0.075302, 0.075302, 0.075302, 0.075302, 0.075302",\
+ "0.368591, 0.368591, 0.368591, 0.368591, 0.368591",\
+ "1.002263, 1.002263, 1.002263, 1.002263, 1.002263");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[7]_redg_min_2529*/
+
+} /* end of pin tl_o[7] */
+
+pin("tl_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.154883 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.555603, 0.806076, 1.084885, 1.584808, 2.584653",\
+ "0.589996, 0.840470, 1.119283, 1.619221, 2.619098",\
+ "0.661233, 0.911707, 1.190508, 1.690407, 2.690205",\
+ "0.915400, 1.165873, 1.444750, 1.944912, 2.945236",\
+ "1.840005, 2.090481, 2.369305, 2.869275, 3.869217",\
+ "0.643016, 0.893581, 1.172550, 1.671522, 2.670587",\
+ "0.677409, 0.927975, 1.206949, 1.705936, 2.705032",\
+ "0.748646, 0.999212, 1.278174, 1.777122, 2.776139",\
+ "1.002812, 1.253378, 1.532416, 2.031627, 3.031170",\
+ "1.927417, 2.177986, 2.456970, 2.955990, 3.955151",\
+ "0.723872, 0.982469, 1.260517, 1.759145, 2.757542",\
+ "0.758265, 1.016862, 1.294915, 1.793559, 2.791987",\
+ "0.829503, 1.088099, 1.366140, 1.864744, 2.863094",\
+ "1.083669, 1.342266, 1.620383, 2.119249, 3.118125",\
+ "2.008274, 2.266873, 2.544936, 3.043612, 4.042106",\
+ "0.781752, 1.047969, 1.324661, 1.823058, 2.821051",\
+ "0.816145, 1.082362, 1.359060, 1.857472, 2.855496",\
+ "0.887382, 1.153599, 1.430285, 1.928658, 2.926603",\
+ "1.141549, 1.407765, 1.684527, 2.183163, 3.181634",\
+ "2.066154, 2.332373, 2.609081, 3.107526, 4.105615",\
+ "1.114573, 1.410746, 1.676844, 2.172535, 3.166507",\
+ "1.148966, 1.445139, 1.711242, 2.206949, 3.200952",\
+ "1.220203, 1.516376, 1.782467, 2.278135, 3.272059",\
+ "1.474370, 1.770542, 2.036712, 2.532641, 3.527090",\
+ "2.398975, 2.695150, 2.961264, 3.457003, 4.451071");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466091, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466100, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465199, 2.466100, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083750, 0.083751, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692766, 0.692810, 0.692941, 0.693203",\
+ "2.465173, 2.465200, 2.466101, 2.469060, 2.474999",\
+ "0.034112, 0.034113, 0.034114, 0.034119, 0.034130",\
+ "0.083751, 0.083752, 0.083761, 0.083790, 0.083849",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692761, 0.692768, 0.692812, 0.692941, 0.693203",\
+ "2.465173, 2.465210, 2.466131, 2.469072, 2.474999");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.587400, 0.837877, 1.116297, 1.614862, 2.611990",\
+ "0.629152, 0.879628, 1.158099, 1.656840, 2.654322",\
+ "0.689082, 0.939558, 1.218080, 1.716996, 2.714829",\
+ "0.857199, 1.107675, 1.386266, 1.885427, 2.883749",\
+ "1.439229, 1.689714, 1.968424, 2.467974, 3.467073",\
+ "0.674813, 0.925382, 1.203958, 1.701576, 2.697924",\
+ "0.716564, 0.967133, 1.245761, 1.743555, 2.740255",\
+ "0.776495, 1.027063, 1.305742, 1.803711, 2.800763",\
+ "0.944611, 1.195180, 1.473930, 1.972142, 2.969683",\
+ "1.526642, 1.777219, 2.056088, 2.554689, 3.553007",\
+ "0.755670, 1.014269, 1.291924, 1.789199, 2.784879",\
+ "0.797421, 1.056020, 1.333727, 1.831177, 2.827210",\
+ "0.857352, 1.115951, 1.393708, 1.891333, 2.887718",\
+ "1.025468, 1.284067, 1.561896, 2.059765, 3.056638",\
+ "1.607499, 1.866107, 2.144055, 2.642311, 3.639962",\
+ "0.813550, 1.079769, 1.356069, 1.853112, 2.848388",\
+ "0.855301, 1.121520, 1.397871, 1.895091, 2.890719",\
+ "0.915231, 1.181451, 1.457853, 1.955247, 2.951227",\
+ "1.083348, 1.349567, 1.626040, 2.123678, 3.120147",\
+ "1.665379, 1.931606, 2.208199, 2.706225, 3.703471",\
+ "1.146371, 1.442547, 1.708238, 2.202584, 3.193844",\
+ "1.188122, 1.484298, 1.750042, 2.244563, 3.236176",\
+ "1.248053, 1.544228, 1.810025, 2.304720, 3.296683",\
+ "1.416169, 1.712345, 1.978215, 2.473152, 3.465603",\
+ "1.998202, 2.294386, 2.560378, 3.055700, 4.048927");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045875, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155803, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195",\
+ "0.045876, 0.045874, 0.045861, 0.045821, 0.045741",\
+ "0.079914, 0.079913, 0.079913, 0.079910, 0.079906",\
+ "0.155804, 0.155802, 0.155792, 0.155761, 0.155698",\
+ "0.431307, 0.431307, 0.431304, 0.431297, 0.431282",\
+ "1.494119, 1.494120, 1.494128, 1.494150, 1.494195");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2615*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.674108, 0.912583, 1.208888, 1.707377, 2.704357",\
+ "0.708540, 0.947015, 1.243320, 1.741811, 2.738792",\
+ "0.779534, 1.018009, 1.314315, 1.812807, 2.809791",\
+ "1.033699, 1.272174, 1.568481, 2.066974, 3.063961",\
+ "1.958883, 2.197359, 2.493670, 2.992175, 3.989184",\
+ "0.761549, 1.000192, 1.296551, 1.794093, 2.790291",\
+ "0.795981, 1.034624, 1.330983, 1.828526, 2.824726",\
+ "0.866976, 1.105618, 1.401978, 1.899523, 2.895725",\
+ "1.121141, 1.359783, 1.656144, 2.153690, 3.149894",\
+ "2.046324, 2.284967, 2.581333, 3.078891, 4.075118",\
+ "0.842432, 1.089339, 1.384517, 1.881716, 2.877246",\
+ "0.876864, 1.123771, 1.418950, 1.916149, 2.911681",\
+ "0.947859, 1.194765, 1.489945, 1.987146, 2.982680",\
+ "1.202024, 1.448930, 1.744111, 2.241313, 3.236850",\
+ "2.127208, 2.374115, 2.669300, 3.166513, 4.162073",\
+ "0.900159, 1.155216, 1.448662, 1.945630, 2.940755",\
+ "0.934591, 1.189648, 1.483094, 1.980063, 2.975190",\
+ "1.005585, 1.260643, 1.554090, 2.051059, 3.046189",\
+ "1.259750, 1.514808, 1.808255, 2.305226, 3.300359",\
+ "2.184934, 2.439992, 2.733444, 3.230427, 4.225582",\
+ "1.202901, 1.522357, 1.800832, 2.295105, 3.286211",\
+ "1.237333, 1.556789, 1.835264, 2.329538, 3.320646",\
+ "1.308327, 1.627784, 1.906260, 2.400534, 3.391645",\
+ "1.562492, 1.881949, 2.160425, 2.654701, 3.645814",\
+ "2.487676, 2.807133, 3.085615, 3.579902, 4.571038");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.034241, 0.034241, 0.034241, 0.034244, 0.034249",\
+ "0.083584, 0.083584, 0.083586, 0.083591, 0.083602",\
+ "0.208067, 0.208067, 0.208069, 0.208073, 0.208081",\
+ "0.693279, 0.693282, 0.693285, 0.693285, 0.693285",\
+ "2.470759, 2.470761, 2.470771, 2.470795, 2.470844",\
+ "0.034241, 0.034241, 0.034241, 0.034244, 0.034249",\
+ "0.083584, 0.083584, 0.083586, 0.083591, 0.083602",\
+ "0.208067, 0.208067, 0.208069, 0.208073, 0.208081",\
+ "0.693279, 0.693282, 0.693285, 0.693285, 0.693285",\
+ "2.470759, 2.470761, 2.470771, 2.470795, 2.470844",\
+ "0.034241, 0.034241, 0.034241, 0.034244, 0.034249",\
+ "0.083584, 0.083584, 0.083586, 0.083591, 0.083602",\
+ "0.208067, 0.208067, 0.208069, 0.208073, 0.208081",\
+ "0.693279, 0.693282, 0.693285, 0.693285, 0.693285",\
+ "2.470759, 2.470761, 2.470771, 2.470795, 2.470844",\
+ "0.034241, 0.034241, 0.034241, 0.034244, 0.034249",\
+ "0.083584, 0.083584, 0.083586, 0.083591, 0.083602",\
+ "0.208067, 0.208067, 0.208069, 0.208073, 0.208081",\
+ "0.693279, 0.693282, 0.693285, 0.693285, 0.693285",\
+ "2.470759, 2.470761, 2.470771, 2.470795, 2.470844",\
+ "0.034241, 0.034241, 0.034241, 0.034244, 0.034249",\
+ "0.083584, 0.083584, 0.083586, 0.083591, 0.083602",\
+ "0.208067, 0.208067, 0.208069, 0.208073, 0.208081",\
+ "0.693279, 0.693283, 0.693285, 0.693285, 0.693285",\
+ "2.470759, 2.470762, 2.470771, 2.470795, 2.470844");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.701144, 0.939619, 1.235924, 1.734413, 2.731392",\
+ "0.743441, 0.981916, 1.278220, 1.776710, 2.773689",\
+ "0.804003, 1.042478, 1.338783, 1.837273, 2.834251",\
+ "0.972934, 1.211409, 1.507714, 2.006203, 3.003182",\
+ "1.556185, 1.794660, 2.090965, 2.589454, 3.586433",\
+ "0.788586, 1.027228, 1.323587, 1.821129, 2.817326",\
+ "0.830882, 1.069525, 1.365883, 1.863425, 2.859622",\
+ "0.891445, 1.130087, 1.426446, 1.923988, 2.920185",\
+ "1.060375, 1.299018, 1.595377, 2.092919, 3.089116",\
+ "1.643626, 1.882269, 2.178628, 2.676170, 3.672367",\
+ "0.869469, 1.116375, 1.411554, 1.908752, 2.904281",\
+ "0.911765, 1.158672, 1.453850, 1.951048, 2.946578",\
+ "0.972328, 1.219234, 1.514413, 2.011611, 3.007140",\
+ "1.141259, 1.388165, 1.683344, 2.180542, 3.176071",\
+ "1.724510, 1.971416, 2.266594, 2.763793, 3.759322",\
+ "0.927195, 1.182252, 1.475698, 1.972666, 2.967790",\
+ "0.969492, 1.224549, 1.517995, 2.014962, 3.010087",\
+ "1.030054, 1.285111, 1.578557, 2.075525, 3.070649",\
+ "1.198985, 1.454042, 1.747488, 2.244456, 3.239580",\
+ "1.782236, 2.037293, 2.330739, 2.827706, 3.822831",\
+ "1.229937, 1.549393, 1.827868, 2.322140, 3.313246",\
+ "1.272233, 1.591690, 1.870165, 2.364437, 3.355543",\
+ "1.332796, 1.652252, 1.930727, 2.424999, 3.416105",\
+ "1.501727, 1.821183, 2.099658, 2.593930, 3.585036",\
+ "2.084978, 2.404434, 2.682909, 3.177181, 4.168287");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.045859, 0.045859, 0.045858, 0.045858, 0.045857",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155685, 0.155685, 0.155685, 0.155685",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498063, 1.498063, 1.498062",\
+ "0.045859, 0.045859, 0.045858, 0.045858, 0.045857",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155685, 0.155685, 0.155685, 0.155685",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498063, 1.498063, 1.498062",\
+ "0.045859, 0.045859, 0.045858, 0.045858, 0.045857",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155685, 0.155685, 0.155685, 0.155685",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498063, 1.498063, 1.498062",\
+ "0.045859, 0.045859, 0.045858, 0.045858, 0.045857",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155685, 0.155685, 0.155685, 0.155685",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498063, 1.498063, 1.498062",\
+ "0.045859, 0.045859, 0.045858, 0.045858, 0.045857",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155685, 0.155685, 0.155685, 0.155685",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498063, 1.498063, 1.498063, 1.498062");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2662*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.445529, 0.709512, 0.994214, 1.487610, 2.474404",\
+ "0.486774, 0.750744, 1.035473, 1.529006, 2.516072",\
+ "0.562671, 0.826637, 1.111362, 1.604919, 2.592032",\
+ "0.817960, 1.082041, 1.366717, 1.860078, 2.846800",\
+ "1.742890, 2.007130, 2.292228, 2.786041, 3.773666",\
+ "0.532938, 0.797075, 1.081856, 1.574325, 2.560338",\
+ "0.574183, 0.838307, 1.123116, 1.615720, 2.602005",\
+ "0.650079, 0.914199, 1.199006, 1.691633, 2.677966",\
+ "0.905369, 1.169603, 1.454359, 1.946792, 2.932734",\
+ "1.830298, 2.094694, 2.379872, 2.872755, 3.859600",\
+ "0.616182, 0.886074, 1.169821, 1.661946, 2.647293",\
+ "0.657426, 0.927306, 1.211081, 1.703342, 2.688961",\
+ "0.733323, 1.003198, 1.286970, 1.779255, 2.764921",\
+ "0.988623, 1.258602, 1.542324, 2.034413, 3.019689",\
+ "1.913549, 2.183697, 2.467836, 2.960376, 3.946555",\
+ "0.679766, 0.951735, 1.233965, 1.725859, 2.710802",\
+ "0.721010, 0.992966, 1.275225, 1.767255, 2.752470",\
+ "0.796907, 1.068859, 1.351114, 1.843168, 2.828430",\
+ "1.052215, 1.324263, 1.606468, 2.098326, 3.083198",\
+ "1.977138, 2.249364, 2.531980, 3.024289, 4.010064",\
+ "1.015779, 1.316457, 1.586079, 2.075305, 3.056258",\
+ "1.057021, 1.357686, 1.627340, 2.116701, 3.097925",\
+ "1.132920, 1.433575, 1.703230, 2.192614, 3.173886",\
+ "1.388277, 1.688981, 1.958581, 2.447772, 3.428654",\
+ "2.313181, 2.614154, 2.884099, 3.373737, 4.355520");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.034901, 0.034921, 0.035051, 0.035499, 0.036393",\
+ "0.083287, 0.083291, 0.083337, 0.083496, 0.083813",\
+ "0.208547, 0.208578, 0.208621, 0.208624, 0.208631",\
+ "0.692555, 0.692580, 0.692833, 0.693579, 0.695072",\
+ "2.479533, 2.479533, 2.479533, 2.479533, 2.479533",\
+ "0.034901, 0.034921, 0.035053, 0.035499, 0.036393",\
+ "0.083287, 0.083291, 0.083337, 0.083496, 0.083813",\
+ "0.208547, 0.208579, 0.208621, 0.208624, 0.208631",\
+ "0.692555, 0.692580, 0.692835, 0.693579, 0.695072",\
+ "2.479533, 2.479533, 2.479533, 2.479533, 2.479533",\
+ "0.034903, 0.034921, 0.035053, 0.035499, 0.036393",\
+ "0.083287, 0.083291, 0.083337, 0.083496, 0.083813",\
+ "0.208547, 0.208579, 0.208621, 0.208624, 0.208631",\
+ "0.692555, 0.692581, 0.692835, 0.693579, 0.695072",\
+ "2.479533, 2.479533, 2.479533, 2.479533, 2.479533",\
+ "0.034905, 0.034921, 0.035053, 0.035499, 0.036393",\
+ "0.083287, 0.083291, 0.083337, 0.083496, 0.083813",\
+ "0.208547, 0.208580, 0.208621, 0.208624, 0.208631",\
+ "0.692555, 0.692581, 0.692835, 0.693579, 0.695072",\
+ "2.479533, 2.479533, 2.479533, 2.479533, 2.479533",\
+ "0.034914, 0.034921, 0.035057, 0.035500, 0.036393",\
+ "0.083289, 0.083291, 0.083339, 0.083496, 0.083813",\
+ "0.208549, 0.208590, 0.208621, 0.208624, 0.208631",\
+ "0.692555, 0.692590, 0.692843, 0.693582, 0.695072",\
+ "2.479533, 2.479533, 2.479533, 2.479533, 2.479533");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.491807, 0.755750, 1.040134, 1.532324, 2.516704",\
+ "0.532692, 0.796638, 1.081002, 1.573128, 2.557379",\
+ "0.593088, 0.857084, 1.141423, 1.633441, 2.617476",\
+ "0.762034, 1.026038, 1.310351, 1.802328, 2.786283",\
+ "1.345402, 1.609523, 1.893616, 2.385030, 3.367858",\
+ "0.579215, 0.843313, 1.127773, 1.619038, 2.602638",\
+ "0.620100, 0.884201, 1.168641, 1.659842, 2.643312",\
+ "0.680497, 0.944646, 1.229061, 1.720155, 2.703410",\
+ "0.849443, 1.113601, 1.397989, 1.889042, 2.872216",\
+ "1.432811, 1.697085, 1.981253, 2.471745, 3.453792",\
+ "0.662453, 0.932313, 1.215738, 1.706660, 2.689593",\
+ "0.703338, 0.973200, 1.256606, 1.747463, 2.730268",\
+ "0.763739, 1.033646, 1.317026, 1.807776, 2.790365",\
+ "0.932687, 1.202600, 1.485954, 1.976664, 2.959171",\
+ "1.516071, 1.786084, 2.069218, 2.559366, 3.540747",\
+ "0.726033, 0.997974, 1.279881, 1.770573, 2.753102",\
+ "0.766918, 1.038862, 1.320749, 1.811376, 2.793777",\
+ "0.827322, 1.099308, 1.381169, 1.871690, 2.853874",\
+ "0.996272, 1.268262, 1.550097, 2.040577, 3.022680",\
+ "1.579666, 1.851744, 2.133361, 2.623279, 3.604256",\
+ "1.062019, 1.362705, 1.631983, 2.120014, 3.098558",\
+ "1.102906, 1.403592, 1.672850, 2.160817, 3.139233",\
+ "1.163330, 1.464039, 1.733269, 2.221130, 3.199330",\
+ "1.332287, 1.632990, 1.902197, 2.390017, 3.368136",\
+ "1.915751, 2.216458, 2.485455, 2.972717, 3.949712");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.042675, 0.042675, 0.042652, 0.042575, 0.042419",\
+ "0.078931, 0.078931, 0.078931, 0.078931, 0.078931",\
+ "0.155291, 0.155291, 0.155277, 0.155229, 0.155132",\
+ "0.431055, 0.431055, 0.431011, 0.430859, 0.430555",\
+ "1.494840, 1.494148, 1.493909, 1.493909, 1.493909",\
+ "0.042675, 0.042675, 0.042652, 0.042575, 0.042419",\
+ "0.078931, 0.078931, 0.078931, 0.078931, 0.078931",\
+ "0.155291, 0.155291, 0.155277, 0.155229, 0.155132",\
+ "0.431055, 0.431055, 0.431011, 0.430859, 0.430555",\
+ "1.494840, 1.494147, 1.493909, 1.493909, 1.493909",\
+ "0.042675, 0.042675, 0.042652, 0.042575, 0.042419",\
+ "0.078931, 0.078931, 0.078931, 0.078931, 0.078931",\
+ "0.155291, 0.155291, 0.155277, 0.155229, 0.155132",\
+ "0.431055, 0.431055, 0.431011, 0.430859, 0.430555",\
+ "1.494787, 1.494143, 1.493909, 1.493909, 1.493909",\
+ "0.042675, 0.042675, 0.042652, 0.042575, 0.042419",\
+ "0.078931, 0.078931, 0.078931, 0.078931, 0.078931",\
+ "0.155291, 0.155291, 0.155277, 0.155229, 0.155132",\
+ "0.431055, 0.431055, 0.431011, 0.430859, 0.430555",\
+ "1.494750, 1.494138, 1.493909, 1.493909, 1.493909",\
+ "0.042675, 0.042675, 0.042651, 0.042574, 0.042419",\
+ "0.078931, 0.078931, 0.078931, 0.078931, 0.078931",\
+ "0.155291, 0.155291, 0.155276, 0.155229, 0.155132",\
+ "0.431055, 0.431055, 0.431009, 0.430858, 0.430555",\
+ "1.494514, 1.494079, 1.493909, 1.493909, 1.493909");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2660*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.327672, 0.566275, 0.848132, 1.348276, 2.348564",\
+ "0.368967, 0.607415, 0.888608, 1.386404, 2.381997",\
+ "0.444897, 0.683231, 0.964015, 1.460342, 2.452995",\
+ "0.700493, 0.938416, 1.218620, 1.714868, 2.707363",\
+ "1.624950, 1.862182, 2.144032, 2.639823, 3.631406",\
+ "0.415085, 0.653799, 0.935798, 1.434991, 2.434498",\
+ "0.456380, 0.694939, 0.976266, 1.473119, 2.467931",\
+ "0.532309, 0.770755, 1.051669, 1.547057, 2.538929",\
+ "0.787906, 1.025936, 1.306274, 1.801582, 2.793297",\
+ "1.712363, 1.949714, 2.231684, 2.726538, 3.717340",\
+ "0.495952, 0.742730, 1.023765, 1.522613, 2.521453",\
+ "0.537247, 0.783870, 1.064233, 1.560741, 2.554886",\
+ "0.613176, 0.859686, 1.139635, 1.634679, 2.625884",\
+ "0.868772, 1.114859, 1.394240, 1.889205, 2.880252",\
+ "1.793228, 2.038663, 2.319650, 2.814160, 3.804295",\
+ "0.553602, 0.808292, 1.087909, 1.586527, 2.584962",\
+ "0.594896, 0.849433, 1.128377, 1.624655, 2.618395",\
+ "0.670825, 0.925249, 1.203779, 1.698593, 2.689393",\
+ "0.926420, 1.180411, 1.458384, 1.953118, 2.943761",\
+ "1.850875, 2.104251, 2.383794, 2.878074, 3.867804",\
+ "0.871915, 1.171803, 1.440094, 1.936005, 2.930418",\
+ "0.913062, 1.212946, 1.480538, 1.974123, 2.963851",\
+ "0.988827, 1.288766, 1.555925, 2.048055, 3.034849",\
+ "1.244293, 1.543790, 1.810529, 2.302580, 3.289217",\
+ "2.167832, 2.468068, 2.735935, 3.227534, 4.213260");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.035017, 0.035017, 0.035948, 0.039191, 0.045676",\
+ "0.083549, 0.083549, 0.083882, 0.085042, 0.087361",\
+ "0.208718, 0.208718, 0.208873, 0.209414, 0.210496",\
+ "0.692609, 0.692819, 0.692927, 0.693071, 0.693361",\
+ "2.477031, 2.477031, 2.477147, 2.477551, 2.478359",\
+ "0.035017, 0.035017, 0.035958, 0.039191, 0.045676",\
+ "0.083549, 0.083549, 0.083886, 0.085042, 0.087361",\
+ "0.208718, 0.208718, 0.208875, 0.209414, 0.210496",\
+ "0.692609, 0.692819, 0.692927, 0.693071, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477551, 2.478359",\
+ "0.035017, 0.035017, 0.035958, 0.039191, 0.045676",\
+ "0.083549, 0.083549, 0.083886, 0.085042, 0.087361",\
+ "0.208718, 0.208718, 0.208875, 0.209414, 0.210496",\
+ "0.692610, 0.692820, 0.692927, 0.693071, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477551, 2.478359",\
+ "0.035017, 0.035017, 0.035959, 0.039191, 0.045676",\
+ "0.083549, 0.083549, 0.083886, 0.085042, 0.087361",\
+ "0.208718, 0.208718, 0.208875, 0.209414, 0.210496",\
+ "0.692612, 0.692821, 0.692927, 0.693071, 0.693361",\
+ "2.477031, 2.477031, 2.477149, 2.477551, 2.478359",\
+ "0.035017, 0.035017, 0.035992, 0.039204, 0.045676",\
+ "0.083549, 0.083549, 0.083898, 0.085047, 0.087361",\
+ "0.208718, 0.208718, 0.208880, 0.209416, 0.210496",\
+ "0.692710, 0.692838, 0.692928, 0.693072, 0.693361",\
+ "2.477031, 2.477031, 2.477153, 2.477553, 2.478359");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.374541, 0.613195, 0.891051, 1.377355, 2.349964",\
+ "0.415440, 0.654096, 0.931703, 1.416730, 2.386785",\
+ "0.475586, 0.714339, 0.991271, 1.473856, 2.439025",\
+ "0.644564, 0.883292, 1.159558, 1.639742, 2.600112",\
+ "1.227810, 1.464706, 1.741320, 2.221670, 3.182369",\
+ "0.461954, 0.700719, 0.978673, 1.464070, 2.435898",\
+ "0.502853, 0.741620, 1.019321, 1.503445, 2.472719",\
+ "0.562998, 0.801863, 1.078882, 1.560571, 2.524959",\
+ "0.731977, 0.970816, 1.247161, 1.726457, 2.686046",\
+ "1.315223, 1.552233, 1.828923, 2.308385, 3.268303",\
+ "0.542824, 0.789649, 1.066638, 1.551692, 2.522853",\
+ "0.583722, 0.830553, 1.107287, 1.591067, 2.559674",\
+ "0.643867, 0.890796, 1.166847, 1.648193, 2.611914",\
+ "0.812844, 1.059749, 1.335126, 1.814080, 2.773001",\
+ "1.396076, 1.641170, 1.916889, 2.396007, 3.355258",\
+ "0.600479, 0.855211, 1.130781, 1.615606, 2.586362",\
+ "0.641375, 0.896117, 1.171429, 1.654981, 2.623183",\
+ "0.701520, 0.956361, 1.230989, 1.712107, 2.675423",\
+ "0.870493, 1.125315, 1.399267, 1.877993, 2.836510",\
+ "1.453700, 1.706742, 1.981030, 2.459920, 3.418767",\
+ "0.918806, 1.218716, 1.482825, 1.965026, 2.931818",\
+ "0.959736, 1.259650, 1.523460, 2.004396, 2.968639",\
+ "1.019894, 1.319901, 1.582996, 2.061512, 3.020879",\
+ "1.188870, 1.488860, 1.751250, 2.227388, 3.181966",\
+ "1.770179, 2.070362, 2.333014, 2.809316, 3.764223");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.042685, 0.042786, 0.042938, 0.042938, 0.042938",\
+ "0.078477, 0.079297, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431181, 0.431181, 0.431181, 0.431181, 0.431181",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042787, 0.042938, 0.042938, 0.042938",\
+ "0.078477, 0.079298, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431181, 0.431181, 0.431181, 0.431181, 0.431181",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042789, 0.042938, 0.042938, 0.042938",\
+ "0.078482, 0.079299, 0.079365, 0.079365, 0.079365",\
+ "0.155270, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431181, 0.431181, 0.431181, 0.431181, 0.431181",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042792, 0.042938, 0.042938, 0.042938",\
+ "0.078491, 0.079300, 0.079365, 0.079365, 0.079365",\
+ "0.155271, 0.155314, 0.155322, 0.155322, 0.155322",\
+ "0.431181, 0.431181, 0.431181, 0.431181, 0.431181",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069",\
+ "0.042685, 0.042830, 0.042938, 0.042938, 0.042938",\
+ "0.078951, 0.079317, 0.079365, 0.079365, 0.079365",\
+ "0.155294, 0.155316, 0.155322, 0.155322, 0.155322",\
+ "0.431181, 0.431181, 0.431181, 0.431181, 0.431181",\
+ "1.494069, 1.494069, 1.494069, 1.494069, 1.494069");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2717*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.430110, 0.674363, 0.945987, 1.398684, 2.304079",\
+ "0.471359, 0.715604, 0.987211, 1.439891, 2.345252",\
+ "0.547252, 0.791500, 1.063102, 1.515754, 2.421058",\
+ "0.802426, 1.046828, 1.318547, 1.770909, 2.675633",\
+ "1.727400, 1.971804, 2.243712, 2.696691, 3.602648",\
+ "0.517512, 0.761931, 1.033499, 1.485397, 2.390012",\
+ "0.558762, 0.803171, 1.074723, 1.526605, 2.431185",\
+ "0.634655, 0.879067, 1.150614, 1.602467, 2.506991",\
+ "0.889829, 1.134397, 1.406058, 1.857622, 2.761567",\
+ "1.814803, 2.059373, 2.331226, 2.783404, 3.688582",\
+ "0.598336, 0.850913, 1.121461, 1.573018, 2.476967",\
+ "0.639585, 0.892153, 1.162685, 1.614225, 2.518140",\
+ "0.715478, 0.968049, 1.238575, 1.690088, 2.593946",\
+ "0.970652, 1.223382, 1.494019, 1.945243, 2.848522",\
+ "1.895626, 2.148358, 2.419187, 2.871025, 3.775537",\
+ "0.655998, 0.916548, 1.185597, 1.636931, 2.540476",\
+ "0.697247, 0.957788, 1.226822, 1.678138, 2.581649",\
+ "0.773140, 1.033684, 1.302712, 1.754000, 2.657455",\
+ "1.028314, 1.289021, 1.558156, 2.009156, 2.912031",\
+ "1.953288, 2.213997, 2.483324, 2.934937, 3.839046",\
+ "0.986976, 1.281046, 1.537295, 1.986203, 2.885932",\
+ "1.028225, 1.322284, 1.578519, 2.027411, 2.927105",\
+ "1.104119, 1.398180, 1.654409, 2.103273, 3.002912",\
+ "1.359298, 1.653568, 1.909851, 2.358427, 3.257487",\
+ "2.284269, 2.578546, 2.835025, 3.284211, 4.184502");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.034880, 0.034905, 0.035033, 0.035354, 0.035995",\
+ "0.083283, 0.083287, 0.083329, 0.083448, 0.083687",\
+ "0.208545, 0.208582, 0.208618, 0.208622, 0.208628",\
+ "0.692606, 0.692606, 0.692841, 0.693640, 0.695237",\
+ "2.479823, 2.479823, 2.479823, 2.479823, 2.479823",\
+ "0.034880, 0.034906, 0.035034, 0.035354, 0.035995",\
+ "0.083283, 0.083287, 0.083329, 0.083448, 0.083687",\
+ "0.208545, 0.208582, 0.208618, 0.208622, 0.208628",\
+ "0.692606, 0.692606, 0.692844, 0.693640, 0.695237",\
+ "2.479823, 2.479823, 2.479823, 2.479823, 2.479823",\
+ "0.034880, 0.034906, 0.035034, 0.035354, 0.035995",\
+ "0.083283, 0.083288, 0.083329, 0.083448, 0.083687",\
+ "0.208545, 0.208582, 0.208618, 0.208622, 0.208628",\
+ "0.692606, 0.692606, 0.692844, 0.693640, 0.695237",\
+ "2.479823, 2.479823, 2.479823, 2.479823, 2.479823",\
+ "0.034880, 0.034907, 0.035034, 0.035354, 0.035995",\
+ "0.083283, 0.083288, 0.083329, 0.083448, 0.083687",\
+ "0.208546, 0.208583, 0.208618, 0.208622, 0.208628",\
+ "0.692606, 0.692606, 0.692844, 0.693640, 0.695237",\
+ "2.479823, 2.479823, 2.479823, 2.479823, 2.479823",\
+ "0.034881, 0.034915, 0.035037, 0.035355, 0.035995",\
+ "0.083283, 0.083289, 0.083330, 0.083449, 0.083687",\
+ "0.208552, 0.208592, 0.208618, 0.208622, 0.208628",\
+ "0.692606, 0.692606, 0.692852, 0.693643, 0.695237",\
+ "2.479823, 2.479823, 2.479823, 2.479823, 2.479823");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.476452, 0.720627, 0.992222, 1.445174, 2.351079",\
+ "0.517334, 0.761513, 1.033104, 1.486024, 2.391864",\
+ "0.577683, 0.821926, 1.093569, 1.546380, 2.452001",\
+ "0.746610, 0.990875, 1.262519, 1.715235, 2.620666",\
+ "1.329814, 1.574285, 1.846012, 2.298098, 3.202269",\
+ "0.563855, 0.808193, 1.079735, 1.531888, 2.437013",\
+ "0.604736, 0.849079, 1.120617, 1.572738, 2.477798",\
+ "0.665086, 0.909493, 1.181081, 1.633093, 2.537935",\
+ "0.834013, 1.078442, 1.350031, 1.801948, 2.706600",\
+ "1.417216, 1.661854, 1.933522, 2.384811, 3.288203",\
+ "0.644678, 0.897174, 1.167696, 1.619509, 2.523968",\
+ "0.685559, 0.938060, 1.208579, 1.660358, 2.564753",\
+ "0.745909, 0.998475, 1.269043, 1.720713, 2.624890",\
+ "0.914836, 1.167425, 1.437993, 1.889569, 2.793555",\
+ "1.498040, 1.750840, 2.021483, 2.472431, 3.375158",\
+ "0.702340, 0.962807, 1.231833, 1.683421, 2.587477",\
+ "0.743221, 1.003693, 1.272716, 1.724271, 2.628262",\
+ "0.803571, 1.064109, 1.333179, 1.784626, 2.688399",\
+ "0.972498, 1.233060, 1.502129, 1.953481, 2.857064",\
+ "1.555702, 1.816481, 2.085620, 2.536344, 3.438667",\
+ "1.033316, 1.327279, 1.583534, 2.032695, 2.932933",\
+ "1.074197, 1.368167, 1.624416, 2.073545, 2.973718",\
+ "1.134549, 1.428604, 1.684879, 2.133899, 3.033855",\
+ "1.303477, 1.597562, 1.853827, 2.302754, 3.202520",\
+ "1.886688, 2.181050, 2.437312, 2.885614, 3.784123");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.042687, 0.042687, 0.042669, 0.042608, 0.042485",\
+ "0.078970, 0.078970, 0.078967, 0.078960, 0.078944",\
+ "0.155296, 0.155296, 0.155281, 0.155232, 0.155132",\
+ "0.431084, 0.431084, 0.431042, 0.430897, 0.430607",\
+ "1.495395, 1.494888, 1.494241, 1.494241, 1.494241",\
+ "0.042687, 0.042687, 0.042669, 0.042608, 0.042485",\
+ "0.078970, 0.078970, 0.078967, 0.078960, 0.078944",\
+ "0.155296, 0.155296, 0.155281, 0.155232, 0.155132",\
+ "0.431084, 0.431084, 0.431041, 0.430897, 0.430607",\
+ "1.495395, 1.494883, 1.494241, 1.494241, 1.494241",\
+ "0.042687, 0.042687, 0.042669, 0.042608, 0.042485",\
+ "0.078970, 0.078970, 0.078967, 0.078960, 0.078944",\
+ "0.155296, 0.155296, 0.155281, 0.155232, 0.155132",\
+ "0.431084, 0.431084, 0.431041, 0.430897, 0.430607",\
+ "1.495394, 1.494874, 1.494241, 1.494241, 1.494241",\
+ "0.042687, 0.042687, 0.042669, 0.042608, 0.042485",\
+ "0.078970, 0.078970, 0.078967, 0.078960, 0.078944",\
+ "0.155296, 0.155296, 0.155281, 0.155232, 0.155132",\
+ "0.431084, 0.431084, 0.431041, 0.430897, 0.430607",\
+ "1.495394, 1.494860, 1.494241, 1.494241, 1.494241",\
+ "0.042687, 0.042687, 0.042668, 0.042607, 0.042485",\
+ "0.078970, 0.078970, 0.078967, 0.078960, 0.078944",\
+ "0.155296, 0.155296, 0.155280, 0.155231, 0.155132",\
+ "0.431084, 0.431084, 0.431040, 0.430896, 0.430607",\
+ "1.495370, 1.494698, 1.494241, 1.494241, 1.494241");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.554256, 0.796472, 1.062238, 1.540435, 2.496829",\
+ "0.588688, 0.830904, 1.096670, 1.574875, 2.531283",\
+ "0.659682, 0.901899, 1.167669, 1.645892, 2.602338",\
+ "0.913848, 1.156064, 1.421858, 1.900173, 2.856801",\
+ "1.839032, 2.081247, 2.347044, 2.825424, 3.782184",\
+ "0.641661, 0.883946, 1.149831, 1.627148, 2.582762",\
+ "0.676093, 0.918377, 1.184264, 1.661588, 2.617217",\
+ "0.747088, 0.989372, 1.255262, 1.732605, 2.688272",\
+ "1.001253, 1.243537, 1.509452, 1.986886, 2.942735",\
+ "1.926437, 2.168720, 2.434638, 2.912138, 3.868118",\
+ "0.722474, 0.972733, 1.237795, 1.714769, 2.669717",\
+ "0.756906, 1.007164, 1.272227, 1.749209, 2.704172",\
+ "0.827901, 1.078159, 1.343225, 1.820227, 2.775227",\
+ "1.082066, 1.332324, 1.597415, 2.074507, 3.029690",\
+ "2.007250, 2.257506, 2.522601, 2.999759, 3.955073",\
+ "0.781555, 1.038084, 1.301936, 1.778682, 2.733226",\
+ "0.815987, 1.072516, 1.336368, 1.813122, 2.767681",\
+ "0.886982, 1.143511, 1.407367, 1.884140, 2.838736",\
+ "1.141147, 1.397675, 1.661557, 2.138420, 3.093199",\
+ "2.066333, 2.322857, 2.586742, 3.063672, 4.018582",\
+ "1.117315, 1.399225, 1.653894, 2.128062, 3.078682",\
+ "1.151748, 1.433656, 1.688326, 2.162502, 3.113137",\
+ "1.222743, 1.504651, 1.759325, 2.233520, 3.184192",\
+ "1.476909, 1.758815, 2.013515, 2.487801, 3.438655",\
+ "2.402100, 2.683993, 2.938702, 3.413052, 4.364038");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.034240, 0.034243, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083624, 0.083701, 0.083855",\
+ "0.208066, 0.208072, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471502, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208072, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471510, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208073, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470761, 2.470782, 2.471510, 2.473964, 2.478889",\
+ "0.034240, 0.034244, 0.034261, 0.034303, 0.034388",\
+ "0.083583, 0.083591, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208073, 0.208099, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470764, 2.470782, 2.471510, 2.473964, 2.478889",\
+ "0.034240, 0.034245, 0.034262, 0.034304, 0.034388",\
+ "0.083583, 0.083594, 0.083625, 0.083701, 0.083855",\
+ "0.208066, 0.208075, 0.208100, 0.208159, 0.208278",\
+ "0.693300, 0.693300, 0.693300, 0.693300, 0.693300",\
+ "2.470774, 2.470782, 2.471535, 2.473975, 2.478889");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.581292, 0.823509, 1.089276, 1.567480, 2.523887",\
+ "0.623589, 0.865805, 1.131530, 1.609589, 2.565706",\
+ "0.684151, 0.926368, 1.192030, 1.669873, 2.625559",\
+ "0.853082, 1.095299, 1.360884, 1.838464, 2.793625",\
+ "1.436333, 1.678550, 1.944122, 2.421657, 3.376727",\
+ "0.668697, 0.910982, 1.176870, 1.654194, 2.609821",\
+ "0.710994, 0.953278, 1.219123, 1.696303, 2.651640",\
+ "0.771556, 1.013841, 1.279622, 1.756587, 2.711493",\
+ "0.940487, 1.182772, 1.448475, 1.925178, 2.879559",\
+ "1.523738, 1.766023, 2.031713, 2.508370, 3.462660",\
+ "0.749510, 0.999769, 1.264833, 1.741815, 2.696776",\
+ "0.791807, 1.042065, 1.307087, 1.783924, 2.738595",\
+ "0.852369, 1.102628, 1.367586, 1.844208, 2.798448",\
+ "1.021300, 1.271559, 1.536439, 2.012799, 2.966514",\
+ "1.604551, 1.854810, 2.119677, 2.595992, 3.549615",\
+ "0.808591, 1.065121, 1.328974, 1.805728, 2.760285",\
+ "0.850888, 1.107417, 1.371228, 1.847837, 2.802104",\
+ "0.911450, 1.167980, 1.431727, 1.908121, 2.861957",\
+ "1.080381, 1.336911, 1.600580, 2.076712, 3.030023",\
+ "1.663632, 1.920162, 2.183818, 2.659904, 3.613124",\
+ "1.144351, 1.426262, 1.680932, 2.155108, 3.105741",\
+ "1.186648, 1.468558, 1.723184, 2.197216, 3.147560",\
+ "1.247211, 1.529121, 1.783681, 2.257499, 3.207412",\
+ "1.416141, 1.698051, 1.952531, 2.426090, 3.375479",\
+ "1.999392, 2.281302, 2.535769, 3.009282, 3.958580");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045870, 0.045908, 0.045983",\
+ "0.079961, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064",\
+ "0.045859, 0.045859, 0.045871, 0.045908, 0.045983",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155685, 0.155686, 0.155686, 0.155686, 0.155686",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498064, 1.498064, 1.498064, 1.498064, 1.498064");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2473*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.778393, 1.030571, 1.315131, 1.821345, 2.833774",\
+ "0.812784, 1.064961, 1.349521, 1.855736, 2.868164",\
+ "0.884026, 1.136204, 1.420765, 1.926979, 2.939408",\
+ "1.138193, 1.390371, 1.674931, 2.181146, 3.193574",\
+ "2.062764, 2.314940, 2.599499, 3.105713, 4.118140",\
+ "0.865806, 1.118101, 1.402816, 1.908060, 2.919708",\
+ "0.900196, 1.152491, 1.437207, 1.942451, 2.954098",\
+ "0.971439, 1.223734, 1.508450, 2.013694, 3.025342",\
+ "1.225605, 1.477901, 1.762616, 2.267860, 3.279508",\
+ "2.150177, 2.402470, 2.687184, 3.192428, 4.204074",\
+ "0.946677, 1.207046, 1.490783, 1.995683, 3.006663",\
+ "0.981067, 1.241436, 1.525173, 2.030073, 3.041053",\
+ "1.052310, 1.312679, 1.596416, 2.101316, 3.112297",\
+ "1.306477, 1.566845, 1.850583, 2.355483, 3.366463",\
+ "2.231048, 2.491415, 2.775151, 3.280050, 4.291029",\
+ "1.005325, 1.272628, 1.554929, 2.059596, 3.070172",\
+ "1.039716, 1.307018, 1.589319, 2.093987, 3.104562",\
+ "1.110958, 1.378261, 1.660562, 2.165230, 3.175806",\
+ "1.365125, 1.632428, 1.914729, 2.419396, 3.429972",\
+ "2.289696, 2.556998, 2.839297, 3.343963, 4.354538",\
+ "1.337288, 1.636376, 1.907175, 2.409100, 3.415628",\
+ "1.371678, 1.670766, 1.941566, 2.443490, 3.450018",\
+ "1.442921, 1.742009, 2.012809, 2.514733, 3.521262",\
+ "1.697088, 1.996176, 2.266975, 2.768899, 3.775428",\
+ "2.621658, 2.920745, 3.191543, 3.693467, 4.699994");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692761, 0.692767",\
+ "2.464329, 2.464329, 2.464329, 2.464329, 2.464329",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692761, 0.692767",\
+ "2.464329, 2.464329, 2.464329, 2.464329, 2.464329",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692761, 0.692767",\
+ "2.464329, 2.464329, 2.464329, 2.464329, 2.464329",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692761, 0.692767",\
+ "2.464329, 2.464329, 2.464329, 2.464329, 2.464329",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083750, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692761, 0.692767",\
+ "2.464329, 2.464329, 2.464329, 2.464329, 2.464329");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.810153, 1.062330, 1.346888, 1.853102, 2.865529",\
+ "0.851906, 1.104082, 1.388641, 1.894854, 2.907281",\
+ "0.911836, 1.164013, 1.448571, 1.954785, 2.967211",\
+ "1.079953, 1.332130, 1.616688, 2.122902, 3.135329",\
+ "1.661862, 1.914034, 2.198587, 2.704797, 3.717218",\
+ "0.897566, 1.149860, 1.434573, 1.939816, 2.951462",\
+ "0.939318, 1.191612, 1.476326, 1.981569, 2.993215",\
+ "0.999249, 1.251543, 1.536256, 2.041499, 3.053145",\
+ "1.167366, 1.419660, 1.704374, 2.209617, 3.221262",\
+ "1.749275, 2.001564, 2.286272, 2.791512, 3.803152",\
+ "0.978437, 1.238804, 1.522540, 2.027439, 3.038417",\
+ "1.020190, 1.280557, 1.564292, 2.069191, 3.080170",\
+ "1.080120, 1.340487, 1.624223, 2.129122, 3.140100",\
+ "1.248237, 1.508604, 1.792340, 2.297239, 3.308218",\
+ "1.830146, 2.090508, 2.374238, 2.879134, 3.890107",\
+ "1.037085, 1.304387, 1.586686, 2.091352, 3.101926",\
+ "1.078838, 1.346139, 1.628438, 2.133105, 3.143679",\
+ "1.138768, 1.406070, 1.688369, 2.193035, 3.203609",\
+ "1.306885, 1.574187, 1.856486, 2.361152, 3.371727",\
+ "1.888794, 2.156091, 2.438385, 2.943048, 3.953616",\
+ "1.369048, 1.668134, 1.938932, 2.440856, 3.447382",\
+ "1.410800, 1.709887, 1.980685, 2.482608, 3.489135",\
+ "1.470731, 1.769817, 2.040615, 2.542538, 3.549065",\
+ "1.638848, 1.937934, 2.208732, 2.710656, 3.717183",\
+ "2.220756, 2.519837, 2.790631, 3.292551, 4.299072");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494120");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2603*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.769218, 1.013990, 1.288183, 1.753076, 2.682863",\
+ "0.803608, 1.048380, 1.322573, 1.787467, 2.717253",\
+ "0.874851, 1.119623, 1.393816, 1.858710, 2.788497",\
+ "1.129017, 1.373789, 1.647983, 2.112876, 3.042663",\
+ "2.053588, 2.298358, 2.572550, 3.037443, 3.967230",\
+ "0.856623, 1.101544, 1.375734, 1.839790, 2.768797",\
+ "0.891013, 1.135935, 1.410125, 1.874180, 2.803187",\
+ "0.962256, 1.207178, 1.481368, 1.945424, 2.874431",\
+ "1.216422, 1.461344, 1.735534, 2.199590, 3.128597",\
+ "2.140993, 2.385913, 2.660101, 3.124157, 4.053164",\
+ "0.937445, 1.190511, 1.463697, 1.927411, 2.855752",\
+ "0.971835, 1.224902, 1.498087, 1.961801, 2.890142",\
+ "1.043078, 1.296145, 1.569331, 2.033045, 2.961386",\
+ "1.297244, 1.550311, 1.823497, 2.287211, 3.215552",\
+ "2.221816, 2.474880, 2.748064, 3.211778, 4.140119",\
+ "0.995080, 1.256125, 1.527836, 1.991324, 2.919261",\
+ "1.029471, 1.290515, 1.562226, 2.025714, 2.953651",\
+ "1.100714, 1.361758, 1.633469, 2.096957, 3.024895",\
+ "1.354880, 1.615925, 1.887636, 2.351124, 3.279061",\
+ "2.279451, 2.540493, 2.812203, 3.275691, 4.203628",\
+ "1.324766, 1.620334, 1.879659, 2.340649, 3.264717",\
+ "1.359156, 1.654725, 1.914049, 2.375039, 3.299107",\
+ "1.430399, 1.725968, 1.985292, 2.446283, 3.370351",\
+ "1.684566, 1.980134, 2.239459, 2.700449, 3.624517",\
+ "2.609136, 2.904703, 3.164026, 3.625016, 4.549084");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083751, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692762, 0.692768",\
+ "2.464326, 2.464326, 2.464326, 2.464326, 2.464326",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083751, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692762, 0.692768",\
+ "2.464326, 2.464326, 2.464326, 2.464326, 2.464326",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083751, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692762, 0.692768",\
+ "2.464326, 2.464326, 2.464326, 2.464326, 2.464326",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083751, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692762, 0.692768",\
+ "2.464326, 2.464326, 2.464326, 2.464326, 2.464326",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034113",\
+ "0.083750, 0.083750, 0.083750, 0.083751, 0.083752",\
+ "0.208404, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692757, 0.692757, 0.692758, 0.692762, 0.692768",\
+ "2.464326, 2.464326, 2.464326, 2.464326, 2.464326");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.800978, 1.045748, 1.319939, 1.784832, 2.714618",\
+ "0.842730, 1.087500, 1.361691, 1.826584, 2.756371",\
+ "0.902660, 1.147430, 1.421622, 1.886515, 2.816301",\
+ "1.070778, 1.315548, 1.589739, 2.054632, 2.984419",\
+ "1.652686, 1.897449, 2.171633, 2.636526, 3.566311",\
+ "0.888383, 1.133302, 1.407490, 1.871546, 2.800552",\
+ "0.930135, 1.175055, 1.449243, 1.913298, 2.842305",\
+ "0.990066, 1.234985, 1.509173, 1.973228, 2.902235",\
+ "1.158183, 1.403102, 1.677290, 2.141346, 3.070352",\
+ "1.740091, 1.985004, 2.259185, 2.723239, 3.652244",\
+ "0.969205, 1.222269, 1.495453, 1.959167, 2.887507",\
+ "1.010957, 1.264022, 1.537205, 2.000919, 2.929260",\
+ "1.070888, 1.323952, 1.597136, 2.060850, 2.989190",\
+ "1.239005, 1.492069, 1.765253, 2.228967, 3.157307",\
+ "1.820914, 2.073971, 2.347147, 2.810860, 3.739199",\
+ "1.026840, 1.287883, 1.559592, 2.023079, 2.951016",\
+ "1.068593, 1.329635, 1.601344, 2.064832, 2.992769",\
+ "1.128523, 1.389565, 1.661275, 2.124762, 3.052699",\
+ "1.296640, 1.557683, 1.829392, 2.292880, 3.220816",\
+ "1.878549, 2.139584, 2.411286, 2.874773, 3.802708",\
+ "1.356526, 1.652092, 1.911415, 2.372405, 3.296472",\
+ "1.398278, 1.693844, 1.953167, 2.414157, 3.338225",\
+ "1.458209, 1.753775, 2.013098, 2.474087, 3.398155",\
+ "1.626326, 1.921892, 2.181215, 2.642205, 3.566272",\
+ "2.208233, 2.503792, 2.763109, 3.224098, 4.148165");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494121",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494121",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494121",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494121",\
+ "0.045877, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494119, 1.494119, 1.494119, 1.494121");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2649*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.634427, 0.872697, 1.149292, 1.635475, 2.607842",\
+ "0.668851, 0.907120, 1.183712, 1.669888, 2.642240",\
+ "0.739833, 0.978100, 1.254713, 1.740957, 2.713446",\
+ "0.993985, 1.232251, 1.508868, 1.995127, 2.967646",\
+ "1.919059, 2.157313, 2.433878, 2.919960, 3.892124",\
+ "0.721829, 0.960233, 1.236908, 1.722188, 2.693776",\
+ "0.756252, 0.994656, 1.271329, 1.756601, 2.728174",\
+ "0.827235, 1.065637, 1.342330, 1.827670, 2.799379",\
+ "1.081387, 1.319787, 1.596485, 2.081840, 3.053579",\
+ "2.006460, 2.244850, 2.521494, 3.006673, 3.978058",\
+ "0.802677, 1.049143, 1.324872, 1.809809, 2.780731",\
+ "0.837101, 1.083566, 1.359292, 1.844222, 2.815129",\
+ "0.908083, 1.154546, 1.430293, 1.915291, 2.886334",\
+ "1.162235, 1.408697, 1.684448, 2.169461, 3.140534",\
+ "2.087309, 2.333760, 2.609457, 3.094293, 4.065013",\
+ "0.860401, 1.114674, 1.389014, 1.873721, 2.844240",\
+ "0.894825, 1.149096, 1.423434, 1.908134, 2.878638",\
+ "0.965807, 1.220077, 1.494435, 1.979203, 2.949843",\
+ "1.219959, 1.474228, 1.748591, 2.233373, 3.204043",\
+ "2.145033, 2.399290, 2.673600, 3.158206, 4.128522",\
+ "1.188527, 1.477957, 1.741051, 2.223131, 3.189696",\
+ "1.222950, 1.512379, 1.775471, 2.257544, 3.224094",\
+ "1.293931, 1.583360, 1.846473, 2.328613, 3.295300",\
+ "1.548083, 1.837511, 2.100628, 2.582783, 3.549500",\
+ "2.473149, 2.762573, 3.025636, 3.507615, 4.473978");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.034240, 0.034240, 0.034242, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083588, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532",\
+ "0.034240, 0.034240, 0.034243, 0.034250, 0.034266",\
+ "0.083583, 0.083583, 0.083589, 0.083605, 0.083639",\
+ "0.208066, 0.208067, 0.208071, 0.208084, 0.208111",\
+ "0.693291, 0.693291, 0.693291, 0.693291, 0.693291",\
+ "2.470530, 2.470530, 2.470531, 2.470531, 2.470532");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.661467, 0.899737, 1.176348, 1.662586, 2.635063",\
+ "0.703763, 0.942033, 1.218582, 1.704611, 2.676670",\
+ "0.764325, 1.002595, 1.279082, 1.764899, 2.736534",\
+ "0.933255, 1.171525, 1.447944, 1.933534, 2.904712",\
+ "1.516509, 1.754779, 2.031088, 2.516304, 3.486737",\
+ "0.748868, 0.987273, 1.263965, 1.749299, 2.720997",\
+ "0.791164, 1.029569, 1.306198, 1.791324, 2.762603",\
+ "0.851727, 1.090131, 1.366697, 1.851612, 2.822468",\
+ "1.020657, 1.259062, 1.535559, 2.020247, 2.990646",\
+ "1.603910, 1.842315, 2.118701, 2.603017, 3.572671",\
+ "0.829717, 1.076183, 1.351928, 1.836920, 2.807952",\
+ "0.872012, 1.118479, 1.394161, 1.878945, 2.849558",\
+ "0.932575, 1.179041, 1.454660, 1.939233, 2.909423",\
+ "1.101505, 1.347972, 1.623522, 2.107867, 3.077601",\
+ "1.684759, 1.931225, 2.206665, 2.690638, 3.659626",\
+ "0.887441, 1.141714, 1.416070, 1.900832, 2.871461",\
+ "0.929737, 1.184009, 1.458303, 1.942857, 2.913067",\
+ "0.990299, 1.244572, 1.518803, 2.003145, 2.972932",\
+ "1.159229, 1.413502, 1.687665, 2.171780, 3.141110",\
+ "1.742483, 1.996755, 2.270807, 2.754550, 3.723135",\
+ "1.215567, 1.504997, 1.768108, 2.250242, 3.216917",\
+ "1.257862, 1.547292, 1.810339, 2.292266, 3.258523",\
+ "1.318425, 1.607855, 1.870836, 2.352553, 3.318388",\
+ "1.487355, 1.776785, 2.039696, 2.521187, 3.486566",\
+ "2.070609, 2.360038, 2.622834, 3.103956, 4.068591");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067",\
+ "0.045862, 0.045862, 0.045862, 0.045862, 0.045862",\
+ "0.079960, 0.079960, 0.079960, 0.079960, 0.079960",\
+ "0.155688, 0.155688, 0.155688, 0.155688, 0.155688",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498067, 1.498067, 1.498067");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2302*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.679396, 0.938967, 1.226201, 1.725937, 2.725407",\
+ "0.713789, 0.973360, 1.260594, 1.760331, 2.759802",\
+ "0.785026, 1.044598, 1.331832, 1.831566, 2.831035",\
+ "1.039193, 1.298764, 1.585998, 2.085732, 3.085201",\
+ "1.963796, 2.223368, 2.510604, 3.010348, 4.009837",\
+ "0.766804, 1.026534, 1.313864, 1.812651, 2.811341",\
+ "0.801197, 1.060927, 1.348257, 1.847045, 2.845736",\
+ "0.872434, 1.132165, 1.419494, 1.918280, 2.916969",\
+ "1.126601, 1.386331, 1.673661, 2.172447, 3.171135",\
+ "2.051204, 2.310935, 2.598267, 3.097062, 4.095771",\
+ "0.847692, 1.115543, 1.401829, 1.900272, 2.898296",\
+ "0.882085, 1.149936, 1.436222, 1.934666, 2.932691",\
+ "0.953322, 1.221174, 1.507460, 2.005902, 3.003924",\
+ "1.207489, 1.475340, 1.761626, 2.260068, 3.258090",\
+ "2.132092, 2.399944, 2.686232, 3.184684, 4.182726",\
+ "0.908548, 1.181219, 1.465974, 1.964185, 2.961805",\
+ "0.942941, 1.215612, 1.500367, 1.998580, 2.996200",\
+ "1.014178, 1.286850, 1.571604, 2.069815, 3.067433",\
+ "1.268345, 1.541016, 1.825771, 2.323982, 3.321599",\
+ "2.192948, 2.465620, 2.750377, 3.248597, 4.246235",\
+ "1.244710, 1.546113, 1.818152, 2.313658, 3.307261",\
+ "1.279103, 1.580506, 1.852545, 2.348052, 3.341656",\
+ "1.350341, 1.651744, 1.923782, 2.419287, 3.412889",\
+ "1.604507, 1.905910, 2.177949, 2.673453, 3.667055",\
+ "2.529111, 2.830513, 3.102555, 3.598069, 4.591691");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.034112, 0.034112, 0.034113, 0.034114, 0.034117",\
+ "0.083750, 0.083751, 0.083753, 0.083761, 0.083776",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692776, 0.692813, 0.692889",\
+ "2.465102, 2.465102, 2.465169, 2.465398, 2.465856",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034117",\
+ "0.083750, 0.083751, 0.083753, 0.083761, 0.083776",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692776, 0.692813, 0.692889",\
+ "2.465102, 2.465102, 2.465170, 2.465398, 2.465856",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034117",\
+ "0.083750, 0.083751, 0.083753, 0.083761, 0.083776",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692776, 0.692813, 0.692889",\
+ "2.465102, 2.465102, 2.465170, 2.465398, 2.465856",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034117",\
+ "0.083750, 0.083751, 0.083753, 0.083761, 0.083776",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692762, 0.692776, 0.692813, 0.692889",\
+ "2.465102, 2.465102, 2.465170, 2.465398, 2.465856",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034117",\
+ "0.083750, 0.083751, 0.083754, 0.083761, 0.083776",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692763, 0.692776, 0.692814, 0.692889",\
+ "2.465102, 2.465102, 2.465172, 2.465399, 2.465856");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.711192, 0.970763, 1.257999, 1.757746, 2.757238",\
+ "0.752943, 1.012514, 1.299751, 1.799497, 2.798988",\
+ "0.812873, 1.072445, 1.359681, 1.859427, 2.858919",\
+ "0.980990, 1.240561, 1.527798, 2.027544, 3.027034",\
+ "1.563015, 1.822585, 2.109830, 2.609611, 3.609173",\
+ "0.798600, 1.058330, 1.345662, 1.844460, 2.843172",\
+ "0.840351, 1.100081, 1.387414, 1.886211, 2.884922",\
+ "0.900282, 1.160012, 1.447344, 1.946141, 2.944853",\
+ "1.068398, 1.328128, 1.615461, 2.114258, 3.112968",\
+ "1.650424, 1.910152, 2.197493, 2.696325, 3.695107",\
+ "0.879488, 1.147339, 1.433627, 1.932081, 2.930127",\
+ "0.921239, 1.189090, 1.475379, 1.973832, 2.971877",\
+ "0.981170, 1.249021, 1.535309, 2.033763, 3.031808",\
+ "1.149286, 1.417137, 1.703426, 2.201879, 3.199923",\
+ "1.731312, 1.999161, 2.285458, 2.783947, 3.782062",\
+ "0.940344, 1.213015, 1.497772, 1.995995, 2.993636",\
+ "0.982095, 1.254766, 1.539524, 2.037745, 3.035386",\
+ "1.042026, 1.314697, 1.599454, 2.097676, 3.095317",\
+ "1.210142, 1.482813, 1.767570, 2.265792, 3.263432",\
+ "1.792167, 2.064837, 2.349603, 2.847860, 3.845571",\
+ "1.276506, 1.577909, 1.849950, 2.345467, 3.339092",\
+ "1.318258, 1.619660, 1.891702, 2.387218, 3.380842",\
+ "1.378188, 1.679591, 1.951632, 2.447148, 3.440773",\
+ "1.546304, 1.847707, 2.119749, 2.615264, 3.608888",\
+ "2.128330, 2.429730, 2.701782, 3.197332, 4.191027");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494122, 1.494128, 1.494141",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494122, 1.494128, 1.494141",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494122, 1.494128, 1.494141",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494122, 1.494128, 1.494141",\
+ "0.045877, 0.045877, 0.045877, 0.045877, 0.045877",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155804, 0.155804, 0.155804, 0.155804, 0.155804",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494119, 1.494120, 1.494122, 1.494128, 1.494141");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2566*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.658633, 0.912014, 1.190716, 1.652421, 2.575833",\
+ "0.693026, 0.946407, 1.225109, 1.686815, 2.610227",\
+ "0.764264, 1.017644, 1.296346, 1.758051, 2.681462",\
+ "1.018430, 1.271811, 1.550512, 2.012218, 2.935628",\
+ "1.943034, 2.196414, 2.475117, 2.936828, 3.860250",\
+ "0.746043, 0.999594, 1.278259, 1.739136, 2.661767",\
+ "0.780436, 1.033988, 1.312652, 1.773529, 2.696161",\
+ "0.851673, 1.105225, 1.383889, 1.844766, 2.767396",\
+ "1.105840, 1.359391, 1.638056, 2.098932, 3.021562",\
+ "2.030443, 2.283995, 2.562661, 3.023543, 3.946184",\
+ "0.826857, 1.088640, 1.366222, 1.826758, 2.748722",\
+ "0.861250, 1.123033, 1.400615, 1.861151, 2.783116",\
+ "0.932488, 1.194270, 1.471853, 1.932387, 2.854351",\
+ "1.186654, 1.448437, 1.726019, 2.186554, 3.108517",\
+ "2.111258, 2.373040, 2.650624, 3.111165, 4.033139",\
+ "0.884438, 1.154368, 1.430361, 1.890671, 2.812231",\
+ "0.918831, 1.188761, 1.464754, 1.925064, 2.846625",\
+ "0.990068, 1.259999, 1.535991, 1.996301, 2.917860",\
+ "1.244235, 1.514165, 1.790157, 2.250467, 3.172026",\
+ "2.168839, 2.438769, 2.714763, 3.175078, 4.096648",\
+ "1.216287, 1.519868, 1.782153, 2.239986, 3.157687",\
+ "1.250680, 1.554260, 1.816547, 2.274380, 3.192081",\
+ "1.321917, 1.625498, 1.887784, 2.345616, 3.263316",\
+ "1.576084, 1.879665, 2.141950, 2.599783, 3.517482",\
+ "2.500688, 2.804268, 3.066556, 3.524393, 4.442104");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692760, 0.692769, 0.692798, 0.692856",\
+ "2.465103, 2.465103, 2.465140, 2.465270, 2.465530",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692760, 0.692770, 0.692798, 0.692856",\
+ "2.465103, 2.465103, 2.465141, 2.465270, 2.465530",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692760, 0.692770, 0.692798, 0.692856",\
+ "2.465103, 2.465103, 2.465141, 2.465270, 2.465530",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692760, 0.692770, 0.692798, 0.692856",\
+ "2.465103, 2.465103, 2.465141, 2.465270, 2.465530",\
+ "0.034112, 0.034112, 0.034113, 0.034114, 0.034116",\
+ "0.083750, 0.083750, 0.083752, 0.083758, 0.083770",\
+ "0.208404, 0.208404, 0.208404, 0.208404, 0.208404",\
+ "0.692760, 0.692761, 0.692770, 0.692799, 0.692856",\
+ "2.465103, 2.465103, 2.465142, 2.465271, 2.465530");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.690429, 0.943810, 1.222513, 1.684225, 2.607649",\
+ "0.732181, 0.985561, 1.264264, 1.725976, 2.649400",\
+ "0.792111, 1.045491, 1.324195, 1.785906, 2.709330",\
+ "0.960228, 1.213608, 1.492311, 1.954023, 2.877446",\
+ "1.542253, 1.795633, 2.074341, 2.536073, 3.459536",\
+ "0.777839, 1.031390, 1.310056, 1.770939, 2.693583",\
+ "0.819590, 1.073142, 1.351808, 1.812690, 2.735333",\
+ "0.879520, 1.133072, 1.411738, 1.872621, 2.795264",\
+ "1.047637, 1.301189, 1.579854, 2.040737, 2.963380",\
+ "1.629662, 1.883214, 2.161885, 2.622787, 3.545470",\
+ "0.858653, 1.120436, 1.398020, 1.858561, 2.780538",\
+ "0.900405, 1.162187, 1.439771, 1.900312, 2.822289",\
+ "0.960335, 1.222118, 1.499701, 1.960243, 2.882219",\
+ "1.128451, 1.390234, 1.667818, 2.128359, 3.050335",\
+ "1.710477, 1.972259, 2.249848, 2.710409, 3.632425",\
+ "0.916234, 1.186164, 1.462158, 1.922474, 2.844047",\
+ "0.957985, 1.227916, 1.503910, 1.964226, 2.885798",\
+ "1.017915, 1.287846, 1.563840, 2.024156, 2.945728",\
+ "1.186032, 1.455963, 1.731956, 2.192272, 3.113844",\
+ "1.768058, 2.037988, 2.313987, 2.774323, 3.695934",\
+ "1.248083, 1.551663, 1.813951, 2.271790, 3.189503",\
+ "1.289834, 1.593415, 1.855702, 2.313541, 3.231254",\
+ "1.349765, 1.653345, 1.915633, 2.373471, 3.291184",\
+ "1.517881, 1.821462, 2.083749, 2.541588, 3.459300",\
+ "2.099906, 2.403486, 2.665780, 3.123638, 4.041390");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.045877, 0.045876, 0.045874, 0.045865, 0.045847",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155802, 0.155795, 0.155781",\
+ "0.431307, 0.431307, 0.431306, 0.431305, 0.431302",\
+ "1.494119, 1.494119, 1.494121, 1.494126, 1.494135",\
+ "0.045877, 0.045876, 0.045874, 0.045865, 0.045847",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155802, 0.155795, 0.155781",\
+ "0.431307, 0.431307, 0.431306, 0.431305, 0.431302",\
+ "1.494119, 1.494119, 1.494121, 1.494126, 1.494135",\
+ "0.045877, 0.045876, 0.045874, 0.045865, 0.045847",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155802, 0.155795, 0.155781",\
+ "0.431307, 0.431307, 0.431306, 0.431305, 0.431302",\
+ "1.494119, 1.494119, 1.494121, 1.494126, 1.494135",\
+ "0.045877, 0.045876, 0.045874, 0.045865, 0.045847",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155802, 0.155795, 0.155781",\
+ "0.431307, 0.431307, 0.431306, 0.431305, 0.431302",\
+ "1.494119, 1.494119, 1.494121, 1.494126, 1.494135",\
+ "0.045877, 0.045876, 0.045874, 0.045865, 0.045847",\
+ "0.079914, 0.079914, 0.079913, 0.079913, 0.079912",\
+ "0.155804, 0.155804, 0.155802, 0.155795, 0.155781",\
+ "0.431307, 0.431307, 0.431306, 0.431305, 0.431302",\
+ "1.494119, 1.494119, 1.494121, 1.494126, 1.494135");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2608*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.576605, 0.831535, 1.088524, 1.527728, 2.406135",\
+ "0.611028, 0.865958, 1.122948, 1.562156, 2.440572",\
+ "0.682011, 0.936939, 1.193932, 1.633147, 2.511575",\
+ "0.936163, 1.191091, 1.448086, 1.887307, 2.765749",\
+ "1.861240, 2.116160, 2.373173, 2.812451, 3.691008",\
+ "0.664013, 0.919020, 1.175996, 1.614442, 2.492069",\
+ "0.698437, 0.953443, 1.210420, 1.648871, 2.526506",\
+ "0.769419, 1.024424, 1.281404, 1.719861, 2.597509",\
+ "1.023571, 1.278576, 1.535558, 1.974021, 2.851683",\
+ "1.948648, 2.203645, 2.460645, 2.899166, 3.776942",\
+ "0.751657, 1.007845, 1.263958, 1.702063, 2.579024",\
+ "0.786080, 1.042268, 1.298382, 1.736492, 2.613461",\
+ "0.857063, 1.113249, 1.369366, 1.807482, 2.684464",\
+ "1.111215, 1.367401, 1.623520, 2.061643, 2.938638",\
+ "2.036291, 2.292470, 2.548607, 2.986787, 3.863897",\
+ "0.814841, 1.073252, 1.328092, 1.765976, 2.642533",\
+ "0.849265, 1.107675, 1.362517, 1.800405, 2.676970",\
+ "0.920247, 1.178657, 1.433500, 1.871395, 2.747973",\
+ "1.174399, 1.432808, 1.687654, 2.125556, 3.002147",\
+ "2.099474, 2.357878, 2.612742, 3.050700, 3.927406",\
+ "1.148308, 1.435007, 1.679656, 2.115198, 2.987988",\
+ "1.182731, 1.469430, 1.714081, 2.149627, 3.022426",\
+ "1.253713, 1.540412, 1.785064, 2.220617, 3.093429",\
+ "1.507865, 1.794564, 2.039218, 2.474777, 3.347603",\
+ "2.432936, 2.719633, 2.964306, 3.399922, 4.272861");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208076, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470714, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470715, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470716, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693296, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470716, 2.471298, 2.472467",\
+ "0.034240, 0.034240, 0.034246, 0.034266, 0.034306",\
+ "0.083583, 0.083583, 0.083596, 0.083639, 0.083725",\
+ "0.208066, 0.208066, 0.208077, 0.208111, 0.208180",\
+ "0.693294, 0.693297, 0.693300, 0.693300, 0.693300",\
+ "2.470544, 2.470544, 2.470721, 2.471301, 2.472467");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.603644, 0.858574, 1.115563, 1.554765, 2.433169",\
+ "0.645940, 0.900870, 1.157859, 1.597061, 2.475466",\
+ "0.706502, 0.961433, 1.218421, 1.657624, 2.536028",\
+ "0.875433, 1.130363, 1.387352, 1.826554, 2.704960",\
+ "1.458686, 1.713616, 1.970605, 2.409806, 3.288209",\
+ "0.691052, 0.946059, 1.203035, 1.641479, 2.519103",\
+ "0.733348, 0.988355, 1.245331, 1.683775, 2.561400",\
+ "0.793911, 1.048918, 1.305893, 1.744338, 2.621962",\
+ "0.962841, 1.217848, 1.474824, 1.913269, 2.790894",\
+ "1.546094, 1.801101, 2.058077, 2.496521, 3.374143",\
+ "0.778696, 1.034884, 1.290997, 1.729101, 2.606058",\
+ "0.820992, 1.077180, 1.333292, 1.771397, 2.648355",\
+ "0.881555, 1.137743, 1.393855, 1.831960, 2.708917",\
+ "1.050485, 1.306673, 1.562785, 2.000890, 2.877849",\
+ "1.633738, 1.889926, 2.146038, 2.584142, 3.461098",\
+ "0.841881, 1.100292, 1.355131, 1.793014, 2.669567",\
+ "0.884176, 1.142587, 1.397427, 1.835310, 2.711864",\
+ "0.944739, 1.203150, 1.457990, 1.895873, 2.772426",\
+ "1.113669, 1.372080, 1.626920, 2.064803, 2.941358",\
+ "1.696922, 1.955333, 2.210173, 2.648055, 3.524607",\
+ "1.175348, 1.462047, 1.706695, 2.142236, 3.015023",\
+ "1.217643, 1.504343, 1.748991, 2.184532, 3.057320",\
+ "1.278206, 1.564905, 1.809554, 2.245094, 3.117882",\
+ "1.447136, 1.733835, 1.978484, 2.414025, 3.286813",\
+ "2.030389, 2.317089, 2.561737, 2.997277, 3.870063");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061",\
+ "0.045862, 0.045862, 0.045861, 0.045860, 0.045856",\
+ "0.079962, 0.079962, 0.079962, 0.079962, 0.079962",\
+ "0.155688, 0.155688, 0.155687, 0.155686, 0.155684",\
+ "0.431271, 0.431271, 0.431271, 0.431271, 0.431271",\
+ "1.498067, 1.498067, 1.498066, 1.498065, 1.498061");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2536*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.746778, 1.007936, 1.300121, 1.808548, 2.825403",\
+ "0.781168, 1.042326, 1.334511, 1.842939, 2.859794",\
+ "0.852412, 1.113570, 1.405754, 1.914182, 2.931037",\
+ "1.106578, 1.367736, 1.659921, 2.168348, 3.185203",\
+ "2.031144, 2.292302, 2.584487, 3.092916, 4.109773",\
+ "0.834191, 1.095510, 1.387813, 1.895263, 2.911337",\
+ "0.868581, 1.129900, 1.422203, 1.929654, 2.945728",\
+ "0.939824, 1.201144, 1.493447, 2.000897, 3.016971",\
+ "1.193991, 1.455310, 1.747613, 2.255063, 3.271137",\
+ "2.118557, 2.379876, 2.672179, 3.179631, 4.195706",\
+ "0.915090, 1.184556, 1.475780, 1.982886, 2.998292",\
+ "0.949480, 1.218946, 1.510170, 2.017276, 3.032683",\
+ "1.020724, 1.290190, 1.581414, 2.088519, 3.103926",\
+ "1.274890, 1.544356, 1.835580, 2.342686, 3.358092",\
+ "2.199456, 2.468922, 2.760146, 3.267253, 4.282661",\
+ "0.974724, 1.250286, 1.539926, 2.046799, 3.061801",\
+ "1.009114, 1.284676, 1.574316, 2.081189, 3.096192",\
+ "1.080358, 1.355919, 1.645560, 2.152433, 3.167435",\
+ "1.334524, 1.610085, 1.899726, 2.406599, 3.421601",\
+ "2.259090, 2.534652, 2.824292, 3.331166, 4.346170",\
+ "1.308449, 1.615752, 1.892195, 2.396312, 3.407257",\
+ "1.342839, 1.650142, 1.926585, 2.430702, 3.441648",\
+ "1.414083, 1.721386, 1.997829, 2.501945, 3.512891",\
+ "1.668249, 1.975552, 2.251995, 2.756112, 3.767057",\
+ "2.592815, 2.900118, 3.176561, 3.680679, 4.691627");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692758, 0.692761",\
+ "2.464216, 2.464216, 2.464222, 2.464247, 2.464295",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692758, 0.692761",\
+ "2.464216, 2.464216, 2.464222, 2.464247, 2.464295",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692758, 0.692761",\
+ "2.464216, 2.464216, 2.464222, 2.464247, 2.464295",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692758, 0.692761",\
+ "2.464216, 2.464216, 2.464222, 2.464247, 2.464295",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692758, 0.692761",\
+ "2.464216, 2.464216, 2.464223, 2.464247, 2.464295");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.778533, 1.039691, 1.331875, 1.840304, 2.857162",\
+ "0.820286, 1.081443, 1.373628, 1.882057, 2.898914",\
+ "0.880216, 1.141374, 1.433558, 1.941987, 2.958845",\
+ "1.048333, 1.309491, 1.601676, 2.110105, 3.126962",\
+ "1.630225, 1.891381, 2.183566, 2.692000, 3.708866",\
+ "0.865946, 1.127265, 1.419568, 1.927019, 2.943096",\
+ "0.907698, 1.169017, 1.461320, 1.968772, 2.984848",\
+ "0.967629, 1.228948, 1.521251, 2.028702, 3.044779",\
+ "1.135746, 1.397065, 1.689368, 2.196820, 3.212896",\
+ "1.717638, 1.978955, 2.271259, 2.778715, 3.794800",\
+ "0.946845, 1.216310, 1.507534, 2.014642, 3.030051",\
+ "0.988598, 1.258063, 1.549287, 2.056394, 3.071803",\
+ "1.048528, 1.317993, 1.609217, 2.116324, 3.131734",\
+ "1.216645, 1.486111, 1.777335, 2.284442, 3.299851",\
+ "1.798537, 2.068001, 2.359225, 2.866337, 3.881755",\
+ "1.006479, 1.282040, 1.571681, 2.078555, 3.093560",\
+ "1.048231, 1.323793, 1.613433, 2.120307, 3.135312",\
+ "1.108162, 1.383723, 1.673364, 2.180238, 3.195243",\
+ "1.276279, 1.551840, 1.841481, 2.348355, 3.363360",\
+ "1.858171, 2.133730, 2.423372, 2.930250, 3.945264",\
+ "1.340204, 1.647506, 1.923949, 2.428067, 3.439016",\
+ "1.381956, 1.689259, 1.965702, 2.469820, 3.480768",\
+ "1.441887, 1.749189, 2.025632, 2.529750, 3.540699",\
+ "1.610004, 1.917307, 2.193750, 2.697868, 3.708816",\
+ "2.191895, 2.499197, 2.775640, 3.279763, 4.290720");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2630*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.730000, 0.984087, 1.265833, 1.734427, 2.671616",\
+ "0.764390, 1.018477, 1.300223, 1.768817, 2.706006",\
+ "0.835634, 1.089720, 1.371467, 1.840061, 2.777249",\
+ "1.089800, 1.343887, 1.625633, 2.094227, 3.031415",\
+ "2.014367, 2.268453, 2.550199, 3.018794, 3.955984",\
+ "0.817406, 1.071683, 1.353396, 1.821141, 2.757549",\
+ "0.851796, 1.106073, 1.387787, 1.855531, 2.791939",\
+ "0.923039, 1.177317, 1.459030, 1.926775, 2.863183",\
+ "1.177206, 1.431483, 1.713197, 2.180941, 3.117349",\
+ "2.101773, 2.356050, 2.637762, 3.105508, 4.041918",\
+ "0.898242, 1.160744, 1.441359, 1.908762, 2.844504",\
+ "0.932632, 1.195135, 1.475749, 1.943152, 2.878895",\
+ "1.003876, 1.266378, 1.546993, 2.014396, 2.950138",\
+ "1.258042, 1.520545, 1.801159, 2.268562, 3.204304",\
+ "2.182609, 2.445111, 2.725725, 3.193129, 4.128873",\
+ "0.955902, 1.226495, 1.505499, 1.972675, 2.908013",\
+ "0.990292, 1.260885, 1.539889, 2.007065, 2.942404",\
+ "1.061535, 1.332129, 1.611133, 2.078309, 3.013647",\
+ "1.315702, 1.586295, 1.865299, 2.332475, 3.267813",\
+ "2.240268, 2.510862, 2.789865, 3.257042, 4.192382",\
+ "1.290536, 1.592309, 1.857360, 2.322016, 3.253469",\
+ "1.324926, 1.626699, 1.891750, 2.356406, 3.287859",\
+ "1.396169, 1.697943, 1.962993, 2.427649, 3.359103",\
+ "1.650336, 1.952109, 2.217160, 2.681816, 3.613269",\
+ "2.574903, 2.876675, 3.141726, 3.606383, 4.537838");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692757, 0.692760",\
+ "2.464221, 2.464222, 2.464226, 2.464241, 2.464270",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692757, 0.692760",\
+ "2.464221, 2.464222, 2.464226, 2.464241, 2.464270",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692757, 0.692760",\
+ "2.464221, 2.464222, 2.464226, 2.464241, 2.464270",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692757, 0.692760",\
+ "2.464221, 2.464222, 2.464226, 2.464241, 2.464270",\
+ "0.034112, 0.034112, 0.034112, 0.034112, 0.034112",\
+ "0.083749, 0.083749, 0.083749, 0.083750, 0.083750",\
+ "0.208405, 0.208405, 0.208405, 0.208405, 0.208405",\
+ "0.692756, 0.692756, 0.692756, 0.692757, 0.692760",\
+ "2.464221, 2.464222, 2.464226, 2.464241, 2.464270");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.761755, 1.015841, 1.297587, 1.766182, 2.703373",\
+ "0.803508, 1.057594, 1.339340, 1.807935, 2.745125",\
+ "0.863438, 1.117525, 1.399270, 1.867865, 2.805056",\
+ "1.031556, 1.285642, 1.567388, 2.035983, 2.973173",\
+ "1.613449, 1.867533, 2.149277, 2.617876, 3.555073",\
+ "0.849161, 1.103438, 1.385151, 1.852896, 2.789307",\
+ "0.890914, 1.145190, 1.426903, 1.894649, 2.831059",\
+ "0.950844, 1.205121, 1.486834, 1.954579, 2.890990",\
+ "1.118961, 1.373238, 1.654951, 2.122696, 3.059107",\
+ "1.700854, 1.955129, 2.236841, 2.704590, 3.641007",\
+ "0.929998, 1.192499, 1.473114, 1.940517, 2.876262",\
+ "0.971750, 1.234252, 1.514866, 1.982270, 2.918014",\
+ "1.031680, 1.294182, 1.574797, 2.042201, 2.977945",\
+ "1.199798, 1.462299, 1.742914, 2.210318, 3.146062",\
+ "1.781691, 2.044191, 2.324804, 2.792211, 3.727962",\
+ "0.987657, 1.258250, 1.537253, 2.004430, 2.939771",\
+ "1.029410, 1.300003, 1.579006, 2.046183, 2.981523",\
+ "1.089340, 1.359933, 1.638936, 2.106113, 3.041454",\
+ "1.257457, 1.528050, 1.807054, 2.274230, 3.209571",\
+ "1.839350, 2.109941, 2.388943, 2.856124, 3.791471",\
+ "1.322291, 1.624063, 1.889114, 2.353771, 3.285227",\
+ "1.364043, 1.665816, 1.930866, 2.395524, 3.326979",\
+ "1.423974, 1.725746, 1.990797, 2.455454, 3.386910",\
+ "1.592091, 1.893864, 2.158914, 2.623571, 3.555027",\
+ "2.173984, 2.475754, 2.740804, 3.205465, 4.136927");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119",\
+ "0.045878, 0.045878, 0.045878, 0.045878, 0.045878",\
+ "0.079914, 0.079914, 0.079914, 0.079914, 0.079914",\
+ "0.155805, 0.155805, 0.155805, 0.155805, 0.155805",\
+ "0.431307, 0.431307, 0.431307, 0.431307, 0.431307",\
+ "1.494118, 1.494118, 1.494119, 1.494119, 1.494119");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_2588*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.408137, 0.641492, 0.827125, 1.126915, 1.707802",\
+ "0.449833, 0.683188, 0.868821, 1.168611, 1.749498",\
+ "0.526013, 0.759368, 0.945001, 1.244791, 1.825678",\
+ "0.781403, 1.014758, 1.200392, 1.500182, 2.081068",\
+ "1.705853, 1.939205, 2.124836, 2.424627, 3.005518",\
+ "0.496543, 0.728810, 0.914406, 1.214220, 1.795155",\
+ "0.538239, 0.770506, 0.956102, 1.255916, 1.836851",\
+ "0.614419, 0.846686, 1.032282, 1.332096, 1.913031",\
+ "0.869809, 1.102077, 1.287673, 1.587487, 2.168421",\
+ "1.794258, 2.026523, 2.212117, 2.511932, 3.092872",\
+ "0.585620, 0.809145, 0.994433, 1.294249, 1.875187",\
+ "0.627316, 0.850841, 1.036129, 1.335945, 1.916883",\
+ "0.703496, 0.927021, 1.112309, 1.412125, 1.993063",\
+ "0.958887, 1.182412, 1.367700, 1.667515, 2.248453",\
+ "1.883336, 2.106858, 2.292144, 2.591961, 3.172904",\
+ "0.648884, 0.866977, 1.052144, 1.351703, 1.932250",\
+ "0.690580, 0.908672, 1.093840, 1.393399, 1.973946",\
+ "0.766760, 0.984852, 1.170020, 1.469579, 2.050126",\
+ "1.022151, 1.240243, 1.425410, 1.724970, 2.305516",\
+ "1.946599, 2.164690, 2.349855, 2.649415, 3.229967",\
+ "0.982874, 1.172308, 1.355803, 1.654896, 2.234530",\
+ "1.024570, 1.214004, 1.397499, 1.696592, 2.276226",\
+ "1.100750, 1.290184, 1.473679, 1.772772, 2.352406",\
+ "1.356140, 1.545574, 1.729069, 2.028162, 2.607796",\
+ "2.280588, 2.470021, 2.653514, 2.952608, 3.532247");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070075, 0.070075, 0.070075, 0.070075, 0.070076",\
+ "0.199411, 0.199411, 0.199411, 0.199411, 0.199413",\
+ "0.685859, 0.685859, 0.685859, 0.685862, 0.685867",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.428385, 0.661739, 0.847373, 1.147163, 1.728050",\
+ "0.460631, 0.693986, 0.879619, 1.179409, 1.760296",\
+ "0.510947, 0.744302, 0.929935, 1.229725, 1.810612",\
+ "0.671611, 0.904965, 1.090599, 1.390389, 1.971276",\
+ "1.252728, 1.486083, 1.671717, 1.971507, 2.552392",\
+ "0.516791, 0.749058, 0.934654, 1.234468, 1.815403",\
+ "0.549037, 0.781304, 0.966900, 1.266714, 1.847649",\
+ "0.599353, 0.831620, 1.017216, 1.317030, 1.897965",\
+ "0.760017, 0.992284, 1.177880, 1.477694, 2.058629",\
+ "1.341134, 1.573402, 1.758998, 2.058812, 2.639746",\
+ "0.605868, 0.829393, 1.014680, 1.314497, 1.895434",\
+ "0.638114, 0.861639, 1.046927, 1.346743, 1.927681",\
+ "0.688430, 0.911955, 1.097243, 1.397059, 1.977997",\
+ "0.849094, 1.072619, 1.257906, 1.557723, 2.138661",\
+ "1.430211, 1.653737, 1.839025, 2.138841, 2.719778",\
+ "0.669132, 0.887224, 1.072391, 1.371951, 1.952498",\
+ "0.701378, 0.919471, 1.104638, 1.404197, 1.984744",\
+ "0.751694, 0.969786, 1.154953, 1.454513, 2.035060",\
+ "0.912358, 1.130450, 1.315617, 1.615177, 2.195724",\
+ "1.493475, 1.711568, 1.896736, 2.196295, 2.776841",\
+ "1.003122, 1.192555, 1.376050, 1.675143, 2.254777",\
+ "1.035368, 1.224802, 1.408297, 1.707390, 2.287024",\
+ "1.085684, 1.275118, 1.458613, 1.757706, 2.337340",\
+ "1.246348, 1.435782, 1.619277, 1.918369, 2.498003",\
+ "1.827465, 2.016899, 2.200395, 2.499487, 3.079121");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483046",\
+ "0.029703, 0.029703, 0.029703, 0.029704, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419470, 0.419470, 0.419470, 0.419470, 0.419470",\
+ "1.483040, 1.483040, 1.483040, 1.483042, 1.483047");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2478*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.516812, 0.720433, 0.930283, 1.259401, 1.891051",\
+ "0.558535, 0.762156, 0.972006, 1.301124, 1.932775",\
+ "0.634601, 0.838222, 1.048072, 1.377190, 2.008840",\
+ "0.890090, 1.093710, 1.303558, 1.632676, 2.264330",\
+ "1.814399, 2.018020, 2.227869, 2.556987, 3.188638",\
+ "0.605540, 0.807752, 1.017564, 1.346706, 1.978405",\
+ "0.647263, 0.849475, 1.059287, 1.388429, 2.020128",\
+ "0.723329, 0.925541, 1.135353, 1.464495, 2.096194",\
+ "0.978818, 1.181028, 1.390838, 1.719981, 2.351683",\
+ "1.903127, 2.105338, 2.315150, 2.644292, 3.275992",\
+ "0.695187, 0.888089, 1.097591, 1.426734, 2.058436",\
+ "0.736910, 0.929812, 1.139314, 1.468457, 2.100160",\
+ "0.812976, 1.005878, 1.215380, 1.544523, 2.176225",\
+ "1.068465, 1.261366, 1.470865, 1.800010, 2.431715",\
+ "1.992774, 2.185676, 2.395177, 2.724321, 3.356023",\
+ "0.755223, 0.945959, 1.155358, 1.484250, 2.115621",\
+ "0.796946, 0.987682, 1.197081, 1.525973, 2.157344",\
+ "0.873011, 1.063748, 1.273147, 1.602039, 2.233410",\
+ "1.128500, 1.319236, 1.528632, 1.857525, 2.488900",\
+ "2.052809, 2.243546, 2.452944, 2.781836, 3.413208",\
+ "1.058034, 1.251576, 1.459026, 1.787495, 2.418047",\
+ "1.099757, 1.293299, 1.500749, 1.829218, 2.459770",\
+ "1.175823, 1.369365, 1.576815, 1.905284, 2.535836",\
+ "1.431312, 1.624853, 1.832301, 2.160770, 2.791326",\
+ "2.355621, 2.549163, 2.756612, 3.085082, 3.715634");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.025354, 0.025354, 0.025354, 0.025354, 0.025354",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199485, 0.199485, 0.199485, 0.199486, 0.199488",\
+ "0.686680, 0.686680, 0.686680, 0.686680, 0.686680",\
+ "2.452500, 2.452500, 2.452512, 2.452522, 2.452533",\
+ "0.025354, 0.025354, 0.025354, 0.025354, 0.025354",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199485, 0.199485, 0.199485, 0.199486, 0.199488",\
+ "0.686680, 0.686680, 0.686680, 0.686680, 0.686680",\
+ "2.452500, 2.452500, 2.452512, 2.452522, 2.452533",\
+ "0.025354, 0.025354, 0.025354, 0.025354, 0.025354",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199485, 0.199485, 0.199485, 0.199486, 0.199488",\
+ "0.686680, 0.686680, 0.686680, 0.686680, 0.686680",\
+ "2.452500, 2.452500, 2.452512, 2.452522, 2.452533",\
+ "0.025354, 0.025354, 0.025354, 0.025354, 0.025354",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199485, 0.199485, 0.199485, 0.199486, 0.199488",\
+ "0.686680, 0.686680, 0.686680, 0.686680, 0.686680",\
+ "2.452500, 2.452500, 2.452512, 2.452522, 2.452533",\
+ "0.025354, 0.025354, 0.025354, 0.025354, 0.025354",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199485, 0.199485, 0.199485, 0.199486, 0.199488",\
+ "0.686680, 0.686680, 0.686680, 0.686680, 0.686680",\
+ "2.452500, 2.452500, 2.452512, 2.452522, 2.452533");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.539402, 0.743023, 0.952873, 1.281991, 1.913641",\
+ "0.571427, 0.775047, 0.984897, 1.314015, 1.945666",\
+ "0.621835, 0.825456, 1.035306, 1.364424, 1.996074",\
+ "0.782894, 0.986516, 1.196367, 1.525485, 2.157133",\
+ "1.362868, 1.566489, 1.776340, 2.105458, 2.737106",\
+ "0.628130, 0.830342, 1.040154, 1.369296, 2.000995",\
+ "0.660155, 0.862366, 1.072178, 1.401320, 2.033020",\
+ "0.710563, 0.912774, 1.122587, 1.451729, 2.083427",\
+ "0.871623, 1.073835, 1.283648, 1.612790, 2.244487",\
+ "1.451596, 1.653808, 1.863621, 2.192763, 2.824460",\
+ "0.717777, 0.910679, 1.120180, 1.449324, 2.081027",\
+ "0.749802, 0.942704, 1.152205, 1.481349, 2.113051",\
+ "0.800210, 0.993112, 1.202614, 1.531757, 2.163459",\
+ "0.961270, 1.154172, 1.363675, 1.692818, 2.324518",\
+ "1.541243, 1.734145, 1.943648, 2.272791, 2.904491",\
+ "0.777813, 0.968549, 1.177947, 1.506840, 2.138211",\
+ "0.809837, 1.000574, 1.209971, 1.538864, 2.170236",\
+ "0.860245, 1.050982, 1.260381, 1.589273, 2.220644",\
+ "1.021305, 1.212042, 1.421442, 1.750333, 2.381703",\
+ "1.601278, 1.792015, 2.001415, 2.330307, 2.961676",\
+ "1.080624, 1.274166, 1.481616, 1.810085, 2.440637",\
+ "1.112649, 1.306190, 1.513640, 1.842109, 2.472662",\
+ "1.163057, 1.356599, 1.564049, 1.892518, 2.523069",\
+ "1.324117, 1.517659, 1.725110, 2.053579, 2.684129",\
+ "1.904090, 2.097632, 2.305083, 2.633552, 3.264102");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059266, 0.059266, 0.059266, 0.059267, 0.059267",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131513",\
+ "0.417796, 0.417796, 0.417800, 0.417803, 0.417807",\
+ "1.484511, 1.484511, 1.484513, 1.484514, 1.484517",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059266, 0.059266, 0.059266, 0.059267, 0.059267",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131513",\
+ "0.417796, 0.417796, 0.417800, 0.417803, 0.417807",\
+ "1.484511, 1.484511, 1.484513, 1.484514, 1.484517",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059266, 0.059266, 0.059266, 0.059267, 0.059267",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131513",\
+ "0.417796, 0.417796, 0.417800, 0.417803, 0.417807",\
+ "1.484511, 1.484511, 1.484513, 1.484514, 1.484517",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059266, 0.059266, 0.059266, 0.059267, 0.059267",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131513",\
+ "0.417796, 0.417796, 0.417800, 0.417803, 0.417807",\
+ "1.484511, 1.484511, 1.484513, 1.484514, 1.484517",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059266, 0.059266, 0.059266, 0.059267, 0.059267",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131513",\
+ "0.417796, 0.417796, 0.417800, 0.417803, 0.417807",\
+ "1.484511, 1.484511, 1.484513, 1.484514, 1.484517");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2528*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.343347, 0.560733, 0.738878, 1.027873, 1.588767",\
+ "0.376901, 0.594286, 0.772429, 1.061825, 1.623703",\
+ "0.447931, 0.665317, 0.843465, 1.132863, 1.694739",\
+ "0.702775, 0.920161, 1.098308, 1.387706, 1.949584",\
+ "1.627697, 1.845075, 2.023177, 2.312590, 2.874544",\
+ "0.431725, 0.648051, 0.826159, 1.115178, 1.676121",\
+ "0.465279, 0.681604, 0.859710, 1.149130, 1.711057",\
+ "0.536309, 0.752636, 0.930746, 1.220168, 1.782093",\
+ "0.791152, 1.007479, 1.185589, 1.475011, 2.036938",\
+ "1.716075, 1.932394, 2.110458, 2.399895, 2.961898",\
+ "0.521054, 0.728383, 0.906186, 1.195207, 1.756152",\
+ "0.554608, 0.761937, 0.939737, 1.229159, 1.791088",\
+ "0.625638, 0.832968, 1.010773, 1.300196, 1.862124",\
+ "0.880482, 1.087811, 1.265616, 1.555040, 2.116970",\
+ "1.805404, 2.012726, 2.190485, 2.479923, 3.041929",\
+ "0.584699, 0.786201, 0.963880, 1.252637, 1.813169",\
+ "0.618252, 0.819754, 0.997431, 1.286590, 1.848107",\
+ "0.689283, 0.890786, 1.068467, 1.357627, 1.919143",\
+ "0.944126, 1.145629, 1.323310, 1.612471, 2.173989",\
+ "1.869048, 2.070544, 2.248179, 2.537354, 3.098948",\
+ "0.912898, 1.091426, 1.267535, 1.555809, 2.115392",\
+ "0.946452, 1.124980, 1.301087, 1.589763, 2.150333",\
+ "1.017482, 1.196011, 1.372123, 1.660800, 2.221369",\
+ "1.272326, 1.450854, 1.626966, 1.915644, 2.476214",\
+ "2.197247, 2.375769, 2.551834, 2.840528, 3.401175");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.023744, 0.023744, 0.023744, 0.023744, 0.023744",\
+ "0.069296, 0.069296, 0.069296, 0.069296, 0.069296",\
+ "0.200223, 0.200225, 0.200229, 0.200251, 0.200303",\
+ "0.685855, 0.685857, 0.685864, 0.685915, 0.686035",\
+ "2.446888, 2.446896, 2.446897, 2.446897, 2.446897",\
+ "0.023744, 0.023744, 0.023744, 0.023744, 0.023744",\
+ "0.069296, 0.069296, 0.069296, 0.069296, 0.069296",\
+ "0.200223, 0.200225, 0.200229, 0.200251, 0.200303",\
+ "0.685855, 0.685857, 0.685864, 0.685915, 0.686035",\
+ "2.446888, 2.446896, 2.446897, 2.446897, 2.446897",\
+ "0.023744, 0.023744, 0.023744, 0.023744, 0.023744",\
+ "0.069296, 0.069296, 0.069296, 0.069296, 0.069296",\
+ "0.200223, 0.200225, 0.200229, 0.200251, 0.200303",\
+ "0.685855, 0.685857, 0.685864, 0.685915, 0.686035",\
+ "2.446889, 2.446896, 2.446897, 2.446897, 2.446897",\
+ "0.023744, 0.023744, 0.023744, 0.023744, 0.023744",\
+ "0.069296, 0.069296, 0.069296, 0.069296, 0.069296",\
+ "0.200223, 0.200225, 0.200229, 0.200251, 0.200303",\
+ "0.685855, 0.685857, 0.685864, 0.685915, 0.686035",\
+ "2.446889, 2.446896, 2.446897, 2.446897, 2.446897",\
+ "0.023744, 0.023744, 0.023744, 0.023744, 0.023744",\
+ "0.069296, 0.069296, 0.069296, 0.069296, 0.069296",\
+ "0.200223, 0.200225, 0.200229, 0.200251, 0.200303",\
+ "0.685855, 0.685857, 0.685864, 0.685915, 0.686035",\
+ "2.446889, 2.446896, 2.446897, 2.446897, 2.446897");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.337578, 0.554964, 0.733111, 1.022508, 1.584385",\
+ "0.369918, 0.587304, 0.765454, 1.054853, 1.616734",\
+ "0.420270, 0.637656, 0.815804, 1.105202, 1.667081",\
+ "0.581348, 0.798734, 0.976881, 1.266279, 1.828157",\
+ "1.161863, 1.379232, 1.557282, 1.846629, 2.408468",\
+ "0.425956, 0.642282, 0.820392, 1.109813, 1.671738",\
+ "0.458296, 0.674622, 0.852735, 1.142159, 1.704088",\
+ "0.508648, 0.724974, 0.903085, 1.192507, 1.754434",\
+ "0.669726, 0.886052, 1.064162, 1.353584, 1.915510",\
+ "1.250240, 1.466550, 1.644563, 1.933934, 2.495822",\
+ "0.515285, 0.722614, 0.900419, 1.189842, 1.751770",\
+ "0.547625, 0.754955, 0.932762, 1.222187, 1.784119",\
+ "0.597977, 0.805307, 0.983111, 1.272535, 1.834466",\
+ "0.759055, 0.966385, 1.144189, 1.433612, 1.995542",\
+ "1.339568, 1.546883, 1.724590, 2.013963, 2.575853",\
+ "0.578929, 0.780432, 0.958113, 1.247273, 1.808789",\
+ "0.611270, 0.812772, 0.990456, 1.279618, 1.841138",\
+ "0.661622, 0.863124, 1.040806, 1.329967, 1.891485",\
+ "0.822700, 1.024202, 1.201883, 1.491044, 2.052561",\
+ "1.403211, 1.604700, 1.782284, 2.071394, 2.632872",\
+ "0.907129, 1.085657, 1.261768, 1.550446, 2.111014",\
+ "0.939469, 1.117998, 1.294111, 1.582791, 2.143364",\
+ "0.989821, 1.168350, 1.344461, 1.633139, 2.193710",\
+ "1.150899, 1.329427, 1.505538, 1.794216, 2.354787",\
+ "1.731412, 1.909925, 2.085939, 2.374567, 2.935098");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.030095, 0.030094, 0.030093, 0.030093, 0.030093",\
+ "0.059305, 0.059302, 0.059288, 0.059276, 0.059261",\
+ "0.131696, 0.131694, 0.131680, 0.131669, 0.131651",\
+ "0.419114, 0.419122, 0.419145, 0.419266, 0.419546",\
+ "1.483332, 1.483297, 1.483098, 1.482941, 1.482729",\
+ "0.030095, 0.030094, 0.030093, 0.030093, 0.030093",\
+ "0.059305, 0.059302, 0.059288, 0.059276, 0.059261",\
+ "0.131696, 0.131694, 0.131680, 0.131669, 0.131651",\
+ "0.419115, 0.419122, 0.419145, 0.419266, 0.419546",\
+ "1.483331, 1.483297, 1.483098, 1.482941, 1.482729",\
+ "0.030095, 0.030094, 0.030093, 0.030093, 0.030093",\
+ "0.059305, 0.059302, 0.059288, 0.059276, 0.059261",\
+ "0.131696, 0.131694, 0.131680, 0.131669, 0.131651",\
+ "0.419115, 0.419122, 0.419145, 0.419266, 0.419546",\
+ "1.483328, 1.483297, 1.483098, 1.482941, 1.482729",\
+ "0.030095, 0.030094, 0.030093, 0.030093, 0.030093",\
+ "0.059304, 0.059302, 0.059288, 0.059276, 0.059261",\
+ "0.131695, 0.131694, 0.131680, 0.131668, 0.131651",\
+ "0.419116, 0.419122, 0.419145, 0.419267, 0.419547",\
+ "1.483325, 1.483297, 1.483097, 1.482941, 1.482729",\
+ "0.030095, 0.030094, 0.030093, 0.030093, 0.030093",\
+ "0.059305, 0.059302, 0.059288, 0.059276, 0.059260",\
+ "0.131696, 0.131694, 0.131680, 0.131668, 0.131651",\
+ "0.419115, 0.419122, 0.419145, 0.419267, 0.419548",\
+ "1.483327, 1.483296, 1.483097, 1.482941, 1.482728");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2593*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.254656, 0.491006, 0.681199, 0.986728, 1.577708",\
+ "0.288244, 0.524620, 0.714843, 1.020374, 1.611331",\
+ "0.359123, 0.595519, 0.785873, 1.091419, 1.682284",\
+ "0.614167, 0.850282, 1.040808, 1.346411, 1.937248",\
+ "1.539512, 1.774279, 1.968056, 2.274137, 2.863164",\
+ "0.343150, 0.578325, 0.768480, 1.074033, 1.665062",\
+ "0.376740, 0.611939, 0.802124, 1.107679, 1.698684",\
+ "0.447618, 0.682838, 0.873154, 1.178725, 1.769638",\
+ "0.702665, 0.937601, 1.128089, 1.433716, 2.024602",\
+ "1.628026, 1.861597, 2.055336, 2.361442, 2.950518",\
+ "0.432477, 0.658660, 0.848507, 1.154062, 1.745093",\
+ "0.466070, 0.692274, 0.882150, 1.187708, 1.778716",\
+ "0.536949, 0.763173, 0.953181, 1.258753, 1.849669",\
+ "0.792003, 1.017936, 1.208116, 1.513744, 2.104633",\
+ "1.717412, 1.941932, 2.135364, 2.441470, 3.030550",\
+ "0.495969, 0.716495, 0.906228, 1.211528, 1.802181",\
+ "0.529564, 0.750109, 0.939872, 1.245174, 1.835804",\
+ "0.600443, 0.821007, 1.010903, 1.316219, 1.906757",\
+ "0.855505, 1.075769, 1.265838, 1.571210, 2.161721",\
+ "1.780957, 1.999760, 2.193094, 2.498934, 3.087633",\
+ "0.831401, 1.021856, 1.209889, 1.514732, 2.104490",\
+ "0.865014, 1.055469, 1.243533, 1.548377, 2.138113",\
+ "0.935893, 1.126362, 1.314564, 1.619422, 2.209066",\
+ "1.191001, 1.381117, 1.569499, 1.874413, 2.464029",\
+ "2.116730, 2.305066, 2.496756, 2.802135, 3.389936");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069342, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685011, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454035, 2.454504, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069342, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685011, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454035, 2.454504, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069342, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685011, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454035, 2.454504, 2.455152",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454036, 2.454505, 2.455154",\
+ "0.023821, 0.023821, 0.023821, 0.023833, 0.023862",\
+ "0.069303, 0.069303, 0.069343, 0.069357, 0.069357",\
+ "0.199561, 0.199561, 0.199561, 0.199561, 0.199561",\
+ "0.684891, 0.684891, 0.685012, 0.685055, 0.685055",\
+ "2.453468, 2.453468, 2.454036, 2.454506, 2.455156");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.249454, 0.486004, 0.675967, 0.981250, 1.571825",\
+ "0.281865, 0.518328, 0.708344, 1.013662, 1.604275",\
+ "0.332260, 0.568655, 0.758650, 1.063988, 1.654672",\
+ "0.493098, 0.729544, 0.919296, 1.224627, 1.815523",\
+ "1.073988, 1.310152, 1.500044, 1.805268, 2.395687",\
+ "0.337933, 0.573322, 0.763248, 1.068555, 1.659178",\
+ "0.370344, 0.605646, 0.795625, 1.100967, 1.691628",\
+ "0.420740, 0.655974, 0.845931, 1.151293, 1.742025",\
+ "0.581582, 0.816862, 1.006577, 1.311932, 1.902877",\
+ "1.162485, 1.397470, 1.587325, 1.892573, 2.483041",\
+ "0.427218, 0.653657, 0.843275, 1.148583, 1.739210",\
+ "0.459630, 0.685981, 0.875652, 1.180995, 1.771660",\
+ "0.510027, 0.736309, 0.925958, 1.231322, 1.822057",\
+ "0.670883, 0.897197, 1.086604, 1.391961, 1.982908",\
+ "1.251823, 1.477805, 1.667352, 1.972602, 2.563072",\
+ "0.490671, 0.711493, 0.900996, 1.206049, 1.796297",\
+ "0.523083, 0.743816, 0.933373, 1.238461, 1.828747",\
+ "0.573482, 0.794144, 0.983679, 1.288787, 1.879144",\
+ "0.734351, 0.955034, 1.144324, 1.449427, 2.039996",\
+ "1.315324, 1.535635, 1.725073, 2.030067, 2.620159",\
+ "0.825858, 1.016851, 1.204656, 1.509252, 2.098604",\
+ "0.858274, 1.049176, 1.237034, 1.541664, 2.131054",\
+ "0.908682, 1.099504, 1.287340, 1.591990, 2.181452",\
+ "1.069631, 1.260400, 1.447985, 1.752630, 2.342305",\
+ "1.650816, 1.840953, 2.028734, 2.333270, 2.922466");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417989, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417989, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417989, 0.418302",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030363",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418303",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309",\
+ "0.030092, 0.030092, 0.030092, 0.030170, 0.030364",\
+ "0.059437, 0.059437, 0.059437, 0.059474, 0.059565",\
+ "0.131608, 0.131608, 0.131661, 0.131712, 0.131790",\
+ "0.417862, 0.417862, 0.417862, 0.417990, 0.418303",\
+ "1.478309, 1.478309, 1.478309, 1.478309, 1.478309");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2636*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.325472, 0.549886, 0.736679, 1.035269, 1.612348",\
+ "0.359026, 0.583502, 0.770294, 1.068882, 1.645956",\
+ "0.430054, 0.654527, 0.841316, 1.139890, 1.716933",\
+ "0.684897, 0.909477, 1.096261, 1.394816, 1.971817",\
+ "1.609849, 1.835494, 2.022258, 2.320729, 2.897541",\
+ "0.413759, 0.637204, 0.823960, 1.122574, 1.699702",\
+ "0.447318, 0.670820, 0.857575, 1.156187, 1.733310",\
+ "0.518346, 0.741845, 0.928597, 1.227195, 1.804287",\
+ "0.773189, 0.996795, 1.183542, 1.482121, 2.059171",\
+ "1.698136, 1.922812, 2.109539, 2.408034, 2.984894",\
+ "0.503271, 0.717533, 0.903987, 1.202602, 1.779733",\
+ "0.536839, 0.751148, 0.937602, 1.236216, 1.813341",\
+ "0.607869, 0.822173, 1.008624, 1.307223, 1.884319",\
+ "0.862712, 1.077123, 1.263569, 1.562150, 2.139202",\
+ "1.787644, 2.003140, 2.189566, 2.488062, 3.064926",\
+ "0.567278, 0.775354, 0.961702, 1.260053, 1.836791",\
+ "0.600857, 0.808970, 0.995318, 1.293666, 1.870399",\
+ "0.671888, 0.879995, 1.066339, 1.364674, 1.941376",\
+ "0.926731, 1.134945, 1.321284, 1.619600, 2.196259",\
+ "1.851648, 2.060962, 2.247281, 2.545512, 3.121983",\
+ "0.902611, 1.080594, 1.265360, 1.563241, 2.139063",\
+ "0.936228, 1.114210, 1.298975, 1.596854, 2.172671",\
+ "1.007260, 1.185235, 1.369997, 1.667862, 2.243648",\
+ "1.262219, 1.440184, 1.624942, 1.922788, 2.498532",\
+ "2.188276, 2.366200, 2.550939, 2.848700, 3.424254");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.023797, 0.023797, 0.023797, 0.023789, 0.023770",\
+ "0.069301, 0.069300, 0.069300, 0.069299, 0.069296",\
+ "0.200200, 0.200200, 0.200200, 0.200200, 0.200200",\
+ "0.685818, 0.685818, 0.685818, 0.685818, 0.685818",\
+ "2.446848, 2.446711, 2.446702, 2.446700, 2.446699",\
+ "0.023797, 0.023797, 0.023797, 0.023789, 0.023770",\
+ "0.069301, 0.069300, 0.069300, 0.069299, 0.069296",\
+ "0.200200, 0.200200, 0.200200, 0.200200, 0.200200",\
+ "0.685818, 0.685818, 0.685818, 0.685818, 0.685818",\
+ "2.446844, 2.446711, 2.446702, 2.446700, 2.446699",\
+ "0.023797, 0.023797, 0.023797, 0.023789, 0.023770",\
+ "0.069301, 0.069300, 0.069300, 0.069299, 0.069296",\
+ "0.200200, 0.200200, 0.200200, 0.200200, 0.200200",\
+ "0.685818, 0.685818, 0.685818, 0.685818, 0.685818",\
+ "2.446834, 2.446711, 2.446702, 2.446700, 2.446699",\
+ "0.023797, 0.023797, 0.023797, 0.023789, 0.023770",\
+ "0.069301, 0.069300, 0.069300, 0.069299, 0.069296",\
+ "0.200200, 0.200200, 0.200200, 0.200200, 0.200200",\
+ "0.685818, 0.685818, 0.685818, 0.685818, 0.685818",\
+ "2.446823, 2.446710, 2.446702, 2.446700, 2.446699",\
+ "0.023797, 0.023797, 0.023797, 0.023789, 0.023770",\
+ "0.069301, 0.069300, 0.069300, 0.069299, 0.069296",\
+ "0.200200, 0.200200, 0.200200, 0.200200, 0.200200",\
+ "0.685818, 0.685818, 0.685818, 0.685818, 0.685818",\
+ "2.446830, 2.446707, 2.446702, 2.446700, 2.446699");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.319701, 0.545442, 0.732220, 1.030751, 1.607697",\
+ "0.352039, 0.577906, 0.764685, 1.063221, 1.640180",\
+ "0.402393, 0.628225, 0.815004, 1.113542, 1.690503",\
+ "0.563471, 0.788964, 0.975744, 1.274281, 1.851241",\
+ "1.144048, 1.371915, 1.558729, 1.857404, 2.434677",\
+ "0.407993, 0.632759, 0.819501, 1.118056, 1.695051",\
+ "0.440331, 0.665224, 0.851966, 1.150527, 1.727533",\
+ "0.490684, 0.715542, 0.902285, 1.200847, 1.777857",\
+ "0.651763, 0.876282, 1.063025, 1.361586, 1.938595",\
+ "1.232329, 1.459233, 1.646010, 1.944710, 2.522030",\
+ "0.497516, 0.713088, 0.899528, 1.198085, 1.775082",\
+ "0.529855, 0.745552, 0.931993, 1.230555, 1.807565",\
+ "0.580208, 0.795871, 0.982312, 1.280875, 1.857888",\
+ "0.741286, 0.956611, 1.143052, 1.441614, 2.018626",\
+ "1.321819, 1.539562, 1.726037, 2.024738, 2.602062",\
+ "0.561534, 0.770909, 0.957244, 1.255535, 1.832140",\
+ "0.593874, 0.803374, 0.989709, 1.288005, 1.864622",\
+ "0.644226, 0.853692, 1.040028, 1.338326, 1.914946",\
+ "0.805304, 1.014432, 1.200767, 1.499064, 2.075684",\
+ "1.385806, 1.597383, 1.783752, 2.082189, 2.659120",\
+ "0.898194, 1.076148, 1.260901, 1.558723, 2.134412",\
+ "0.930657, 1.108613, 1.293366, 1.591193, 2.166894",\
+ "0.980975, 1.158931, 1.343685, 1.641514, 2.217218",\
+ "1.141715, 1.319671, 1.504425, 1.802253, 2.377955",\
+ "1.724358, 1.902624, 2.087410, 2.385377, 2.961392");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.030095, 0.030095, 0.030095, 0.030095, 0.030095",\
+ "0.059314, 0.059250, 0.059241, 0.059238, 0.059238",\
+ "0.131704, 0.131646, 0.131637, 0.131633, 0.131629",\
+ "0.418989, 0.418989, 0.418989, 0.418989, 0.418989",\
+ "1.483458, 1.482592, 1.482500, 1.482470, 1.482449",\
+ "0.030095, 0.030095, 0.030095, 0.030095, 0.030095",\
+ "0.059313, 0.059250, 0.059241, 0.059238, 0.059238",\
+ "0.131703, 0.131646, 0.131637, 0.131633, 0.131629",\
+ "0.418989, 0.418989, 0.418989, 0.418989, 0.418989",\
+ "1.483437, 1.482592, 1.482500, 1.482470, 1.482449",\
+ "0.030095, 0.030095, 0.030095, 0.030095, 0.030095",\
+ "0.059308, 0.059250, 0.059241, 0.059238, 0.059238",\
+ "0.131698, 0.131646, 0.131637, 0.131633, 0.131629",\
+ "0.418989, 0.418989, 0.418989, 0.418989, 0.418989",\
+ "1.483369, 1.482592, 1.482500, 1.482470, 1.482449",\
+ "0.030095, 0.030095, 0.030095, 0.030095, 0.030095",\
+ "0.059303, 0.059250, 0.059241, 0.059238, 0.059238",\
+ "0.131694, 0.131646, 0.131637, 0.131633, 0.131629",\
+ "0.418989, 0.418989, 0.418989, 0.418989, 0.418989",\
+ "1.483305, 1.482589, 1.482500, 1.482470, 1.482449",\
+ "0.030095, 0.030095, 0.030095, 0.030095, 0.030095",\
+ "0.059306, 0.059248, 0.059241, 0.059238, 0.059238",\
+ "0.131697, 0.131645, 0.131637, 0.131633, 0.131629",\
+ "0.418989, 0.418989, 0.418989, 0.418989, 0.418989",\
+ "1.482893, 1.482566, 1.482500, 1.482470, 1.482448");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2688*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.402084, 0.617885, 0.797210, 1.086950, 1.648801",\
+ "0.443807, 0.659608, 0.838933, 1.128673, 1.690524",\
+ "0.519872, 0.735673, 0.914998, 1.204739, 1.766590",\
+ "0.775363, 0.991161, 1.170488, 1.460228, 2.022074",\
+ "1.699671, 1.915471, 2.094797, 2.384537, 2.946387",\
+ "0.490367, 0.705202, 0.884491, 1.174255, 1.736155",\
+ "0.532090, 0.746925, 0.926214, 1.215978, 1.777877",\
+ "0.608155, 0.822991, 1.002279, 1.292044, 1.853944",\
+ "0.863645, 1.078479, 1.257769, 1.547533, 2.109427",\
+ "1.787954, 2.002789, 2.182077, 2.471842, 3.033741",\
+ "0.579657, 0.785533, 0.964518, 1.254284, 1.816186",\
+ "0.621380, 0.827256, 1.006241, 1.296007, 1.857909",\
+ "0.697445, 0.903322, 1.082306, 1.372073, 1.933975",\
+ "0.952935, 1.158809, 1.337796, 1.627561, 2.189459",\
+ "1.877244, 2.083119, 2.262105, 2.551871, 3.113772",\
+ "0.643368, 0.843363, 1.022215, 1.311715, 1.873206",\
+ "0.685091, 0.885086, 1.063938, 1.353438, 1.914929",\
+ "0.761157, 0.961152, 1.140003, 1.429504, 1.990995",\
+ "1.016647, 1.216639, 1.395493, 1.684993, 2.246479",\
+ "1.940955, 2.140950, 2.319802, 2.609302, 3.170792",\
+ "0.967924, 1.148670, 1.325870, 1.614888, 2.175433",\
+ "1.009647, 1.190393, 1.367593, 1.656611, 2.217156",\
+ "1.085713, 1.266459, 1.443658, 1.732677, 2.293222",\
+ "1.341202, 1.521946, 1.699148, 1.988165, 2.548706",\
+ "2.265511, 2.446256, 2.623457, 2.912475, 3.473019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199488, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199488, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498",\
+ "0.025354, 0.025353, 0.025353, 0.025353, 0.025352",\
+ "0.070228, 0.070228, 0.070228, 0.070228, 0.070228",\
+ "0.199487, 0.199487, 0.199487, 0.199486, 0.199483",\
+ "0.686687, 0.686687, 0.686686, 0.686686, 0.686686",\
+ "2.452523, 2.452519, 2.452519, 2.452513, 2.452498");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.424674, 0.640474, 0.819800, 1.109540, 1.671391",\
+ "0.456699, 0.672499, 0.851824, 1.141565, 1.703415",\
+ "0.507106, 0.722907, 0.902232, 1.191973, 1.753824",\
+ "0.668165, 0.883968, 1.063291, 1.353033, 1.914886",\
+ "1.248139, 1.463941, 1.643265, 1.933006, 2.494859",\
+ "0.512957, 0.727792, 0.907081, 1.196846, 1.758744",\
+ "0.544981, 0.759817, 0.939105, 1.228870, 1.790768",\
+ "0.595389, 0.810225, 0.989513, 1.279278, 1.841177",\
+ "0.756448, 0.971285, 1.150572, 1.440338, 2.002240",\
+ "1.336421, 1.551259, 1.730546, 2.020311, 2.582213",\
+ "0.602247, 0.808123, 0.987108, 1.276874, 1.838776",\
+ "0.634272, 0.840147, 1.019132, 1.308898, 1.870800",\
+ "0.684679, 0.890556, 1.069540, 1.359307, 1.921209",\
+ "0.845739, 1.051616, 1.230599, 1.520366, 2.082271",\
+ "1.425712, 1.631589, 1.810572, 2.100339, 2.662244",\
+ "0.665958, 0.865953, 1.044805, 1.334306, 1.895796",\
+ "0.697983, 0.897977, 1.076829, 1.366330, 1.927820",\
+ "0.748391, 0.948386, 1.127237, 1.416738, 1.978229",\
+ "0.909450, 1.109446, 1.288296, 1.577798, 2.139291",\
+ "1.489423, 1.689419, 1.868270, 2.157771, 2.719264",\
+ "0.990514, 1.171260, 1.348460, 1.637478, 2.198022",\
+ "1.022539, 1.203284, 1.380485, 1.669502, 2.230046",\
+ "1.072946, 1.253692, 1.430892, 1.719911, 2.280456",\
+ "1.234006, 1.414753, 1.591951, 1.880970, 2.441518",\
+ "1.813979, 1.994726, 2.171925, 2.460944, 3.021491");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510",\
+ "0.029862, 0.029862, 0.029862, 0.029862, 0.029862",\
+ "0.059267, 0.059267, 0.059267, 0.059266, 0.059266",\
+ "0.131512, 0.131512, 0.131512, 0.131512, 0.131512",\
+ "0.417803, 0.417802, 0.417802, 0.417800, 0.417795",\
+ "1.484515, 1.484514, 1.484514, 1.484513, 1.484510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2386*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.556345, 0.776897, 0.954428, 1.243066, 1.803585",\
+ "0.598041, 0.818593, 0.996124, 1.284762, 1.845281",\
+ "0.674223, 0.894775, 1.072306, 1.360943, 1.921462",\
+ "0.929618, 1.150170, 1.327701, 1.616339, 2.176858",\
+ "1.853996, 2.074548, 2.252079, 2.540716, 3.101235",\
+ "0.644757, 0.864215, 1.041709, 1.330371, 1.890938",\
+ "0.686453, 0.905912, 1.083405, 1.372067, 1.932634",\
+ "0.762635, 0.982093, 1.159587, 1.448249, 2.008816",\
+ "1.018030, 1.237489, 1.414982, 1.703644, 2.264211",\
+ "1.942408, 2.161866, 2.339360, 2.628021, 3.188588",\
+ "0.733857, 0.944551, 1.121736, 1.410399, 1.970970",\
+ "0.775553, 0.986247, 1.163432, 1.452096, 2.012666",\
+ "0.851735, 1.062428, 1.239614, 1.528277, 2.088847",\
+ "1.107130, 1.317824, 1.495009, 1.783673, 2.344243",\
+ "2.031507, 2.242201, 2.419386, 2.708050, 3.268620",\
+ "0.797144, 1.002367, 1.179428, 1.467829, 2.027984",\
+ "0.838840, 1.044064, 1.221124, 1.509525, 2.069680",\
+ "0.915021, 1.120245, 1.297306, 1.585706, 2.145862",\
+ "1.170417, 1.375641, 1.552701, 1.841102, 2.401258",\
+ "2.094794, 2.300018, 2.477078, 2.765479, 3.325634",\
+ "1.128157, 1.307597, 1.483084, 1.771000, 2.330204",\
+ "1.169853, 1.349293, 1.524780, 1.812697, 2.371901",\
+ "1.246035, 1.425474, 1.600962, 1.888878, 2.448082",\
+ "1.501431, 1.680870, 1.856357, 2.144274, 2.703477",\
+ "2.425808, 2.605247, 2.780735, 3.068651, 3.627855");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685787, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.576590, 0.797142, 0.974673, 1.263311, 1.823830",\
+ "0.608840, 0.829392, 1.006923, 1.295561, 1.856079",\
+ "0.659152, 0.879704, 1.057235, 1.345873, 1.906392",\
+ "0.819816, 1.040368, 1.217899, 1.506536, 2.067055",\
+ "1.400950, 1.621502, 1.799033, 2.087670, 2.648189",\
+ "0.665002, 0.884461, 1.061954, 1.350616, 1.911183",\
+ "0.697252, 0.916710, 1.094204, 1.382866, 1.943433",\
+ "0.747564, 0.967022, 1.144516, 1.433178, 1.993745",\
+ "0.908228, 1.127686, 1.305180, 1.593842, 2.154409",\
+ "1.489362, 1.708820, 1.886313, 2.174975, 2.735543",\
+ "0.754102, 0.964796, 1.141981, 1.430644, 1.991215",\
+ "0.786352, 0.997045, 1.174231, 1.462894, 2.023464",\
+ "0.836664, 1.047358, 1.224543, 1.513206, 2.073777",\
+ "0.997328, 1.208021, 1.385207, 1.673870, 2.234440",\
+ "1.578462, 1.789155, 1.966340, 2.255004, 2.815574",\
+ "0.817389, 1.022612, 1.199673, 1.488074, 2.048229",\
+ "0.849638, 1.054862, 1.231923, 1.520324, 2.080479",\
+ "0.899951, 1.105174, 1.282235, 1.570636, 2.130791",\
+ "1.060614, 1.265838, 1.442899, 1.731299, 2.291455",\
+ "1.641748, 1.846972, 2.024032, 2.312433, 2.872589",\
+ "1.148402, 1.327842, 1.503329, 1.791245, 2.350449",\
+ "1.180652, 1.360092, 1.535579, 1.823495, 2.382699",\
+ "1.230964, 1.410404, 1.585891, 1.873807, 2.433011",\
+ "1.391628, 1.571068, 1.746555, 2.034471, 2.593675",\
+ "1.972762, 2.152201, 2.327689, 2.615605, 3.174809");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.538673, 0.779387, 0.972430, 1.279750, 1.873102",\
+ "0.580369, 0.821084, 1.014127, 1.321447, 1.914798",\
+ "0.656550, 0.897265, 1.090308, 1.397628, 1.990980",\
+ "0.911946, 1.152661, 1.345703, 1.653024, 2.246375",\
+ "1.836323, 2.077038, 2.270081, 2.577401, 3.170752",\
+ "0.626961, 0.866705, 1.059711, 1.367055, 1.960455",\
+ "0.668657, 0.908401, 1.101408, 1.408752, 2.002152",\
+ "0.744839, 0.984583, 1.177589, 1.484933, 2.078333",\
+ "1.000234, 1.239979, 1.432984, 1.740329, 2.333729",\
+ "1.924612, 2.164356, 2.357362, 2.664706, 3.258105",\
+ "0.716276, 0.947035, 1.139738, 1.447084, 2.040487",\
+ "0.757973, 0.988732, 1.181434, 1.488780, 2.082183",\
+ "0.834154, 1.064913, 1.257616, 1.564962, 2.158365",\
+ "1.089550, 1.320309, 1.513011, 1.820357, 2.413760",\
+ "2.013927, 2.244686, 2.437389, 2.744734, 3.338137",\
+ "0.780015, 1.004896, 1.197467, 1.504554, 2.097583",\
+ "0.821712, 1.046593, 1.239163, 1.546250, 2.139279",\
+ "0.897893, 1.122774, 1.315345, 1.622432, 2.215461",\
+ "1.153289, 1.378170, 1.570740, 1.877827, 2.470857",\
+ "2.077666, 2.302547, 2.495118, 2.802204, 3.395233",\
+ "1.117001, 1.310416, 1.501127, 1.807759, 2.399902",\
+ "1.158697, 1.352113, 1.542824, 1.849456, 2.441598",\
+ "1.234879, 1.428294, 1.619005, 1.925637, 2.517779",\
+ "1.490274, 1.683690, 1.874401, 2.181033, 2.773175",\
+ "2.414652, 2.608067, 2.798778, 3.105409, 3.697551");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685786, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685786, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685786, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685786, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070068, 0.070068",\
+ "0.199415, 0.199415, 0.199415, 0.199415, 0.199415",\
+ "0.685787, 0.685787, 0.685787, 0.685786, 0.685786",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455201");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.558918, 0.799632, 0.992675, 1.299995, 1.893347",\
+ "0.591168, 0.831882, 1.024925, 1.332245, 1.925597",\
+ "0.641480, 0.882194, 1.075237, 1.382557, 1.975909",\
+ "0.802143, 1.042858, 1.235901, 1.543221, 2.136573",\
+ "1.383277, 1.623992, 1.817035, 2.124355, 2.717707",\
+ "0.647206, 0.886950, 1.079956, 1.387300, 1.980700",\
+ "0.679456, 0.919200, 1.112206, 1.419550, 2.012950",\
+ "0.729768, 0.969512, 1.162518, 1.469862, 2.063262",\
+ "0.890432, 1.130176, 1.323182, 1.630526, 2.223926",\
+ "1.471565, 1.711310, 1.904316, 2.211660, 2.805060",\
+ "0.736521, 0.967281, 1.159983, 1.467329, 2.060732",\
+ "0.768771, 0.999530, 1.192233, 1.499579, 2.092982",\
+ "0.819083, 1.049842, 1.242545, 1.549891, 2.143294",\
+ "0.979747, 1.210506, 1.403209, 1.710555, 2.303958",\
+ "1.560881, 1.791640, 1.984343, 2.291688, 2.885092",\
+ "0.800261, 1.025141, 1.217712, 1.524799, 2.117828",\
+ "0.832510, 1.057391, 1.249962, 1.557049, 2.150078",\
+ "0.882822, 1.107703, 1.300274, 1.607361, 2.200390",\
+ "1.043486, 1.268367, 1.460938, 1.768024, 2.361054",\
+ "1.624620, 1.849501, 2.042072, 2.349159, 2.942188",\
+ "1.137246, 1.330662, 1.521373, 1.828004, 2.420147",\
+ "1.169496, 1.362911, 1.553622, 1.860254, 2.452396",\
+ "1.219808, 1.413224, 1.603935, 1.910566, 2.502709",\
+ "1.380472, 1.573887, 1.764598, 2.071230, 2.663373",\
+ "1.961606, 2.155021, 2.345732, 2.652364, 3.244506");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131486, 0.131486, 0.131486, 0.131486, 0.131486",\
+ "0.419471, 0.419471, 0.419471, 0.419471, 0.419471",\
+ "1.482976, 1.482976, 1.482976, 1.482976, 1.482976");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2306*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.454515, 0.687556, 0.876637, 1.181062, 1.770586",\
+ "0.496240, 0.729281, 0.918362, 1.222787, 1.812311",\
+ "0.572297, 0.805339, 0.994419, 1.298844, 1.888368",\
+ "0.827855, 1.060896, 1.249979, 1.554404, 2.143927",\
+ "1.752113, 1.985154, 2.174236, 2.478661, 3.068184",\
+ "0.542959, 0.774874, 0.963918, 1.268367, 1.857939",\
+ "0.584684, 0.816599, 1.005643, 1.310092, 1.899664",\
+ "0.660741, 0.892656, 1.081700, 1.386149, 1.975721",\
+ "0.916299, 1.148213, 1.337260, 1.641709, 2.231281",\
+ "1.840557, 2.072472, 2.261517, 2.565966, 3.155538",\
+ "0.633029, 0.855201, 1.043945, 1.348395, 1.937971",\
+ "0.674754, 0.896927, 1.085670, 1.390121, 1.979696",\
+ "0.750812, 0.972984, 1.161727, 1.466178, 2.055753",\
+ "1.006370, 1.228541, 1.417287, 1.721738, 2.311312",\
+ "1.930628, 2.152800, 2.341543, 2.645994, 3.235569",\
+ "0.697606, 0.913035, 1.101665, 1.405861, 1.995059",\
+ "0.739331, 0.954761, 1.143391, 1.447586, 2.036784",\
+ "0.815389, 1.030818, 1.219448, 1.523643, 2.112841",\
+ "1.070947, 1.286375, 1.475007, 1.779203, 2.368400",\
+ "1.995205, 2.210634, 2.399264, 2.703460, 3.292657",\
+ "1.037719, 1.218357, 1.405324, 1.709062, 2.297368",\
+ "1.079444, 1.260083, 1.447049, 1.750787, 2.339093",\
+ "1.155501, 1.336140, 1.523106, 1.826844, 2.415150",\
+ "1.411059, 1.591697, 1.778666, 2.082405, 2.670709",\
+ "2.335317, 2.515956, 2.702923, 3.006661, 3.594966");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452471, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452470, 2.452462, 2.452462, 2.452446, 2.452406",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070222, 0.070222, 0.070222",\
+ "0.199531, 0.199531, 0.199531, 0.199531, 0.199531",\
+ "0.686584, 0.686584, 0.686584, 0.686584, 0.686584",\
+ "2.452470, 2.452462, 2.452462, 2.452446, 2.452406");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.477114, 0.710155, 0.899236, 1.203661, 1.793185",\
+ "0.509144, 0.742185, 0.931266, 1.235691, 1.825215",\
+ "0.559532, 0.792574, 0.981654, 1.286079, 1.875603",\
+ "0.720561, 0.953603, 1.142682, 1.447107, 2.036631",\
+ "1.300536, 1.533577, 1.722657, 2.027082, 2.616606",\
+ "0.565558, 0.797473, 0.986517, 1.290966, 1.880538",\
+ "0.597588, 0.829503, 1.018547, 1.322996, 1.912568",\
+ "0.647976, 0.879891, 1.068935, 1.373384, 1.962957",\
+ "0.809005, 1.040920, 1.229963, 1.534412, 2.123985",\
+ "1.388980, 1.620895, 1.809938, 2.114387, 2.703959",\
+ "0.655628, 0.877800, 1.066544, 1.370995, 1.960570",\
+ "0.687658, 0.909830, 1.098574, 1.403025, 1.992600",\
+ "0.738047, 0.960219, 1.148962, 1.453413, 2.042988",\
+ "0.899075, 1.121248, 1.309990, 1.614440, 2.204016",\
+ "1.479050, 1.701223, 1.889965, 2.194416, 2.783991",\
+ "0.720205, 0.935634, 1.124265, 1.428460, 2.017658",\
+ "0.752235, 0.967664, 1.156295, 1.460490, 2.049688",\
+ "0.802624, 1.018053, 1.206683, 1.510878, 2.100076",\
+ "0.963652, 1.179082, 1.367711, 1.671906, 2.261104",\
+ "1.543628, 1.759057, 1.947685, 2.251881, 2.841079",\
+ "1.060318, 1.240956, 1.427923, 1.731662, 2.319967",\
+ "1.092348, 1.272986, 1.459953, 1.763692, 2.351997",\
+ "1.142736, 1.323375, 1.510341, 1.814080, 2.402385",\
+ "1.303765, 1.484404, 1.671369, 1.975107, 2.563413",\
+ "1.883740, 2.064379, 2.251344, 2.555082, 3.143388");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417786, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484506, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417786, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484506, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484494",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059265, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417785, 0.417783, 0.417783, 0.417777, 0.417763",\
+ "1.484505, 1.484504, 1.484504, 1.484501, 1.484493");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2463*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[38]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.490508, 0.711036, 0.888618, 1.176984, 1.736809",\
+ "0.532203, 0.752732, 0.930314, 1.218679, 1.778504",\
+ "0.608383, 0.828912, 1.006494, 1.294859, 1.854684",\
+ "0.863773, 1.084302, 1.261884, 1.550249, 2.110074",\
+ "1.788229, 2.008758, 2.186340, 2.474705, 3.034531",\
+ "0.578896, 0.798355, 0.975899, 1.264289, 1.824162",\
+ "0.620592, 0.840050, 1.017595, 1.305984, 1.865858",\
+ "0.696772, 0.916230, 1.093775, 1.382164, 1.942038",\
+ "0.952161, 1.171620, 1.349165, 1.637554, 2.197427",\
+ "1.876618, 2.096076, 2.273621, 2.562011, 3.121884",\
+ "0.668261, 0.878687, 1.055926, 1.344317, 1.904194",\
+ "0.709957, 0.920382, 1.097622, 1.386013, 1.945889",\
+ "0.786137, 0.996562, 1.173802, 1.462193, 2.022069",\
+ "1.041527, 1.251952, 1.429191, 1.717583, 2.277459",\
+ "1.965983, 2.176409, 2.353648, 2.642039, 3.201916",\
+ "0.731942, 0.936503, 1.113619, 1.401746, 1.961208",\
+ "0.773637, 0.978198, 1.155315, 1.443442, 2.002903",\
+ "0.849817, 1.054379, 1.231495, 1.519622, 2.079083",\
+ "1.105207, 1.309768, 1.486884, 1.775012, 2.334473",\
+ "2.029663, 2.234225, 2.411341, 2.699468, 3.258930",\
+ "1.063585, 1.241717, 1.417274, 1.704917, 2.263427",\
+ "1.105281, 1.283412, 1.458970, 1.746613, 2.305123",\
+ "1.181460, 1.359592, 1.535150, 1.822793, 2.381303",\
+ "1.436850, 1.614982, 1.790540, 2.078182, 2.636693",\
+ "2.361307, 2.539439, 2.714996, 3.002639, 3.561149");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199409, 0.199409, 0.199409, 0.199409, 0.199410",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.510756, 0.731284, 0.908866, 1.197232, 1.757056",\
+ "0.543002, 0.763530, 0.941112, 1.229478, 1.789302",\
+ "0.593318, 0.813846, 0.991428, 1.279794, 1.839619",\
+ "0.753982, 0.974510, 1.152092, 1.440458, 2.000283",\
+ "1.335097, 1.555626, 1.733208, 2.021573, 2.581398",\
+ "0.599144, 0.818602, 0.996147, 1.284537, 1.844410",\
+ "0.631390, 0.850848, 1.028393, 1.316783, 1.876656",\
+ "0.681706, 0.901165, 1.078709, 1.367099, 1.926972",\
+ "0.842370, 1.061828, 1.239373, 1.527763, 2.087636",\
+ "1.423486, 1.642944, 1.820489, 2.108878, 2.668751",\
+ "0.688509, 0.898935, 1.076174, 1.364565, 1.924441",\
+ "0.720755, 0.931181, 1.108420, 1.396811, 1.956687",\
+ "0.771071, 0.981497, 1.158736, 1.447127, 2.007004",\
+ "0.931735, 1.142161, 1.319400, 1.607791, 2.167668",\
+ "1.512851, 1.723276, 1.900516, 2.188907, 2.748783",\
+ "0.752190, 0.956751, 1.133867, 1.421994, 1.981456",\
+ "0.784436, 0.988997, 1.166113, 1.454240, 2.013701",\
+ "0.834752, 1.039313, 1.216429, 1.504556, 2.064018",\
+ "0.995416, 1.199977, 1.377093, 1.665220, 2.224682",\
+ "1.576531, 1.781092, 1.958208, 2.246336, 2.805797",\
+ "1.083833, 1.261965, 1.437522, 1.725165, 2.283675",\
+ "1.116079, 1.294211, 1.469768, 1.757411, 2.315921",\
+ "1.166395, 1.344527, 1.520084, 1.807727, 2.366237",\
+ "1.327059, 1.505191, 1.680748, 1.968391, 2.526901",\
+ "1.908174, 2.086306, 2.261864, 2.549506, 3.108017");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419479, 0.419479, 0.419479, 0.419479, 0.419479",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419479, 0.419479, 0.419479, 0.419479, 0.419479",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419479, 0.419479, 0.419479, 0.419479, 0.419479",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419479, 0.419479, 0.419479, 0.419479, 0.419479",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029703",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419479, 0.419479, 0.419479, 0.419479, 0.419479",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2279*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.464141, 0.703934, 0.888128, 1.182401, 1.751067",\
+ "0.505836, 0.745630, 0.929824, 1.224097, 1.792763",\
+ "0.582016, 0.821810, 1.006004, 1.300277, 1.868943",\
+ "0.837406, 1.077200, 1.261394, 1.555666, 2.124333",\
+ "1.761863, 2.001656, 2.185850, 2.480123, 3.048789",\
+ "0.552479, 0.791253, 0.975409, 1.269706, 1.838421",\
+ "0.594175, 0.832948, 1.017105, 1.311402, 1.880116",\
+ "0.670355, 0.909128, 1.093285, 1.387582, 1.956296",\
+ "0.925745, 1.164518, 1.348675, 1.642971, 2.211686",\
+ "1.850201, 2.088974, 2.273131, 2.567428, 3.136143",\
+ "0.641618, 0.871586, 1.055436, 1.349735, 1.918452",\
+ "0.683313, 0.913281, 1.097132, 1.391430, 1.960148",\
+ "0.759493, 0.989461, 1.173312, 1.467610, 2.036328",\
+ "1.014883, 1.244851, 1.428701, 1.723000, 2.291718",\
+ "1.939340, 2.169307, 2.353158, 2.647456, 3.216174",\
+ "0.705051, 0.929417, 1.113144, 1.407174, 1.975487",\
+ "0.746746, 0.971112, 1.154840, 1.448870, 2.017183",\
+ "0.822926, 1.047292, 1.231020, 1.525050, 2.093363",\
+ "1.078316, 1.302682, 1.486409, 1.780439, 2.348753",\
+ "2.002773, 2.227139, 2.410866, 2.704896, 3.273209",\
+ "1.040106, 1.234739, 1.416802, 1.710354, 2.277733",\
+ "1.081802, 1.276435, 1.458498, 1.752050, 2.319428",\
+ "1.157982, 1.352615, 1.534678, 1.828230, 2.395608",\
+ "1.413371, 1.608004, 1.790067, 2.083619, 2.650998",\
+ "2.337828, 2.532461, 2.714524, 3.008076, 3.575455");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199409, 0.199409, 0.199411",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199409, 0.199409, 0.199411",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199409, 0.199409, 0.199411",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199409, 0.199409, 0.199411",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070076, 0.070076, 0.070076, 0.070076, 0.070076",\
+ "0.199408, 0.199408, 0.199409, 0.199409, 0.199411",\
+ "0.685874, 0.685874, 0.685874, 0.685874, 0.685874",\
+ "2.455194, 2.455194, 2.455194, 2.455194, 2.455194");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.484389, 0.724182, 0.908376, 1.202649, 1.771315",\
+ "0.516635, 0.756428, 0.940622, 1.234895, 1.803561",\
+ "0.566951, 0.806745, 0.990938, 1.285211, 1.853878",\
+ "0.727615, 0.967409, 1.151602, 1.445875, 2.014541",\
+ "1.308730, 1.548524, 1.732718, 2.026990, 2.595657",\
+ "0.572727, 0.811501, 0.995657, 1.289954, 1.858669",\
+ "0.604973, 0.843747, 1.027903, 1.322200, 1.890915",\
+ "0.655290, 0.894063, 1.078219, 1.372516, 1.941231",\
+ "0.815953, 1.054727, 1.238883, 1.533180, 2.101895",\
+ "1.397069, 1.635842, 1.819999, 2.114295, 2.683010",\
+ "0.661866, 0.891834, 1.075684, 1.369982, 1.938700",\
+ "0.694112, 0.924080, 1.107930, 1.402228, 1.970946",\
+ "0.744428, 0.974396, 1.158246, 1.452545, 2.021263",\
+ "0.905092, 1.135060, 1.318910, 1.613209, 2.181926",\
+ "1.486207, 1.716175, 1.900026, 2.194324, 2.763042",\
+ "0.725299, 0.949665, 1.133392, 1.427422, 1.995735",\
+ "0.757545, 0.981911, 1.165638, 1.459668, 2.027981",\
+ "0.807861, 1.032227, 1.215954, 1.509984, 2.078298",\
+ "0.968525, 1.192891, 1.376618, 1.670648, 2.238961",\
+ "1.549640, 1.774006, 1.957734, 2.251764, 2.820077",\
+ "1.060354, 1.254987, 1.437050, 1.730602, 2.297981",\
+ "1.092600, 1.287233, 1.469296, 1.762848, 2.330226",\
+ "1.142916, 1.337549, 1.519612, 1.813164, 2.380543",\
+ "1.303580, 1.498213, 1.680276, 1.973828, 2.541207",\
+ "1.884696, 2.079328, 2.261392, 2.554944, 3.122322");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419474, 0.419474, 0.419474, 0.419474, 0.419474",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419474, 0.419474, 0.419474, 0.419474, 0.419474",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419474, 0.419474, 0.419474, 0.419474, 0.419474",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419474, 0.419474, 0.419474, 0.419474, 0.419474",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052",\
+ "0.029703, 0.029703, 0.029703, 0.029703, 0.029704",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131484, 0.131484, 0.131484, 0.131485, 0.131485",\
+ "0.419474, 0.419474, 0.419474, 0.419474, 0.419474",\
+ "1.483052, 1.483052, 1.483052, 1.483052, 1.483052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2323*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.411437, 0.641763, 0.827440, 1.121826, 1.689429",\
+ "0.453163, 0.683488, 0.869165, 1.163551, 1.731154",\
+ "0.529220, 0.759545, 0.945221, 1.239608, 1.807211",\
+ "0.784777, 1.015107, 1.200787, 1.495173, 2.062773",\
+ "1.709036, 1.939362, 2.125040, 2.419426, 2.987028",\
+ "0.499750, 0.729081, 0.914721, 1.209131, 1.776782",\
+ "0.541475, 0.770807, 0.956446, 1.250857, 1.818508",\
+ "0.617533, 0.846863, 1.032502, 1.326913, 1.894564",\
+ "0.873090, 1.102426, 1.288068, 1.582478, 2.150126",\
+ "1.797349, 2.026680, 2.212321, 2.506731, 3.074381",\
+ "0.588895, 0.809414, 0.994747, 1.289160, 1.856814",\
+ "0.630620, 0.851139, 1.036473, 1.330885, 1.898539",\
+ "0.706677, 0.927196, 1.112529, 1.406941, 1.974596",\
+ "0.962234, 1.182758, 1.368095, 1.662507, 2.230158",\
+ "1.886493, 2.107013, 2.292347, 2.586760, 3.154413",\
+ "0.652369, 0.867238, 1.052459, 1.346598, 1.913847",\
+ "0.694094, 0.908963, 1.094185, 1.388323, 1.955572",\
+ "0.770151, 0.985020, 1.170241, 1.464380, 2.031629",\
+ "1.025709, 1.240582, 1.425807, 1.719945, 2.287190",\
+ "1.949967, 2.164837, 2.350059, 2.644198, 3.211446",\
+ "0.987682, 1.172511, 1.356118, 1.649777, 2.216089",\
+ "1.029408, 1.214237, 1.397843, 1.691502, 2.257815",\
+ "1.105465, 1.290294, 1.473899, 1.767559, 2.333871",\
+ "1.361025, 1.545856, 1.729465, 2.023124, 2.589433",\
+ "2.285281, 2.470111, 2.653718, 2.947377, 3.513689");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686589, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686589, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686588, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070223, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686588, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452423",\
+ "0.025366, 0.025366, 0.025366, 0.025366, 0.025366",\
+ "0.070222, 0.070222, 0.070221, 0.070221, 0.070221",\
+ "0.199530, 0.199530, 0.199530, 0.199530, 0.199530",\
+ "0.686585, 0.686583, 0.686578, 0.686576, 0.686576",\
+ "2.452462, 2.452462, 2.452462, 2.452450, 2.452422");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.434036, 0.664363, 0.850040, 1.144426, 1.712028",\
+ "0.466066, 0.696393, 0.882070, 1.176457, 1.744059",\
+ "0.516455, 0.746780, 0.932457, 1.226843, 1.794446",\
+ "0.677484, 0.907807, 1.093482, 1.387868, 1.955473",\
+ "1.257459, 1.487782, 1.673457, 1.967843, 2.535448",\
+ "0.522349, 0.751681, 0.937321, 1.231731, 1.799382",\
+ "0.554379, 0.783711, 0.969351, 1.263762, 1.831412",\
+ "0.604768, 0.834099, 1.019738, 1.314148, 1.881800",\
+ "0.765797, 0.995125, 1.180763, 1.475173, 2.042827",\
+ "1.345772, 1.575100, 1.760738, 2.055148, 2.622802",\
+ "0.611494, 0.832013, 1.017348, 1.311760, 1.879413",\
+ "0.643524, 0.864044, 1.049378, 1.343790, 1.911444",\
+ "0.693912, 0.914431, 1.099764, 1.394177, 1.961831",\
+ "0.854941, 1.075458, 1.260790, 1.555202, 2.122858",\
+ "1.434916, 1.655433, 1.840765, 2.135177, 2.702833",\
+ "0.674968, 0.889838, 1.075059, 1.369198, 1.936446",\
+ "0.706998, 0.921868, 1.107090, 1.401229, 1.968477",\
+ "0.757386, 0.972255, 1.157476, 1.451615, 2.018864",\
+ "0.918415, 1.133282, 1.318501, 1.612640, 2.179891",\
+ "1.498390, 1.713257, 1.898476, 2.192615, 2.759866",\
+ "1.010282, 1.195111, 1.378718, 1.672377, 2.238689",\
+ "1.042312, 1.227141, 1.410748, 1.704407, 2.270719",\
+ "1.092700, 1.277529, 1.461135, 1.754794, 2.321106",\
+ "1.253727, 1.438555, 1.622160, 1.915819, 2.482133",\
+ "1.833702, 2.018530, 2.202135, 2.495794, 3.062109");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496",\
+ "0.029863, 0.029863, 0.029863, 0.029863, 0.029863",\
+ "0.059264, 0.059264, 0.059264, 0.059264, 0.059262",\
+ "0.131521, 0.131521, 0.131521, 0.131521, 0.131521",\
+ "0.417782, 0.417782, 0.417782, 0.417778, 0.417769",\
+ "1.484504, 1.484504, 1.484504, 1.484501, 1.484496");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2346*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.554942, 0.776691, 0.954630, 1.243547, 1.804386",\
+ "0.596638, 0.818387, 0.996327, 1.285244, 1.846083",\
+ "0.672820, 0.894569, 1.072508, 1.361425, 1.922264",\
+ "0.928215, 1.149964, 1.327903, 1.616820, 2.177659",\
+ "1.852598, 2.074347, 2.252286, 2.541204, 3.102043",\
+ "0.643350, 0.864010, 1.041911, 1.330852, 1.891740",\
+ "0.685047, 0.905706, 1.083608, 1.372549, 1.933436",\
+ "0.761228, 0.981887, 1.159789, 1.448730, 2.009617",\
+ "1.016623, 1.237282, 1.415184, 1.704125, 2.265012",\
+ "1.941007, 2.161666, 2.339567, 2.628509, 3.189397",\
+ "0.732441, 0.944345, 1.121938, 1.410881, 1.971771",\
+ "0.774137, 0.986041, 1.163634, 1.452577, 2.013468",\
+ "0.850318, 1.062222, 1.239816, 1.528758, 2.089649",\
+ "1.105714, 1.317617, 1.495211, 1.784153, 2.345044",\
+ "2.030097, 2.242001, 2.419594, 2.708537, 3.269428",\
+ "0.795719, 1.002162, 1.179631, 1.468310, 2.028787",\
+ "0.837415, 1.043858, 1.221328, 1.510007, 2.070483",\
+ "0.913596, 1.120039, 1.297509, 1.586188, 2.146664",\
+ "1.168992, 1.375434, 1.552904, 1.841583, 2.402059",\
+ "2.093375, 2.299818, 2.477287, 2.765967, 3.326444",\
+ "1.127968, 1.307390, 1.483287, 1.771482, 2.331008",\
+ "1.169664, 1.349087, 1.524984, 1.813179, 2.372704",\
+ "1.245846, 1.425268, 1.601165, 1.889360, 2.448885",\
+ "1.501241, 1.680663, 1.856560, 2.144755, 2.704280",\
+ "2.425624, 2.605047, 2.780944, 3.069139, 3.628665");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199414",\
+ "0.685793, 0.685793, 0.685793, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199414",\
+ "0.685793, 0.685793, 0.685793, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199414",\
+ "0.685793, 0.685793, 0.685793, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199414",\
+ "0.685793, 0.685793, 0.685793, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199414",\
+ "0.685793, 0.685793, 0.685793, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.575187, 0.796936, 0.974876, 1.263793, 1.824632",\
+ "0.607437, 0.829186, 1.007125, 1.296042, 1.856881",\
+ "0.657749, 0.879498, 1.057438, 1.346354, 1.907194",\
+ "0.818413, 1.040162, 1.218101, 1.507018, 2.067857",\
+ "1.399546, 1.621294, 1.799234, 2.088151, 2.648989",\
+ "0.663596, 0.884255, 1.062156, 1.351098, 1.911985",\
+ "0.695845, 0.916504, 1.094406, 1.383347, 1.944234",\
+ "0.746158, 0.966817, 1.144718, 1.433660, 1.994547",\
+ "0.906821, 1.127481, 1.305382, 1.594323, 2.155211",\
+ "1.487954, 1.708613, 1.886515, 2.175456, 2.736343",\
+ "0.752686, 0.964590, 1.142183, 1.431126, 1.992017",\
+ "0.784936, 0.996840, 1.174433, 1.463375, 2.024266",\
+ "0.835248, 1.047152, 1.224745, 1.513688, 2.074579",\
+ "0.995912, 1.207816, 1.385409, 1.674352, 2.235242",\
+ "1.577044, 1.788948, 1.966541, 2.255484, 2.816375",\
+ "0.815964, 1.022407, 1.199876, 1.488556, 2.049032",\
+ "0.848214, 1.054656, 1.232126, 1.520805, 2.081281",\
+ "0.898526, 1.104969, 1.282438, 1.571118, 2.131594",\
+ "1.059190, 1.265632, 1.443102, 1.731781, 2.292258",\
+ "1.640322, 1.846765, 2.024235, 2.312914, 2.873390",\
+ "1.148213, 1.327636, 1.503533, 1.791728, 2.351253",\
+ "1.180463, 1.359885, 1.535782, 1.823977, 2.383502",\
+ "1.230775, 1.410198, 1.586095, 1.874290, 2.433815",\
+ "1.391439, 1.570861, 1.746758, 2.034954, 2.594479",\
+ "1.972571, 2.151994, 2.327891, 2.616086, 3.175611");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2465*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.533753, 0.762081, 0.946644, 1.241934, 1.812791",\
+ "0.575449, 0.803777, 0.988340, 1.283630, 1.854487",\
+ "0.651630, 0.879958, 1.064522, 1.359811, 1.930668",\
+ "0.907026, 1.135353, 1.319917, 1.615206, 2.186064",\
+ "1.831408, 2.059737, 2.244300, 2.539591, 3.110448",\
+ "0.622078, 0.849399, 1.033925, 1.329239, 1.900144",\
+ "0.663775, 0.891095, 1.075621, 1.370935, 1.941841",\
+ "0.739956, 0.967276, 1.151803, 1.447117, 2.018022",\
+ "0.995351, 1.222671, 1.407198, 1.702512, 2.273417",\
+ "1.919734, 2.147055, 2.331581, 2.626896, 3.197802",\
+ "0.711467, 0.929729, 1.113952, 1.409267, 1.980176",\
+ "0.753164, 0.971426, 1.155648, 1.450964, 2.021872",\
+ "0.829345, 1.047607, 1.231829, 1.527145, 2.098053",\
+ "1.084740, 1.303002, 1.487225, 1.782540, 2.353448",\
+ "2.009123, 2.227385, 2.411608, 2.706924, 3.277833",\
+ "0.775260, 0.987553, 1.171661, 1.466710, 2.037218",\
+ "0.816956, 1.029250, 1.213358, 1.508406, 2.078914",\
+ "0.893137, 1.105431, 1.289539, 1.584587, 2.155095",\
+ "1.148533, 1.360826, 1.544934, 1.839983, 2.410490",\
+ "2.072916, 2.285210, 2.469318, 2.764367, 3.334875",\
+ "1.112589, 1.292819, 1.475319, 1.769892, 2.339470",\
+ "1.154285, 1.334515, 1.517015, 1.811588, 2.381167",\
+ "1.230466, 1.410696, 1.593196, 1.887769, 2.457348",\
+ "1.485862, 1.666091, 1.848592, 2.143165, 2.712743",\
+ "2.410245, 2.590475, 2.772975, 3.067549, 3.637128");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199415",\
+ "0.685793, 0.685793, 0.685794, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199415",\
+ "0.685793, 0.685793, 0.685794, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199415",\
+ "0.685793, 0.685793, 0.685794, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199415",\
+ "0.685793, 0.685793, 0.685794, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200",\
+ "0.025314, 0.025314, 0.025314, 0.025314, 0.025314",\
+ "0.070068, 0.070068, 0.070068, 0.070069, 0.070069",\
+ "0.199414, 0.199414, 0.199414, 0.199414, 0.199415",\
+ "0.685793, 0.685793, 0.685794, 0.685794, 0.685795",\
+ "2.455201, 2.455201, 2.455201, 2.455201, 2.455200");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.553998, 0.782326, 0.966889, 1.262179, 1.833036",\
+ "0.586248, 0.814575, 0.999139, 1.294429, 1.865286",\
+ "0.636560, 0.864888, 1.049451, 1.344741, 1.915598",\
+ "0.797224, 1.025552, 1.210115, 1.505405, 2.076262",\
+ "1.378356, 1.606684, 1.791247, 2.086537, 2.657394",\
+ "0.642324, 0.869644, 1.054170, 1.349484, 1.920390",\
+ "0.674573, 0.901893, 1.086420, 1.381734, 1.952639",\
+ "0.724886, 0.952206, 1.136732, 1.432046, 2.002952",\
+ "0.885549, 1.112870, 1.297396, 1.592710, 2.163615",\
+ "1.466682, 1.694002, 1.878528, 2.173842, 2.744748",\
+ "0.731713, 0.949975, 1.134197, 1.429513, 2.000421",\
+ "0.763962, 0.982224, 1.166447, 1.461762, 2.032670",\
+ "0.814275, 1.032536, 1.216759, 1.512075, 2.082983",\
+ "0.974938, 1.193200, 1.377423, 1.672738, 2.243647",\
+ "1.556071, 1.774333, 1.958555, 2.253871, 2.824779",\
+ "0.795505, 1.007799, 1.191907, 1.486955, 2.057463",\
+ "0.827755, 1.040048, 1.224156, 1.519205, 2.089712",\
+ "0.878067, 1.090361, 1.274469, 1.569517, 2.140025",\
+ "1.038731, 1.251024, 1.435133, 1.730181, 2.300689",\
+ "1.619863, 1.832157, 2.016265, 2.311313, 2.881821",\
+ "1.132834, 1.313064, 1.495564, 1.790137, 2.359716",\
+ "1.165084, 1.345313, 1.527814, 1.822387, 2.391965",\
+ "1.215396, 1.395626, 1.578126, 1.872699, 2.442278",\
+ "1.376060, 1.556290, 1.738790, 2.033363, 2.602942",\
+ "1.957192, 2.137422, 2.319922, 2.614495, 3.184073");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003215, 0.011703, 0.042600, 0.154883");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983",\
+ "0.029705, 0.029705, 0.029705, 0.029705, 0.029705",\
+ "0.059407, 0.059407, 0.059407, 0.059407, 0.059407",\
+ "0.131485, 0.131485, 0.131485, 0.131485, 0.131485",\
+ "0.419472, 0.419472, 0.419472, 0.419472, 0.419472",\
+ "1.482982, 1.482982, 1.482982, 1.482983, 1.482983");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[6]_redg_min_2401*/
+
+} /* end of pin tl_o[6] */
+
+pin("tl_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.035370 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.586415, 0.856406, 1.147453, 1.645288, 2.640958",\
+ "0.600096, 0.870093, 1.161170, 1.659087, 2.654921",\
+ "0.623625, 0.893621, 1.184696, 1.682603, 2.678417",\
+ "0.891636, 1.161662, 1.452904, 1.951255, 2.947956",\
+ "1.484832, 1.754906, 2.046407, 2.545443, 3.543516",\
+ "0.673827, 0.943991, 1.235112, 1.732003, 2.726892",\
+ "0.687508, 0.957678, 1.248830, 1.745802, 2.740855",\
+ "0.711038, 0.981207, 1.272355, 1.769318, 2.764350",\
+ "0.979048, 1.249249, 1.540565, 2.037970, 3.033889",\
+ "1.572245, 1.842492, 2.134070, 2.632158, 3.629450",\
+ "0.756613, 1.033065, 1.323078, 1.819625, 2.813847",\
+ "0.770294, 1.046752, 1.336796, 1.833425, 2.827810",\
+ "0.793824, 1.070281, 1.360321, 1.856940, 2.851305",\
+ "1.061835, 1.338323, 1.628531, 2.125592, 3.120844",\
+ "1.655032, 1.931567, 2.222036, 2.719780, 3.716405",\
+ "0.819991, 1.098835, 1.387222, 1.883539, 2.877356",\
+ "0.833672, 1.112521, 1.400940, 1.897338, 2.891319",\
+ "0.857202, 1.136050, 1.424465, 1.920853, 2.914814",\
+ "1.125213, 1.404093, 1.692675, 2.189505, 3.184353",\
+ "1.718410, 1.997339, 2.286180, 2.783694, 3.779914",\
+ "1.154701, 1.464769, 1.739384, 2.233007, 3.222812",\
+ "1.168382, 1.478458, 1.753102, 2.246807, 3.236775",\
+ "1.191912, 1.501987, 1.776627, 2.270322, 3.260271",\
+ "1.459925, 1.770039, 2.044842, 2.538976, 3.529809",\
+ "2.053125, 2.363301, 2.638354, 3.133168, 4.125370");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.122235, 0.122284, 0.123237, 0.126336, 0.132533",\
+ "0.151847, 0.152077, 0.152973, 0.155170, 0.159564",\
+ "0.201011, 0.201013, 0.201253, 0.202081, 0.203737",\
+ "0.823650, 0.823653, 0.823667, 0.823703, 0.823775",\
+ "2.222134, 2.222134, 2.222136, 2.222140, 2.222148",\
+ "0.122235, 0.122284, 0.123247, 0.126336, 0.132533",\
+ "0.151847, 0.152079, 0.152980, 0.155170, 0.159564",\
+ "0.201011, 0.201013, 0.201256, 0.202081, 0.203737",\
+ "0.823650, 0.823653, 0.823667, 0.823703, 0.823775",\
+ "2.222134, 2.222134, 2.222136, 2.222140, 2.222148",\
+ "0.122236, 0.122285, 0.123247, 0.126336, 0.132533",\
+ "0.151853, 0.152082, 0.152980, 0.155170, 0.159564",\
+ "0.201011, 0.201013, 0.201256, 0.202081, 0.203737",\
+ "0.823650, 0.823653, 0.823667, 0.823703, 0.823775",\
+ "2.222134, 2.222134, 2.222136, 2.222140, 2.222148",\
+ "0.122236, 0.122286, 0.123248, 0.126336, 0.132533",\
+ "0.151856, 0.152088, 0.152981, 0.155170, 0.159564",\
+ "0.201011, 0.201013, 0.201256, 0.202081, 0.203737",\
+ "0.823650, 0.823653, 0.823667, 0.823703, 0.823775",\
+ "2.222134, 2.222134, 2.222136, 2.222140, 2.222148",\
+ "0.122239, 0.122302, 0.123279, 0.126348, 0.132533",\
+ "0.151880, 0.152153, 0.153003, 0.155179, 0.159564",\
+ "0.201011, 0.201014, 0.201264, 0.202084, 0.203737",\
+ "0.823651, 0.823654, 0.823667, 0.823703, 0.823775",\
+ "2.222134, 2.222135, 2.222136, 2.222140, 2.222148");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.525645, 0.795489, 1.085730, 1.581432, 2.572836",\
+ "0.537639, 0.807524, 1.097989, 1.594284, 2.586873",\
+ "0.557233, 0.827173, 1.117941, 1.615037, 2.609230",\
+ "0.728499, 0.998614, 1.290344, 1.789985, 2.789268",\
+ "1.063132, 1.333237, 1.624904, 2.124381, 3.123334",\
+ "0.613058, 0.883074, 1.173382, 1.668147, 2.658770",\
+ "0.625052, 0.895109, 1.185643, 1.680999, 2.672807",\
+ "0.644646, 0.914759, 1.205598, 1.701752, 2.695163",\
+ "0.815911, 1.086201, 1.378008, 1.876700, 2.875202",\
+ "1.150545, 1.420823, 1.712568, 2.211096, 3.209268",\
+ "0.695842, 0.972144, 1.261348, 1.755769, 2.745725",\
+ "0.707837, 0.984180, 1.273609, 1.768621, 2.759762",\
+ "0.727431, 1.003831, 1.293564, 1.789375, 2.782119",\
+ "0.898699, 1.175277, 1.465974, 1.964322, 2.962157",\
+ "1.233333, 1.509899, 1.800534, 2.298718, 3.296223",\
+ "0.759218, 1.037910, 1.325492, 1.819683, 2.809234",\
+ "0.771213, 1.049947, 1.337753, 1.832534, 2.823271",\
+ "0.790808, 1.069599, 1.357708, 1.853288, 2.845628",\
+ "0.962077, 1.241050, 1.530119, 2.028236, 3.025666",\
+ "1.296711, 1.575672, 1.864679, 2.362631, 3.359732",\
+ "1.093920, 1.403797, 1.677632, 2.169142, 3.154690",\
+ "1.105917, 1.415847, 1.689899, 2.181997, 3.168727",\
+ "1.125515, 1.435517, 1.709862, 2.202754, 3.191083",\
+ "1.296794, 1.607024, 1.882299, 2.377712, 3.371122",\
+ "1.631427, 1.941643, 2.216857, 2.712107, 3.705188");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.074841, 0.075254, 0.077521, 0.083520, 0.095518",\
+ "0.080316, 0.080691, 0.082745, 0.088181, 0.099053",\
+ "0.100360, 0.100711, 0.102633, 0.107721, 0.117897",\
+ "0.380688, 0.380691, 0.380703, 0.380732, 0.380789",\
+ "1.025905, 1.025920, 1.025979, 1.026125, 1.026416",\
+ "0.074841, 0.075258, 0.077540, 0.083520, 0.095518",\
+ "0.080316, 0.080694, 0.082762, 0.088181, 0.099053",\
+ "0.100360, 0.100714, 0.102649, 0.107721, 0.117897",\
+ "0.380688, 0.380691, 0.380703, 0.380732, 0.380789",\
+ "1.025905, 1.025920, 1.025980, 1.026125, 1.026416",\
+ "0.074846, 0.075266, 0.077540, 0.083520, 0.095518",\
+ "0.080321, 0.080701, 0.082762, 0.088181, 0.099053",\
+ "0.100365, 0.100721, 0.102650, 0.107721, 0.117897",\
+ "0.380688, 0.380691, 0.380703, 0.380732, 0.380789",\
+ "1.025905, 1.025920, 1.025980, 1.026125, 1.026416",\
+ "0.074850, 0.075277, 0.077541, 0.083520, 0.095518",\
+ "0.080324, 0.080712, 0.082763, 0.088181, 0.099053",\
+ "0.100368, 0.100730, 0.102651, 0.107721, 0.117897",\
+ "0.380688, 0.380691, 0.380703, 0.380732, 0.380789",\
+ "1.025905, 1.025921, 1.025980, 1.026125, 1.026416",\
+ "0.074873, 0.075411, 0.077602, 0.083545, 0.095518",\
+ "0.080345, 0.080833, 0.082819, 0.088203, 0.099053",\
+ "0.100387, 0.100844, 0.102702, 0.107742, 0.117897",\
+ "0.380688, 0.380692, 0.380703, 0.380732, 0.380789",\
+ "1.025907, 1.025925, 1.025981, 1.026126, 1.026416");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2627*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.792764, 1.054507, 1.346593, 1.853632, 2.867709",\
+ "0.806316, 1.068059, 1.360145, 1.867184, 2.881261",\
+ "0.829846, 1.091589, 1.383675, 1.890714, 2.904791",\
+ "1.097219, 1.358962, 1.651048, 2.158087, 3.172164",\
+ "1.691027, 1.952770, 2.244857, 2.751895, 3.765972",\
+ "0.880176, 1.142082, 1.434281, 1.940346, 2.953642",\
+ "0.893728, 1.155634, 1.447833, 1.953899, 2.967195",\
+ "0.917258, 1.179164, 1.471363, 1.977429, 2.990725",\
+ "1.184632, 1.446538, 1.738737, 2.244802, 3.258098",\
+ "1.778440, 2.040346, 2.332545, 2.838610, 3.851906",\
+ "0.961078, 1.231132, 1.522248, 2.027969, 3.040597",\
+ "0.974630, 1.244684, 1.535800, 2.041521, 3.054150",\
+ "0.998160, 1.268215, 1.559330, 2.065051, 3.077680",\
+ "1.265533, 1.535588, 1.826703, 2.332424, 3.345053",\
+ "1.859341, 2.129396, 2.420511, 2.926232, 3.938861",\
+ "1.020773, 1.296868, 1.586394, 2.091882, 3.104106",\
+ "1.034325, 1.310420, 1.599946, 2.105434, 3.117659",\
+ "1.057855, 1.333951, 1.623476, 2.128964, 3.141189",\
+ "1.325228, 1.601324, 1.890849, 2.396338, 3.408562",\
+ "1.919036, 2.195132, 2.484657, 2.990146, 4.002370",\
+ "1.354614, 1.662408, 1.938648, 2.441389, 3.449563",\
+ "1.368166, 1.675960, 1.952201, 2.454941, 3.463115",\
+ "1.391696, 1.699491, 1.975731, 2.478471, 3.486645",\
+ "1.659069, 1.966864, 2.243104, 2.745844, 3.754018",\
+ "2.252877, 2.560672, 2.836912, 3.339653, 4.347826");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.760378, 1.022121, 1.314208, 1.821246, 2.835323",\
+ "0.768321, 1.030064, 1.322150, 1.829189, 2.843266",\
+ "0.781801, 1.043544, 1.335630, 1.842669, 2.856746",\
+ "0.935753, 1.197497, 1.489583, 1.996622, 3.010698",\
+ "1.275653, 1.537396, 1.829482, 2.336521, 3.350598",\
+ "0.847791, 1.109697, 1.401896, 1.907961, 2.921257",\
+ "0.855733, 1.117639, 1.409838, 1.915904, 2.929199",\
+ "0.869213, 1.131119, 1.423318, 1.929384, 2.942679",\
+ "1.023166, 1.285072, 1.577271, 2.083336, 3.096632",\
+ "1.363066, 1.624972, 1.917171, 2.423236, 3.436532",\
+ "0.928693, 1.198747, 1.489862, 1.995583, 3.008212",\
+ "0.936635, 1.206689, 1.497805, 2.003526, 3.016155",\
+ "0.950115, 1.220170, 1.511285, 2.017006, 3.029634",\
+ "1.104068, 1.374122, 1.665238, 2.170959, 3.183587",\
+ "1.443967, 1.714022, 2.005137, 2.510858, 3.523487",\
+ "0.988388, 1.264483, 1.554008, 2.059497, 3.071721",\
+ "0.996330, 1.272425, 1.561951, 2.067439, 3.079664",\
+ "1.009810, 1.285905, 1.575431, 2.080919, 3.093143",\
+ "1.163763, 1.439858, 1.729384, 2.234872, 3.247096",\
+ "1.503662, 1.779758, 2.069283, 2.574772, 3.586996",\
+ "1.322228, 1.630023, 1.906263, 2.409003, 3.417177",\
+ "1.330171, 1.637965, 1.914206, 2.416946, 3.425119",\
+ "1.343651, 1.651445, 1.927685, 2.430426, 3.438600",\
+ "1.497604, 1.805398, 2.081638, 2.584379, 3.592552",\
+ "1.837503, 2.145298, 2.421538, 2.924278, 3.932452");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2734*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.773575, 1.028253, 1.310824, 1.779371, 2.716465",\
+ "0.787127, 1.041805, 1.324376, 1.792923, 2.730017",\
+ "0.810657, 1.065335, 1.347906, 1.816453, 2.753547",\
+ "1.078030, 1.332708, 1.615279, 2.083826, 3.020920",\
+ "1.671839, 1.926517, 2.209088, 2.677635, 3.614729",\
+ "0.860984, 1.115846, 1.398389, 1.866085, 2.802399",\
+ "0.874536, 1.129398, 1.411941, 1.879637, 2.815951",\
+ "0.898067, 1.152928, 1.435471, 1.903167, 2.839481",\
+ "1.165440, 1.420301, 1.702844, 2.170541, 3.106854",\
+ "1.759248, 2.014110, 2.296653, 2.764349, 3.700663",\
+ "0.941840, 1.204919, 1.486352, 1.953707, 2.889354",\
+ "0.955392, 1.218471, 1.499904, 1.967259, 2.902906",\
+ "0.978923, 1.242001, 1.523435, 1.990789, 2.926436",\
+ "1.246296, 1.509374, 1.790808, 2.258162, 3.193809",\
+ "1.840104, 2.103183, 2.384616, 2.851971, 3.787618",\
+ "0.999500, 1.270687, 1.550492, 2.017620, 2.952863",\
+ "1.013052, 1.284239, 1.564044, 2.031172, 2.966415",\
+ "1.036583, 1.307769, 1.587574, 2.054702, 2.989945",\
+ "1.303956, 1.575142, 1.854947, 2.322075, 3.257318",\
+ "1.897764, 2.168951, 2.448756, 2.915884, 3.851127",\
+ "1.331207, 1.636652, 1.902354, 2.366964, 3.298319",\
+ "1.344759, 1.650204, 1.915906, 2.380516, 3.311871",\
+ "1.368289, 1.673734, 1.939437, 2.404047, 3.335401",\
+ "1.635662, 1.941107, 2.206810, 2.671420, 3.602774",\
+ "2.229471, 2.534916, 2.800618, 3.265228, 4.196583");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121333, 0.121333, 0.121333",\
+ "0.151701, 0.151701, 0.151701, 0.151701, 0.151701",\
+ "0.201129, 0.201129, 0.201129, 0.201129, 0.201129",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.741190, 0.995868, 1.278439, 1.746986, 2.684080",\
+ "0.749133, 1.003811, 1.286381, 1.754929, 2.692023",\
+ "0.762613, 1.017291, 1.299861, 1.768409, 2.705503",\
+ "0.916565, 1.171243, 1.453814, 1.922361, 2.859455",\
+ "1.256465, 1.511143, 1.793714, 2.262261, 3.199355",\
+ "0.828600, 1.083461, 1.366004, 1.833700, 2.770014",\
+ "0.836542, 1.091403, 1.373946, 1.841643, 2.777956",\
+ "0.850022, 1.104883, 1.387426, 1.855123, 2.791436",\
+ "1.003975, 1.258836, 1.541379, 2.009076, 2.945389",\
+ "1.343874, 1.598736, 1.881279, 2.348975, 3.285289",\
+ "0.909456, 1.172534, 1.453968, 1.921322, 2.856969",\
+ "0.917398, 1.180476, 1.461910, 1.929265, 2.864911",\
+ "0.930878, 1.193956, 1.475390, 1.942744, 2.878391",\
+ "1.084831, 1.347909, 1.629343, 2.096697, 3.032344",\
+ "1.424730, 1.687809, 1.969242, 2.436597, 3.372244",\
+ "0.967116, 1.238302, 1.518107, 1.985235, 2.920478",\
+ "0.975058, 1.246245, 1.526050, 1.993178, 2.928420",\
+ "0.988538, 1.259725, 1.539530, 2.006658, 2.941900",\
+ "1.142491, 1.413677, 1.693483, 2.160611, 3.095853",\
+ "1.482390, 1.753577, 2.033382, 2.500510, 3.435753",\
+ "1.298822, 1.604267, 1.869970, 2.334579, 3.265934",\
+ "1.306764, 1.612210, 1.877912, 2.342522, 3.273876",\
+ "1.320244, 1.625690, 1.891392, 2.356002, 3.287356",\
+ "1.474197, 1.779642, 2.045345, 2.509955, 3.441309",\
+ "1.814097, 2.119542, 2.385244, 2.849854, 3.781209");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895",\
+ "0.061223, 0.061223, 0.061223, 0.061223, 0.061223",\
+ "0.068571, 0.068571, 0.068571, 0.068571, 0.068571",\
+ "0.090396, 0.090396, 0.090396, 0.090396, 0.090396",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025895");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.741012, 0.979467, 1.257014, 1.743332, 2.715968",\
+ "0.754606, 0.993061, 1.270608, 1.756926, 2.729561",\
+ "0.778146, 1.016601, 1.294148, 1.780466, 2.753102",\
+ "1.045683, 1.284138, 1.561685, 2.048002, 3.020638",\
+ "1.638147, 1.876602, 2.154149, 2.640466, 3.613101",\
+ "0.828421, 1.066996, 1.344635, 1.830046, 2.801901",\
+ "0.842015, 1.080589, 1.358228, 1.843640, 2.815495",\
+ "0.865555, 1.104130, 1.381769, 1.867180, 2.839035",\
+ "1.133092, 1.371667, 1.649306, 2.134717, 3.106571",\
+ "1.725556, 1.964131, 2.241770, 2.727180, 3.699034",\
+ "0.909283, 1.155921, 1.432599, 1.917668, 2.888856",\
+ "0.922877, 1.169514, 1.446193, 1.931262, 2.902450",\
+ "0.946417, 1.193055, 1.469733, 1.954802, 2.925990",\
+ "1.213954, 1.460592, 1.737270, 2.222339, 3.193527",\
+ "1.806418, 2.053056, 2.329734, 2.814802, 3.785990",\
+ "0.966958, 1.221474, 1.496742, 1.981581, 2.952365",\
+ "0.980552, 1.235068, 1.510336, 1.995175, 2.965959",\
+ "1.004092, 1.258608, 1.533876, 2.018715, 2.989499",\
+ "1.271629, 1.526145, 1.801413, 2.286252, 3.257035",\
+ "1.864093, 2.118609, 2.393877, 2.878715, 3.849499",\
+ "1.288363, 1.584928, 1.848784, 2.330998, 3.297822",\
+ "1.301956, 1.598522, 1.862378, 2.344592, 3.311415",\
+ "1.325497, 1.622062, 1.885918, 2.368132, 3.334955",\
+ "1.593034, 1.889599, 2.153455, 2.635669, 3.602492",\
+ "2.185498, 2.482063, 2.745919, 3.228132, 4.194955");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.121485, 0.121485, 0.121485, 0.121485, 0.121484",\
+ "0.152032, 0.152032, 0.152032, 0.152031, 0.152028",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121484",\
+ "0.152032, 0.152032, 0.152032, 0.152031, 0.152028",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121484",\
+ "0.152032, 0.152032, 0.152032, 0.152031, 0.152028",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121484",\
+ "0.152032, 0.152032, 0.152032, 0.152031, 0.152028",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121484",\
+ "0.152032, 0.152032, 0.152032, 0.152031, 0.152028",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.682520, 0.920976, 1.198522, 1.684841, 2.657480",\
+ "0.693882, 0.932337, 1.209884, 1.696203, 2.668840",\
+ "0.712620, 0.951075, 1.228621, 1.714940, 2.687577",\
+ "0.881167, 1.119623, 1.397169, 1.883486, 2.856120",\
+ "1.215977, 1.454432, 1.731979, 2.218296, 3.190930",\
+ "0.769929, 1.008504, 1.286143, 1.771556, 2.743413",\
+ "0.781291, 1.019865, 1.297505, 1.782917, 2.754774",\
+ "0.800029, 1.038603, 1.316242, 1.801654, 2.773510",\
+ "0.968576, 1.207151, 1.484790, 1.970200, 2.942054",\
+ "1.303386, 1.541960, 1.819599, 2.305010, 3.276864",\
+ "0.850791, 1.097429, 1.374108, 1.859177, 2.830368",\
+ "0.862152, 1.108790, 1.385469, 1.870539, 2.841729",\
+ "0.880890, 1.127528, 1.404207, 1.889276, 2.860465",\
+ "1.049438, 1.296076, 1.572754, 2.057822, 3.029009",\
+ "1.384248, 1.630886, 1.907564, 2.392632, 3.363819",\
+ "0.908466, 1.162982, 1.438250, 1.923091, 2.893877",\
+ "0.919828, 1.174344, 1.449612, 1.934452, 2.905238",\
+ "0.938565, 1.193082, 1.468349, 1.953189, 2.923974",\
+ "1.107113, 1.361629, 1.636897, 2.121735, 3.092518",\
+ "1.441923, 1.696439, 1.971707, 2.456545, 3.427328",\
+ "1.229871, 1.526436, 1.790293, 2.272508, 3.239333",\
+ "1.241232, 1.537798, 1.801654, 2.283869, 3.250694",\
+ "1.259970, 1.556535, 1.820392, 2.302606, 3.269430",\
+ "1.428518, 1.725083, 1.988939, 2.471152, 3.437974",\
+ "1.763328, 2.059893, 2.323749, 2.805962, 3.772784");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.068436, 0.068436, 0.068435, 0.068432, 0.068425",\
+ "0.074512, 0.074512, 0.074511, 0.074509, 0.074503",\
+ "0.094928, 0.094928, 0.094927, 0.094924, 0.094919",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025917",\
+ "0.068436, 0.068436, 0.068435, 0.068432, 0.068425",\
+ "0.074512, 0.074512, 0.074511, 0.074509, 0.074503",\
+ "0.094928, 0.094928, 0.094927, 0.094924, 0.094919",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025917",\
+ "0.068436, 0.068436, 0.068435, 0.068432, 0.068425",\
+ "0.074512, 0.074512, 0.074511, 0.074509, 0.074503",\
+ "0.094928, 0.094928, 0.094927, 0.094924, 0.094919",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025917",\
+ "0.068436, 0.068436, 0.068435, 0.068432, 0.068425",\
+ "0.074512, 0.074512, 0.074511, 0.074509, 0.074503",\
+ "0.094928, 0.094928, 0.094927, 0.094924, 0.094919",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025917",\
+ "0.068436, 0.068436, 0.068435, 0.068432, 0.068425",\
+ "0.074512, 0.074512, 0.074511, 0.074509, 0.074503",\
+ "0.094928, 0.094928, 0.094927, 0.094924, 0.094919",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025917");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2374*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.697898, 0.947965, 1.225734, 1.724852, 2.723087",\
+ "0.711492, 0.961559, 1.239327, 1.738445, 2.736680",\
+ "0.735032, 0.985099, 1.262868, 1.761985, 2.760221",\
+ "1.002569, 1.252636, 1.530404, 2.029521, 3.027754",\
+ "1.595033, 1.845100, 2.122868, 2.621982, 3.620212",\
+ "0.785303, 1.035477, 1.313393, 1.811565, 2.809021",\
+ "0.798897, 1.049071, 1.326987, 1.825159, 2.822614",\
+ "0.822437, 1.072611, 1.350527, 1.848699, 2.846154",\
+ "1.089974, 1.340148, 1.618063, 2.116235, 3.113688",\
+ "1.682438, 1.932612, 2.210527, 2.708696, 3.706145",\
+ "0.866148, 1.124350, 1.401358, 1.899186, 2.895976",\
+ "0.879741, 1.137944, 1.414951, 1.912780, 2.909569",\
+ "0.903282, 1.161484, 1.438491, 1.936320, 2.933109",\
+ "1.170819, 1.429021, 1.706028, 2.203856, 3.200643",\
+ "1.763283, 2.021485, 2.298491, 2.796317, 3.793100",\
+ "0.926036, 1.189827, 1.465502, 1.963099, 2.959485",\
+ "0.939630, 1.203421, 1.479096, 1.976693, 2.973078",\
+ "0.963170, 1.226961, 1.502636, 2.000233, 2.996618",\
+ "1.230707, 1.494498, 1.770173, 2.267768, 3.264152",\
+ "1.823171, 2.086962, 2.362636, 2.860230, 3.856609",\
+ "1.263356, 1.552433, 1.817672, 2.312566, 3.304941",\
+ "1.276949, 1.566026, 1.831266, 2.326159, 3.318534",\
+ "1.300490, 1.589567, 1.854806, 2.349699, 3.342074",\
+ "1.568027, 1.857104, 2.122343, 2.617235, 3.609608",\
+ "2.160491, 2.449568, 2.714806, 3.209696, 4.202065");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.121485, 0.121485, 0.121485, 0.121483, 0.121479",\
+ "0.152032, 0.152032, 0.152035, 0.152046, 0.152069",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823611",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121483, 0.121479",\
+ "0.152032, 0.152032, 0.152035, 0.152046, 0.152069",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823611",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121483, 0.121479",\
+ "0.152032, 0.152032, 0.152035, 0.152046, 0.152069",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823611",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121483, 0.121479",\
+ "0.152032, 0.152032, 0.152035, 0.152046, 0.152069",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823611",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121483, 0.121479",\
+ "0.152032, 0.152032, 0.152035, 0.152046, 0.152069",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823611",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.639406, 0.889474, 1.167244, 1.666367, 2.664614",\
+ "0.650768, 0.900835, 1.178605, 1.677727, 2.675971",\
+ "0.669506, 0.919573, 1.197342, 1.696462, 2.694701",\
+ "0.838053, 1.088120, 1.365887, 1.865001, 2.863227",\
+ "1.172863, 1.422930, 1.700697, 2.199811, 3.198038",\
+ "0.726812, 0.976986, 1.254903, 1.753081, 2.750548",\
+ "0.738173, 0.988347, 1.266264, 1.764440, 2.761904",\
+ "0.756911, 1.007085, 1.285001, 1.783175, 2.780635",\
+ "0.925458, 1.175632, 1.453547, 1.951714, 2.949161",\
+ "1.260268, 1.510442, 1.788356, 2.286525, 3.283972",\
+ "0.807656, 1.065858, 1.342867, 1.840702, 2.837503",\
+ "0.819017, 1.077220, 1.354228, 1.852061, 2.848859",\
+ "0.837755, 1.095958, 1.372966, 1.870796, 2.867590",\
+ "1.006303, 1.264505, 1.541511, 2.039335, 3.036116",\
+ "1.341113, 1.599315, 1.876321, 2.374146, 3.370927",\
+ "0.867545, 1.131335, 1.407012, 1.904615, 2.901012",\
+ "0.878906, 1.142697, 1.418373, 1.915974, 2.912368",\
+ "0.897644, 1.161434, 1.437110, 1.934709, 2.931099",\
+ "1.066191, 1.329982, 1.605656, 2.103248, 3.099625",\
+ "1.401001, 1.664792, 1.940466, 2.438058, 3.434436",\
+ "1.204864, 1.493941, 1.759182, 2.254081, 3.246468",\
+ "1.216225, 1.505302, 1.770543, 2.265441, 3.257824",\
+ "1.234963, 1.524040, 1.789280, 2.284176, 3.276555",\
+ "1.403511, 1.692588, 1.957826, 2.452714, 3.445081",\
+ "1.738321, 2.027398, 2.292636, 2.787525, 3.779892");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.068435, 0.068435, 0.068431, 0.068415, 0.068383",\
+ "0.074512, 0.074512, 0.074508, 0.074493, 0.074464",\
+ "0.094928, 0.094928, 0.094924, 0.094910, 0.094883",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380691",\
+ "1.025917, 1.025917, 1.025917, 1.025918, 1.025919",\
+ "0.068435, 0.068435, 0.068431, 0.068415, 0.068383",\
+ "0.074512, 0.074512, 0.074508, 0.074493, 0.074464",\
+ "0.094928, 0.094928, 0.094924, 0.094910, 0.094883",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380691",\
+ "1.025917, 1.025917, 1.025917, 1.025918, 1.025919",\
+ "0.068435, 0.068435, 0.068431, 0.068415, 0.068383",\
+ "0.074512, 0.074512, 0.074508, 0.074493, 0.074464",\
+ "0.094928, 0.094928, 0.094924, 0.094910, 0.094883",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380691",\
+ "1.025917, 1.025917, 1.025917, 1.025918, 1.025919",\
+ "0.068435, 0.068435, 0.068431, 0.068415, 0.068383",\
+ "0.074512, 0.074512, 0.074508, 0.074493, 0.074464",\
+ "0.094928, 0.094928, 0.094924, 0.094910, 0.094883",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380691",\
+ "1.025917, 1.025917, 1.025917, 1.025918, 1.025919",\
+ "0.068435, 0.068435, 0.068430, 0.068415, 0.068383",\
+ "0.074512, 0.074512, 0.074507, 0.074493, 0.074464",\
+ "0.094928, 0.094928, 0.094923, 0.094910, 0.094883",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380691",\
+ "1.025917, 1.025917, 1.025917, 1.025918, 1.025919");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2490*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.564894, 0.815791, 1.094396, 1.559341, 2.489231",\
+ "0.578576, 0.829479, 1.108111, 1.573121, 2.503140",\
+ "0.602105, 0.853007, 1.131636, 1.596638, 2.526642",\
+ "0.870117, 1.121053, 1.399829, 1.865184, 2.795893",\
+ "1.463316, 1.714304, 1.993307, 2.459207, 3.391007",\
+ "0.652304, 0.903365, 1.181950, 1.646055, 2.575164",\
+ "0.665985, 0.917053, 1.195665, 1.659835, 2.589074",\
+ "0.689515, 0.940582, 1.219190, 1.683353, 2.612576",\
+ "0.957527, 1.208627, 1.487384, 1.951898, 2.881827",\
+ "1.550725, 1.801879, 2.080863, 2.545921, 3.476941",\
+ "0.733136, 0.992396, 1.269913, 1.733677, 2.662119",\
+ "0.746817, 1.006083, 1.283628, 1.747457, 2.676029",\
+ "0.770346, 1.029612, 1.307153, 1.770974, 2.699531",\
+ "1.038358, 1.297659, 1.575347, 2.039520, 2.968782",\
+ "1.631557, 1.890911, 2.168827, 2.633543, 3.563896",\
+ "0.790750, 1.058102, 1.334052, 1.797590, 2.725628",\
+ "0.804431, 1.071790, 1.347767, 1.811370, 2.739538",\
+ "0.827961, 1.095319, 1.371293, 1.834888, 2.763040",\
+ "1.095973, 1.363366, 1.639486, 2.103433, 3.032291",\
+ "1.689171, 1.956620, 2.232966, 2.697456, 3.627405",\
+ "1.120458, 1.423346, 1.685878, 2.146919, 3.071084",\
+ "1.134140, 1.437036, 1.699593, 2.160699, 3.084994",\
+ "1.157669, 1.460564, 1.723119, 2.184217, 3.108496",\
+ "1.425683, 1.728623, 1.991316, 2.452764, 3.377747",\
+ "2.018884, 2.321894, 2.584802, 3.046790, 3.972861");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.122237, 0.122291, 0.122948, 0.124971, 0.129018",\
+ "0.151797, 0.151880, 0.152446, 0.154040, 0.157229",\
+ "0.201011, 0.201013, 0.201172, 0.201712, 0.202792",\
+ "0.823650, 0.823653, 0.823665, 0.823694, 0.823752",\
+ "2.222134, 2.222134, 2.222135, 2.222138, 2.222144",\
+ "0.122237, 0.122291, 0.122954, 0.124971, 0.129018",\
+ "0.151797, 0.151881, 0.152451, 0.154040, 0.157229",\
+ "0.201011, 0.201013, 0.201174, 0.201712, 0.202792",\
+ "0.823650, 0.823653, 0.823665, 0.823694, 0.823752",\
+ "2.222134, 2.222134, 2.222135, 2.222138, 2.222144",\
+ "0.122237, 0.122292, 0.122954, 0.124971, 0.129018",\
+ "0.151797, 0.151883, 0.152451, 0.154040, 0.157229",\
+ "0.201011, 0.201013, 0.201174, 0.201712, 0.202792",\
+ "0.823650, 0.823653, 0.823665, 0.823694, 0.823752",\
+ "2.222134, 2.222134, 2.222135, 2.222138, 2.222144",\
+ "0.122238, 0.122294, 0.122955, 0.124971, 0.129018",\
+ "0.151797, 0.151885, 0.152452, 0.154040, 0.157229",\
+ "0.201011, 0.201013, 0.201174, 0.201712, 0.202792",\
+ "0.823650, 0.823653, 0.823665, 0.823694, 0.823752",\
+ "2.222134, 2.222134, 2.222135, 2.222138, 2.222144",\
+ "0.122241, 0.122311, 0.122975, 0.124980, 0.129018",\
+ "0.151805, 0.151911, 0.152468, 0.154047, 0.157229",\
+ "0.201012, 0.201014, 0.201180, 0.201714, 0.202792",\
+ "0.823651, 0.823654, 0.823666, 0.823694, 0.823752",\
+ "2.222134, 2.222134, 2.222135, 2.222138, 2.222144");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.504118, 0.754852, 1.032751, 1.495998, 2.422494",\
+ "0.516114, 0.766894, 1.044988, 1.508707, 2.436146",\
+ "0.535711, 0.786551, 1.064911, 1.529268, 2.457982",\
+ "0.706984, 0.958018, 1.237222, 1.703603, 2.636367",\
+ "1.041617, 1.292639, 1.571788, 2.038038, 2.970540",\
+ "0.591527, 0.842425, 1.120299, 1.582713, 2.508428",\
+ "0.603524, 0.854467, 1.132538, 1.595422, 2.522079",\
+ "0.623120, 0.874125, 1.152463, 1.615983, 2.543916",\
+ "0.794393, 1.045593, 1.324780, 1.790318, 2.722301",\
+ "1.129027, 1.380214, 1.659346, 2.124753, 3.056474",\
+ "0.672359, 0.931452, 1.208262, 1.670335, 2.595383",\
+ "0.684355, 0.943495, 1.220501, 1.683044, 2.609035",\
+ "0.703952, 0.963154, 1.240426, 1.703604, 2.630871",\
+ "0.875225, 1.134627, 1.412743, 1.877940, 2.809256",\
+ "1.209858, 1.469247, 1.747309, 2.212375, 3.143429",\
+ "0.729973, 0.997154, 1.272401, 1.734248, 2.658892",\
+ "0.741969, 1.009198, 1.284640, 1.746957, 2.672544",\
+ "0.761566, 1.028859, 1.304565, 1.767518, 2.694380",\
+ "0.932840, 1.200337, 1.476882, 1.941853, 2.872765",\
+ "1.267473, 1.534957, 1.811448, 2.276288, 3.206938",\
+ "1.059672, 1.362345, 1.624210, 2.083570, 3.004348",\
+ "1.071671, 1.374403, 1.636453, 2.096281, 3.018000",\
+ "1.091271, 1.394084, 1.656385, 2.116844, 3.039836",\
+ "1.262555, 1.565626, 1.828723, 2.291188, 3.218221",\
+ "1.597188, 1.900242, 2.163287, 2.625622, 3.552394");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.074860, 0.075317, 0.077304, 0.082076, 0.091621",\
+ "0.080333, 0.080747, 0.082548, 0.086873, 0.095522",\
+ "0.100376, 0.100764, 0.102449, 0.106497, 0.114592",\
+ "0.380687, 0.380688, 0.380696, 0.380717, 0.380759",\
+ "1.025901, 1.025907, 1.025944, 1.026050, 1.026262",\
+ "0.074860, 0.075320, 0.077319, 0.082076, 0.091621",\
+ "0.080333, 0.080751, 0.082562, 0.086873, 0.095522",\
+ "0.100376, 0.100767, 0.102462, 0.106497, 0.114592",\
+ "0.380687, 0.380688, 0.380696, 0.380717, 0.380759",\
+ "1.025901, 1.025907, 1.025945, 1.026050, 1.026262",\
+ "0.074860, 0.075329, 0.077319, 0.082076, 0.091621",\
+ "0.080334, 0.080759, 0.082562, 0.086873, 0.095522",\
+ "0.100376, 0.100774, 0.102462, 0.106497, 0.114592",\
+ "0.380687, 0.380688, 0.380696, 0.380717, 0.380759",\
+ "1.025901, 1.025907, 1.025945, 1.026050, 1.026262",\
+ "0.074860, 0.075342, 0.077320, 0.082076, 0.091621",\
+ "0.080334, 0.080770, 0.082563, 0.086873, 0.095522",\
+ "0.100377, 0.100785, 0.102463, 0.106497, 0.114592",\
+ "0.380687, 0.380688, 0.380696, 0.380717, 0.380759",\
+ "1.025901, 1.025907, 1.025945, 1.026050, 1.026262",\
+ "0.074886, 0.075492, 0.077368, 0.082096, 0.091621",\
+ "0.080357, 0.080906, 0.082607, 0.086890, 0.095522",\
+ "0.100399, 0.100912, 0.102504, 0.106513, 0.114592",\
+ "0.380687, 0.380689, 0.380696, 0.380717, 0.380759",\
+ "1.025902, 1.025909, 1.025946, 1.026050, 1.026262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2519*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.601589, 0.856514, 1.112604, 1.552662, 2.432779",\
+ "0.615142, 0.870066, 1.126156, 1.566215, 2.446333",\
+ "0.638672, 0.893596, 1.149686, 1.589744, 2.469861",\
+ "0.906045, 1.160969, 1.417061, 1.857126, 2.737255",\
+ "1.499860, 1.754785, 2.010744, 2.450359, 3.329590",\
+ "0.689139, 0.944005, 1.200076, 1.639375, 2.518713",\
+ "0.702691, 0.957558, 1.213628, 1.652928, 2.532267",\
+ "0.726222, 0.981088, 1.237158, 1.676457, 2.555795",\
+ "0.993595, 1.248461, 1.504533, 1.943839, 2.823189",\
+ "1.587410, 1.842276, 2.098214, 2.537072, 3.415524",\
+ "0.778517, 1.032815, 1.288036, 1.726995, 2.605668",\
+ "0.792069, 1.046367, 1.301588, 1.740548, 2.619222",\
+ "0.815599, 1.069897, 1.325118, 1.764078, 2.642750",\
+ "1.082972, 1.337270, 1.592493, 2.031459, 2.910144",\
+ "1.676788, 1.931085, 2.186174, 2.624692, 3.502479",\
+ "0.842460, 1.098198, 1.352170, 1.790908, 2.669177",\
+ "0.856012, 1.111750, 1.365723, 1.804461, 2.682731",\
+ "0.879542, 1.135280, 1.389253, 1.827990, 2.706259",\
+ "1.146915, 1.402653, 1.656628, 2.095372, 2.973653",\
+ "1.740730, 1.996469, 2.250309, 2.688605, 3.565988",\
+ "1.180709, 1.459770, 1.703739, 2.140127, 3.014633",\
+ "1.194261, 1.473322, 1.717291, 2.153680, 3.028187",\
+ "1.217791, 1.496852, 1.740821, 2.177209, 3.051715",\
+ "1.485164, 1.764225, 2.008196, 2.444591, 3.319109",\
+ "2.078980, 2.358040, 2.601873, 3.037822, 3.911444");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.121333, 0.121333, 0.121337, 0.121351, 0.121379",\
+ "0.151701, 0.151701, 0.151700, 0.151698, 0.151693",\
+ "0.201129, 0.201129, 0.201130, 0.201137, 0.201149",\
+ "0.823409, 0.823409, 0.823407, 0.823401, 0.823387",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121337, 0.121351, 0.121379",\
+ "0.151701, 0.151701, 0.151700, 0.151698, 0.151693",\
+ "0.201129, 0.201129, 0.201130, 0.201137, 0.201149",\
+ "0.823409, 0.823409, 0.823407, 0.823401, 0.823387",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121337, 0.121351, 0.121379",\
+ "0.151701, 0.151701, 0.151700, 0.151698, 0.151693",\
+ "0.201129, 0.201129, 0.201130, 0.201137, 0.201149",\
+ "0.823409, 0.823409, 0.823407, 0.823401, 0.823387",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121337, 0.121351, 0.121379",\
+ "0.151701, 0.151701, 0.151700, 0.151698, 0.151693",\
+ "0.201129, 0.201129, 0.201130, 0.201137, 0.201149",\
+ "0.823409, 0.823409, 0.823407, 0.823401, 0.823387",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121333, 0.121337, 0.121351, 0.121379",\
+ "0.151701, 0.151701, 0.151700, 0.151698, 0.151693",\
+ "0.201129, 0.201129, 0.201131, 0.201137, 0.201149",\
+ "0.823409, 0.823409, 0.823407, 0.823401, 0.823387",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.569211, 0.824136, 1.079695, 1.517959, 2.394488",\
+ "0.577154, 0.832078, 1.087637, 1.525902, 2.402431",\
+ "0.590634, 0.845558, 1.101117, 1.539382, 2.415911",\
+ "0.744587, 0.999511, 1.255305, 1.694361, 2.572475",\
+ "1.084486, 1.339411, 1.594970, 2.033235, 2.909765",\
+ "0.656761, 0.911627, 1.167161, 1.604672, 2.480422",\
+ "0.664704, 0.919570, 1.175103, 1.612615, 2.488365",\
+ "0.678184, 0.933050, 1.188583, 1.626095, 2.501845",\
+ "0.832137, 1.087003, 1.342773, 1.781074, 2.658409",\
+ "1.172036, 1.426902, 1.682436, 2.119948, 2.995698",\
+ "0.746139, 1.000437, 1.255121, 1.692293, 2.567377",\
+ "0.754081, 1.008379, 1.263063, 1.700235, 2.575320",\
+ "0.767561, 1.021859, 1.276543, 1.713715, 2.588800",\
+ "0.921514, 1.175812, 1.430733, 1.868695, 2.745364",\
+ "1.261414, 1.515711, 1.770396, 2.207568, 3.082654",\
+ "0.810081, 1.065820, 1.319255, 1.756205, 2.630886",\
+ "0.818024, 1.073762, 1.327198, 1.764148, 2.638829",\
+ "0.831504, 1.087242, 1.340678, 1.777627, 2.652309",\
+ "0.985457, 1.241195, 1.494868, 1.932607, 2.808873",\
+ "1.325356, 1.581095, 1.834530, 2.271481, 3.146163",\
+ "1.148331, 1.427392, 1.670806, 2.105417, 2.976342",\
+ "1.156273, 1.435334, 1.678748, 2.113359, 2.984285",\
+ "1.169753, 1.448814, 1.692228, 2.126839, 2.997765",\
+ "1.323706, 1.602767, 1.846426, 2.281822, 3.154329",\
+ "1.663605, 1.942666, 2.186081, 2.620692, 3.491619");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.061223, 0.061223, 0.061191, 0.061085, 0.060871",\
+ "0.068571, 0.068571, 0.068550, 0.068476, 0.068328",\
+ "0.090396, 0.090396, 0.090388, 0.090358, 0.090299",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025894",\
+ "0.061223, 0.061223, 0.061191, 0.061085, 0.060871",\
+ "0.068571, 0.068571, 0.068549, 0.068476, 0.068328",\
+ "0.090396, 0.090396, 0.090387, 0.090358, 0.090299",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025894",\
+ "0.061223, 0.061223, 0.061191, 0.061085, 0.060871",\
+ "0.068571, 0.068571, 0.068549, 0.068476, 0.068328",\
+ "0.090396, 0.090396, 0.090387, 0.090358, 0.090299",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025894",\
+ "0.061223, 0.061223, 0.061191, 0.061085, 0.060871",\
+ "0.068571, 0.068571, 0.068549, 0.068476, 0.068328",\
+ "0.090396, 0.090396, 0.090387, 0.090358, 0.090299",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025894",\
+ "0.061223, 0.061223, 0.061190, 0.061084, 0.060871",\
+ "0.068571, 0.068571, 0.068549, 0.068475, 0.068328",\
+ "0.090396, 0.090396, 0.090387, 0.090358, 0.090299",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025895, 1.025895, 1.025895, 1.025895, 1.025894");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2575*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.577162, 0.819115, 1.086143, 1.569512, 2.536249",\
+ "0.590714, 0.832667, 1.099696, 1.583067, 2.549807",\
+ "0.614244, 0.856197, 1.123226, 1.606594, 2.573331",\
+ "0.881617, 1.123572, 1.390607, 1.873991, 2.840761",\
+ "1.475569, 1.717569, 1.984519, 2.467402, 3.433167",\
+ "0.664563, 0.906592, 1.173751, 1.656225, 2.622182",\
+ "0.678115, 0.920144, 1.187304, 1.669780, 2.635741",\
+ "0.701645, 0.943674, 1.210834, 1.693307, 2.659265",\
+ "0.969019, 1.211049, 1.478215, 1.960705, 2.926694",\
+ "1.562970, 1.805047, 2.072125, 2.554115, 3.519101",\
+ "0.745370, 0.995374, 1.261714, 1.743845, 2.709137",\
+ "0.758922, 1.008926, 1.275267, 1.757400, 2.722696",\
+ "0.782452, 1.032456, 1.298797, 1.780928, 2.746220",\
+ "1.049826, 1.299831, 1.566178, 2.048325, 3.013649",\
+ "1.643777, 1.893830, 2.160089, 2.641735, 3.606056",\
+ "0.805541, 1.060718, 1.325856, 1.807758, 2.772646",\
+ "0.819093, 1.074270, 1.339409, 1.821313, 2.786205",\
+ "0.842623, 1.097800, 1.362939, 1.844840, 2.809729",\
+ "1.109996, 1.365175, 1.630320, 2.112238, 3.077158",\
+ "1.703948, 1.959175, 2.224230, 2.705648, 3.669565",\
+ "1.143425, 1.421812, 1.677865, 2.157156, 3.118103",\
+ "1.156977, 1.435364, 1.691418, 2.170711, 3.131661",\
+ "1.180507, 1.458894, 1.714947, 2.194238, 3.155185",\
+ "1.447880, 1.726269, 1.982328, 2.461636, 3.422615",\
+ "2.041832, 2.320285, 2.576234, 3.055044, 4.015021");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.121333, 0.121336, 0.121350, 0.121386, 0.121458",\
+ "0.151694, 0.151694, 0.151695, 0.151695, 0.151695",\
+ "0.201129, 0.201130, 0.201136, 0.201152, 0.201184",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121336, 0.121350, 0.121386, 0.121458",\
+ "0.151694, 0.151694, 0.151695, 0.151695, 0.151695",\
+ "0.201129, 0.201130, 0.201136, 0.201152, 0.201184",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121336, 0.121350, 0.121386, 0.121458",\
+ "0.151694, 0.151694, 0.151695, 0.151695, 0.151695",\
+ "0.201129, 0.201130, 0.201136, 0.201152, 0.201184",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121336, 0.121350, 0.121386, 0.121458",\
+ "0.151694, 0.151694, 0.151695, 0.151695, 0.151695",\
+ "0.201129, 0.201130, 0.201136, 0.201152, 0.201184",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121333, 0.121337, 0.121351, 0.121386, 0.121458",\
+ "0.151694, 0.151694, 0.151695, 0.151695, 0.151695",\
+ "0.201129, 0.201130, 0.201137, 0.201152, 0.201184",\
+ "0.823409, 0.823409, 0.823409, 0.823409, 0.823409",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.544918, 0.786919, 1.051943, 1.528303, 2.481022",\
+ "0.552861, 0.794861, 1.060131, 1.537319, 2.491697",\
+ "0.566341, 0.808341, 1.074013, 1.552566, 2.509672",\
+ "0.720294, 0.962295, 1.229085, 1.711427, 2.676111",\
+ "1.060194, 1.302195, 1.568545, 2.049397, 3.011100",\
+ "0.632320, 0.874396, 1.139529, 1.615016, 2.566956",\
+ "0.640262, 0.882339, 1.147719, 1.624032, 2.577631",\
+ "0.653742, 0.895819, 1.161606, 1.639279, 2.595606",\
+ "0.807696, 1.049772, 1.316690, 1.798140, 2.762045",\
+ "1.147596, 1.389672, 1.656145, 2.136110, 3.097034",\
+ "0.713127, 0.963179, 1.227492, 1.702637, 2.653911",\
+ "0.721069, 0.971121, 1.235682, 1.711653, 2.664586",\
+ "0.734549, 0.984601, 1.249569, 1.726900, 2.682561",\
+ "0.888502, 1.138555, 1.404653, 1.885761, 2.849000",\
+ "1.228403, 1.478455, 1.744108, 2.223730, 3.183989",\
+ "0.773297, 1.028524, 1.291633, 1.766549, 2.717420",\
+ "0.781240, 1.036467, 1.299823, 1.775565, 2.728095",\
+ "0.794720, 1.049947, 1.313710, 1.790812, 2.746070",\
+ "0.948673, 1.203900, 1.468795, 1.949673, 2.912509",\
+ "1.288574, 1.543800, 1.808250, 2.287643, 3.247498",\
+ "1.111181, 1.389635, 1.643570, 2.115918, 3.062876",\
+ "1.119124, 1.397577, 1.651768, 2.124938, 3.073550",\
+ "1.132604, 1.411057, 1.665669, 2.140191, 3.091526",\
+ "1.286557, 1.565011, 1.820792, 2.299067, 3.257965",\
+ "1.626457, 1.904911, 2.160232, 2.637031, 3.592954");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.061220, 0.061199, 0.061091, 0.060821, 0.060280",\
+ "0.068569, 0.068555, 0.068480, 0.068293, 0.067919",\
+ "0.090395, 0.090390, 0.090360, 0.090285, 0.090136",\
+ "0.380686, 0.380686, 0.380686, 0.380685, 0.380684",\
+ "1.025895, 1.025895, 1.025894, 1.025891, 1.025886",\
+ "0.061220, 0.061199, 0.061090, 0.060821, 0.060280",\
+ "0.068569, 0.068555, 0.068480, 0.068293, 0.067919",\
+ "0.090395, 0.090390, 0.090360, 0.090285, 0.090136",\
+ "0.380686, 0.380686, 0.380686, 0.380685, 0.380684",\
+ "1.025895, 1.025895, 1.025894, 1.025891, 1.025886",\
+ "0.061220, 0.061198, 0.061090, 0.060821, 0.060280",\
+ "0.068569, 0.068554, 0.068480, 0.068293, 0.067919",\
+ "0.090395, 0.090390, 0.090360, 0.090285, 0.090136",\
+ "0.380686, 0.380686, 0.380686, 0.380685, 0.380684",\
+ "1.025895, 1.025895, 1.025894, 1.025891, 1.025886",\
+ "0.061220, 0.061198, 0.061090, 0.060821, 0.060280",\
+ "0.068569, 0.068554, 0.068479, 0.068293, 0.067919",\
+ "0.090395, 0.090389, 0.090360, 0.090285, 0.090136",\
+ "0.380686, 0.380686, 0.380686, 0.380685, 0.380684",\
+ "1.025895, 1.025895, 1.025894, 1.025891, 1.025886",\
+ "0.061220, 0.061191, 0.061087, 0.060819, 0.060280",\
+ "0.068569, 0.068549, 0.068478, 0.068292, 0.067919",\
+ "0.090395, 0.090387, 0.090359, 0.090285, 0.090136",\
+ "0.380686, 0.380686, 0.380686, 0.380685, 0.380684",\
+ "1.025895, 1.025895, 1.025894, 1.025891, 1.025886");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2704*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.666137, 0.908208, 1.174611, 1.656033, 2.618876",\
+ "0.679731, 0.921802, 1.188205, 1.669626, 2.632469",\
+ "0.703271, 0.945343, 1.211745, 1.693166, 2.656009",\
+ "0.970809, 1.212879, 1.479281, 1.960701, 2.923540",\
+ "1.563272, 1.805343, 2.071744, 2.553161, 3.515995",\
+ "0.753539, 0.995685, 1.262213, 1.742746, 2.704810",\
+ "0.767133, 1.009279, 1.275807, 1.756339, 2.718403",\
+ "0.790673, 1.032819, 1.299347, 1.779880, 2.741943",\
+ "1.058210, 1.300356, 1.566883, 2.047414, 3.009474",\
+ "1.650674, 1.892820, 2.159346, 2.639874, 3.601928",\
+ "0.834346, 1.084466, 1.350176, 1.830367, 2.791765",\
+ "0.847940, 1.098060, 1.363770, 1.843960, 2.805358",\
+ "0.871480, 1.121600, 1.387310, 1.867500, 2.828898",\
+ "1.139017, 1.389137, 1.654846, 2.135035, 3.096429",\
+ "1.731481, 1.981601, 2.247309, 2.727494, 3.688883",\
+ "0.894640, 1.149809, 1.414318, 1.894279, 2.855274",\
+ "0.908234, 1.163403, 1.427911, 1.907872, 2.868867",\
+ "0.931774, 1.186943, 1.451452, 1.931413, 2.892407",\
+ "1.199311, 1.454480, 1.718988, 2.198947, 3.159938",\
+ "1.791775, 2.046944, 2.311450, 2.791407, 3.752392",\
+ "1.232542, 1.510890, 1.766306, 2.243669, 3.200730",\
+ "1.246135, 1.524484, 1.779900, 2.257262, 3.214323",\
+ "1.269676, 1.548024, 1.803440, 2.280803, 3.237863",\
+ "1.537213, 1.815561, 2.070976, 2.548337, 3.505394",\
+ "2.129677, 2.408025, 2.663439, 3.140797, 4.097848");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.121485, 0.121485, 0.121485, 0.121485, 0.121485",\
+ "0.152032, 0.152032, 0.152043, 0.152082, 0.152158",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222135",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121485",\
+ "0.152032, 0.152032, 0.152044, 0.152082, 0.152158",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222135",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121485",\
+ "0.152032, 0.152032, 0.152044, 0.152082, 0.152158",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222135",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121485",\
+ "0.152032, 0.152032, 0.152044, 0.152082, 0.152158",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222135",\
+ "0.121485, 0.121485, 0.121485, 0.121485, 0.121485",\
+ "0.152032, 0.152032, 0.152044, 0.152082, 0.152158",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222135");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.607646, 0.849717, 1.116124, 1.597554, 2.560414",\
+ "0.619007, 0.861079, 1.127484, 1.608912, 2.571767",\
+ "0.637745, 0.879816, 1.146220, 1.627645, 2.590494",\
+ "0.806293, 1.048363, 1.314763, 1.796177, 2.759006",\
+ "1.141102, 1.383173, 1.649573, 2.130988, 3.093818",\
+ "0.695047, 0.937194, 1.203726, 1.684267, 2.646348",\
+ "0.706409, 0.948555, 1.215086, 1.695625, 2.657701",\
+ "0.725146, 0.967293, 1.233822, 1.714358, 2.676428",\
+ "0.893694, 1.135840, 1.402365, 1.882890, 2.844940",\
+ "1.228504, 1.470650, 1.737175, 2.217701, 3.179752",\
+ "0.775854, 1.025975, 1.291688, 1.771888, 2.733303",\
+ "0.787216, 1.037337, 1.303049, 1.783245, 2.744656",\
+ "0.805953, 1.056074, 1.321785, 1.801978, 2.763383",\
+ "0.974501, 1.224621, 1.490328, 1.970511, 2.931895",\
+ "1.309311, 1.559431, 1.825138, 2.305322, 3.266707",\
+ "0.836149, 1.091318, 1.355830, 1.835800, 2.796812",\
+ "0.847510, 1.102679, 1.367190, 1.847158, 2.808165",\
+ "0.866248, 1.121417, 1.385927, 1.865891, 2.826892",\
+ "1.034796, 1.289964, 1.554469, 2.034424, 2.995404",\
+ "1.369605, 1.624774, 1.889280, 2.369234, 3.330216",\
+ "1.174050, 1.452400, 1.707819, 2.185190, 3.142268",\
+ "1.185411, 1.463761, 1.719179, 2.196548, 3.153621",\
+ "1.204149, 1.482498, 1.737915, 2.215281, 3.172348",\
+ "1.372697, 1.651045, 1.906458, 2.383814, 3.340860",\
+ "1.707507, 1.985855, 2.241268, 2.718624, 3.675672");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.068435, 0.068435, 0.068435, 0.068435, 0.068435",\
+ "0.074512, 0.074512, 0.074512, 0.074512, 0.074512",\
+ "0.094928, 0.094928, 0.094928, 0.094928, 0.094928",\
+ "0.380690, 0.380690, 0.380690, 0.380691, 0.380692",\
+ "1.025917, 1.025917, 1.025918, 1.025920, 1.025925",\
+ "0.068435, 0.068435, 0.068435, 0.068435, 0.068435",\
+ "0.074512, 0.074512, 0.074512, 0.074512, 0.074512",\
+ "0.094928, 0.094928, 0.094928, 0.094928, 0.094928",\
+ "0.380690, 0.380690, 0.380690, 0.380691, 0.380692",\
+ "1.025917, 1.025917, 1.025918, 1.025920, 1.025925",\
+ "0.068435, 0.068435, 0.068435, 0.068435, 0.068435",\
+ "0.074512, 0.074512, 0.074512, 0.074512, 0.074512",\
+ "0.094928, 0.094928, 0.094928, 0.094928, 0.094928",\
+ "0.380690, 0.380690, 0.380690, 0.380691, 0.380692",\
+ "1.025917, 1.025917, 1.025918, 1.025920, 1.025925",\
+ "0.068435, 0.068435, 0.068435, 0.068435, 0.068435",\
+ "0.074512, 0.074512, 0.074512, 0.074512, 0.074512",\
+ "0.094928, 0.094928, 0.094928, 0.094928, 0.094928",\
+ "0.380690, 0.380690, 0.380690, 0.380691, 0.380692",\
+ "1.025917, 1.025917, 1.025918, 1.025920, 1.025925",\
+ "0.068435, 0.068435, 0.068435, 0.068435, 0.068435",\
+ "0.074512, 0.074512, 0.074512, 0.074512, 0.074512",\
+ "0.094928, 0.094928, 0.094928, 0.094928, 0.094928",\
+ "0.380690, 0.380690, 0.380690, 0.380691, 0.380692",\
+ "1.025917, 1.025917, 1.025918, 1.025920, 1.025925");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2327*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.688394, 0.943298, 1.199532, 1.637805, 2.514353",\
+ "0.701988, 0.956891, 1.213125, 1.651399, 2.527946",\
+ "0.725528, 0.980432, 1.236665, 1.674939, 2.551486",\
+ "0.993065, 1.247969, 1.504202, 1.942475, 2.819022",\
+ "1.585529, 1.840433, 2.096666, 2.534938, 3.411482",\
+ "0.775799, 1.030785, 1.286999, 1.724519, 2.600287",\
+ "0.789393, 1.044379, 1.300593, 1.738113, 2.613880",\
+ "0.812933, 1.067919, 1.324133, 1.761653, 2.637420",\
+ "1.080470, 1.335456, 1.591670, 2.029189, 2.904955",\
+ "1.672934, 1.927920, 2.184134, 2.621652, 3.497416",\
+ "0.864143, 1.119604, 1.374960, 1.812140, 2.687242",\
+ "0.877736, 1.133197, 1.388554, 1.825734, 2.700835",\
+ "0.901277, 1.156737, 1.412094, 1.849274, 2.724375",\
+ "1.168814, 1.424274, 1.679631, 2.116810, 2.991910",\
+ "1.761278, 2.016739, 2.272095, 2.709273, 3.584371",\
+ "0.927637, 1.185001, 1.439095, 1.876053, 2.750751",\
+ "0.941231, 1.198595, 1.452689, 1.889647, 2.764344",\
+ "0.964771, 1.222135, 1.476229, 1.913187, 2.787884",\
+ "1.232308, 1.489672, 1.743766, 2.180723, 3.055419",\
+ "1.824772, 2.082136, 2.336229, 2.773186, 3.647880",\
+ "1.263060, 1.546678, 1.790648, 2.225268, 3.096207",\
+ "1.276654, 1.560272, 1.804242, 2.238862, 3.109800",\
+ "1.300194, 1.583812, 1.827782, 2.262402, 3.133340",\
+ "1.567731, 1.851349, 2.095319, 2.529938, 3.400876",\
+ "2.160195, 2.443813, 2.687783, 3.122401, 3.993336");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.121485, 0.121485, 0.121485, 0.121484, 0.121482",\
+ "0.152032, 0.152032, 0.152031, 0.152028, 0.152021",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121484, 0.121482",\
+ "0.152032, 0.152032, 0.152031, 0.152028, 0.152021",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121484, 0.121482",\
+ "0.152032, 0.152032, 0.152031, 0.152028, 0.152021",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121484, 0.121482",\
+ "0.152032, 0.152032, 0.152031, 0.152028, 0.152021",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121485, 0.121485, 0.121485, 0.121484, 0.121482",\
+ "0.152032, 0.152032, 0.152031, 0.152028, 0.152021",\
+ "0.200984, 0.200984, 0.200984, 0.200984, 0.200984",\
+ "0.823612, 0.823612, 0.823612, 0.823612, 0.823612",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.629902, 0.884806, 1.141041, 1.579317, 2.455871",\
+ "0.641263, 0.896167, 1.152402, 1.590678, 2.467230",\
+ "0.660001, 0.914905, 1.171139, 1.609414, 2.485964",\
+ "0.828549, 1.083453, 1.339686, 1.777957, 2.654500",\
+ "1.163359, 1.418263, 1.674496, 2.112767, 2.989310",\
+ "0.717307, 0.972293, 1.228508, 1.666031, 2.541805",\
+ "0.728669, 0.983655, 1.239870, 1.677392, 2.553164",\
+ "0.747406, 1.002393, 1.258607, 1.696128, 2.571898",\
+ "0.915954, 1.170941, 1.427154, 1.864671, 2.740433",\
+ "1.250764, 1.505750, 1.761964, 2.199481, 3.075244",\
+ "0.805651, 1.061112, 1.316469, 1.753652, 2.628760",\
+ "0.817012, 1.072473, 1.327831, 1.765013, 2.640119",\
+ "0.835750, 1.091211, 1.346568, 1.783749, 2.658853",\
+ "1.004298, 1.259759, 1.515115, 1.952292, 2.827389",\
+ "1.339108, 1.594568, 1.849925, 2.287102, 3.162199",\
+ "0.869145, 1.126509, 1.380604, 1.817565, 2.692269",\
+ "0.880507, 1.137871, 1.391965, 1.828925, 2.703628",\
+ "0.899244, 1.156608, 1.410703, 1.847662, 2.722362",\
+ "1.067792, 1.325156, 1.579249, 2.016205, 2.890898",\
+ "1.402602, 1.659966, 1.914059, 2.351015, 3.225708",\
+ "1.204568, 1.488186, 1.732157, 2.166780, 3.037725",\
+ "1.215930, 1.499547, 1.743518, 2.178141, 3.049084",\
+ "1.234668, 1.518285, 1.762256, 2.196877, 3.067818",\
+ "1.403215, 1.686833, 1.930802, 2.365420, 3.236354",\
+ "1.738025, 2.021643, 2.265612, 2.700230, 3.571164");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.068436, 0.068436, 0.068433, 0.068425, 0.068407",\
+ "0.074512, 0.074512, 0.074510, 0.074502, 0.074487",\
+ "0.094928, 0.094928, 0.094926, 0.094919, 0.094904",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025916",\
+ "0.068436, 0.068436, 0.068433, 0.068425, 0.068407",\
+ "0.074512, 0.074512, 0.074510, 0.074502, 0.074487",\
+ "0.094928, 0.094928, 0.094926, 0.094919, 0.094904",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025916",\
+ "0.068436, 0.068436, 0.068433, 0.068425, 0.068407",\
+ "0.074512, 0.074512, 0.074510, 0.074502, 0.074487",\
+ "0.094928, 0.094928, 0.094926, 0.094919, 0.094904",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025916",\
+ "0.068436, 0.068436, 0.068433, 0.068425, 0.068407",\
+ "0.074512, 0.074512, 0.074510, 0.074502, 0.074487",\
+ "0.094928, 0.094928, 0.094926, 0.094919, 0.094904",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025916",\
+ "0.068436, 0.068436, 0.068433, 0.068425, 0.068407",\
+ "0.074512, 0.074512, 0.074510, 0.074502, 0.074487",\
+ "0.094928, 0.094928, 0.094926, 0.094919, 0.094904",\
+ "0.380690, 0.380690, 0.380690, 0.380690, 0.380690",\
+ "1.025917, 1.025917, 1.025917, 1.025917, 1.025916");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2344*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.195231, 0.463005, 0.734474, 1.195010, 2.116083",\
+ "0.209369, 0.477311, 0.748785, 1.209873, 2.132048",\
+ "0.233103, 0.501280, 0.772498, 1.233725, 2.156177",\
+ "0.505445, 0.772942, 1.041862, 1.499718, 2.415430",\
+ "1.101330, 1.368410, 1.636340, 2.092443, 3.004649",\
+ "0.282639, 0.550544, 0.822013, 1.281725, 2.202017",\
+ "0.296777, 0.564849, 0.836326, 1.296587, 2.217982",\
+ "0.320749, 0.588817, 0.860040, 1.320439, 2.242111",\
+ "0.593808, 0.860470, 1.129393, 1.586432, 2.501364",\
+ "1.189691, 1.455935, 1.723865, 2.179157, 3.090583",\
+ "0.371453, 0.639490, 0.909976, 1.369346, 2.288972",\
+ "0.385884, 0.653793, 0.924289, 1.384209, 2.304937",\
+ "0.410095, 0.677755, 0.948003, 1.408060, 2.329066",\
+ "0.683117, 0.949390, 1.217355, 1.674054, 2.588319",\
+ "1.278993, 1.544848, 1.811828, 2.266779, 3.177538",\
+ "0.435127, 0.705073, 0.974115, 1.433259, 2.352481",\
+ "0.449557, 0.719372, 0.988428, 1.448122, 2.368446",\
+ "0.473764, 0.743329, 1.012141, 1.471974, 2.392575",\
+ "0.746751, 1.014935, 1.281493, 1.737967, 2.651828",\
+ "1.342621, 1.610383, 1.875965, 2.330692, 3.241047",\
+ "0.771711, 1.068883, 1.325895, 1.782569, 2.697937",\
+ "0.786132, 1.083144, 1.340213, 1.797434, 2.713902",\
+ "0.810321, 1.107028, 1.363928, 1.821286, 2.738031",\
+ "1.083085, 1.378307, 1.633246, 2.087266, 2.997284",\
+ "1.678917, 1.973635, 2.227701, 2.679984, 3.586503");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.185659, 0.236480, 0.332306, 0.503768, 0.846690",\
+ "0.203762, 0.251201, 0.346416, 0.519962, 0.867054",\
+ "0.237818, 0.275998, 0.366817, 0.542132, 0.892761",\
+ "0.823305, 0.824108, 0.854501, 0.958291, 1.165871",\
+ "2.222180, 2.222247, 2.228687, 2.250859, 2.295203",\
+ "0.185659, 0.236778, 0.332846, 0.503768, 0.846690",\
+ "0.203762, 0.251491, 0.346963, 0.519962, 0.867054",\
+ "0.238090, 0.276257, 0.367369, 0.542132, 0.892761",\
+ "0.823322, 0.824110, 0.854828, 0.958291, 1.165871",\
+ "2.222181, 2.222247, 2.228756, 2.250859, 2.295203",\
+ "0.187582, 0.237448, 0.332856, 0.503768, 0.846690",\
+ "0.205428, 0.252143, 0.346973, 0.519962, 0.867054",\
+ "0.238891, 0.276838, 0.367379, 0.542132, 0.892761",\
+ "0.823369, 0.824113, 0.854835, 0.958291, 1.165871",\
+ "2.222186, 2.222247, 2.228758, 2.250859, 2.295203",\
+ "0.188921, 0.238422, 0.332885, 0.503768, 0.846690",\
+ "0.206588, 0.253091, 0.347002, 0.519962, 0.867054",\
+ "0.239638, 0.277682, 0.367409, 0.542132, 0.892761",\
+ "0.823414, 0.824119, 0.854852, 0.958291, 1.165871",\
+ "2.222191, 2.222247, 2.228761, 2.250859, 2.295203",\
+ "0.197449, 0.249827, 0.334624, 0.504477, 0.846690",\
+ "0.213977, 0.264195, 0.348763, 0.520680, 0.867054",\
+ "0.244398, 0.287568, 0.369187, 0.542857, 0.892761",\
+ "0.823697, 0.824180, 0.855905, 0.958721, 1.165871",\
+ "2.222221, 2.222247, 2.228986, 2.250950, 2.295203");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.199835, 0.394068, 0.663502, 1.119151, 2.030450",\
+ "0.208748, 0.404375, 0.677456, 1.139816, 2.064535",\
+ "0.223610, 0.421071, 0.699454, 1.171923, 2.116862",\
+ "0.380613, 0.582386, 0.880612, 1.405667, 2.455778",\
+ "0.716679, 0.922290, 1.228480, 1.784735, 2.897244",\
+ "0.287243, 0.481603, 0.751025, 1.205865, 2.116384",\
+ "0.296156, 0.491921, 0.765001, 1.226530, 2.150469",\
+ "0.311018, 0.508632, 0.787030, 1.258637, 2.202796",\
+ "0.468021, 0.669977, 0.968355, 1.492382, 2.541712",\
+ "0.804087, 1.009874, 1.316321, 1.871449, 2.983178",\
+ "0.368115, 0.570540, 0.838988, 1.293487, 2.203339",\
+ "0.377029, 0.580882, 0.852964, 1.314152, 2.237424",\
+ "0.391890, 0.597628, 0.874994, 1.346259, 2.289751",\
+ "0.548893, 0.759039, 1.056321, 1.580003, 2.628667",\
+ "0.884959, 1.098920, 1.404289, 1.959070, 3.070133",\
+ "0.425818, 0.636109, 0.903125, 1.357400, 2.266848",\
+ "0.434733, 0.646488, 0.917102, 1.378065, 2.300933",\
+ "0.449593, 0.663284, 0.939134, 1.410172, 2.353260",\
+ "0.606596, 0.824792, 1.120470, 1.643916, 2.692176",\
+ "0.942662, 1.164649, 1.468444, 2.022984, 3.133642",\
+ "0.728861, 0.999767, 1.254856, 1.706689, 2.612304",\
+ "0.737784, 1.010567, 1.268901, 1.727382, 2.646389",\
+ "0.752638, 1.027949, 1.291036, 1.759531, 2.698716",\
+ "0.909639, 1.190589, 1.472905, 1.993493, 3.037632",\
+ "1.245701, 1.530174, 1.821195, 2.372689, 3.479098");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.051713, 0.082206, 0.146667, 0.272496, 0.524154",\
+ "0.059242, 0.084148, 0.146833, 0.273232, 0.526032",\
+ "0.082676, 0.098099, 0.151707, 0.276480, 0.526025",\
+ "0.382075, 0.382564, 0.407345, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042321, 1.092011, 1.191392",\
+ "0.051713, 0.082387, 0.147063, 0.272496, 0.524154",\
+ "0.059242, 0.084316, 0.147231, 0.273232, 0.526032",\
+ "0.082676, 0.098212, 0.152100, 0.276480, 0.526025",\
+ "0.382075, 0.382568, 0.407606, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042477, 1.092011, 1.191392",\
+ "0.051782, 0.082793, 0.147071, 0.272496, 0.524154",\
+ "0.059284, 0.084694, 0.147238, 0.273232, 0.526032",\
+ "0.082697, 0.098465, 0.152108, 0.276480, 0.526025",\
+ "0.382075, 0.382579, 0.407611, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042480, 1.092011, 1.191392",\
+ "0.051916, 0.083384, 0.147092, 0.272496, 0.524154",\
+ "0.059368, 0.085243, 0.147259, 0.273232, 0.526032",\
+ "0.082738, 0.098832, 0.152128, 0.276480, 0.526025",\
+ "0.382075, 0.382594, 0.407625, 0.490228, 0.655996",\
+ "1.027888, 1.027888, 1.042489, 1.092011, 1.191392",\
+ "0.053133, 0.090301, 0.148368, 0.273016, 0.524154",\
+ "0.060124, 0.091679, 0.148542, 0.273755, 0.526032",\
+ "0.083110, 0.103136, 0.153394, 0.276996, 0.526025",\
+ "0.382075, 0.382769, 0.408465, 0.490571, 0.655996",\
+ "1.027888, 1.027888, 1.042993, 1.092217, 1.191392");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2530*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.737863, 1.003362, 1.291646, 1.782380, 2.763848",\
+ "0.751415, 1.016914, 1.305198, 1.795933, 2.777400",\
+ "0.774946, 1.040444, 1.328728, 1.819463, 2.800930",\
+ "1.042319, 1.307818, 1.596103, 2.086838, 3.068308",\
+ "1.636291, 1.901789, 2.190096, 2.680906, 3.662528",\
+ "0.825276, 1.090943, 1.379283, 1.869095, 2.849782",\
+ "0.838828, 1.104495, 1.392835, 1.882647, 2.863334",\
+ "0.862358, 1.128025, 1.416365, 1.906177, 2.886864",\
+ "1.129732, 1.395399, 1.683739, 2.173553, 3.154242",\
+ "1.723704, 1.989370, 2.277732, 2.767621, 3.748461",\
+ "0.906195, 1.180006, 1.467248, 1.956717, 2.936737",\
+ "0.919747, 1.193558, 1.480801, 1.970270, 2.950289",\
+ "0.943277, 1.217088, 1.504331, 1.993800, 2.973819",\
+ "1.210651, 1.484462, 1.771705, 2.261175, 3.241197",\
+ "1.804622, 2.078433, 2.365698, 2.855243, 3.835416",\
+ "0.966681, 1.245760, 1.531392, 2.020631, 3.000246",\
+ "0.980233, 1.259312, 1.544944, 2.034183, 3.013798",\
+ "1.003763, 1.282842, 1.568474, 2.057713, 3.037328",\
+ "1.271137, 1.550216, 1.835848, 2.325089, 3.304706",\
+ "1.865109, 2.144188, 2.429842, 2.919157, 3.898925",\
+ "1.301775, 1.611517, 1.883481, 2.370070, 3.345702",\
+ "1.315328, 1.625069, 1.897033, 2.383622, 3.359254",\
+ "1.338858, 1.648599, 1.920563, 2.407152, 3.382784",\
+ "1.606231, 1.915973, 2.187937, 2.674527, 3.650162",\
+ "2.200203, 2.509944, 2.781931, 3.268596, 4.244381");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.121334, 0.121334, 0.121335, 0.121338, 0.121343",\
+ "0.151694, 0.151694, 0.151693, 0.151692, 0.151690",\
+ "0.201129, 0.201129, 0.201129, 0.201131, 0.201133",\
+ "0.823409, 0.823409, 0.823408, 0.823407, 0.823404",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121338, 0.121343",\
+ "0.151694, 0.151694, 0.151693, 0.151692, 0.151690",\
+ "0.201129, 0.201129, 0.201129, 0.201131, 0.201133",\
+ "0.823409, 0.823409, 0.823408, 0.823407, 0.823404",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121338, 0.121343",\
+ "0.151694, 0.151694, 0.151693, 0.151692, 0.151690",\
+ "0.201129, 0.201129, 0.201129, 0.201131, 0.201133",\
+ "0.823409, 0.823409, 0.823408, 0.823407, 0.823404",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121338, 0.121343",\
+ "0.151694, 0.151694, 0.151693, 0.151692, 0.151690",\
+ "0.201129, 0.201129, 0.201129, 0.201131, 0.201133",\
+ "0.823409, 0.823409, 0.823408, 0.823407, 0.823404",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121338, 0.121343",\
+ "0.151694, 0.151694, 0.151693, 0.151692, 0.151690",\
+ "0.201129, 0.201129, 0.201129, 0.201131, 0.201133",\
+ "0.823409, 0.823409, 0.823408, 0.823407, 0.823404",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.705640, 0.971139, 1.259445, 1.750256, 2.731876",\
+ "0.713583, 0.979081, 1.267388, 1.758198, 2.739818",\
+ "0.727063, 0.992561, 1.280868, 1.771678, 2.753298",\
+ "0.881016, 1.146515, 1.434821, 1.925632, 2.907252",\
+ "1.220917, 1.486415, 1.774721, 2.265532, 3.247153",\
+ "0.793053, 1.058720, 1.347082, 1.836970, 2.817810",\
+ "0.800995, 1.066662, 1.355024, 1.844913, 2.825752",\
+ "0.814475, 1.080142, 1.368504, 1.858393, 2.839232",\
+ "0.968429, 1.234096, 1.522458, 2.012346, 2.993186",\
+ "1.308329, 1.573996, 1.862358, 2.352247, 3.333086",\
+ "0.873972, 1.147783, 1.435048, 1.924593, 2.904765",\
+ "0.881914, 1.155725, 1.442990, 1.932535, 2.912707",\
+ "0.895394, 1.169205, 1.456470, 1.946015, 2.926187",\
+ "1.049348, 1.323159, 1.610423, 2.099968, 3.080141",\
+ "1.389248, 1.663059, 1.950324, 2.439869, 3.420042",\
+ "0.934458, 1.213537, 1.499191, 1.988506, 2.968274",\
+ "0.942401, 1.221480, 1.507133, 1.996449, 2.976216",\
+ "0.955880, 1.234959, 1.520613, 2.009929, 2.989696",\
+ "1.109834, 1.388913, 1.674567, 2.163882, 3.143650",\
+ "1.449734, 1.728813, 2.014467, 2.503783, 3.483551",\
+ "1.269552, 1.579294, 1.851281, 2.337945, 3.313730",\
+ "1.277495, 1.587236, 1.859223, 2.345888, 3.321672",\
+ "1.290975, 1.600716, 1.872703, 2.359368, 3.335152",\
+ "1.444928, 1.754670, 2.026657, 2.513321, 3.489106",\
+ "1.784829, 2.094570, 2.366557, 2.853222, 3.829007");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.061214, 0.061214, 0.061208, 0.061187, 0.061144",\
+ "0.068565, 0.068565, 0.068561, 0.068546, 0.068517",\
+ "0.090394, 0.090394, 0.090392, 0.090386, 0.090375",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061214, 0.061214, 0.061207, 0.061187, 0.061144",\
+ "0.068565, 0.068565, 0.068561, 0.068546, 0.068517",\
+ "0.090394, 0.090394, 0.090392, 0.090386, 0.090375",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061214, 0.061214, 0.061207, 0.061187, 0.061144",\
+ "0.068565, 0.068565, 0.068561, 0.068546, 0.068517",\
+ "0.090394, 0.090394, 0.090392, 0.090386, 0.090375",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061214, 0.061214, 0.061207, 0.061187, 0.061144",\
+ "0.068565, 0.068565, 0.068561, 0.068546, 0.068517",\
+ "0.090394, 0.090394, 0.090392, 0.090386, 0.090375",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061214, 0.061214, 0.061207, 0.061186, 0.061144",\
+ "0.068565, 0.068565, 0.068561, 0.068546, 0.068517",\
+ "0.090394, 0.090394, 0.090392, 0.090386, 0.090375",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2668*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.109772, 0.369798, 0.626503, 1.061758, 1.932266",\
+ "0.120352, 0.381519, 0.640958, 1.080478, 1.959519",\
+ "0.143356, 0.404296, 0.665874, 1.109884, 1.997905",\
+ "0.467994, 0.696012, 0.968260, 1.421863, 2.329069",\
+ "1.081974, 1.301531, 1.593583, 2.086339, 3.071851",\
+ "0.198042, 0.457293, 0.713962, 1.148472, 2.018200",\
+ "0.208624, 0.469024, 0.728430, 1.167192, 2.045453",\
+ "0.231607, 0.491807, 0.753360, 1.196598, 2.083839",\
+ "0.555400, 0.783574, 1.055776, 1.508577, 2.415003",\
+ "1.169380, 1.389148, 1.681223, 2.173053, 3.157785",\
+ "0.287235, 0.546131, 0.801923, 1.236093, 2.105155",\
+ "0.297824, 0.557883, 0.816391, 1.254813, 2.132408",\
+ "0.320747, 0.580678, 0.841322, 1.284219, 2.170794",\
+ "0.636219, 0.872561, 1.143739, 1.596198, 2.501958",\
+ "1.250216, 1.478256, 1.769187, 2.260674, 3.244740",\
+ "0.350832, 0.611557, 0.866057, 1.300006, 2.168664",\
+ "0.361428, 0.623341, 0.880526, 1.318726, 2.195917",\
+ "0.384293, 0.646153, 0.905457, 1.348132, 2.234303",\
+ "0.693839, 0.938203, 1.207876, 1.660111, 2.565467",\
+ "1.307871, 1.544076, 1.833331, 2.324587, 3.308249",\
+ "0.686914, 0.973559, 1.217580, 1.649209, 2.514120",\
+ "0.697552, 0.985713, 1.232092, 1.667947, 2.541373",\
+ "0.720052, 1.008731, 1.257069, 1.697372, 2.579759",\
+ "1.005905, 1.302737, 1.559584, 2.009390, 2.910923",\
+ "1.610583, 1.910693, 2.185437, 2.674028, 3.653705");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.074635, 0.092924, 0.146295, 0.240037, 0.427522",\
+ "0.102546, 0.120314, 0.177030, 0.284760, 0.500219",\
+ "0.161902, 0.174975, 0.229446, 0.352350, 0.598157",\
+ "0.823637, 0.823637, 0.866693, 1.014155, 1.309078",\
+ "2.221941, 2.221941, 2.244858, 2.323347, 2.480325",\
+ "0.074635, 0.093094, 0.146590, 0.240037, 0.427522",\
+ "0.102546, 0.120480, 0.177368, 0.284760, 0.500219",\
+ "0.161902, 0.175097, 0.229832, 0.352350, 0.598157",\
+ "0.823637, 0.823637, 0.867157, 1.014155, 1.309078",\
+ "2.221941, 2.221941, 2.245105, 2.323347, 2.480325",\
+ "0.074635, 0.093474, 0.146595, 0.240037, 0.427522",\
+ "0.102546, 0.120849, 0.177375, 0.284760, 0.500219",\
+ "0.161902, 0.175368, 0.229839, 0.352350, 0.598157",\
+ "0.823637, 0.823637, 0.867165, 1.014155, 1.309078",\
+ "2.221941, 2.221941, 2.245110, 2.323347, 2.480325",\
+ "0.074635, 0.094026, 0.146611, 0.240037, 0.427522",\
+ "0.102546, 0.121384, 0.177393, 0.284760, 0.500219",\
+ "0.161902, 0.175763, 0.229860, 0.352350, 0.598157",\
+ "0.823637, 0.823637, 0.867190, 1.014155, 1.309078",\
+ "2.221941, 2.221941, 2.245123, 2.323347, 2.480325",\
+ "0.074635, 0.100491, 0.147562, 0.240424, 0.427522",\
+ "0.102546, 0.127666, 0.178485, 0.285204, 0.500219",\
+ "0.161902, 0.180384, 0.231107, 0.352857, 0.598157",\
+ "0.823637, 0.823637, 0.868686, 1.014764, 1.309078",\
+ "2.221941, 2.221941, 2.245919, 2.323671, 2.480325");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.141728, 0.322683, 0.508414, 0.851578, 1.569056",\
+ "0.147760, 0.329649, 0.526344, 0.903425, 1.657587",\
+ "0.158195, 0.340967, 0.571363, 0.971528, 1.771856",\
+ "0.298823, 0.523674, 0.808829, 1.303379, 2.292479",\
+ "0.636132, 0.863255, 1.152943, 1.685611, 2.750947",\
+ "0.229134, 0.410071, 0.595881, 0.938291, 1.654990",\
+ "0.235166, 0.417039, 0.613620, 0.990139, 1.743521",\
+ "0.245601, 0.428357, 0.658712, 1.058241, 1.857790",\
+ "0.386229, 0.611242, 0.896475, 1.390093, 2.378412",\
+ "0.723538, 0.950780, 1.240708, 1.772325, 2.836881",\
+ "0.309995, 0.490402, 0.675907, 1.025913, 1.741945",\
+ "0.316032, 0.497370, 0.701577, 1.077760, 1.830476",\
+ "0.326472, 0.511248, 0.746671, 1.145863, 1.944745",\
+ "0.467101, 0.700242, 0.984439, 1.477714, 2.465368",\
+ "0.804387, 1.039684, 1.328675, 1.859946, 2.923836",\
+ "0.367698, 0.547951, 0.733450, 1.089826, 1.805454",\
+ "0.373747, 0.554919, 0.765701, 1.141673, 1.893985",\
+ "0.384198, 0.576458, 0.810799, 1.209776, 2.008254",\
+ "0.524826, 0.765905, 1.048583, 1.541627, 2.528877",\
+ "0.862067, 1.105206, 1.392825, 1.923859, 2.987345",\
+ "0.670854, 0.880709, 1.082881, 1.438713, 2.150910",\
+ "0.677008, 0.904085, 1.116634, 1.490636, 2.239441",\
+ "0.687558, 0.935916, 1.161966, 1.558834, 2.353710",\
+ "0.834408, 1.130676, 1.400707, 1.891076, 2.874332",\
+ "1.178988, 1.468337, 1.745336, 2.273465, 3.332801");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.063168, 0.063168, 0.086452, 0.196369, 0.354186",\
+ "0.068741, 0.068741, 0.139232, 0.228666, 0.407534",\
+ "0.084603, 0.084603, 0.171201, 0.272810, 0.476028",\
+ "0.381099, 0.384063, 0.433028, 0.586290, 0.892815",\
+ "1.028844, 1.028844, 1.069845, 1.210271, 1.491123",\
+ "0.063168, 0.063168, 0.086512, 0.196369, 0.354186",\
+ "0.068741, 0.068741, 0.139513, 0.228666, 0.407534",\
+ "0.084603, 0.084603, 0.171521, 0.272810, 0.476028",\
+ "0.381099, 0.384091, 0.433510, 0.586290, 0.892815",\
+ "1.028844, 1.028844, 1.070287, 1.210271, 1.491123",\
+ "0.063168, 0.063168, 0.086512, 0.196369, 0.354186",\
+ "0.068741, 0.068741, 0.139518, 0.228666, 0.407534",\
+ "0.084603, 0.108819, 0.171527, 0.272810, 0.476028",\
+ "0.381099, 0.384153, 0.433519, 0.586290, 0.892815",\
+ "1.028844, 1.028844, 1.070295, 1.210271, 1.491123",\
+ "0.063168, 0.063168, 0.086512, 0.196369, 0.354186",\
+ "0.068741, 0.068741, 0.139534, 0.228666, 0.407534",\
+ "0.084603, 0.109528, 0.171544, 0.272810, 0.476028",\
+ "0.381099, 0.384242, 0.433545, 0.586290, 0.892815",\
+ "1.028844, 1.028844, 1.070319, 1.210271, 1.491123",\
+ "0.063168, 0.081414, 0.118527, 0.196695, 0.354186",\
+ "0.068741, 0.094649, 0.140441, 0.229035, 0.407534",\
+ "0.084603, 0.117839, 0.172574, 0.273230, 0.476028",\
+ "0.381099, 0.385290, 0.435099, 0.586923, 0.892815",\
+ "1.028844, 1.028844, 1.071743, 1.210851, 1.491123");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2709*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.715344, 0.975445, 1.253880, 1.716396, 2.641427",\
+ "0.728896, 0.988997, 1.267432, 1.729948, 2.654979",\
+ "0.752427, 1.012527, 1.290962, 1.753478, 2.678509",\
+ "1.019800, 1.279901, 1.558336, 2.020853, 2.945885",\
+ "1.613771, 1.873872, 2.152319, 2.614874, 3.539985",\
+ "0.802750, 1.063030, 1.341425, 1.803109, 2.727360",\
+ "0.816303, 1.076582, 1.354977, 1.816662, 2.740913",\
+ "0.839833, 1.100112, 1.378507, 1.840192, 2.764443",\
+ "1.107206, 1.367486, 1.645881, 2.107566, 3.031819",\
+ "1.701178, 1.961458, 2.239864, 2.701588, 3.625918",\
+ "0.883600, 1.152069, 1.429387, 1.890731, 2.814316",\
+ "0.897153, 1.165621, 1.442940, 1.904283, 2.827868",\
+ "0.920683, 1.189151, 1.466470, 1.927813, 2.851398",\
+ "1.188056, 1.456525, 1.733844, 2.195188, 3.118774",\
+ "1.782027, 2.050497, 2.327826, 2.789209, 3.712873",\
+ "0.945225, 1.217787, 1.493526, 1.954644, 2.877825",\
+ "0.958777, 1.231339, 1.507078, 1.968196, 2.891377",\
+ "0.982307, 1.254869, 1.530608, 1.991726, 2.914907",\
+ "1.249681, 1.522243, 1.797982, 2.259101, 3.182283",\
+ "1.843652, 2.116215, 2.391965, 2.853122, 3.776382",\
+ "1.282097, 1.583212, 1.845325, 2.303960, 3.223280",\
+ "1.295649, 1.596764, 1.858877, 2.317512, 3.236833",\
+ "1.319179, 1.620294, 1.882407, 2.341042, 3.260363",\
+ "1.586553, 1.887668, 2.149781, 2.608417, 3.527739",\
+ "2.180524, 2.481639, 2.743765, 3.202439, 4.121839");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.121334, 0.121334, 0.121335, 0.121336, 0.121339",\
+ "0.151694, 0.151694, 0.151694, 0.151693, 0.151692",\
+ "0.201129, 0.201129, 0.201129, 0.201130, 0.201131",\
+ "0.823409, 0.823409, 0.823409, 0.823408, 0.823406",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121336, 0.121339",\
+ "0.151694, 0.151694, 0.151694, 0.151693, 0.151692",\
+ "0.201129, 0.201129, 0.201129, 0.201130, 0.201131",\
+ "0.823409, 0.823409, 0.823409, 0.823408, 0.823406",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121336, 0.121339",\
+ "0.151694, 0.151694, 0.151694, 0.151693, 0.151692",\
+ "0.201129, 0.201129, 0.201129, 0.201130, 0.201131",\
+ "0.823409, 0.823409, 0.823409, 0.823408, 0.823406",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121336, 0.121339",\
+ "0.151694, 0.151694, 0.151694, 0.151693, 0.151692",\
+ "0.201129, 0.201129, 0.201129, 0.201130, 0.201131",\
+ "0.823409, 0.823409, 0.823409, 0.823408, 0.823406",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134",\
+ "0.121334, 0.121334, 0.121335, 0.121336, 0.121339",\
+ "0.151694, 0.151694, 0.151694, 0.151693, 0.151692",\
+ "0.201129, 0.201129, 0.201129, 0.201130, 0.201131",\
+ "0.823409, 0.823409, 0.823409, 0.823408, 0.823406",\
+ "2.222134, 2.222134, 2.222134, 2.222134, 2.222134");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.683121, 0.943222, 1.221668, 1.684223, 2.609334",\
+ "0.691063, 0.951164, 1.229611, 1.692166, 2.617276",\
+ "0.704543, 0.964644, 1.243091, 1.705646, 2.630756",\
+ "0.858497, 1.118598, 1.397044, 1.859599, 2.784709",\
+ "1.198397, 1.458498, 1.736945, 2.199500, 3.124610",\
+ "0.770527, 1.030807, 1.309213, 1.770937, 2.695267",\
+ "0.778469, 1.038749, 1.317156, 1.778880, 2.703210",\
+ "0.791949, 1.052229, 1.330636, 1.792360, 2.716690",\
+ "0.945903, 1.206183, 1.484589, 1.946313, 2.870643",\
+ "1.285803, 1.546083, 1.824489, 2.286213, 3.210544",\
+ "0.851377, 1.119846, 1.397176, 1.858559, 2.782223",\
+ "0.859320, 1.127788, 1.405118, 1.866501, 2.790165",\
+ "0.872799, 1.141268, 1.418598, 1.879981, 2.803645",\
+ "1.026753, 1.295222, 1.572552, 2.033935, 2.957598",\
+ "1.366653, 1.635122, 1.912452, 2.373835, 3.297499",\
+ "0.913002, 1.185564, 1.461314, 1.922472, 2.845731",\
+ "0.920944, 1.193506, 1.469257, 1.930414, 2.853674",\
+ "0.934424, 1.206986, 1.482737, 1.943894, 2.867154",\
+ "1.088378, 1.360940, 1.636690, 2.097847, 3.021107",\
+ "1.428278, 1.700840, 1.976590, 2.437748, 3.361008",\
+ "1.249874, 1.550989, 1.813114, 2.271788, 3.191187",\
+ "1.257816, 1.558931, 1.821056, 2.279730, 3.199130",\
+ "1.271296, 1.572411, 1.834536, 2.293210, 3.212610",\
+ "1.425250, 1.726365, 1.988490, 2.447164, 3.366563",\
+ "1.765150, 2.066265, 2.328390, 2.787064, 3.706464");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.061213, 0.061213, 0.061210, 0.061198, 0.061174",\
+ "0.068565, 0.068565, 0.068562, 0.068554, 0.068538",\
+ "0.090394, 0.090394, 0.090393, 0.090389, 0.090383",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061213, 0.061213, 0.061210, 0.061198, 0.061174",\
+ "0.068565, 0.068565, 0.068562, 0.068554, 0.068538",\
+ "0.090394, 0.090394, 0.090393, 0.090389, 0.090383",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061213, 0.061213, 0.061210, 0.061198, 0.061174",\
+ "0.068565, 0.068565, 0.068562, 0.068554, 0.068538",\
+ "0.090394, 0.090394, 0.090393, 0.090389, 0.090383",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061213, 0.061213, 0.061210, 0.061198, 0.061174",\
+ "0.068565, 0.068565, 0.068562, 0.068554, 0.068538",\
+ "0.090394, 0.090394, 0.090393, 0.090389, 0.090383",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894",\
+ "0.061213, 0.061213, 0.061210, 0.061198, 0.061174",\
+ "0.068565, 0.068565, 0.068562, 0.068554, 0.068538",\
+ "0.090394, 0.090394, 0.090393, 0.090389, 0.090383",\
+ "0.380686, 0.380686, 0.380686, 0.380686, 0.380686",\
+ "1.025894, 1.025894, 1.025894, 1.025894, 1.025894");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_2681*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.385362, 0.574573, 0.765319, 1.061205, 1.627908",\
+ "0.404628, 0.593839, 0.784585, 1.080471, 1.647174",\
+ "0.436306, 0.625517, 0.816263, 1.112149, 1.678852",\
+ "0.725958, 0.915169, 1.105914, 1.401800, 1.968502",\
+ "1.319903, 1.509114, 1.699858, 1.995744, 2.562446",\
+ "0.473615, 0.661891, 0.852600, 1.148510, 1.715261",\
+ "0.492881, 0.681157, 0.871866, 1.167776, 1.734527",\
+ "0.524560, 0.712836, 0.903544, 1.199454, 1.766205",\
+ "0.814212, 1.002488, 1.193195, 1.489105, 2.055855",\
+ "1.408156, 1.596432, 1.787139, 2.083049, 2.649799",\
+ "0.562261, 0.742226, 0.932626, 1.228538, 1.795292",\
+ "0.581527, 0.761492, 0.951893, 1.247805, 1.814559",\
+ "0.613206, 0.793171, 0.983571, 1.279483, 1.846237",\
+ "0.902858, 1.082823, 1.273222, 1.569133, 2.135887",\
+ "1.496802, 1.676767, 1.867166, 2.163077, 2.729831",\
+ "0.620370, 0.800057, 0.990350, 1.285975, 1.852322",\
+ "0.639636, 0.819323, 1.009616, 1.305241, 1.871588",\
+ "0.671315, 0.851002, 1.041294, 1.336920, 1.903266",\
+ "0.960967, 1.140654, 1.330945, 1.626570, 2.192916",\
+ "1.554911, 1.734598, 1.924889, 2.220514, 2.786860",\
+ "0.922623, 1.105385, 1.294011, 1.589153, 2.154560",\
+ "0.941889, 1.124651, 1.313277, 1.608420, 2.173826",\
+ "0.973567, 1.156330, 1.344955, 1.640098, 2.205504",\
+ "1.263219, 1.445982, 1.634606, 1.929748, 2.495154",\
+ "1.857164, 2.039926, 2.228550, 2.523692, 3.089098");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.107385, 0.107385, 0.107386, 0.107387, 0.107387",\
+ "0.140617, 0.140617, 0.140617, 0.140618, 0.140619",\
+ "0.189797, 0.189797, 0.189797, 0.189797, 0.189798",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195570, 2.195569, 2.195569, 2.195568",\
+ "0.107385, 0.107385, 0.107386, 0.107387, 0.107387",\
+ "0.140617, 0.140617, 0.140617, 0.140618, 0.140619",\
+ "0.189797, 0.189797, 0.189797, 0.189797, 0.189798",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195570, 2.195569, 2.195569, 2.195568",\
+ "0.107385, 0.107385, 0.107386, 0.107387, 0.107387",\
+ "0.140617, 0.140617, 0.140617, 0.140618, 0.140619",\
+ "0.189797, 0.189797, 0.189797, 0.189797, 0.189798",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195570, 2.195569, 2.195569, 2.195568",\
+ "0.107385, 0.107385, 0.107386, 0.107387, 0.107387",\
+ "0.140617, 0.140617, 0.140617, 0.140618, 0.140619",\
+ "0.189797, 0.189797, 0.189797, 0.189797, 0.189798",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195570, 2.195569, 2.195569, 2.195568",\
+ "0.107385, 0.107385, 0.107386, 0.107387, 0.107387",\
+ "0.140617, 0.140617, 0.140617, 0.140618, 0.140619",\
+ "0.189797, 0.189797, 0.189797, 0.189797, 0.189798",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195570, 2.195569, 2.195569, 2.195568");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.395642, 0.585187, 0.775931, 1.071620, 1.637841",\
+ "0.403773, 0.592984, 0.783728, 1.079613, 1.646315",\
+ "0.417192, 0.606403, 0.797147, 1.093032, 1.659734",\
+ "0.569868, 0.759079, 0.949823, 1.245708, 1.812411",\
+ "0.903831, 1.093042, 1.283787, 1.579672, 2.146375",\
+ "0.483904, 0.672505, 0.863212, 1.158925, 1.725194",\
+ "0.492026, 0.680302, 0.871009, 1.166918, 1.733668",\
+ "0.505446, 0.693722, 0.884428, 1.180337, 1.747088",\
+ "0.658121, 0.846397, 1.037104, 1.333013, 1.899764",\
+ "0.992085, 1.180361, 1.371068, 1.666977, 2.233728",\
+ "0.572576, 0.752841, 0.943239, 1.238954, 1.805226",\
+ "0.580672, 0.760637, 0.951036, 1.246946, 1.813700",\
+ "0.594092, 0.774057, 0.964455, 1.260366, 1.827119",\
+ "0.746767, 0.926732, 1.117131, 1.413042, 1.979796",\
+ "1.080731, 1.260696, 1.451095, 1.747006, 2.313760",\
+ "0.630984, 0.810671, 1.000962, 1.296390, 1.862254",\
+ "0.638781, 0.818468, 1.008759, 1.304383, 1.870729",\
+ "0.652200, 0.831887, 1.022178, 1.317803, 1.884149",\
+ "0.804876, 0.984563, 1.174854, 1.470479, 2.036825",\
+ "1.138840, 1.318527, 1.508818, 1.804443, 2.370789",\
+ "0.933237, 1.115999, 1.304623, 1.599568, 2.164490",\
+ "0.941034, 1.123796, 1.312420, 1.607561, 2.172967",\
+ "0.954453, 1.137215, 1.325839, 1.620981, 2.186387",\
+ "1.107129, 1.289891, 1.478515, 1.773657, 2.339063",\
+ "1.441092, 1.623855, 1.812479, 2.107621, 2.673027");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055580, 0.055580, 0.055580, 0.055580, 0.055580",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055580, 0.055580, 0.055580, 0.055580, 0.055580",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055580, 0.055580, 0.055580, 0.055580, 0.055580",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055580, 0.055580, 0.055580, 0.055580, 0.055580",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055580, 0.055580, 0.055580, 0.055580, 0.055580",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2495*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.535388, 0.757178, 0.935245, 1.224116, 1.784806",\
+ "0.554760, 0.776550, 0.954617, 1.243488, 1.804178",\
+ "0.586214, 0.808003, 0.986070, 1.274942, 1.835631",\
+ "0.875148, 1.096938, 1.275005, 1.563877, 2.124566",\
+ "1.469041, 1.690830, 1.868897, 2.157769, 2.718458",\
+ "0.623792, 0.844496, 1.022526, 1.311421, 1.872159",\
+ "0.643164, 0.863868, 1.041898, 1.330793, 1.891531",\
+ "0.674618, 0.895322, 1.073351, 1.362247, 1.922985",\
+ "0.963552, 1.184257, 1.362286, 1.651182, 2.211919",\
+ "1.557444, 1.778149, 1.956178, 2.245074, 2.805811",\
+ "0.712864, 0.924832, 1.102553, 1.391450, 1.952191",\
+ "0.732236, 0.944203, 1.121924, 1.410822, 1.971563",\
+ "0.763690, 0.975657, 1.153378, 1.442276, 2.003016",\
+ "1.052624, 1.264592, 1.442313, 1.731210, 2.291951",\
+ "1.646516, 1.858484, 2.036205, 2.325102, 2.885843",\
+ "0.776122, 0.982654, 1.160246, 1.448879, 2.009206",\
+ "0.795494, 1.002026, 1.179617, 1.468251, 2.028577",\
+ "0.826948, 1.033479, 1.211071, 1.499705, 2.060031",\
+ "1.115882, 1.322414, 1.500006, 1.788640, 2.348966",\
+ "1.709774, 1.916306, 2.093898, 2.382532, 2.942858",\
+ "1.107140, 1.287923, 1.463902, 1.752051, 2.311426",\
+ "1.126512, 1.307295, 1.483274, 1.771423, 2.330798",\
+ "1.157965, 1.338748, 1.514728, 1.802877, 2.362252",\
+ "1.446900, 1.627683, 1.803662, 2.091812, 2.651186",\
+ "2.040792, 2.221575, 2.397554, 2.685704, 3.245078");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.544632, 0.766422, 0.944489, 1.233360, 1.794050",\
+ "0.552443, 0.774232, 0.952299, 1.241171, 1.801860",\
+ "0.565862, 0.787651, 0.965718, 1.254590, 1.815279",\
+ "0.718832, 0.940622, 1.118689, 1.407560, 1.968250",\
+ "1.052901, 1.274690, 1.452757, 1.741629, 2.302318",\
+ "0.633036, 0.853740, 1.031770, 1.320665, 1.881403",\
+ "0.640847, 0.861551, 1.039580, 1.328476, 1.889213",\
+ "0.654266, 0.874970, 1.052999, 1.341895, 1.902633",\
+ "0.807236, 1.027940, 1.205970, 1.494865, 2.055603",\
+ "1.141305, 1.362009, 1.540038, 1.828934, 2.389672",\
+ "0.722108, 0.934075, 1.111796, 1.400694, 1.961435",\
+ "0.729918, 0.941886, 1.119607, 1.408504, 1.969245",\
+ "0.743338, 0.955305, 1.133026, 1.421923, 1.982664",\
+ "0.896308, 1.108276, 1.285997, 1.574894, 2.135635",\
+ "1.230376, 1.442344, 1.620065, 1.908962, 2.469703",\
+ "0.785366, 0.991898, 1.169490, 1.458123, 2.018450",\
+ "0.793177, 0.999708, 1.177300, 1.465934, 2.026260",\
+ "0.806596, 1.013127, 1.190719, 1.479353, 2.039679",\
+ "0.959566, 1.166098, 1.343690, 1.632324, 2.192650",\
+ "1.293635, 1.500166, 1.677758, 1.966392, 2.526718",\
+ "1.116384, 1.297167, 1.473146, 1.761295, 2.320670",\
+ "1.124194, 1.304977, 1.480956, 1.769106, 2.328480",\
+ "1.137613, 1.318397, 1.494376, 1.782525, 2.341900",\
+ "1.290584, 1.471367, 1.647346, 1.935495, 2.494870",\
+ "1.624652, 1.805435, 1.981414, 2.269564, 2.828938");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.046250, 0.046250, 0.046250, 0.046250, 0.046250",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046250, 0.046250, 0.046250, 0.046250, 0.046250",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046250, 0.046250, 0.046250, 0.046250, 0.046250",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046250, 0.046250, 0.046250, 0.046250, 0.046250",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046250, 0.046250, 0.046250, 0.046250, 0.046250",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2650*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.511815, 0.739156, 0.923211, 1.217666, 1.786831",\
+ "0.531187, 0.758528, 0.942583, 1.237038, 1.806203",\
+ "0.562641, 0.789981, 0.974037, 1.268491, 1.837657",\
+ "0.851575, 1.078916, 1.262971, 1.557426, 2.126591",\
+ "1.445467, 1.672808, 1.856863, 2.151318, 2.720483",\
+ "0.600144, 0.826474, 1.010492, 1.304971, 1.874184",\
+ "0.619516, 0.845846, 1.029864, 1.324343, 1.893556",\
+ "0.650970, 0.877300, 1.061317, 1.355796, 1.925010",\
+ "0.939904, 1.166234, 1.350252, 1.644731, 2.213945",\
+ "1.533796, 1.760126, 1.944144, 2.238623, 2.807837",\
+ "0.689248, 0.906807, 1.090519, 1.384999, 1.954216",\
+ "0.708620, 0.926179, 1.109891, 1.404371, 1.973588",\
+ "0.740074, 0.957633, 1.141344, 1.435825, 2.005042",\
+ "1.029009, 1.246567, 1.430279, 1.724759, 2.293976",\
+ "1.622900, 1.840459, 2.024171, 2.318651, 2.887868",\
+ "0.752647, 0.964632, 1.148227, 1.442439, 2.011252",\
+ "0.772019, 0.984004, 1.167598, 1.461811, 2.030624",\
+ "0.803473, 1.015458, 1.199052, 1.493265, 2.062078",\
+ "1.092407, 1.304392, 1.487987, 1.782200, 2.351013",\
+ "1.686299, 1.898284, 2.081879, 2.376091, 2.944905",\
+ "1.087484, 1.269911, 1.451885, 1.745620, 2.313499",\
+ "1.106856, 1.289283, 1.471256, 1.764992, 2.332871",\
+ "1.138310, 1.320737, 1.502710, 1.796445, 2.364325",\
+ "1.427244, 1.609671, 1.791645, 2.085380, 2.653259",\
+ "2.021136, 2.203563, 2.385537, 2.679272, 3.247151");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.521059, 0.748400, 0.932455, 1.226910, 1.796075",\
+ "0.528870, 0.756210, 0.940265, 1.234720, 1.803885",\
+ "0.542289, 0.769629, 0.953685, 1.248139, 1.817305",\
+ "0.695259, 0.922600, 1.106655, 1.401110, 1.970275",\
+ "1.029328, 1.256668, 1.440723, 1.735178, 2.304343",\
+ "0.609388, 0.835718, 1.019736, 1.314215, 1.883428",\
+ "0.617199, 0.843528, 1.027546, 1.322025, 1.891239",\
+ "0.630618, 0.856948, 1.040965, 1.335444, 1.904658",\
+ "0.783588, 1.009918, 1.193936, 1.488415, 2.057629",\
+ "1.117657, 1.343987, 1.528004, 1.822483, 2.391697",\
+ "0.698492, 0.916051, 1.099763, 1.394243, 1.963460",\
+ "0.706303, 0.923862, 1.107573, 1.402054, 1.971270",\
+ "0.719722, 0.937281, 1.120992, 1.415473, 1.984690",\
+ "0.872692, 1.090251, 1.273963, 1.568443, 2.137660",\
+ "1.206761, 1.424320, 1.608031, 1.902512, 2.471728",\
+ "0.761891, 0.973876, 1.157471, 1.451683, 2.020496",\
+ "0.769701, 0.981686, 1.165281, 1.459494, 2.028307",\
+ "0.783120, 0.995106, 1.178700, 1.472913, 2.041726",\
+ "0.936091, 1.148076, 1.331671, 1.625883, 2.194696",\
+ "1.270159, 1.482144, 1.665739, 1.959952, 2.528765",\
+ "1.096728, 1.279155, 1.461128, 1.754864, 2.322743",\
+ "1.104538, 1.286965, 1.468939, 1.762674, 2.330553",\
+ "1.117958, 1.300385, 1.482358, 1.776093, 2.343972",\
+ "1.270928, 1.453355, 1.635329, 1.929064, 2.496943",\
+ "1.604996, 1.787423, 1.969397, 2.263132, 2.831011");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2744*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.459602, 0.694897, 0.884768, 1.189946, 1.780432",\
+ "0.478889, 0.714184, 0.904055, 1.209233, 1.799719",\
+ "0.510523, 0.745818, 0.935689, 1.240867, 1.831353",\
+ "0.800033, 1.035329, 1.225199, 1.530377, 2.120863",\
+ "1.393967, 1.629262, 1.819133, 2.124311, 2.714797",\
+ "0.548080, 0.782215, 0.972049, 1.277251, 1.867785",\
+ "0.567367, 0.801502, 0.991336, 1.296538, 1.887073",\
+ "0.599001, 0.833136, 1.022970, 1.328172, 1.918707",\
+ "0.888512, 1.122647, 1.312480, 1.617682, 2.208217",\
+ "1.482446, 1.716581, 1.906414, 2.211616, 2.802151",\
+ "0.637650, 0.862548, 1.052076, 1.357279, 1.947817",\
+ "0.656937, 0.881835, 1.071363, 1.376566, 1.967104",\
+ "0.688571, 0.913469, 1.102997, 1.408201, 1.998738",\
+ "0.978081, 1.202980, 1.392507, 1.697711, 2.288249",\
+ "1.572015, 1.796914, 1.986441, 2.291645, 2.882183",\
+ "0.701494, 0.920383, 1.109797, 1.414745, 2.004905",\
+ "0.720781, 0.939670, 1.129084, 1.434032, 2.024192",\
+ "0.752415, 0.971304, 1.160718, 1.465667, 2.055826",\
+ "1.041925, 1.260814, 1.450228, 1.755177, 2.345336",\
+ "1.635859, 1.854748, 2.044163, 2.349111, 2.939270",\
+ "1.039162, 1.225730, 1.413457, 1.717948, 2.307214",\
+ "1.058449, 1.245017, 1.432744, 1.737235, 2.326501",\
+ "1.090083, 1.276651, 1.464378, 1.768869, 2.358135",\
+ "1.379594, 1.566161, 1.753889, 2.058379, 2.647645",\
+ "1.973528, 2.160095, 2.347823, 2.652313, 3.241579");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.469945, 0.705240, 0.895111, 1.200289, 1.790776",\
+ "0.477744, 0.713040, 0.902911, 1.208089, 1.798575",\
+ "0.491164, 0.726459, 0.916330, 1.221508, 1.811994",\
+ "0.643898, 0.879193, 1.069064, 1.374242, 1.964728",\
+ "0.977882, 1.213178, 1.403048, 1.708226, 2.298713",\
+ "0.558424, 0.792559, 0.982392, 1.287594, 1.878129",\
+ "0.566223, 0.800358, 0.990192, 1.295394, 1.885928",\
+ "0.579643, 0.813778, 1.003611, 1.308813, 1.899348",\
+ "0.732376, 0.966511, 1.156345, 1.461547, 2.052081",\
+ "1.066361, 1.300496, 1.490329, 1.795531, 2.386066",\
+ "0.647993, 0.872891, 1.062419, 1.367623, 1.958161",\
+ "0.655793, 0.880691, 1.070219, 1.375422, 1.965960",\
+ "0.669212, 0.894110, 1.083638, 1.388842, 1.979379",\
+ "0.821946, 1.046844, 1.236372, 1.541575, 2.132113",\
+ "1.155930, 1.380829, 1.570356, 1.875560, 2.466098",\
+ "0.711837, 0.930726, 1.120141, 1.425089, 2.015248",\
+ "0.719636, 0.938526, 1.127940, 1.432888, 2.023048",\
+ "0.733056, 0.951945, 1.141359, 1.446308, 2.036467",\
+ "0.885790, 1.104679, 1.294093, 1.599041, 2.189201",\
+ "1.219774, 1.438663, 1.628078, 1.933026, 2.523185",\
+ "1.049506, 1.236073, 1.423800, 1.728291, 2.317557",\
+ "1.057305, 1.243873, 1.431600, 1.736091, 2.325356",\
+ "1.070724, 1.257292, 1.445019, 1.749510, 2.338776",\
+ "1.223458, 1.410026, 1.597753, 1.902244, 2.491510",\
+ "1.557443, 1.744010, 1.931738, 2.236228, 2.825494");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[25]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.443166, 0.674145, 0.859025, 1.158118, 1.738072",\
+ "0.462453, 0.693432, 0.878312, 1.177405, 1.757359",\
+ "0.494087, 0.725066, 0.909946, 1.209039, 1.788993",\
+ "0.783598, 1.014576, 1.199456, 1.498549, 2.078503",\
+ "1.377531, 1.608510, 1.793390, 2.092483, 2.672437",\
+ "0.531545, 0.761463, 0.946306, 1.245423, 1.825425",\
+ "0.550832, 0.780750, 0.965593, 1.264710, 1.844712",\
+ "0.582466, 0.812384, 0.997227, 1.296344, 1.876346",\
+ "0.871976, 1.101894, 1.286737, 1.585854, 2.165856",\
+ "1.465910, 1.695828, 1.880671, 2.179788, 2.759790",\
+ "0.621124, 0.841793, 1.026333, 1.325452, 1.905457",\
+ "0.640411, 0.861080, 1.045620, 1.344739, 1.924744",\
+ "0.672045, 0.892714, 1.077254, 1.376373, 1.956378",\
+ "0.961555, 1.182224, 1.366764, 1.665883, 2.245888",\
+ "1.555489, 1.776158, 1.960698, 2.259817, 2.839822",\
+ "0.685109, 0.899623, 1.084043, 1.382905, 1.962520",\
+ "0.704396, 0.918910, 1.103330, 1.402192, 1.981807",\
+ "0.736030, 0.950545, 1.134964, 1.433826, 2.013442",\
+ "1.025540, 1.240054, 1.424474, 1.723336, 2.302952",\
+ "1.619474, 1.833988, 2.018408, 2.317270, 2.896885",\
+ "1.023662, 1.204930, 1.387700, 1.686096, 2.264800",\
+ "1.042949, 1.224217, 1.406987, 1.705384, 2.284087",\
+ "1.074583, 1.255852, 1.438621, 1.737018, 2.315721",\
+ "1.364093, 1.545362, 1.728131, 2.026528, 2.605231",\
+ "1.958027, 2.139296, 2.322065, 2.620461, 3.199165");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.453509, 0.684488, 0.869368, 1.168461, 1.748415",\
+ "0.461309, 0.692287, 0.877167, 1.176260, 1.756214",\
+ "0.474728, 0.705707, 0.890586, 1.189680, 1.769634",\
+ "0.627462, 0.858441, 1.043320, 1.342414, 1.922367",\
+ "0.961447, 1.192425, 1.377305, 1.676398, 2.256352",\
+ "0.541888, 0.771806, 0.956649, 1.255766, 1.835768",\
+ "0.549688, 0.779605, 0.964448, 1.263565, 1.843568",\
+ "0.563107, 0.793025, 0.977867, 1.276985, 1.856987",\
+ "0.715841, 0.945758, 1.130601, 1.429719, 2.009721",\
+ "1.049826, 1.279743, 1.464586, 1.763703, 2.343705",\
+ "0.631467, 0.852136, 1.036675, 1.335794, 1.915800",\
+ "0.639266, 0.859936, 1.044475, 1.343594, 1.923599",\
+ "0.652686, 0.873355, 1.057894, 1.357013, 1.937019",\
+ "0.805420, 1.026089, 1.210628, 1.509747, 2.089752",\
+ "1.139404, 1.360074, 1.544613, 1.843732, 2.423737",\
+ "0.695451, 0.909966, 1.094386, 1.393248, 1.972863",\
+ "0.703251, 0.917766, 1.102185, 1.401047, 1.980663",\
+ "0.716670, 0.931185, 1.115605, 1.414467, 1.994082",\
+ "0.869404, 1.083919, 1.268338, 1.567201, 2.146816",\
+ "1.203389, 1.417904, 1.602323, 1.901185, 2.480801",\
+ "1.034004, 1.215273, 1.398043, 1.696439, 2.275143",\
+ "1.041804, 1.223073, 1.405843, 1.704239, 2.282942",\
+ "1.055223, 1.236492, 1.419262, 1.717658, 2.296362",\
+ "1.207957, 1.389226, 1.571996, 1.870392, 2.449096",\
+ "1.541942, 1.723211, 1.905981, 2.204377, 2.783080");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002846, 0.075844, 0.162637, 0.322428, 0.642011");
+ values ( "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2400*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.356883, 0.553789, 0.735718, 1.027079, 1.590482",\
+ "0.376149, 0.573056, 0.754984, 1.046346, 1.609749",\
+ "0.407828, 0.604733, 0.786661, 1.078023, 1.641427",\
+ "0.697481, 0.894382, 1.076308, 1.367671, 1.931077",\
+ "1.291425, 1.488327, 1.670252, 1.961614, 2.525021",\
+ "0.445232, 0.641107, 0.822999, 1.114385, 1.677836",\
+ "0.464498, 0.660374, 0.842265, 1.133651, 1.697102",\
+ "0.496176, 0.692052, 0.873942, 1.165328, 1.728780",\
+ "0.785829, 0.981701, 1.163589, 1.454976, 2.018430",\
+ "1.379774, 1.575645, 1.757533, 2.048919, 2.612374",\
+ "0.534400, 0.721441, 0.903025, 1.194413, 1.757867",\
+ "0.553666, 0.740707, 0.922292, 1.213680, 1.777134",\
+ "0.585345, 0.772385, 0.953969, 1.245357, 1.808812",\
+ "0.874998, 1.062034, 1.243616, 1.535004, 2.098462",\
+ "1.468942, 1.655978, 1.837560, 2.128948, 2.692406",\
+ "0.597862, 0.779261, 0.960728, 1.251846, 1.814890",\
+ "0.617128, 0.798528, 0.979995, 1.271113, 1.834156",\
+ "0.648807, 0.830206, 1.011672, 1.302790, 1.865834",\
+ "0.938459, 1.119855, 1.301319, 1.592437, 2.155484",\
+ "1.532403, 1.713799, 1.895263, 2.186381, 2.749428",\
+ "0.904924, 1.084513, 1.264385, 1.555021, 2.117120",\
+ "0.924190, 1.103779, 1.283652, 1.574288, 2.136386",\
+ "0.955869, 1.135457, 1.315329, 1.605965, 2.168064",\
+ "1.245522, 1.425106, 1.604976, 1.895612, 2.457714",\
+ "1.839466, 2.019050, 2.198920, 2.489556, 3.051658");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.107384, 0.107384, 0.107384, 0.107384, 0.107384",\
+ "0.140617, 0.140617, 0.140617, 0.140617, 0.140617",\
+ "0.189796, 0.189796, 0.189796, 0.189796, 0.189796",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195571, 2.195567, 2.195565, 2.195564, 2.195564",\
+ "0.107384, 0.107384, 0.107384, 0.107384, 0.107384",\
+ "0.140617, 0.140617, 0.140617, 0.140617, 0.140617",\
+ "0.189796, 0.189796, 0.189796, 0.189796, 0.189796",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195571, 2.195567, 2.195565, 2.195564, 2.195564",\
+ "0.107384, 0.107384, 0.107384, 0.107384, 0.107384",\
+ "0.140617, 0.140617, 0.140617, 0.140617, 0.140617",\
+ "0.189796, 0.189796, 0.189796, 0.189796, 0.189796",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195571, 2.195567, 2.195565, 2.195564, 2.195564",\
+ "0.107384, 0.107384, 0.107384, 0.107384, 0.107384",\
+ "0.140617, 0.140617, 0.140617, 0.140617, 0.140617",\
+ "0.189796, 0.189796, 0.189796, 0.189796, 0.189796",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195570, 2.195567, 2.195565, 2.195564, 2.195564",\
+ "0.107384, 0.107384, 0.107384, 0.107384, 0.107384",\
+ "0.140617, 0.140617, 0.140617, 0.140617, 0.140617",\
+ "0.189796, 0.189796, 0.189796, 0.189796, 0.189796",\
+ "0.817737, 0.817737, 0.817737, 0.817737, 0.817737",\
+ "2.195571, 2.195567, 2.195565, 2.195564, 2.195564");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.367499, 0.564398, 0.746322, 1.037684, 1.601092",\
+ "0.375296, 0.572195, 0.754119, 1.045481, 1.608889",\
+ "0.388715, 0.585614, 0.767538, 1.058901, 1.622309",\
+ "0.541390, 0.738291, 0.920216, 1.211578, 1.774985",\
+ "0.875354, 1.072255, 1.254180, 1.545543, 2.108949",\
+ "0.455848, 0.651716, 0.833603, 1.124989, 1.688446",\
+ "0.463644, 0.659513, 0.841400, 1.132786, 1.696243",\
+ "0.477064, 0.672932, 0.854819, 1.146206, 1.709662",\
+ "0.629739, 0.825609, 1.007497, 1.298883, 1.862338",\
+ "0.963703, 1.159573, 1.341461, 1.632848, 2.196303",\
+ "0.545016, 0.732049, 0.913630, 1.205018, 1.768477",\
+ "0.552812, 0.739846, 0.921427, 1.212815, 1.776274",\
+ "0.566232, 0.753265, 0.934846, 1.226234, 1.789694",\
+ "0.718907, 0.905942, 1.087524, 1.378912, 1.942370",\
+ "1.052871, 1.239906, 1.421488, 1.712876, 2.276334",\
+ "0.608477, 0.789870, 0.971332, 1.262451, 1.825500",\
+ "0.616274, 0.797667, 0.979129, 1.270248, 1.833297",\
+ "0.629693, 0.811086, 0.992549, 1.283667, 1.846716",\
+ "0.782368, 0.963763, 1.145226, 1.436345, 1.999392",\
+ "1.116332, 1.297727, 1.479191, 1.770309, 2.333357",\
+ "0.915539, 1.095121, 1.274990, 1.565626, 2.127729",\
+ "0.923336, 1.102918, 1.282787, 1.573422, 2.135526",\
+ "0.936756, 1.116337, 1.296206, 1.586842, 2.148946",\
+ "1.089431, 1.269014, 1.448884, 1.739519, 2.301622",\
+ "1.423395, 1.602978, 1.782848, 2.073484, 2.635586");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055579, 0.055579, 0.055579, 0.055579, 0.055579",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055579, 0.055579, 0.055579, 0.055579, 0.055579",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055579, 0.055579, 0.055579, 0.055579, 0.055579",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055579, 0.055579, 0.055579, 0.055579, 0.055579",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201",\
+ "0.049251, 0.049251, 0.049251, 0.049251, 0.049251",\
+ "0.055579, 0.055579, 0.055579, 0.055579, 0.055579",\
+ "0.075314, 0.075314, 0.075314, 0.075314, 0.075314",\
+ "0.368762, 0.368762, 0.368762, 0.368762, 0.368762",\
+ "1.002200, 1.002200, 1.002200, 1.002200, 1.002201");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2447*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.379724, 0.609078, 0.793072, 1.086354, 1.652961",\
+ "0.399096, 0.628450, 0.812444, 1.105726, 1.672333",\
+ "0.430550, 0.659904, 0.843898, 1.137180, 1.703787",\
+ "0.719484, 0.948838, 1.132833, 1.426114, 1.992722",\
+ "1.313376, 1.542730, 1.726725, 2.020006, 2.586613",\
+ "0.468018, 0.696395, 0.880353, 1.173659, 1.740315",\
+ "0.487390, 0.715767, 0.899725, 1.193031, 1.759686",\
+ "0.518844, 0.747221, 0.931179, 1.224485, 1.791140",\
+ "0.807778, 1.036156, 1.220114, 1.513419, 2.080075",\
+ "1.401670, 1.630048, 1.814005, 2.107311, 2.673967",\
+ "0.557713, 0.776723, 0.960380, 1.253688, 1.820346",\
+ "0.577085, 0.796095, 0.979752, 1.273059, 1.839718",\
+ "0.608539, 0.827548, 1.011206, 1.304513, 1.871172",\
+ "0.897473, 1.116483, 1.300140, 1.593448, 2.160107",\
+ "1.491365, 1.710375, 1.894032, 2.187340, 2.753998",\
+ "0.621964, 0.834551, 1.018089, 1.311125, 1.877379",\
+ "0.641336, 0.853923, 1.037461, 1.330497, 1.896751",\
+ "0.672790, 0.885376, 1.068915, 1.361951, 1.928205",\
+ "0.961724, 1.174311, 1.357849, 1.650886, 2.217139",\
+ "1.555616, 1.768203, 1.951741, 2.244777, 2.811031",\
+ "0.960843, 1.139831, 1.321745, 1.614302, 2.179622",\
+ "0.980214, 1.159203, 1.341117, 1.633674, 2.198994",\
+ "1.011668, 1.190656, 1.372571, 1.665128, 2.230447",\
+ "1.300603, 1.479591, 1.661506, 1.954063, 2.519382",\
+ "1.894495, 2.073483, 2.255398, 2.547955, 3.113274");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880",\
+ "0.108154, 0.108154, 0.108154, 0.108154, 0.108154",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194880, 2.194880, 2.194880, 2.194880, 2.194880");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.388968, 0.618322, 0.802316, 1.095598, 1.662205",\
+ "0.396778, 0.626132, 0.810127, 1.103408, 1.670016",\
+ "0.410197, 0.639552, 0.823546, 1.116827, 1.683435",\
+ "0.563168, 0.792522, 0.976516, 1.269798, 1.836405",\
+ "0.897236, 1.126590, 1.310585, 1.603866, 2.170474",\
+ "0.477262, 0.705639, 0.889597, 1.182903, 1.749559",\
+ "0.485072, 0.713450, 0.897408, 1.190713, 1.757369",\
+ "0.498491, 0.726869, 0.910827, 1.204133, 1.770788",\
+ "0.651462, 0.879839, 1.063797, 1.357103, 1.923759",\
+ "0.985530, 1.213908, 1.397866, 1.691172, 2.257827",\
+ "0.566957, 0.785967, 0.969624, 1.262932, 1.829590",\
+ "0.574767, 0.793777, 0.977435, 1.270742, 1.837401",\
+ "0.588187, 0.807196, 0.990854, 1.284161, 1.850820",\
+ "0.741157, 0.960167, 1.143824, 1.437132, 2.003790",\
+ "1.075225, 1.294235, 1.477893, 1.771200, 2.337859",\
+ "0.631208, 0.843795, 1.027333, 1.320369, 1.886623",\
+ "0.639018, 0.851605, 1.035143, 1.328180, 1.894433",\
+ "0.652438, 0.865024, 1.048563, 1.341599, 1.907853",\
+ "0.805408, 1.017995, 1.201533, 1.494569, 2.060823",\
+ "1.139476, 1.352063, 1.535602, 1.828638, 2.394892",\
+ "0.970087, 1.149075, 1.330989, 1.623546, 2.188866",\
+ "0.977897, 1.156885, 1.338800, 1.631357, 2.196676",\
+ "0.991316, 1.170304, 1.352219, 1.644776, 2.210095",\
+ "1.144287, 1.323275, 1.505189, 1.797747, 2.363066",\
+ "1.478355, 1.657343, 1.839258, 2.131815, 2.697134");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046251, 0.046251, 0.046251, 0.046251, 0.046251",\
+ "0.051898, 0.051898, 0.051898, 0.051898, 0.051898",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368839, 0.368839, 0.368839, 0.368839, 0.368839",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2729*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[30]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.369185, 0.583807, 0.762700, 1.052121, 1.613591",\
+ "0.388557, 0.603178, 0.782071, 1.071493, 1.632963",\
+ "0.420011, 0.634632, 0.813526, 1.102947, 1.664417",\
+ "0.708947, 0.923568, 1.102462, 1.391883, 1.953353",\
+ "1.302839, 1.517461, 1.696354, 1.985775, 2.547245",\
+ "0.457459, 0.671124, 0.849981, 1.139426, 1.700945",\
+ "0.476830, 0.690496, 0.869353, 1.158798, 1.720316",\
+ "0.508285, 0.721950, 0.900807, 1.190252, 1.751771",\
+ "0.797221, 1.010886, 1.189743, 1.479188, 2.040707",\
+ "1.391113, 1.604778, 1.783635, 2.073080, 2.634599",\
+ "0.547002, 0.751452, 0.930008, 1.219455, 1.780976",\
+ "0.566373, 0.770824, 0.949379, 1.238826, 1.800348",\
+ "0.597828, 0.802278, 0.980834, 1.270281, 1.831802",\
+ "0.886764, 1.091214, 1.269770, 1.559216, 2.120738",\
+ "1.480656, 1.685106, 1.863662, 2.153109, 2.714630",\
+ "0.611070, 0.809282, 0.987704, 1.276886, 1.837996",\
+ "0.630442, 0.828653, 1.007076, 1.296257, 1.857368",\
+ "0.661896, 0.860107, 1.038530, 1.327712, 1.888822",\
+ "0.950832, 1.149043, 1.327466, 1.616648, 2.177758",\
+ "1.544724, 1.742936, 1.921358, 2.210540, 2.771650",\
+ "0.934949, 1.114574, 1.291359, 1.580058, 2.140224",\
+ "0.954320, 1.133946, 1.310730, 1.599430, 2.159595",\
+ "0.985774, 1.165400, 1.342185, 1.630884, 2.191050",\
+ "1.274710, 1.454336, 1.631121, 1.919820, 2.479985",\
+ "1.868603, 2.048229, 2.225013, 2.513712, 3.073878");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.378431, 0.593053, 0.771946, 1.061368, 1.622838",\
+ "0.386242, 0.600863, 0.779757, 1.069178, 1.630648",\
+ "0.399661, 0.614283, 0.793176, 1.082597, 1.644067",\
+ "0.552631, 0.767253, 0.946146, 1.235567, 1.797037",\
+ "0.886699, 1.101321, 1.280214, 1.569635, 2.131105",\
+ "0.466705, 0.680371, 0.859227, 1.148673, 1.710191",\
+ "0.474516, 0.688181, 0.867038, 1.156483, 1.718002",\
+ "0.487935, 0.701600, 0.880457, 1.169902, 1.731421",\
+ "0.640905, 0.854570, 1.033427, 1.322872, 1.884391",\
+ "0.974973, 1.188638, 1.367495, 1.656940, 2.218459",\
+ "0.556248, 0.760699, 0.939254, 1.228701, 1.790223",\
+ "0.564059, 0.768509, 0.947065, 1.236512, 1.798033",\
+ "0.577478, 0.781928, 0.960484, 1.249931, 1.811453",\
+ "0.730448, 0.934898, 1.113454, 1.402901, 1.964422",\
+ "1.064516, 1.268966, 1.447522, 1.736969, 2.298491",\
+ "0.620317, 0.818528, 0.996951, 1.286133, 1.847243",\
+ "0.628127, 0.826339, 1.004761, 1.293943, 1.855053",\
+ "0.641546, 0.839758, 1.018181, 1.307362, 1.868473",\
+ "0.794516, 0.992728, 1.171150, 1.460332, 2.021443",\
+ "1.128584, 1.326796, 1.505219, 1.794400, 2.355511",\
+ "0.944195, 1.123821, 1.300605, 1.589304, 2.149470",\
+ "0.952006, 1.131631, 1.308416, 1.597115, 2.157280",\
+ "0.965425, 1.145051, 1.321835, 1.610534, 2.170700",\
+ "1.118395, 1.298021, 1.474805, 1.763504, 2.323670",\
+ "1.452463, 1.632089, 1.808873, 2.097572, 2.657738");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.046253, 0.046253, 0.046253, 0.046253, 0.046253",\
+ "0.051900, 0.051900, 0.051900, 0.051900, 0.051900",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046253, 0.046253, 0.046253, 0.046253, 0.046253",\
+ "0.051900, 0.051900, 0.051900, 0.051900, 0.051900",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046253, 0.046253, 0.046253, 0.046253, 0.046253",\
+ "0.051900, 0.051900, 0.051900, 0.051900, 0.051900",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046253, 0.046253, 0.046253, 0.046253, 0.046253",\
+ "0.051900, 0.051900, 0.051900, 0.051900, 0.051900",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046253, 0.046253, 0.046253, 0.046253, 0.046253",\
+ "0.051900, 0.051900, 0.051900, 0.051900, 0.051900",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2349*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.417064, 0.631505, 0.810363, 1.099808, 1.661366",\
+ "0.436351, 0.650792, 0.829650, 1.119095, 1.680653",\
+ "0.467985, 0.682426, 0.861284, 1.150729, 1.712287",\
+ "0.757495, 0.971936, 1.150794, 1.440239, 2.001797",\
+ "1.351429, 1.565870, 1.744728, 2.034173, 2.595731",\
+ "0.505338, 0.718823, 0.897644, 1.187113, 1.748719",\
+ "0.524625, 0.738110, 0.916931, 1.206400, 1.768006",\
+ "0.556259, 0.769744, 0.948565, 1.238034, 1.799640",\
+ "0.845769, 1.059254, 1.238075, 1.527544, 2.089150",\
+ "1.439703, 1.653188, 1.832009, 2.121478, 2.683084",\
+ "0.594882, 0.799151, 0.977671, 1.267141, 1.828751",\
+ "0.614169, 0.818438, 0.996958, 1.286428, 1.848038",\
+ "0.645804, 0.850072, 1.028592, 1.318063, 1.879672",\
+ "0.935313, 1.139582, 1.318102, 1.607573, 2.169182",\
+ "1.529247, 1.733516, 1.912036, 2.201506, 2.763116",\
+ "0.658952, 0.856980, 1.035367, 1.324573, 1.885771",\
+ "0.678239, 0.876267, 1.054654, 1.343860, 1.905058",\
+ "0.709873, 0.907901, 1.086289, 1.375494, 1.936692",\
+ "0.999383, 1.197411, 1.375799, 1.665004, 2.226202",\
+ "1.593317, 1.791345, 1.969732, 2.258938, 2.820136",\
+ "0.982644, 1.162273, 1.339022, 1.627745, 2.187998",\
+ "1.001931, 1.181560, 1.358309, 1.647032, 2.207285",\
+ "1.033565, 1.213194, 1.389943, 1.678666, 2.238919",\
+ "1.323075, 1.502704, 1.679453, 1.968176, 2.528430",\
+ "1.917009, 2.096638, 2.273387, 2.562110, 3.122364");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.427407, 0.641848, 0.820706, 1.110151, 1.671709",\
+ "0.435207, 0.649648, 0.828505, 1.117950, 1.679508",\
+ "0.448626, 0.663067, 0.841925, 1.131369, 1.692927",\
+ "0.601360, 0.815801, 0.994659, 1.284103, 1.845661",\
+ "0.935344, 1.149785, 1.328643, 1.618088, 2.179646",\
+ "0.515681, 0.729166, 0.907987, 1.197456, 1.759062",\
+ "0.523481, 0.736965, 0.915786, 1.205255, 1.766862",\
+ "0.536900, 0.750385, 0.929206, 1.218675, 1.780281",\
+ "0.689634, 0.903118, 1.081940, 1.371408, 1.933015",\
+ "1.023618, 1.237103, 1.415924, 1.705393, 2.266999",\
+ "0.605225, 0.809494, 0.988014, 1.277484, 1.839094",\
+ "0.613025, 0.817293, 0.995813, 1.285284, 1.846893",\
+ "0.626444, 0.830712, 1.009233, 1.298703, 1.860313",\
+ "0.779178, 0.983446, 1.161967, 1.451437, 2.013046",\
+ "1.113163, 1.317431, 1.495951, 1.785421, 2.347031",\
+ "0.669295, 0.867323, 1.045710, 1.334916, 1.896114",\
+ "0.677094, 0.875123, 1.053510, 1.342715, 1.903913",\
+ "0.690513, 0.888542, 1.066929, 1.356135, 1.917333",\
+ "0.843247, 1.041276, 1.219663, 1.508868, 2.070067",\
+ "1.177232, 1.375260, 1.553648, 1.842853, 2.404051",\
+ "0.992987, 1.172616, 1.349365, 1.638088, 2.198341",\
+ "1.000786, 1.180416, 1.357164, 1.645887, 2.206141",\
+ "1.014206, 1.193835, 1.370584, 1.659307, 2.219560",\
+ "1.166939, 1.346569, 1.523317, 1.812040, 2.372294",\
+ "1.500924, 1.680553, 1.857302, 2.146025, 2.706279");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2494*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.423145, 0.655225, 0.838651, 1.132010, 1.699224",\
+ "0.442432, 0.674512, 0.857938, 1.151296, 1.718511",\
+ "0.474066, 0.706146, 0.889572, 1.182931, 1.750145",\
+ "0.763577, 0.995656, 1.179082, 1.472441, 2.039655",\
+ "1.357510, 1.589590, 1.773016, 2.066375, 2.633589",\
+ "0.511451, 0.742543, 0.925932, 1.219315, 1.786577",\
+ "0.530738, 0.761829, 0.945219, 1.238602, 1.805864",\
+ "0.562372, 0.793464, 0.976853, 1.270236, 1.837498",\
+ "0.851883, 1.082974, 1.266363, 1.559746, 2.127008",\
+ "1.445816, 1.676908, 1.860297, 2.153680, 2.720942",\
+ "0.600820, 0.822873, 1.005959, 1.299343, 1.866609",\
+ "0.620107, 0.842160, 1.025246, 1.318630, 1.885896",\
+ "0.651741, 0.873794, 1.056880, 1.350264, 1.917530",\
+ "0.941251, 1.163304, 1.346390, 1.639775, 2.207040",\
+ "1.535185, 1.757238, 1.940324, 2.233708, 2.800974",\
+ "0.664609, 0.880707, 1.063666, 1.356781, 1.923642",\
+ "0.683896, 0.899994, 1.082952, 1.376068, 1.942929",\
+ "0.715530, 0.931628, 1.114587, 1.407702, 1.974563",\
+ "1.005041, 1.221138, 1.404097, 1.697213, 2.264073",\
+ "1.598974, 1.815072, 1.998031, 2.291147, 2.858007",\
+ "1.001916, 1.186040, 1.367322, 1.659959, 2.225884",\
+ "1.021203, 1.205327, 1.386609, 1.679246, 2.245171",\
+ "1.052837, 1.236961, 1.418243, 1.710881, 2.276805",\
+ "1.342347, 1.526471, 1.707754, 2.000391, 2.566315",\
+ "1.936281, 2.120405, 2.301688, 2.594325, 3.160249");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434",\
+ "0.107537, 0.107537, 0.107537, 0.107537, 0.107537",\
+ "0.140565, 0.140565, 0.140565, 0.140565, 0.140565",\
+ "0.189766, 0.189766, 0.189766, 0.189766, 0.189766",\
+ "0.817728, 0.817728, 0.817728, 0.817728, 0.817728",\
+ "2.195434, 2.195434, 2.195434, 2.195434, 2.195434");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.433489, 0.665568, 0.848994, 1.142353, 1.709567",\
+ "0.441288, 0.673367, 0.856794, 1.150152, 1.717367",\
+ "0.454707, 0.686787, 0.870213, 1.163572, 1.730786",\
+ "0.607441, 0.839521, 1.022947, 1.316305, 1.883520",\
+ "0.941426, 1.173505, 1.356931, 1.650290, 2.217504",\
+ "0.521794, 0.752886, 0.936275, 1.229658, 1.796920",\
+ "0.529594, 0.760685, 0.944075, 1.237458, 1.804720",\
+ "0.543013, 0.774105, 0.957494, 1.250877, 1.818139",\
+ "0.695747, 0.926838, 1.110228, 1.403611, 1.970873",\
+ "1.029732, 1.260823, 1.444212, 1.737595, 2.304857",\
+ "0.611163, 0.833216, 1.016302, 1.309687, 1.876952",\
+ "0.618962, 0.841016, 1.024101, 1.317486, 1.884752",\
+ "0.632382, 0.854435, 1.037521, 1.330905, 1.898171",\
+ "0.785116, 1.007169, 1.190255, 1.483639, 2.050905",\
+ "1.119100, 1.341153, 1.524239, 1.817624, 2.384889",\
+ "0.674952, 0.891050, 1.074009, 1.367125, 1.933985",\
+ "0.682752, 0.898850, 1.081808, 1.374924, 1.941785",\
+ "0.696171, 0.912269, 1.095228, 1.388343, 1.955204",\
+ "0.848905, 1.065003, 1.247962, 1.541077, 2.107938",\
+ "1.182890, 1.398987, 1.581946, 1.875062, 2.441922",\
+ "1.012259, 1.196383, 1.377666, 1.670303, 2.236228",\
+ "1.020059, 1.204182, 1.385465, 1.678102, 2.244027",\
+ "1.033478, 1.217602, 1.398885, 1.691522, 2.257446",\
+ "1.186212, 1.370336, 1.551618, 1.844255, 2.410180",\
+ "1.520197, 1.704320, 1.885603, 2.178240, 2.744164");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182",\
+ "0.049261, 0.049261, 0.049261, 0.049261, 0.049261",\
+ "0.055612, 0.055612, 0.055612, 0.055612, 0.055612",\
+ "0.075309, 0.075309, 0.075309, 0.075309, 0.075309",\
+ "0.368777, 0.368777, 0.368777, 0.368777, 0.368777",\
+ "1.002182, 1.002182, 1.002182, 1.002182, 1.002182");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2512*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.181258, 0.362750, 0.559584, 0.877059, 1.491654",\
+ "0.196091, 0.377154, 0.575199, 0.895881, 1.517263",\
+ "0.221299, 0.401436, 0.600771, 0.925894, 1.556997",\
+ "0.494050, 0.669272, 0.865120, 1.207435, 1.883536",\
+ "1.086888, 1.260498, 1.453339, 1.802428, 2.497703",\
+ "0.268666, 0.450068, 0.646865, 0.964364, 1.579007",\
+ "0.283499, 0.464472, 0.662480, 0.983186, 1.604617",\
+ "0.308707, 0.488754, 0.688052, 1.013199, 1.644350",\
+ "0.581459, 0.756590, 0.952401, 1.294740, 1.970890",\
+ "1.174296, 1.347816, 1.540620, 1.889733, 2.585056",\
+ "0.349534, 0.530400, 0.726892, 1.044393, 1.659039",\
+ "0.364365, 0.544804, 0.742507, 1.063215, 1.684648",\
+ "0.389566, 0.569086, 0.768079, 1.093227, 1.724382",\
+ "0.662286, 0.836922, 1.032428, 1.374768, 2.050921",\
+ "1.255114, 1.428148, 1.620646, 1.969761, 2.665088",\
+ "0.407230, 0.588238, 0.784630, 1.101888, 1.716185",\
+ "0.422055, 0.602641, 0.800248, 1.120718, 1.741811",\
+ "0.447245, 0.626919, 0.825823, 1.150743, 1.781568",\
+ "0.719903, 0.894737, 1.090165, 1.432339, 2.108216",\
+ "1.312710, 1.485957, 1.678376, 2.027355, 2.722429",\
+ "0.710204, 0.893608, 1.088293, 1.405116, 2.018565",\
+ "0.724980, 0.907999, 1.103911, 1.423953, 2.044210",\
+ "0.750065, 0.932253, 1.129487, 1.453987, 2.083996",\
+ "1.022164, 1.199940, 1.393827, 1.735630, 2.410775",\
+ "1.614788, 1.791118, 1.982037, 2.330666, 3.025044");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.126844, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149772, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195024, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194128, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126844, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149772, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195024, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194128, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126849, 0.127605, 0.133435, 0.151631, 0.191178",\
+ "0.149775, 0.150309, 0.154650, 0.170542, 0.205735",\
+ "0.195028, 0.195582, 0.198470, 0.210618, 0.237900",\
+ "0.816153, 0.816255, 0.816260, 0.817805, 0.821592",\
+ "2.194129, 2.194405, 2.194418, 2.195894, 2.199512",\
+ "0.126859, 0.127607, 0.133449, 0.151680, 0.191274",\
+ "0.149782, 0.150311, 0.154660, 0.170585, 0.205820",\
+ "0.195035, 0.195584, 0.198477, 0.210651, 0.237965",\
+ "0.816155, 0.816256, 0.816260, 0.817810, 0.821601",\
+ "2.194133, 2.194406, 2.194418, 2.195898, 2.199521",\
+ "0.126945, 0.127627, 0.133451, 0.151721, 0.191389",\
+ "0.149843, 0.150326, 0.154662, 0.170622, 0.205922",\
+ "0.195098, 0.195599, 0.198478, 0.210679, 0.238045",\
+ "0.816166, 0.816259, 0.816260, 0.817813, 0.821612",\
+ "2.194165, 2.194413, 2.194418, 2.195902, 2.199532");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.117102, 0.379947, 0.573156, 0.882174, 1.479232",\
+ "0.126091, 0.389068, 0.582472, 0.892519, 1.491929",\
+ "0.141699, 0.404157, 0.597820, 0.909153, 1.511489",\
+ "0.306945, 0.562483, 0.755606, 1.068523, 1.675209",\
+ "0.649757, 0.897030, 1.089718, 1.401787, 2.006775",\
+ "0.205481, 0.467265, 0.660437, 0.969479, 1.566586",\
+ "0.214473, 0.476386, 0.669753, 0.979824, 1.579283",\
+ "0.230076, 0.491475, 0.685100, 0.996458, 1.598842",\
+ "0.395245, 0.649801, 0.842887, 1.155828, 1.762562",\
+ "0.738017, 0.984348, 1.176999, 1.489092, 2.094129",\
+ "0.294834, 0.547598, 0.740463, 1.049507, 1.646617",\
+ "0.303840, 0.556719, 0.749780, 1.059852, 1.659314",\
+ "0.319425, 0.571807, 0.765127, 1.076486, 1.678874",\
+ "0.484368, 0.730134, 0.922914, 1.235856, 1.842594",\
+ "0.827025, 1.064680, 1.257025, 1.569121, 2.174160",\
+ "0.358511, 0.605438, 0.798193, 1.106982, 1.703722",\
+ "0.367529, 0.614560, 0.807510, 1.117329, 1.716424",\
+ "0.383098, 0.629648, 0.822858, 1.133967, 1.735991",\
+ "0.547830, 0.787974, 0.980643, 1.293342, 1.899721",\
+ "0.890379, 1.122520, 1.314754, 1.626604, 2.231284",\
+ "0.695115, 0.910825, 1.101854, 1.410191, 2.006050",\
+ "0.704209, 0.919948, 1.111171, 1.420541, 2.018759",\
+ "0.719674, 0.935035, 1.126519, 1.437182, 2.038335",\
+ "0.883062, 1.093358, 1.284304, 1.596561, 2.202077",\
+ "1.224926, 1.427904, 1.618415, 1.929822, 2.533635");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.044794, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053408, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.044917, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053471, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.045280, 0.049393, 0.054601, 0.068665, 0.098782",\
+ "0.053656, 0.055750, 0.059102, 0.072238, 0.101610",\
+ "0.075784, 0.075784, 0.077996, 0.088605, 0.112682",\
+ "0.368045, 0.368045, 0.368833, 0.370655, 0.374434",\
+ "1.001402, 1.001402, 1.001776, 1.002637, 1.004422",\
+ "0.045619, 0.049410, 0.054613, 0.068702, 0.098855",\
+ "0.053828, 0.055759, 0.059110, 0.072274, 0.101681",\
+ "0.075784, 0.075784, 0.078001, 0.088634, 0.112740",\
+ "0.368045, 0.368045, 0.368835, 0.370660, 0.374443",\
+ "1.001402, 1.001402, 1.001777, 1.002639, 1.004426",\
+ "0.047777, 0.049532, 0.054615, 0.068733, 0.098943",\
+ "0.054927, 0.055821, 0.059111, 0.072304, 0.101766",\
+ "0.075784, 0.075784, 0.078002, 0.088659, 0.112810",\
+ "0.368045, 0.368045, 0.368835, 0.370664, 0.374454",\
+ "1.001402, 1.001402, 1.001777, 1.002641, 1.004432");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2747*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.496413, 0.709649, 0.894786, 1.185670, 1.745053",\
+ "0.515784, 0.729021, 0.914158, 1.205042, 1.764425",\
+ "0.547238, 0.760475, 0.945612, 1.236496, 1.795879",\
+ "0.836174, 1.049411, 1.234548, 1.525432, 2.084815",\
+ "1.430066, 1.643303, 1.828440, 2.119324, 2.678707",\
+ "0.584781, 0.796968, 0.982067, 1.272975, 1.832407",\
+ "0.604153, 0.816339, 1.001439, 1.292347, 1.851778",\
+ "0.635607, 0.847793, 1.032893, 1.323801, 1.883232",\
+ "0.924543, 1.136729, 1.321829, 1.612737, 2.172168",\
+ "1.518435, 1.730622, 1.915721, 2.206629, 2.766061",\
+ "0.673752, 0.877303, 1.062094, 1.353004, 1.912438",\
+ "0.693124, 0.896674, 1.081466, 1.372375, 1.931810",\
+ "0.724578, 0.928128, 1.112920, 1.403829, 1.963264",\
+ "1.013514, 1.217064, 1.401856, 1.692765, 2.252200",\
+ "1.607406, 1.810957, 1.995748, 2.286657, 2.846092",\
+ "0.736919, 0.935130, 1.119804, 1.410431, 1.969450",\
+ "0.756291, 0.954502, 1.139176, 1.429803, 1.988822",\
+ "0.787745, 0.985956, 1.170630, 1.461257, 2.020276",\
+ "1.076681, 1.274892, 1.459566, 1.750193, 2.309212",\
+ "1.670573, 1.868784, 2.053458, 2.344085, 2.903104",\
+ "1.058360, 1.240438, 1.423463, 1.713602, 2.271667",\
+ "1.077731, 1.259810, 1.442835, 1.732974, 2.291038",\
+ "1.109185, 1.291264, 1.474289, 1.764428, 2.322492",\
+ "1.398121, 1.580200, 1.763225, 2.053364, 2.611428",\
+ "1.992013, 2.174092, 2.357117, 2.647256, 3.205320");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.505659, 0.718896, 0.904033, 1.194916, 1.754300",\
+ "0.513469, 0.726706, 0.911843, 1.202727, 1.762110",\
+ "0.526889, 0.740125, 0.925263, 1.216146, 1.775529",\
+ "0.679859, 0.893095, 1.078233, 1.369116, 1.928499",\
+ "1.013927, 1.227163, 1.412301, 1.703184, 2.262567",\
+ "0.594028, 0.806214, 0.991314, 1.282222, 1.841653",\
+ "0.601838, 0.814024, 0.999124, 1.290032, 1.849463",\
+ "0.615257, 0.827444, 1.012543, 1.303451, 1.862883",\
+ "0.768227, 0.980414, 1.165513, 1.456421, 2.015853",\
+ "1.102295, 1.314482, 1.499582, 1.790489, 2.349921",\
+ "0.682999, 0.886549, 1.071341, 1.362250, 1.921685",\
+ "0.690809, 0.894360, 1.079151, 1.370060, 1.929495",\
+ "0.704229, 0.907779, 1.092570, 1.383480, 1.942914",\
+ "0.857199, 1.060749, 1.245540, 1.536450, 2.095884",\
+ "1.191267, 1.394817, 1.579608, 1.870518, 2.429952",\
+ "0.746166, 0.944377, 1.129050, 1.419678, 1.978696",\
+ "0.753976, 0.952187, 1.136861, 1.427488, 1.986507",\
+ "0.767395, 0.965607, 1.150280, 1.440908, 1.999926",\
+ "0.920365, 1.118577, 1.303250, 1.593878, 2.152896",\
+ "1.254433, 1.452645, 1.637318, 1.927946, 2.486964",\
+ "1.067606, 1.249685, 1.432710, 1.722849, 2.280913",\
+ "1.075416, 1.257495, 1.440520, 1.730659, 2.288723",\
+ "1.088836, 1.270914, 1.453939, 1.744078, 2.302143",\
+ "1.241806, 1.423884, 1.606909, 1.897048, 2.455113",\
+ "1.575874, 1.757952, 1.940977, 2.231116, 2.789181");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2380*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.099932, 0.259054, 0.413318, 0.663965, 1.151026",\
+ "0.112861, 0.280635, 0.445926, 0.710841, 1.223619",\
+ "0.139635, 0.312455, 0.491350, 0.774619, 1.320764",\
+ "0.427093, 0.638536, 0.826241, 1.153952, 1.801309",\
+ "1.022612, 1.250759, 1.440120, 1.765390, 2.405472",\
+ "0.187338, 0.346372, 0.500599, 0.751271, 1.238380",\
+ "0.200267, 0.367953, 0.533207, 0.798146, 1.310972",\
+ "0.227041, 0.399773, 0.578631, 0.861924, 1.408118",\
+ "0.515372, 0.725854, 0.913522, 1.241257, 1.888662",\
+ "1.110934, 1.338077, 1.527401, 1.852695, 2.492826",\
+ "0.268065, 0.426703, 0.580626, 0.831299, 1.318411",\
+ "0.281048, 0.448284, 0.613234, 0.878174, 1.391004",\
+ "0.307853, 0.480104, 0.658657, 0.941953, 1.488149",\
+ "0.604596, 0.806184, 0.993549, 1.321285, 1.968694",\
+ "1.200284, 1.418408, 1.607428, 1.932723, 2.572857",\
+ "0.325504, 0.484459, 0.638266, 0.888640, 1.375251",\
+ "0.338594, 0.506071, 0.670899, 0.935546, 1.447905",\
+ "0.365461, 0.537910, 0.716354, 0.999365, 1.545131",\
+ "0.668221, 0.863995, 1.051266, 1.378821, 2.025920",\
+ "1.264029, 1.476232, 1.665149, 1.990250, 2.630066",\
+ "0.626239, 0.789242, 0.941912, 1.191734, 1.677259",\
+ "0.640305, 0.811082, 0.974549, 1.238668, 1.749989",\
+ "0.667742, 0.843054, 1.020009, 1.302522, 1.847312",\
+ "0.992829, 1.169169, 1.354925, 1.682082, 2.328396",\
+ "1.601053, 1.781498, 1.968808, 2.293504, 2.932521");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.028418, 0.053985, 0.061562, 0.076171, 0.106327",\
+ "0.053853, 0.080619, 0.084946, 0.098515, 0.128974",\
+ "0.117398, 0.123775, 0.136709, 0.151501, 0.176771",\
+ "0.813025, 0.813025, 0.813025, 0.814975, 0.819748",\
+ "2.191540, 2.192948, 2.194009, 2.200710, 2.216247",\
+ "0.028418, 0.053985, 0.061562, 0.076171, 0.106327",\
+ "0.053853, 0.080619, 0.084946, 0.098515, 0.128974",\
+ "0.117398, 0.123775, 0.136709, 0.151501, 0.176771",\
+ "0.813025, 0.813025, 0.813025, 0.814975, 0.819748",\
+ "2.191577, 2.192948, 2.194009, 2.200710, 2.216247",\
+ "0.028577, 0.053985, 0.061562, 0.076171, 0.106327",\
+ "0.054019, 0.080619, 0.084946, 0.098515, 0.128974",\
+ "0.117437, 0.123775, 0.136709, 0.151501, 0.176771",\
+ "0.813025, 0.813025, 0.813025, 0.814975, 0.819748",\
+ "2.191688, 2.192948, 2.194009, 2.200710, 2.216247",\
+ "0.028892, 0.054081, 0.061577, 0.076207, 0.106399",\
+ "0.054349, 0.080719, 0.084954, 0.098552, 0.129047",\
+ "0.117516, 0.123799, 0.136740, 0.151532, 0.176832",\
+ "0.813025, 0.813025, 0.813025, 0.814981, 0.819759",\
+ "2.191792, 2.192953, 2.194012, 2.200729, 2.216285",\
+ "0.031778, 0.054753, 0.061580, 0.076239, 0.106487",\
+ "0.057369, 0.081423, 0.084955, 0.098584, 0.129136",\
+ "0.118236, 0.123966, 0.136744, 0.151558, 0.176905",\
+ "0.813025, 0.813025, 0.813025, 0.814986, 0.819773",\
+ "2.192455, 2.192990, 2.194012, 2.200745, 2.216330");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.071387, 0.284408, 0.492606, 0.801306, 1.367433",\
+ "0.077667, 0.305792, 0.517732, 0.814342, 1.385042",\
+ "0.090238, 0.334877, 0.530841, 0.830649, 1.407555",\
+ "0.256635, 0.477338, 0.671832, 0.978257, 1.567975",\
+ "0.595228, 0.802461, 0.996271, 1.304460, 1.898944",\
+ "0.158934, 0.371732, 0.579823, 0.888611, 1.454786",\
+ "0.165476, 0.393159, 0.605013, 0.901647, 1.472395",\
+ "0.178302, 0.422304, 0.618122, 0.917954, 1.494908",\
+ "0.344810, 0.564656, 0.759113, 1.065562, 1.655329",\
+ "0.683378, 0.889779, 1.083552, 1.391765, 1.986297",\
+ "0.245972, 0.460189, 0.667780, 0.968640, 1.534818",\
+ "0.253296, 0.481714, 0.685040, 0.981676, 1.552427",\
+ "0.266884, 0.507931, 0.698149, 0.997983, 1.574940",\
+ "0.433723, 0.644987, 0.839140, 1.145591, 1.735360",\
+ "0.772213, 0.970110, 1.163579, 1.471793, 2.066329",\
+ "0.307535, 0.525062, 0.731901, 1.026077, 1.591848",\
+ "0.315597, 0.546729, 0.742759, 1.039118, 1.609468",\
+ "0.329903, 0.565774, 0.755873, 1.055433, 1.631996",\
+ "0.497055, 0.702831, 0.896872, 1.203056, 1.792447",\
+ "0.835472, 1.027940, 1.221311, 1.529264, 2.123427",\
+ "0.630646, 0.853005, 1.036340, 1.329254, 1.894087",\
+ "0.643411, 0.859949, 1.046418, 1.342300, 1.911721",\
+ "0.662302, 0.871170, 1.059532, 1.358621, 1.934267",\
+ "0.824001, 1.008235, 1.200534, 1.506258, 2.094755",\
+ "1.152404, 1.333245, 1.524972, 1.832471, 2.425749");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.014090, 0.057759, 0.075820, 0.080331, 0.107469",\
+ "0.025180, 0.064799, 0.067612, 0.083095, 0.115487",\
+ "0.053782, 0.083479, 0.086622, 0.102435, 0.134993",\
+ "0.368605, 0.368605, 0.369812, 0.373454, 0.381327",\
+ "1.000406, 1.000406, 1.002137, 1.003830, 1.006481",\
+ "0.014987, 0.057834, 0.075890, 0.080331, 0.107469",\
+ "0.026088, 0.064832, 0.067612, 0.083095, 0.115487",\
+ "0.054430, 0.083516, 0.086622, 0.102435, 0.134993",\
+ "0.368605, 0.368605, 0.369812, 0.373454, 0.381327",\
+ "1.000406, 1.000406, 1.002137, 1.003830, 1.006481",\
+ "0.017662, 0.058002, 0.075892, 0.080331, 0.107469",\
+ "0.028799, 0.064906, 0.067612, 0.083095, 0.115487",\
+ "0.056363, 0.078451, 0.086622, 0.102435, 0.134993",\
+ "0.368605, 0.368605, 0.369812, 0.373454, 0.381327",\
+ "1.000406, 1.000406, 1.002137, 1.003830, 1.006481",\
+ "0.020186, 0.058246, 0.075896, 0.080364, 0.107535",\
+ "0.031356, 0.065014, 0.067628, 0.083134, 0.115565",\
+ "0.058188, 0.078544, 0.086639, 0.102475, 0.135071",\
+ "0.368605, 0.368605, 0.369814, 0.373463, 0.381346",\
+ "1.000406, 1.000406, 1.002141, 1.003834, 1.006488",\
+ "0.036287, 0.049252, 0.064182, 0.080393, 0.107614",\
+ "0.047669, 0.060805, 0.067630, 0.083168, 0.115659",\
+ "0.069823, 0.079193, 0.086642, 0.102509, 0.135166",\
+ "0.368605, 0.368605, 0.369815, 0.373471, 0.381369",\
+ "1.000406, 1.000406, 1.002141, 1.003836, 1.006495");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2421*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.473885, 0.684615, 0.861464, 1.145505, 1.695445",\
+ "0.493257, 0.703986, 0.880836, 1.164877, 1.714816",\
+ "0.524711, 0.735440, 0.912290, 1.196331, 1.746270",\
+ "0.813647, 1.024377, 1.201226, 1.485267, 2.035206",\
+ "1.407539, 1.618269, 1.795118, 2.079159, 2.629098",\
+ "0.562155, 0.771933, 0.948745, 1.232810, 1.782798",\
+ "0.581527, 0.791304, 0.968117, 1.252182, 1.802170",\
+ "0.612981, 0.822758, 0.999571, 1.283636, 1.833624",\
+ "0.901917, 1.111694, 1.288507, 1.572572, 2.122560",\
+ "1.495809, 1.705587, 1.882399, 2.166464, 2.716452",\
+ "0.651344, 0.852264, 1.028772, 1.312839, 1.862830",\
+ "0.670716, 0.871635, 1.048143, 1.332211, 1.882201",\
+ "0.702170, 0.903089, 1.079598, 1.363665, 1.913656",\
+ "0.991106, 1.192025, 1.368534, 1.652601, 2.202591",\
+ "1.584998, 1.785918, 1.962426, 2.246493, 2.796484",\
+ "0.714933, 0.910084, 1.086463, 1.370256, 1.919821",\
+ "0.734305, 0.929456, 1.105835, 1.389627, 1.939192",\
+ "0.765759, 0.960910, 1.137289, 1.421082, 1.970646",\
+ "1.054695, 1.249846, 1.426225, 1.710018, 2.259583",\
+ "1.648587, 1.843739, 2.020117, 2.303910, 2.853475",\
+ "1.036585, 1.215328, 1.390118, 1.673416, 2.222012",\
+ "1.055957, 1.234700, 1.409489, 1.692788, 2.241384",\
+ "1.087411, 1.266154, 1.440943, 1.724242, 2.272838",\
+ "1.376347, 1.555090, 1.729879, 2.013178, 2.561774",\
+ "1.970239, 2.148982, 2.323771, 2.607070, 3.155666");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882",\
+ "0.108153, 0.108153, 0.108153, 0.108153, 0.108153",\
+ "0.141536, 0.141536, 0.141536, 0.141536, 0.141536",\
+ "0.190539, 0.190539, 0.190539, 0.190539, 0.190539",\
+ "0.817689, 0.817689, 0.817689, 0.817689, 0.817689",\
+ "2.194882, 2.194882, 2.194882, 2.194882, 2.194882");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.483132, 0.693861, 0.870710, 1.154752, 1.704691",\
+ "0.490942, 0.701672, 0.878521, 1.162562, 1.712502",\
+ "0.504361, 0.715091, 0.891940, 1.175981, 1.725921",\
+ "0.657331, 0.868061, 1.044910, 1.328951, 1.878891",\
+ "0.991399, 1.202129, 1.378978, 1.663020, 2.212959",\
+ "0.571402, 0.781179, 0.957991, 1.242057, 1.792045",\
+ "0.579212, 0.788990, 0.965802, 1.249867, 1.799855",\
+ "0.592631, 0.802409, 0.979221, 1.263286, 1.813274",\
+ "0.745601, 0.955379, 1.132191, 1.416256, 1.966244",\
+ "1.079669, 1.289447, 1.466259, 1.750325, 2.300312",\
+ "0.660591, 0.861510, 1.038018, 1.322085, 1.872076",\
+ "0.668401, 0.869320, 1.045829, 1.329896, 1.879887",\
+ "0.681820, 0.882740, 1.059248, 1.343315, 1.893306",\
+ "0.834790, 1.035710, 1.212218, 1.496285, 2.046276",\
+ "1.168858, 1.369778, 1.546286, 1.830353, 2.380344",\
+ "0.724180, 0.919331, 1.095710, 1.379503, 1.929067",\
+ "0.731990, 0.927141, 1.103520, 1.387313, 1.936877",\
+ "0.745409, 0.940561, 1.116939, 1.400732, 1.950297",\
+ "0.898379, 1.093531, 1.269909, 1.553702, 2.103267",\
+ "1.232447, 1.427599, 1.603977, 1.887770, 2.437335",\
+ "1.045832, 1.224575, 1.399364, 1.682663, 2.231259",\
+ "1.053642, 1.232385, 1.407174, 1.690473, 2.239069",\
+ "1.067061, 1.245804, 1.420594, 1.703892, 2.252488",\
+ "1.220031, 1.398774, 1.573564, 1.856862, 2.405458",\
+ "1.554100, 1.732842, 1.907632, 2.190930, 2.739527");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000540, 0.001536, 0.012434, 0.035370");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959",\
+ "0.046252, 0.046252, 0.046252, 0.046252, 0.046252",\
+ "0.051899, 0.051899, 0.051899, 0.051899, 0.051899",\
+ "0.075290, 0.075290, 0.075290, 0.075290, 0.075290",\
+ "0.368838, 0.368838, 0.368838, 0.368838, 0.368838",\
+ "1.000959, 1.000959, 1.000959, 1.000959, 1.000959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[5]_redg_min_2516*/
+
+} /* end of pin tl_o[5] */
+
+pin("tl_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.020161 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.778821, 1.003429, 1.297149, 1.790603, 2.777510",\
+ "0.825348, 1.049956, 1.343676, 1.837130, 2.824038",\
+ "0.910982, 1.135590, 1.429310, 1.922764, 2.909672",\
+ "1.134301, 1.358909, 1.652629, 2.146083, 3.132991",\
+ "1.698246, 1.922854, 2.216574, 2.710028, 3.696936",\
+ "0.866262, 1.091031, 1.384796, 1.877318, 2.863444",\
+ "0.912789, 1.137558, 1.431323, 1.923846, 2.909971",\
+ "0.998423, 1.223192, 1.516957, 2.009480, 2.995605",\
+ "1.221742, 1.446511, 1.740276, 2.232799, 3.218925",\
+ "1.785687, 2.010456, 2.304221, 2.796744, 3.782870",\
+ "0.947141, 1.180161, 1.472762, 1.964941, 2.950399",\
+ "0.993669, 1.226688, 1.519289, 2.011468, 2.996926",\
+ "1.079303, 1.312322, 1.604924, 2.097103, 3.082561",\
+ "1.302622, 1.535641, 1.828242, 2.320421, 3.305880",\
+ "1.866567, 2.099586, 2.392188, 2.884367, 3.869825",\
+ "1.004861, 1.246014, 1.536906, 2.028855, 3.013908",\
+ "1.051388, 1.292541, 1.583433, 2.075382, 3.060435",\
+ "1.137022, 1.378175, 1.669067, 2.161016, 3.146070",\
+ "1.360341, 1.601494, 1.892386, 2.384335, 3.369389",\
+ "1.924286, 2.165440, 2.456331, 2.948280, 3.933334",\
+ "1.307537, 1.612873, 1.889025, 2.378309, 3.359364",\
+ "1.354064, 1.659401, 1.935552, 2.424836, 3.405891",\
+ "1.439698, 1.745035, 2.021186, 2.510470, 3.491526",\
+ "1.663017, 1.968354, 2.244505, 2.733789, 3.714845",\
+ "2.226962, 2.532299, 2.808450, 3.297734, 4.278790");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163010, 2.163010, 2.163010, 2.163010",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163010, 2.163010, 2.163010, 2.163010",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163010, 2.163010, 2.163010, 2.163010",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163010, 2.163010, 2.163010, 2.163010",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163010, 2.163010, 2.163010, 2.163010");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.717206, 0.941815, 1.235535, 1.728989, 2.715896",\
+ "0.770496, 0.995104, 1.288824, 1.782278, 2.769186",\
+ "0.831244, 1.055852, 1.349573, 1.843026, 2.829934",\
+ "0.965956, 1.190564, 1.484284, 1.977738, 2.964645",\
+ "1.312464, 1.537072, 1.830792, 2.324246, 3.311154",\
+ "0.804648, 1.029416, 1.323182, 1.815704, 2.801830",\
+ "0.857937, 1.082706, 1.376471, 1.868994, 2.855119",\
+ "0.918686, 1.143454, 1.437219, 1.929742, 2.915868",\
+ "1.053397, 1.278166, 1.571931, 2.064453, 3.050579",\
+ "1.399905, 1.624674, 1.918439, 2.410962, 3.397088",\
+ "0.885527, 1.118547, 1.411148, 1.903327, 2.888785",\
+ "0.938817, 1.171836, 1.464437, 1.956616, 2.942075",\
+ "0.999565, 1.232585, 1.525186, 2.017365, 3.002823",\
+ "1.134276, 1.367296, 1.659897, 2.152076, 3.137534",\
+ "1.480785, 1.713804, 2.006406, 2.498585, 3.484043",\
+ "0.943246, 1.184400, 1.475292, 1.967241, 2.952294",\
+ "0.996536, 1.237689, 1.528581, 2.020530, 3.005584",\
+ "1.057284, 1.298438, 1.589330, 2.081279, 3.066332",\
+ "1.191995, 1.433149, 1.724041, 2.215990, 3.201043",\
+ "1.538504, 1.779658, 2.070549, 2.562499, 3.547552",\
+ "1.245923, 1.551259, 1.827411, 2.316695, 3.297750",\
+ "1.299212, 1.604549, 1.880700, 2.369984, 3.351039",\
+ "1.359961, 1.665297, 1.941449, 2.430732, 3.411788",\
+ "1.494672, 1.800008, 2.076160, 2.565444, 3.546499",\
+ "1.841180, 2.146517, 2.422668, 2.911952, 3.893008");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.060037, 0.060037, 0.060037, 0.060037, 0.060037",\
+ "0.113990, 0.113990, 0.113990, 0.113990, 0.113990",\
+ "0.199694, 0.199694, 0.199694, 0.199694, 0.199694",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060037",\
+ "0.113990, 0.113990, 0.113990, 0.113990, 0.113990",\
+ "0.199694, 0.199694, 0.199694, 0.199694, 0.199694",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060037",\
+ "0.113990, 0.113990, 0.113990, 0.113990, 0.113990",\
+ "0.199694, 0.199694, 0.199694, 0.199694, 0.199694",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060037",\
+ "0.113990, 0.113990, 0.113990, 0.113990, 0.113990",\
+ "0.199694, 0.199694, 0.199694, 0.199694, 0.199694",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060037",\
+ "0.113990, 0.113990, 0.113990, 0.113990, 0.113990",\
+ "0.199694, 0.199694, 0.199694, 0.199694, 0.199694",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2677*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.619374, 0.887475, 1.180133, 1.686418, 2.698987",\
+ "0.666474, 0.934595, 1.227354, 1.733911, 2.747024",\
+ "0.753747, 1.021925, 1.314971, 1.822307, 2.836977",\
+ "0.979596, 1.247862, 1.541350, 2.049887, 3.066961",\
+ "1.546840, 1.815220, 2.109287, 2.619390, 3.639598",\
+ "0.706782, 0.975064, 1.267816, 1.773132, 2.784921",\
+ "0.753882, 1.022185, 1.315038, 1.820625, 2.832958",\
+ "0.841156, 1.109515, 1.402658, 1.909021, 2.922911",\
+ "1.067004, 1.335453, 1.629041, 2.136601, 3.152895",\
+ "1.634248, 1.902812, 2.196982, 2.706105, 3.725532",\
+ "0.790149, 1.064125, 1.355782, 1.860753, 2.871876",\
+ "0.837250, 1.111246, 1.403004, 1.908246, 2.919913",\
+ "0.924524, 1.198577, 1.490623, 1.996642, 3.009866",\
+ "1.150375, 1.424515, 1.717007, 2.224223, 3.239850",\
+ "1.717623, 1.991877, 2.284948, 2.793726, 3.812487",\
+ "0.853818, 1.129875, 1.419928, 1.924667, 2.935385",\
+ "0.900919, 1.176996, 1.467150, 1.972159, 2.983422",\
+ "0.988195, 1.264329, 1.554770, 2.060555, 3.073375",\
+ "1.214048, 1.490269, 1.781153, 2.288136, 3.303359",\
+ "1.781297, 2.057633, 2.349094, 2.857639, 3.875996",\
+ "1.190374, 1.495641, 1.772172, 2.274166, 3.280841",\
+ "1.237478, 1.542768, 1.819397, 2.321660, 3.328878",\
+ "1.324760, 1.630116, 1.907025, 2.410059, 3.418831",\
+ "1.550623, 1.856080, 2.133420, 2.637645, 3.648815",\
+ "2.117886, 2.423474, 2.701378, 3.207154, 4.221452");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.053871, 0.053928, 0.055014, 0.058545, 0.065606",\
+ "0.173261, 0.173221, 0.173020, 0.172475, 0.171386",\
+ "0.375447, 0.375353, 0.374960, 0.373952, 0.371937",\
+ "0.885472, 0.885429, 0.885258, 0.884858, 0.884057",\
+ "2.163064, 2.163128, 2.163351, 2.163842, 2.164825",\
+ "0.053871, 0.053928, 0.055025, 0.058545, 0.065606",\
+ "0.173261, 0.173221, 0.173019, 0.172475, 0.171386",\
+ "0.375447, 0.375352, 0.374957, 0.373952, 0.371937",\
+ "0.885472, 0.885428, 0.885257, 0.884858, 0.884057",\
+ "2.163064, 2.163129, 2.163352, 2.163842, 2.164825",\
+ "0.053872, 0.053929, 0.055025, 0.058545, 0.065606",\
+ "0.173260, 0.173220, 0.173019, 0.172475, 0.171386",\
+ "0.375444, 0.375351, 0.374957, 0.373952, 0.371937",\
+ "0.885472, 0.885428, 0.885257, 0.884858, 0.884057",\
+ "2.163065, 2.163130, 2.163352, 2.163842, 2.164825",\
+ "0.053873, 0.053930, 0.055026, 0.058545, 0.065606",\
+ "0.173259, 0.173219, 0.173019, 0.172475, 0.171386",\
+ "0.375442, 0.375349, 0.374957, 0.373952, 0.371937",\
+ "0.885471, 0.885427, 0.885257, 0.884858, 0.884057",\
+ "2.163066, 2.163132, 2.163352, 2.163842, 2.164825",\
+ "0.053880, 0.053946, 0.055062, 0.058559, 0.065606",\
+ "0.173255, 0.173209, 0.173013, 0.172473, 0.171386",\
+ "0.375432, 0.375324, 0.374946, 0.373948, 0.371937",\
+ "0.885469, 0.885413, 0.885253, 0.884856, 0.884057",\
+ "2.163070, 2.163151, 2.163357, 2.163844, 2.164825");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.549769, 0.817593, 1.110465, 1.618513, 2.634607",\
+ "0.610729, 0.878819, 1.171421, 1.677554, 2.689819",\
+ "0.677494, 0.945792, 1.239448, 1.748438, 2.766419",\
+ "0.811699, 1.079980, 1.373547, 1.882297, 2.899797",\
+ "1.155145, 1.423320, 1.716351, 2.223647, 3.238237",\
+ "0.637177, 0.905181, 1.198154, 1.705227, 2.720541",\
+ "0.698137, 0.966409, 1.259104, 1.764268, 2.775753",\
+ "0.764902, 1.033383, 1.327140, 1.835153, 2.852353",\
+ "0.899107, 1.167571, 1.461238, 1.969011, 2.985731",\
+ "1.242554, 1.510911, 1.804038, 2.310361, 3.324171",\
+ "0.720537, 0.994237, 1.286120, 1.792848, 2.807496",\
+ "0.781504, 1.055469, 1.347070, 1.851890, 2.862708",\
+ "0.848274, 1.122447, 1.415106, 1.922774, 2.939308",\
+ "0.982479, 1.256634, 1.549204, 2.056633, 3.072686",\
+ "1.325922, 1.599972, 1.892004, 2.397983, 3.411126",\
+ "0.784201, 1.059981, 1.350266, 1.856762, 2.871005",\
+ "0.845173, 1.121219, 1.411216, 1.915803, 2.926217",\
+ "0.911947, 1.188202, 1.479252, 1.986687, 3.002817",\
+ "1.046151, 1.322389, 1.613351, 2.120546, 3.136195",\
+ "1.389593, 1.665724, 1.956150, 2.461896, 3.474635",\
+ "1.120725, 1.425673, 1.702529, 2.206268, 3.216461",\
+ "1.181728, 1.486982, 1.763459, 2.265301, 3.271673",\
+ "1.248526, 1.554021, 1.831524, 2.336198, 3.348273",\
+ "1.382729, 1.688203, 1.965620, 2.470056, 3.481651",\
+ "1.726158, 2.031510, 2.308404, 2.811399, 3.820091");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.071629, 0.072032, 0.074063, 0.079575, 0.090597",\
+ "0.129720, 0.130266, 0.133020, 0.140492, 0.155435",\
+ "0.214056, 0.214554, 0.217069, 0.223890, 0.237532",\
+ "0.447094, 0.447150, 0.447431, 0.448194, 0.449721",\
+ "1.100693, 1.100667, 1.100537, 1.100183, 1.099477",\
+ "0.071629, 0.072034, 0.074081, 0.079575, 0.090597",\
+ "0.129720, 0.130270, 0.133044, 0.140492, 0.155435",\
+ "0.214056, 0.214558, 0.217090, 0.223890, 0.237532",\
+ "0.447094, 0.447150, 0.447434, 0.448194, 0.449721",\
+ "1.100693, 1.100667, 1.100536, 1.100183, 1.099477",\
+ "0.071640, 0.072041, 0.074081, 0.079575, 0.090597",\
+ "0.129735, 0.130278, 0.133044, 0.140492, 0.155435",\
+ "0.214069, 0.214565, 0.217091, 0.223890, 0.237532",\
+ "0.447096, 0.447151, 0.447434, 0.448194, 0.449721",\
+ "1.100692, 1.100666, 1.100536, 1.100183, 1.099477",\
+ "0.071647, 0.072050, 0.074082, 0.079575, 0.090597",\
+ "0.129745, 0.130291, 0.133046, 0.140492, 0.155435",\
+ "0.214078, 0.214577, 0.217092, 0.223890, 0.237532",\
+ "0.447097, 0.447152, 0.447434, 0.448194, 0.449721",\
+ "1.100691, 1.100666, 1.100535, 1.100183, 1.099477",\
+ "0.071694, 0.072157, 0.074138, 0.079598, 0.090597",\
+ "0.129808, 0.130436, 0.133121, 0.140523, 0.155435",\
+ "0.214136, 0.214709, 0.217161, 0.223918, 0.237532",\
+ "0.447103, 0.447167, 0.447442, 0.448198, 0.449721",\
+ "1.100688, 1.100659, 1.100532, 1.100182, 1.099477");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2675*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.603037, 0.850281, 1.131477, 1.604469, 2.550452",\
+ "0.650138, 0.897409, 1.178701, 1.651927, 2.598380",\
+ "0.737413, 0.984763, 1.266326, 1.740225, 2.688022",\
+ "0.963264, 1.210735, 1.492718, 1.967654, 2.917526",\
+ "1.530512, 1.778140, 2.060669, 2.536958, 3.489536",\
+ "0.690439, 0.937872, 1.219053, 1.691182, 2.636385",\
+ "0.737540, 0.985001, 1.266277, 1.738640, 2.684314",\
+ "0.824816, 1.072355, 1.353904, 1.826938, 2.773956",\
+ "1.050667, 1.298328, 1.580299, 2.054367, 3.003459",\
+ "1.617915, 1.865734, 2.148256, 2.623672, 3.575470",\
+ "0.771264, 1.026907, 1.307016, 1.778803, 2.723340",\
+ "0.818366, 1.074036, 1.354240, 1.826261, 2.771269",\
+ "0.905641, 1.161391, 1.441867, 1.914558, 2.860911",\
+ "1.131493, 1.387366, 1.668262, 2.141988, 3.090415",\
+ "1.698741, 1.954774, 2.236218, 2.711293, 3.662425",\
+ "0.828931, 1.092619, 1.371156, 1.842715, 2.786849",\
+ "0.876032, 1.139748, 1.418380, 1.890174, 2.834778",\
+ "0.963308, 1.227105, 1.506008, 1.978471, 2.924420",\
+ "1.189160, 1.453082, 1.732403, 2.205900, 3.153924",\
+ "1.756409, 2.020493, 2.300359, 2.775205, 3.725934",\
+ "1.160146, 1.458017, 1.723059, 2.192071, 3.132305",\
+ "1.207253, 1.505153, 1.770286, 2.239531, 3.180234",\
+ "1.294543, 1.592528, 1.857920, 2.327831, 3.269876",\
+ "1.520419, 1.818533, 2.084326, 2.555264, 3.499380",\
+ "2.087698, 2.385982, 2.652296, 3.124575, 4.071390");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.053872, 0.053951, 0.054623, 0.056651, 0.060707",\
+ "0.173260, 0.173205, 0.173015, 0.172544, 0.171603",\
+ "0.375444, 0.375315, 0.374890, 0.373861, 0.371802",\
+ "0.885479, 0.885459, 0.885341, 0.885032, 0.884415",\
+ "2.163055, 2.163084, 2.163257, 2.163712, 2.164621",\
+ "0.053872, 0.053952, 0.054629, 0.056651, 0.060707",\
+ "0.173260, 0.173205, 0.173013, 0.172544, 0.171603",\
+ "0.375444, 0.375314, 0.374887, 0.373861, 0.371802",\
+ "0.885479, 0.885459, 0.885340, 0.885032, 0.884415",\
+ "2.163055, 2.163084, 2.163259, 2.163712, 2.164621",\
+ "0.053873, 0.053953, 0.054629, 0.056651, 0.060707",\
+ "0.173260, 0.173204, 0.173013, 0.172544, 0.171603",\
+ "0.375443, 0.375312, 0.374887, 0.373861, 0.371802",\
+ "0.885479, 0.885458, 0.885340, 0.885032, 0.884415",\
+ "2.163055, 2.163085, 2.163259, 2.163712, 2.164621",\
+ "0.053873, 0.053954, 0.054629, 0.056651, 0.060707",\
+ "0.173259, 0.173203, 0.173013, 0.172544, 0.171603",\
+ "0.375443, 0.375310, 0.374887, 0.373861, 0.371802",\
+ "0.885479, 0.885458, 0.885340, 0.885032, 0.884415",\
+ "2.163055, 2.163086, 2.163259, 2.163712, 2.164621",\
+ "0.053888, 0.053973, 0.054650, 0.056659, 0.060707",\
+ "0.173249, 0.173190, 0.173008, 0.172542, 0.171603",\
+ "0.375418, 0.375279, 0.374876, 0.373857, 0.371802",\
+ "0.885478, 0.885451, 0.885337, 0.885031, 0.884415",\
+ "2.163055, 2.163095, 2.163263, 2.163714, 2.164621");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.533423, 0.780287, 1.060158, 1.529873, 2.469302",\
+ "0.594392, 0.841621, 1.122764, 1.595624, 2.541345",\
+ "0.661163, 0.908679, 1.190820, 1.666147, 2.616802",\
+ "0.795368, 1.042860, 1.324916, 1.800036, 2.750276",\
+ "1.138811, 1.386156, 1.667706, 2.141570, 3.089298",\
+ "0.620825, 0.867875, 1.147723, 1.616586, 2.555236",\
+ "0.681794, 0.929212, 1.210339, 1.682338, 2.627278",\
+ "0.748566, 0.996272, 1.278403, 1.752861, 2.702736",\
+ "0.882770, 1.130452, 1.412499, 1.886750, 2.836210",\
+ "1.226213, 1.473748, 1.755284, 2.228283, 3.175232",\
+ "0.701650, 0.956905, 1.235686, 1.704207, 2.642191",\
+ "0.762619, 1.018247, 1.298302, 1.769958, 2.714233",\
+ "0.829392, 1.085311, 1.366366, 1.840481, 2.789691",\
+ "0.963596, 1.219491, 1.500462, 1.974370, 2.923165",\
+ "1.307039, 1.562785, 1.843247, 2.315904, 3.262187",\
+ "0.759315, 1.022609, 1.299826, 1.768119, 2.705700",\
+ "0.820286, 1.083958, 1.362442, 1.833871, 2.777742",\
+ "0.887059, 1.151028, 1.430506, 1.904394, 2.853200",\
+ "1.021263, 1.285207, 1.564602, 2.038283, 2.986674",\
+ "1.364706, 1.628498, 1.907387, 2.379816, 3.325696",\
+ "1.090457, 1.387917, 1.651696, 2.117462, 3.051156",\
+ "1.151498, 1.449352, 1.714345, 2.183227, 3.123199",\
+ "1.218327, 1.516490, 1.782434, 2.253760, 3.198656",\
+ "1.352526, 1.650664, 1.916528, 2.387648, 3.332130",\
+ "1.695940, 1.993920, 2.259300, 2.729176, 3.671152");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.071642, 0.072195, 0.074119, 0.078878, 0.088395",\
+ "0.129738, 0.130488, 0.133096, 0.139547, 0.152449",\
+ "0.214072, 0.214757, 0.217138, 0.223027, 0.234806",\
+ "0.447096, 0.447173, 0.447439, 0.448098, 0.449416",\
+ "1.100692, 1.100656, 1.100533, 1.100228, 1.099618",\
+ "0.071642, 0.072199, 0.074134, 0.078878, 0.088395",\
+ "0.129738, 0.130493, 0.133116, 0.139547, 0.152449",\
+ "0.214072, 0.214761, 0.217156, 0.223027, 0.234806",\
+ "0.447096, 0.447173, 0.447441, 0.448098, 0.449416",\
+ "1.100692, 1.100656, 1.100532, 1.100228, 1.099618",\
+ "0.071643, 0.072206, 0.074135, 0.078878, 0.088395",\
+ "0.129740, 0.130503, 0.133117, 0.139547, 0.152449",\
+ "0.214073, 0.214770, 0.217157, 0.223027, 0.234806",\
+ "0.447096, 0.447174, 0.447441, 0.448098, 0.449416",\
+ "1.100692, 1.100656, 1.100532, 1.100228, 1.099618",\
+ "0.071645, 0.072218, 0.074135, 0.078878, 0.088395",\
+ "0.129742, 0.130518, 0.133118, 0.139547, 0.152449",\
+ "0.214076, 0.214784, 0.217158, 0.223027, 0.234806",\
+ "0.447096, 0.447176, 0.447441, 0.448098, 0.449416",\
+ "1.100692, 1.100655, 1.100532, 1.100228, 1.099618",\
+ "0.071752, 0.072348, 0.074184, 0.078897, 0.088395",\
+ "0.129887, 0.130696, 0.133183, 0.139574, 0.152449",\
+ "0.214208, 0.214946, 0.217217, 0.223052, 0.234806",\
+ "0.447111, 0.447194, 0.447448, 0.448101, 0.449416",\
+ "1.100685, 1.100646, 1.100529, 1.100227, 1.099618");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2280*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.240088, 0.510351, 0.797290, 1.285614, 2.262263",\
+ "0.291602, 0.560872, 0.847259, 1.336249, 2.314227",\
+ "0.366122, 0.638120, 0.923420, 1.410996, 2.386150",\
+ "0.571697, 0.846754, 1.130217, 1.614147, 2.582006",\
+ "1.124964, 1.399896, 1.682080, 2.162757, 3.124112",\
+ "0.327497, 0.597936, 0.884917, 1.372329, 2.348197",\
+ "0.379011, 0.648452, 0.934889, 1.422963, 2.400161",\
+ "0.453531, 0.725696, 1.011044, 1.497711, 2.472083",\
+ "0.660133, 0.934325, 1.217830, 1.700861, 2.667939",\
+ "1.213404, 1.487464, 1.769683, 2.249471, 3.210046",\
+ "0.411710, 0.686989, 0.972882, 1.459950, 2.435152",\
+ "0.462735, 0.737494, 1.022853, 1.510585, 2.487116",\
+ "0.540482, 0.814729, 1.099009, 1.585332, 2.559038",\
+ "0.749582, 1.023346, 1.305795, 1.788483, 2.754894",\
+ "1.302860, 1.576480, 1.857647, 2.337093, 3.297001",\
+ "0.475438, 0.752729, 1.037025, 1.523864, 2.498661",\
+ "0.526464, 0.803218, 1.086996, 1.574498, 2.550625",\
+ "0.604208, 0.880438, 1.163152, 1.649246, 2.622547",\
+ "0.813313, 1.089039, 1.369937, 1.852396, 2.818403",\
+ "1.366598, 1.642166, 1.921789, 2.401006, 3.360510",\
+ "0.812369, 1.118362, 1.389087, 1.873289, 2.844117",\
+ "0.863397, 1.168668, 1.439066, 1.923926, 2.896081",\
+ "0.941125, 1.245720, 1.515207, 1.998668, 2.968004",\
+ "1.150264, 1.454128, 1.721955, 2.201803, 3.163859",\
+ "1.703596, 2.007172, 2.273774, 2.750400, 3.705966");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.247846, 0.302431, 0.404057, 0.594296, 0.974773",\
+ "0.313758, 0.345633, 0.434590, 0.626480, 1.010259",\
+ "0.435716, 0.458123, 0.529642, 0.703929, 1.052501",\
+ "0.888071, 0.889365, 0.917551, 1.014829, 1.209385",\
+ "2.165074, 2.165320, 2.171775, 2.192811, 2.234884",\
+ "0.247846, 0.302730, 0.404657, 0.594296, 0.974773",\
+ "0.313758, 0.345847, 0.435195, 0.626480, 1.010259",\
+ "0.435716, 0.458259, 0.530192, 0.703929, 1.052501",\
+ "0.888105, 0.889365, 0.917858, 1.014829, 1.209385",\
+ "2.165074, 2.165323, 2.171841, 2.192811, 2.234884",\
+ "0.250151, 0.303407, 0.404668, 0.594296, 0.974773",\
+ "0.314673, 0.346332, 0.435207, 0.626480, 1.010259",\
+ "0.436528, 0.458564, 0.530202, 0.703929, 1.052501",\
+ "0.888203, 0.889365, 0.917863, 1.014829, 1.209385",\
+ "2.165074, 2.165328, 2.171843, 2.192811, 2.234884",\
+ "0.251745, 0.304389, 0.404700, 0.594296, 0.974773",\
+ "0.315306, 0.347037, 0.435239, 0.626480, 1.010259",\
+ "0.437090, 0.459008, 0.530231, 0.703929, 1.052501",\
+ "0.888293, 0.889365, 0.917880, 1.014829, 1.209385",\
+ "2.165074, 2.165335, 2.171846, 2.192811, 2.234884",\
+ "0.261887, 0.315894, 0.406630, 0.595083, 0.974773",\
+ "0.319332, 0.355290, 0.437185, 0.627274, 1.010259",\
+ "0.440663, 0.464208, 0.531999, 0.704650, 1.052501",\
+ "0.888871, 0.889365, 0.918867, 1.015232, 1.209385",\
+ "2.165074, 2.165424, 2.172060, 2.192898, 2.234884");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.240635, 0.424668, 0.712248, 1.199722, 2.174669",\
+ "0.275706, 0.462604, 0.757879, 1.262184, 2.270793",\
+ "0.326245, 0.516372, 0.817019, 1.338091, 2.380235",\
+ "0.455748, 0.646142, 0.952035, 1.495042, 2.581054",\
+ "0.793588, 0.988001, 1.296787, 1.858775, 2.982751",\
+ "0.328044, 0.512258, 0.799873, 1.286436, 2.260602",\
+ "0.363115, 0.550213, 0.845556, 1.348898, 2.356727",\
+ "0.413654, 0.603984, 0.904750, 1.424805, 2.466169",\
+ "0.543157, 0.733746, 1.039835, 1.581756, 2.666988",\
+ "0.880997, 1.075589, 1.384646, 1.945489, 3.068685",\
+ "0.408911, 0.601324, 0.887837, 1.374058, 2.347558",\
+ "0.443982, 0.639320, 0.933522, 1.436520, 2.443682",\
+ "0.494519, 0.693099, 0.992716, 1.512427, 2.553124",\
+ "0.624023, 0.822845, 1.127803, 1.669378, 2.753943",\
+ "0.961862, 1.164649, 1.472615, 2.033111, 3.155640",\
+ "0.466595, 0.667083, 0.951980, 1.437971, 2.411067",\
+ "0.501666, 0.705138, 0.997668, 1.500433, 2.507191",\
+ "0.552202, 0.758927, 1.056865, 1.576340, 2.616633",\
+ "0.681705, 0.888650, 1.191955, 1.733291, 2.817452",\
+ "1.019543, 1.230399, 1.536770, 2.097024, 3.219149",\
+ "0.769432, 1.032936, 1.304034, 1.787393, 2.756523",\
+ "0.804503, 1.071688, 1.349892, 1.849925, 2.852647",\
+ "0.855021, 1.125605, 1.409260, 1.925902, 2.962089",\
+ "0.984519, 1.255053, 1.544572, 2.082943, 3.162908",\
+ "1.322350, 1.596157, 1.889580, 2.446754, 3.564605");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.078325, 0.113595, 0.189416, 0.342002, 0.647174",\
+ "0.120997, 0.134862, 0.194741, 0.345549, 0.647167",\
+ "0.210707, 0.216021, 0.258625, 0.388109, 0.647078",\
+ "0.448759, 0.449630, 0.471236, 0.541414, 0.681771",\
+ "1.101439, 1.102394, 1.113437, 1.151551, 1.227780",\
+ "0.078325, 0.113799, 0.189898, 0.342002, 0.647174",\
+ "0.120997, 0.134966, 0.195216, 0.345549, 0.647167",\
+ "0.210707, 0.216054, 0.259033, 0.388109, 0.647078",\
+ "0.448759, 0.449638, 0.471457, 0.541414, 0.681771",\
+ "1.101439, 1.102394, 1.113557, 1.151551, 1.227780",\
+ "0.078410, 0.114258, 0.189906, 0.342002, 0.647174",\
+ "0.121014, 0.135201, 0.195225, 0.345549, 0.647167",\
+ "0.210718, 0.216128, 0.259041, 0.388109, 0.647078",\
+ "0.448759, 0.449657, 0.471461, 0.541414, 0.681771",\
+ "1.101445, 1.102394, 1.113560, 1.151551, 1.227780",\
+ "0.078573, 0.114926, 0.189932, 0.342002, 0.647174",\
+ "0.121047, 0.135543, 0.195250, 0.345549, 0.647167",\
+ "0.210740, 0.216235, 0.259062, 0.388109, 0.647078",\
+ "0.448759, 0.449684, 0.471473, 0.541414, 0.681771",\
+ "1.101456, 1.102394, 1.113566, 1.151551, 1.227780",\
+ "0.080054, 0.122746, 0.191480, 0.342634, 0.647174",\
+ "0.121349, 0.139547, 0.196780, 0.346174, 0.647167",\
+ "0.210939, 0.217494, 0.260376, 0.388645, 0.647078",\
+ "0.448759, 0.449998, 0.472185, 0.541705, 0.681771",\
+ "1.101560, 1.102394, 1.113953, 1.151709, 1.227780");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2359*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.197425, 0.431841, 0.691115, 1.132558, 2.015443",\
+ "0.256864, 0.482200, 0.742850, 1.186401, 2.073503",\
+ "0.340685, 0.558516, 0.820189, 1.263949, 2.151470",\
+ "0.552702, 0.766228, 1.030335, 1.473577, 2.360062",\
+ "1.106653, 1.318570, 1.585965, 2.032625, 2.925946",\
+ "0.284828, 0.519347, 0.778592, 1.219271, 2.101377",\
+ "0.344267, 0.569712, 0.830334, 1.273115, 2.159437",\
+ "0.428088, 0.646034, 0.907673, 1.350662, 2.237404",\
+ "0.640105, 0.853764, 1.117818, 1.560291, 2.445995",\
+ "1.194056, 1.406120, 1.673459, 2.119339, 3.011880",\
+ "0.365631, 0.608197, 0.866553, 1.306892, 2.188332",\
+ "0.425081, 0.658572, 0.918295, 1.360735, 2.246392",\
+ "0.508910, 0.734909, 0.995634, 1.438283, 2.324359",\
+ "0.720937, 0.942676, 1.205779, 1.647911, 2.532950",\
+ "1.274892, 1.495066, 1.761420, 2.206959, 3.098835",\
+ "0.423252, 0.673639, 0.930688, 1.370805, 2.251841",\
+ "0.482725, 0.724031, 0.982430, 1.424648, 2.309901",\
+ "0.566569, 0.800388, 1.059769, 1.502196, 2.387868",\
+ "0.778616, 1.008210, 1.269914, 1.711824, 2.596459",\
+ "1.332580, 1.560649, 1.825555, 2.270872, 3.162344",\
+ "0.752151, 1.035876, 1.282272, 1.720031, 2.597297",\
+ "0.801570, 1.086457, 1.334035, 1.773883, 2.655357",\
+ "0.877150, 1.163054, 1.411376, 1.851432, 2.733324",\
+ "1.083205, 1.371523, 1.621516, 2.061058, 2.941916",\
+ "1.635753, 1.924533, 2.177192, 2.620120, 3.507800");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.177313, 0.213491, 0.303378, 0.457569, 0.765950",\
+ "0.250045, 0.279673, 0.356803, 0.520196, 0.846983",\
+ "0.414565, 0.415724, 0.459633, 0.603345, 0.890769",\
+ "0.887843, 0.887860, 0.923876, 1.046142, 1.290675",\
+ "2.163223, 2.163223, 2.177277, 2.225018, 2.320500",\
+ "0.177313, 0.213790, 0.303862, 0.457569, 0.765950",\
+ "0.250045, 0.279868, 0.357315, 0.520196, 0.846983",\
+ "0.414565, 0.415735, 0.460084, 0.603345, 0.890769",\
+ "0.887843, 0.887860, 0.924259, 1.046142, 1.290675",\
+ "2.163223, 2.163223, 2.177427, 2.225018, 2.320500",\
+ "0.177336, 0.214442, 0.303871, 0.457569, 0.765950",\
+ "0.250094, 0.280294, 0.357324, 0.520196, 0.846983",\
+ "0.414565, 0.415758, 0.460092, 0.603345, 0.890769",\
+ "0.887843, 0.887860, 0.924267, 1.046142, 1.290675",\
+ "2.163223, 2.163223, 2.177430, 2.225018, 2.320500",\
+ "0.177382, 0.215390, 0.303897, 0.457569, 0.765950",\
+ "0.250194, 0.280912, 0.357352, 0.520196, 0.846983",\
+ "0.414565, 0.415792, 0.460117, 0.603345, 0.890769",\
+ "0.887843, 0.887860, 0.924288, 1.046142, 1.290675",\
+ "2.163223, 2.163223, 2.177438, 2.225018, 2.320500",\
+ "0.179822, 0.226518, 0.305460, 0.458204, 0.765950",\
+ "0.255479, 0.288172, 0.359009, 0.520869, 0.846983",\
+ "0.414565, 0.416193, 0.461574, 0.603937, 0.890769",\
+ "0.887843, 0.887866, 0.925527, 1.046646, 1.290675",\
+ "2.163223, 2.163223, 2.177922, 2.225215, 2.320500");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.186404, 0.372214, 0.626375, 1.055893, 1.914929",\
+ "0.215796, 0.420104, 0.691914, 1.154775, 2.080498",\
+ "0.262340, 0.480772, 0.763179, 1.249218, 2.221297",\
+ "0.391105, 0.611507, 0.905161, 1.430325, 2.480653",\
+ "0.735355, 0.947201, 1.248974, 1.808736, 2.928262",\
+ "0.273807, 0.459710, 0.713814, 1.142606, 2.000863",\
+ "0.303199, 0.507653, 0.779458, 1.241489, 2.166432",\
+ "0.349742, 0.568345, 0.850795, 1.335931, 2.307231",\
+ "0.478508, 0.699079, 0.992901, 1.517038, 2.566586",\
+ "0.822757, 1.034759, 1.336822, 1.895450, 3.014196",\
+ "0.354668, 0.548536, 0.801774, 1.230227, 2.087818",\
+ "0.384060, 0.596593, 0.867420, 1.329109, 2.253387",\
+ "0.430602, 0.657342, 0.938759, 1.423552, 2.394186",\
+ "0.559360, 0.788071, 1.080866, 1.604659, 2.653542",\
+ "0.903600, 1.123721, 1.424789, 1.983071, 3.101151",\
+ "0.412406, 0.613944, 0.865907, 1.294139, 2.151327",\
+ "0.441797, 0.662169, 0.931558, 1.393022, 2.316896",\
+ "0.488337, 0.722997, 1.002901, 1.487465, 2.457695",\
+ "0.617079, 0.853721, 1.145016, 1.668572, 2.717051",\
+ "0.961302, 1.189327, 1.488945, 2.046983, 3.164660",\
+ "0.716048, 0.975780, 1.217370, 1.643317, 2.496783",\
+ "0.745435, 1.025964, 1.283359, 1.742337, 2.662352",\
+ "0.795621, 1.087736, 1.354937, 1.836875, 2.803151",\
+ "0.926531, 1.218392, 1.497448, 2.018143, 3.062507",\
+ "1.264602, 1.553481, 1.841728, 2.396697, 3.510116");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.071183, 0.106867, 0.175274, 0.296411, 0.538686",\
+ "0.120882, 0.144922, 0.213025, 0.350085, 0.624205",\
+ "0.200934, 0.210784, 0.256174, 0.378831, 0.624145",\
+ "0.444933, 0.444933, 0.478341, 0.591820, 0.818777",\
+ "1.101084, 1.102468, 1.122484, 1.190474, 1.326455",\
+ "0.071183, 0.107086, 0.175654, 0.296411, 0.538686",\
+ "0.120882, 0.145109, 0.213454, 0.350085, 0.624205",\
+ "0.200934, 0.210847, 0.256559, 0.378831, 0.624145",\
+ "0.444933, 0.444933, 0.478697, 0.591820, 0.818777",\
+ "1.101084, 1.102468, 1.122697, 1.190474, 1.326455",\
+ "0.071251, 0.107567, 0.175661, 0.296411, 0.538686",\
+ "0.120905, 0.145516, 0.213462, 0.350085, 0.624205",\
+ "0.200952, 0.210983, 0.256566, 0.378831, 0.624145",\
+ "0.444933, 0.444933, 0.478703, 0.591820, 0.818777",\
+ "1.101092, 1.102468, 1.122701, 1.190474, 1.326455",\
+ "0.071390, 0.108264, 0.175682, 0.296411, 0.538686",\
+ "0.120951, 0.146107, 0.213486, 0.350085, 0.624205",\
+ "0.200988, 0.211181, 0.256587, 0.378831, 0.624145",\
+ "0.444933, 0.444933, 0.478723, 0.591820, 0.818777",\
+ "1.101108, 1.102468, 1.122713, 1.190474, 1.326455",\
+ "0.072681, 0.116454, 0.176910, 0.296910, 0.538686",\
+ "0.121377, 0.153048, 0.214875, 0.350649, 0.624205",\
+ "0.202909, 0.213502, 0.257831, 0.379336, 0.624145",\
+ "0.444933, 0.444933, 0.479873, 0.592287, 0.818777",\
+ "1.101257, 1.102468, 1.123402, 1.190754, 1.326455");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2411*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.553758, 0.808668, 1.064878, 1.505326, 2.386221",\
+ "0.599911, 0.854821, 1.111032, 1.551482, 2.432382",\
+ "0.684215, 0.939125, 1.195335, 1.635783, 2.516678",\
+ "0.905378, 1.160288, 1.416497, 1.856937, 2.737819",\
+ "1.466255, 1.721165, 1.977368, 2.417791, 3.298636",\
+ "0.641291, 0.896159, 1.152351, 1.592039, 2.472155",\
+ "0.687444, 0.942312, 1.198505, 1.638195, 2.518316",\
+ "0.771748, 1.026616, 1.282809, 1.722496, 2.602612",\
+ "0.992912, 1.247780, 1.503970, 1.943650, 2.823752",\
+ "1.553789, 1.808657, 2.064841, 2.504504, 3.384570",\
+ "0.730669, 0.984969, 1.240312, 1.679659, 2.559110",\
+ "0.776822, 1.031122, 1.286465, 1.725815, 2.605271",\
+ "0.861126, 1.115426, 1.370769, 1.810116, 2.689567",\
+ "1.082289, 1.336589, 1.591930, 2.031271, 2.910707",\
+ "1.643166, 1.897466, 2.152802, 2.592124, 3.471525",\
+ "0.794611, 1.050352, 1.304446, 1.743572, 2.622619",\
+ "0.840764, 1.096505, 1.350600, 1.789728, 2.668780",\
+ "0.925068, 1.180809, 1.434903, 1.874029, 2.753076",\
+ "1.146232, 1.401973, 1.656065, 2.095183, 2.974216",\
+ "1.707109, 1.962849, 2.216936, 2.656037, 3.535034",\
+ "1.132859, 1.411925, 1.656019, 2.092792, 2.968075",\
+ "1.179013, 1.458078, 1.702173, 2.138948, 3.014236",\
+ "1.263317, 1.542382, 1.786476, 2.223249, 3.098532",\
+ "1.484480, 1.763546, 2.007637, 2.444404, 3.319673",\
+ "2.045357, 2.324422, 2.568509, 3.005257, 3.880490");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.051937, 0.051937, 0.051947, 0.051981, 0.052048",\
+ "0.176967, 0.176967, 0.176984, 0.177041, 0.177156",\
+ "0.380998, 0.380998, 0.381005, 0.381032, 0.381085",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885971",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162330",\
+ "0.051937, 0.051937, 0.051947, 0.051981, 0.052048",\
+ "0.176967, 0.176967, 0.176984, 0.177041, 0.177156",\
+ "0.380998, 0.380998, 0.381006, 0.381032, 0.381085",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885971",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162330",\
+ "0.051937, 0.051937, 0.051947, 0.051981, 0.052048",\
+ "0.176967, 0.176967, 0.176984, 0.177041, 0.177156",\
+ "0.380998, 0.380998, 0.381006, 0.381032, 0.381085",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885971",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162330",\
+ "0.051937, 0.051937, 0.051947, 0.051981, 0.052048",\
+ "0.176967, 0.176967, 0.176984, 0.177041, 0.177156",\
+ "0.380998, 0.380998, 0.381006, 0.381032, 0.381085",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885971",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162330",\
+ "0.051937, 0.051937, 0.051947, 0.051981, 0.052048",\
+ "0.176967, 0.176967, 0.176985, 0.177042, 0.177156",\
+ "0.380998, 0.380998, 0.381006, 0.381032, 0.381085",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885971",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162330");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.540267, 0.795177, 1.050726, 1.488938, 2.365363",\
+ "0.562618, 0.817528, 1.073077, 1.511289, 2.387713",\
+ "0.603939, 0.858848, 1.114838, 1.554540, 2.433944",\
+ "0.736907, 0.991817, 1.248027, 1.688475, 2.569372",\
+ "1.086012, 1.340922, 1.597135, 2.037591, 2.918504",\
+ "0.627801, 0.882669, 1.138192, 1.575651, 2.451297",\
+ "0.650152, 0.905020, 1.160543, 1.598002, 2.473647",\
+ "0.691472, 0.946340, 1.202309, 1.641253, 2.519878",\
+ "0.824440, 1.079308, 1.335500, 1.775188, 2.655306",\
+ "1.173546, 1.428414, 1.684608, 2.124305, 3.004438",\
+ "0.717178, 0.971478, 1.226152, 1.663272, 2.538252",\
+ "0.739529, 0.993829, 1.248503, 1.685622, 2.560602",\
+ "0.780849, 1.035149, 1.290269, 1.728874, 2.606833",\
+ "0.913818, 1.168118, 1.423461, 1.862809, 2.742261",\
+ "1.262923, 1.517223, 1.772569, 2.211925, 3.091393",\
+ "0.781121, 1.036862, 1.290286, 1.727184, 2.601761",\
+ "0.803471, 1.059212, 1.312637, 1.749535, 2.624111",\
+ "0.844792, 1.100533, 1.354404, 1.792786, 2.670342",\
+ "0.977760, 1.233501, 1.487595, 1.926721, 2.805770",\
+ "1.326866, 1.582607, 1.836703, 2.275837, 3.154902",\
+ "1.119369, 1.398434, 1.641836, 2.076395, 2.947217",\
+ "1.141720, 1.420785, 1.664187, 2.098746, 2.969567",\
+ "1.183040, 1.462106, 1.705969, 2.142004, 3.015798",\
+ "1.316008, 1.595074, 1.839168, 2.275942, 3.151226",\
+ "1.665114, 1.944180, 2.188276, 2.625058, 3.500358");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.048201, 0.048201, 0.048170, 0.048066, 0.047859",\
+ "0.098620, 0.098620, 0.098587, 0.098478, 0.098260",\
+ "0.188783, 0.188783, 0.188784, 0.188790, 0.188801",\
+ "0.444126, 0.444126, 0.444125, 0.444121, 0.444113",\
+ "1.101816, 1.101816, 1.101814, 1.101807, 1.101794",\
+ "0.048201, 0.048201, 0.048170, 0.048066, 0.047859",\
+ "0.098620, 0.098620, 0.098587, 0.098478, 0.098260",\
+ "0.188783, 0.188783, 0.188784, 0.188790, 0.188801",\
+ "0.444126, 0.444126, 0.444125, 0.444121, 0.444113",\
+ "1.101816, 1.101816, 1.101814, 1.101807, 1.101794",\
+ "0.048201, 0.048201, 0.048170, 0.048066, 0.047859",\
+ "0.098620, 0.098620, 0.098587, 0.098478, 0.098260",\
+ "0.188783, 0.188783, 0.188784, 0.188790, 0.188801",\
+ "0.444126, 0.444126, 0.444125, 0.444121, 0.444113",\
+ "1.101816, 1.101816, 1.101814, 1.101807, 1.101794",\
+ "0.048201, 0.048201, 0.048170, 0.048066, 0.047859",\
+ "0.098620, 0.098620, 0.098587, 0.098478, 0.098260",\
+ "0.188783, 0.188783, 0.188784, 0.188790, 0.188801",\
+ "0.444126, 0.444126, 0.444125, 0.444121, 0.444113",\
+ "1.101816, 1.101816, 1.101814, 1.101807, 1.101794",\
+ "0.048201, 0.048201, 0.048169, 0.048066, 0.047859",\
+ "0.098620, 0.098620, 0.098586, 0.098478, 0.098260",\
+ "0.188783, 0.188783, 0.188784, 0.188790, 0.188801",\
+ "0.444126, 0.444126, 0.444125, 0.444121, 0.444113",\
+ "1.101816, 1.101816, 1.101814, 1.101807, 1.101794");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2563*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.525875, 0.768087, 1.036195, 1.520933, 2.490408",\
+ "0.572028, 0.814241, 1.082351, 1.567096, 2.536584",\
+ "0.656332, 0.898544, 1.166652, 1.651390, 2.620866",\
+ "0.877495, 1.119706, 1.387806, 1.872524, 2.841960",\
+ "1.438372, 1.680579, 1.948659, 2.433326, 3.402659",\
+ "0.613284, 0.855558, 1.123811, 1.607647, 2.576342",\
+ "0.659437, 0.901712, 1.169967, 1.653810, 2.622518",\
+ "0.743741, 0.986015, 1.254268, 1.738104, 2.706800",\
+ "0.964904, 1.207177, 1.475422, 1.959238, 2.927894",\
+ "1.525780, 1.768050, 2.036275, 2.520041, 3.488593",\
+ "0.694098, 0.944352, 1.211775, 1.695269, 2.663297",\
+ "0.740251, 0.990506, 1.257931, 1.741431, 2.709473",\
+ "0.824555, 1.074809, 1.342232, 1.825726, 2.793755",\
+ "1.045718, 1.295971, 1.563386, 2.046860, 3.014849",\
+ "1.606595, 1.856844, 2.124239, 2.607662, 3.575548",\
+ "0.752011, 1.009716, 1.275917, 1.759182, 2.726806",\
+ "0.798164, 1.055869, 1.322073, 1.805345, 2.772982",\
+ "0.882468, 1.140173, 1.406374, 1.889639, 2.857264",\
+ "1.103631, 1.361335, 1.627528, 2.110773, 3.078358",\
+ "1.664508, 1.922208, 2.188382, 2.671575, 3.639057",\
+ "1.085549, 1.370949, 1.627944, 2.108593, 3.072262",\
+ "1.131702, 1.417103, 1.674100, 2.154755, 3.118438",\
+ "1.216006, 1.501406, 1.758401, 2.239050, 3.202720",\
+ "1.437170, 1.722567, 1.979555, 2.460184, 3.423814",\
+ "1.998046, 2.283439, 2.540407, 3.020985, 3.984513");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.051938, 0.051944, 0.051982, 0.052078, 0.052272",\
+ "0.176969, 0.176980, 0.177043, 0.177207, 0.177534",\
+ "0.380998, 0.381003, 0.381033, 0.381108, 0.381260",\
+ "0.885971, 0.885971, 0.885971, 0.885974, 0.885979",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051938, 0.051944, 0.051982, 0.052078, 0.052272",\
+ "0.176969, 0.176980, 0.177044, 0.177207, 0.177534",\
+ "0.380998, 0.381004, 0.381033, 0.381108, 0.381260",\
+ "0.885971, 0.885971, 0.885971, 0.885974, 0.885979",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051938, 0.051945, 0.051982, 0.052078, 0.052272",\
+ "0.176969, 0.176980, 0.177044, 0.177207, 0.177534",\
+ "0.380998, 0.381004, 0.381033, 0.381108, 0.381260",\
+ "0.885971, 0.885971, 0.885971, 0.885974, 0.885979",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051938, 0.051945, 0.051982, 0.052078, 0.052272",\
+ "0.176969, 0.176981, 0.177044, 0.177207, 0.177534",\
+ "0.380998, 0.381004, 0.381033, 0.381108, 0.381260",\
+ "0.885971, 0.885971, 0.885971, 0.885974, 0.885979",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051938, 0.051947, 0.051983, 0.052079, 0.052272",\
+ "0.176969, 0.176984, 0.177045, 0.177208, 0.177534",\
+ "0.380998, 0.381006, 0.381034, 0.381109, 0.381260",\
+ "0.885971, 0.885971, 0.885972, 0.885974, 0.885979",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.512519, 0.754762, 1.019445, 1.492217, 2.437761",\
+ "0.534869, 0.777112, 1.043739, 1.523217, 2.482171",\
+ "0.576190, 0.818433, 1.086345, 1.570253, 2.538069",\
+ "0.709024, 0.951236, 1.219345, 1.704084, 2.673563",\
+ "1.058130, 1.300344, 1.568461, 2.053223, 3.022748",\
+ "0.599927, 0.842233, 1.107023, 1.578931, 2.523695",\
+ "0.622278, 0.864583, 1.131338, 1.609931, 2.568105",\
+ "0.663599, 0.905904, 1.173958, 1.656967, 2.624003",\
+ "0.796432, 1.038707, 1.306960, 1.790798, 2.759497",\
+ "1.145538, 1.387814, 1.656077, 2.139938, 3.108682",\
+ "0.680742, 0.931028, 1.194987, 1.666553, 2.610650",\
+ "0.703093, 0.953378, 1.219303, 1.697553, 2.655060",\
+ "0.744413, 0.994699, 1.261922, 1.744589, 2.710958",\
+ "0.877247, 1.127501, 1.394925, 1.878420, 2.846452",\
+ "1.226353, 1.476609, 1.744041, 2.227559, 3.195637",\
+ "0.738655, 0.996392, 1.259127, 1.730466, 2.674159",\
+ "0.761006, 1.018743, 1.283444, 1.761466, 2.718569",\
+ "0.802326, 1.060063, 1.326064, 1.808502, 2.774467",\
+ "0.935160, 1.192865, 1.459067, 1.942333, 2.909961",\
+ "1.284266, 1.541972, 1.808183, 2.291472, 3.259146",\
+ "1.072193, 1.357636, 1.611032, 2.079827, 3.019615",\
+ "1.094544, 1.379987, 1.635417, 2.110855, 3.064025",\
+ "1.135864, 1.421307, 1.678082, 2.157909, 3.119923",\
+ "1.268698, 1.554098, 1.811093, 2.291744, 3.255417",\
+ "1.617804, 1.903206, 2.160210, 2.640883, 3.604602");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.048198, 0.048178, 0.048063, 0.047766, 0.047172",\
+ "0.098616, 0.098596, 0.098475, 0.098162, 0.097537",\
+ "0.188783, 0.188784, 0.188790, 0.188806, 0.188837",\
+ "0.444126, 0.444125, 0.444121, 0.444109, 0.444085",\
+ "1.101815, 1.101814, 1.101807, 1.101788, 1.101750",\
+ "0.048198, 0.048178, 0.048062, 0.047766, 0.047172",\
+ "0.098616, 0.098596, 0.098474, 0.098162, 0.097537",\
+ "0.188783, 0.188784, 0.188790, 0.188806, 0.188837",\
+ "0.444126, 0.444125, 0.444121, 0.444109, 0.444085",\
+ "1.101815, 1.101814, 1.101807, 1.101788, 1.101750",\
+ "0.048198, 0.048177, 0.048062, 0.047766, 0.047172",\
+ "0.098616, 0.098595, 0.098474, 0.098162, 0.097537",\
+ "0.188783, 0.188784, 0.188790, 0.188806, 0.188837",\
+ "0.444126, 0.444125, 0.444121, 0.444109, 0.444085",\
+ "1.101815, 1.101814, 1.101807, 1.101788, 1.101750",\
+ "0.048198, 0.048177, 0.048062, 0.047766, 0.047172",\
+ "0.098616, 0.098594, 0.098474, 0.098162, 0.097537",\
+ "0.188783, 0.188784, 0.188790, 0.188806, 0.188837",\
+ "0.444126, 0.444125, 0.444121, 0.444109, 0.444085",\
+ "1.101815, 1.101814, 1.101807, 1.101788, 1.101750",\
+ "0.048198, 0.048170, 0.048059, 0.047765, 0.047172",\
+ "0.098616, 0.098587, 0.098471, 0.098161, 0.097537",\
+ "0.188783, 0.188784, 0.188790, 0.188806, 0.188837",\
+ "0.444126, 0.444125, 0.444121, 0.444109, 0.444085",\
+ "1.101815, 1.101814, 1.101807, 1.101788, 1.101750");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.659689, 0.901731, 1.166165, 1.640730, 2.589860",\
+ "0.706217, 0.948259, 1.212695, 1.687267, 2.636411",\
+ "0.791853, 1.033895, 1.298337, 1.772929, 2.722115",\
+ "1.015175, 1.257217, 1.521667, 1.996292, 2.945540",\
+ "1.579124, 1.821166, 2.085628, 2.560294, 3.509625",\
+ "0.747090, 0.989208, 1.253745, 1.727443, 2.675794",\
+ "0.793618, 1.035736, 1.300275, 1.773980, 2.722345",\
+ "0.879254, 1.121372, 1.385917, 1.859643, 2.808049",\
+ "1.102576, 1.344694, 1.609248, 2.083005, 3.031474",\
+ "1.666525, 1.908643, 2.173209, 2.647007, 3.595559",\
+ "0.827897, 1.077990, 1.341708, 1.815064, 2.762749",\
+ "0.874425, 1.124518, 1.388238, 1.861601, 2.809300",\
+ "0.960061, 1.210154, 1.473880, 1.947263, 2.895004",\
+ "1.183383, 1.433476, 1.697210, 2.170625, 3.118429",\
+ "1.747332, 1.997425, 2.261171, 2.734627, 3.682514",\
+ "0.888137, 1.143334, 1.405848, 1.878976, 2.826258",\
+ "0.934665, 1.189862, 1.452378, 1.925513, 2.872809",\
+ "1.020301, 1.275498, 1.538020, 2.011176, 2.958513",\
+ "1.243623, 1.498820, 1.761351, 2.234538, 3.181938",\
+ "1.807572, 2.062769, 2.325312, 2.798540, 3.746023",\
+ "1.226031, 1.504429, 1.757767, 2.228338, 3.171714",\
+ "1.272558, 1.550957, 1.804297, 2.274875, 3.218265",\
+ "1.358195, 1.636593, 1.889939, 2.360538, 3.303969",\
+ "1.581517, 1.859915, 2.113271, 2.583900, 3.527394",\
+ "2.145466, 2.423864, 2.677232, 3.147902, 4.091479");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.052222, 0.052222, 0.052228, 0.052249, 0.052290",\
+ "0.174407, 0.174407, 0.174407, 0.174407, 0.174407",\
+ "0.378141, 0.378141, 0.378141, 0.378141, 0.378141",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163011, 2.163015, 2.163025, 2.163045",\
+ "0.052222, 0.052222, 0.052228, 0.052249, 0.052290",\
+ "0.174407, 0.174407, 0.174407, 0.174407, 0.174407",\
+ "0.378141, 0.378141, 0.378141, 0.378141, 0.378141",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163011, 2.163015, 2.163025, 2.163045",\
+ "0.052222, 0.052222, 0.052228, 0.052249, 0.052290",\
+ "0.174407, 0.174407, 0.174407, 0.174407, 0.174407",\
+ "0.378141, 0.378141, 0.378141, 0.378141, 0.378141",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163011, 2.163015, 2.163025, 2.163045",\
+ "0.052222, 0.052222, 0.052228, 0.052249, 0.052290",\
+ "0.174407, 0.174407, 0.174407, 0.174407, 0.174407",\
+ "0.378141, 0.378141, 0.378141, 0.378141, 0.378141",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163011, 2.163015, 2.163025, 2.163045",\
+ "0.052222, 0.052222, 0.052229, 0.052249, 0.052290",\
+ "0.174407, 0.174407, 0.174407, 0.174407, 0.174407",\
+ "0.378141, 0.378141, 0.378141, 0.378141, 0.378141",\
+ "0.885509, 0.885509, 0.885509, 0.885509, 0.885509",\
+ "2.163010, 2.163011, 2.163015, 2.163025, 2.163045");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.598065, 0.840108, 1.104513, 1.578978, 2.527908",\
+ "0.651364, 0.893406, 1.157839, 1.632400, 2.581522",\
+ "0.712119, 0.954162, 1.218616, 1.693252, 2.642524",\
+ "0.846830, 1.088872, 1.353324, 1.827954, 2.777214",\
+ "1.193335, 1.435377, 1.699819, 2.174410, 3.123593",\
+ "0.685466, 0.927585, 1.192093, 1.665691, 2.613842",\
+ "0.738765, 0.980883, 1.245419, 1.719113, 2.667456",\
+ "0.799521, 1.041639, 1.306196, 1.779965, 2.728458",\
+ "0.934231, 1.176349, 1.440905, 1.914667, 2.863148",\
+ "1.280736, 1.522854, 1.787399, 2.261123, 3.209527",\
+ "0.766273, 1.016367, 1.280056, 1.753312, 2.700797",\
+ "0.819572, 1.069665, 1.333382, 1.806733, 2.754411",\
+ "0.880328, 1.130420, 1.394158, 1.867585, 2.815413",\
+ "1.015038, 1.265131, 1.528867, 2.002288, 2.950103",\
+ "1.361543, 1.611636, 1.875361, 2.348744, 3.296482",\
+ "0.826513, 1.081711, 1.344196, 1.817225, 2.764306",\
+ "0.879812, 1.135009, 1.397522, 1.870646, 2.817920",\
+ "0.940568, 1.195765, 1.458299, 1.931498, 2.878922",\
+ "1.075278, 1.330475, 1.593008, 2.066200, 3.013612",\
+ "1.421783, 1.676980, 1.939502, 2.412656, 3.359991",\
+ "1.164407, 1.442806, 1.696114, 2.166586, 3.109762",\
+ "1.217705, 1.496104, 1.749441, 2.220008, 3.163376",\
+ "1.278461, 1.556859, 1.810219, 2.280860, 3.224378",\
+ "1.413172, 1.691570, 1.944927, 2.415563, 3.359068",\
+ "1.759677, 2.038075, 2.291421, 2.762018, 3.705447");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.060051, 0.060051, 0.060093, 0.060235, 0.060520",\
+ "0.114009, 0.114009, 0.114066, 0.114262, 0.114654",\
+ "0.199711, 0.199711, 0.199764, 0.199943, 0.200301",\
+ "0.445489, 0.445489, 0.445495, 0.445515, 0.445555",\
+ "1.101435, 1.101435, 1.101435, 1.101435, 1.101435",\
+ "0.060051, 0.060051, 0.060094, 0.060235, 0.060520",\
+ "0.114009, 0.114009, 0.114067, 0.114262, 0.114654",\
+ "0.199711, 0.199711, 0.199765, 0.199943, 0.200301",\
+ "0.445489, 0.445489, 0.445495, 0.445515, 0.445555",\
+ "1.101435, 1.101435, 1.101435, 1.101435, 1.101435",\
+ "0.060051, 0.060051, 0.060094, 0.060235, 0.060520",\
+ "0.114009, 0.114009, 0.114067, 0.114262, 0.114654",\
+ "0.199711, 0.199711, 0.199765, 0.199943, 0.200301",\
+ "0.445489, 0.445489, 0.445495, 0.445515, 0.445555",\
+ "1.101435, 1.101435, 1.101435, 1.101435, 1.101435",\
+ "0.060051, 0.060051, 0.060094, 0.060235, 0.060520",\
+ "0.114009, 0.114009, 0.114067, 0.114262, 0.114654",\
+ "0.199711, 0.199711, 0.199765, 0.199943, 0.200301",\
+ "0.445489, 0.445489, 0.445495, 0.445515, 0.445555",\
+ "1.101435, 1.101435, 1.101435, 1.101435, 1.101435",\
+ "0.060051, 0.060051, 0.060095, 0.060236, 0.060520",\
+ "0.114009, 0.114009, 0.114069, 0.114263, 0.114654",\
+ "0.199711, 0.199711, 0.199767, 0.199944, 0.200301",\
+ "0.445489, 0.445489, 0.445496, 0.445515, 0.445555",\
+ "1.101435, 1.101435, 1.101435, 1.101435, 1.101435");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2315*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.689570, 0.955359, 1.243359, 1.733584, 2.714034",\
+ "0.735723, 1.001512, 1.289513, 1.779738, 2.760189",\
+ "0.820027, 1.085816, 1.373816, 1.864041, 2.844491",\
+ "1.041190, 1.306978, 1.594979, 2.085202, 3.065649",\
+ "1.602065, 1.867854, 2.155853, 2.646073, 3.626513",\
+ "0.776981, 1.042942, 1.330993, 1.820299, 2.799968",\
+ "0.823135, 1.089095, 1.377147, 1.866453, 2.846122",\
+ "0.907439, 1.173399, 1.461450, 1.950756, 2.930425",\
+ "1.128601, 1.394562, 1.682613, 2.171917, 3.151583",\
+ "1.689477, 1.955437, 2.243487, 2.732788, 3.712447",\
+ "0.857898, 1.132003, 1.418959, 1.907921, 2.886923",\
+ "0.904051, 1.178156, 1.465112, 1.954075, 2.933077",\
+ "0.988355, 1.262460, 1.549416, 2.038378, 3.017380",\
+ "1.209518, 1.483622, 1.770578, 2.259539, 3.238538",\
+ "1.770393, 2.044498, 2.331453, 2.820410, 3.799402",\
+ "0.918904, 1.197754, 1.483102, 1.971834, 2.950432",\
+ "0.965057, 1.243907, 1.529255, 2.017988, 2.996586",\
+ "1.049361, 1.328211, 1.613559, 2.102291, 3.080889",\
+ "1.270524, 1.549374, 1.834721, 2.323452, 3.302047",\
+ "1.831399, 2.110249, 2.395596, 2.884323, 3.862911",\
+ "1.254896, 1.563490, 1.835185, 2.321270, 3.295888",\
+ "1.301049, 1.609643, 1.881339, 2.367424, 3.342042",\
+ "1.385353, 1.693947, 1.965642, 2.451727, 3.426345",\
+ "1.606516, 1.915110, 2.186805, 2.672888, 3.647503",\
+ "2.167391, 2.475986, 2.747679, 3.233759, 4.208367");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.051940, 0.051940, 0.051942, 0.051949, 0.051962",\
+ "0.176972, 0.176972, 0.176976, 0.176987, 0.177010",\
+ "0.381000, 0.381000, 0.381002, 0.381007, 0.381017",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051942, 0.051949, 0.051962",\
+ "0.176972, 0.176972, 0.176976, 0.176987, 0.177010",\
+ "0.381000, 0.381000, 0.381002, 0.381007, 0.381017",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051942, 0.051949, 0.051962",\
+ "0.176972, 0.176972, 0.176976, 0.176987, 0.177010",\
+ "0.381000, 0.381000, 0.381002, 0.381007, 0.381017",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051942, 0.051949, 0.051962",\
+ "0.176972, 0.176972, 0.176976, 0.176987, 0.177010",\
+ "0.381000, 0.381000, 0.381002, 0.381007, 0.381017",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051942, 0.051949, 0.051962",\
+ "0.176972, 0.176972, 0.176976, 0.176987, 0.177010",\
+ "0.381000, 0.381000, 0.381002, 0.381007, 0.381017",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.676230, 0.942019, 1.230037, 1.720324, 2.700896",\
+ "0.698581, 0.964369, 1.252388, 1.742674, 2.723247",\
+ "0.739901, 1.005690, 1.293708, 1.783995, 2.764567",\
+ "0.872719, 1.138507, 1.426508, 1.916733, 2.897183",\
+ "1.221825, 1.487614, 1.775615, 2.265841, 3.246295",\
+ "0.763642, 1.029602, 1.317671, 1.807038, 2.786830",\
+ "0.785992, 1.051952, 1.340022, 1.829389, 2.809181",\
+ "0.827313, 1.093273, 1.381342, 1.870709, 2.850501",\
+ "0.960130, 1.226091, 1.514142, 2.003448, 2.983117",\
+ "1.309237, 1.575197, 1.863249, 2.352556, 3.332229",\
+ "0.844558, 1.118663, 1.405637, 1.894660, 2.873785",\
+ "0.866909, 1.141013, 1.427987, 1.917011, 2.896136",\
+ "0.908229, 1.182334, 1.469308, 1.958331, 2.937456",\
+ "1.041047, 1.315151, 1.602108, 2.091070, 3.070072",\
+ "1.390153, 1.664258, 1.951214, 2.440178, 3.419184",\
+ "0.905564, 1.184414, 1.469780, 1.958574, 2.937294",\
+ "0.927915, 1.206764, 1.492131, 1.980924, 2.959645",\
+ "0.969235, 1.248085, 1.533451, 2.022245, 3.000965",\
+ "1.102053, 1.380903, 1.666251, 2.154983, 3.133581",\
+ "1.451159, 1.730009, 2.015357, 2.504092, 3.482693",\
+ "1.241556, 1.550150, 1.821864, 2.308010, 3.282750",\
+ "1.263907, 1.572501, 1.844214, 2.330360, 3.305101",\
+ "1.305227, 1.613822, 1.885535, 2.371680, 3.346421",\
+ "1.438045, 1.746639, 2.018334, 2.504419, 3.479037",\
+ "1.787151, 2.095746, 2.367441, 2.853527, 3.828149");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.048192, 0.048192, 0.048186, 0.048165, 0.048124",\
+ "0.098610, 0.098610, 0.098604, 0.098582, 0.098538",\
+ "0.188783, 0.188783, 0.188784, 0.188785, 0.188787",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444123",\
+ "1.101815, 1.101815, 1.101815, 1.101813, 1.101811",\
+ "0.048192, 0.048192, 0.048186, 0.048165, 0.048124",\
+ "0.098610, 0.098610, 0.098604, 0.098582, 0.098538",\
+ "0.188783, 0.188783, 0.188784, 0.188785, 0.188787",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444123",\
+ "1.101815, 1.101815, 1.101815, 1.101813, 1.101811",\
+ "0.048192, 0.048192, 0.048186, 0.048165, 0.048124",\
+ "0.098610, 0.098610, 0.098604, 0.098582, 0.098538",\
+ "0.188783, 0.188783, 0.188784, 0.188785, 0.188787",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444123",\
+ "1.101815, 1.101815, 1.101815, 1.101813, 1.101811",\
+ "0.048192, 0.048192, 0.048186, 0.048165, 0.048124",\
+ "0.098610, 0.098610, 0.098604, 0.098582, 0.098538",\
+ "0.188783, 0.188783, 0.188784, 0.188785, 0.188787",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444123",\
+ "1.101815, 1.101815, 1.101815, 1.101813, 1.101811",\
+ "0.048192, 0.048192, 0.048185, 0.048165, 0.048124",\
+ "0.098610, 0.098610, 0.098604, 0.098582, 0.098538",\
+ "0.188783, 0.188783, 0.188784, 0.188785, 0.188787",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444123",\
+ "1.101815, 1.101815, 1.101815, 1.101813, 1.101811");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2360*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.664659, 0.924878, 1.203873, 1.666613, 2.592093",\
+ "0.710813, 0.971031, 1.250026, 1.712767, 2.638247",\
+ "0.795116, 1.055335, 1.334330, 1.797070, 2.722549",\
+ "1.016279, 1.276498, 1.555493, 2.018232, 2.943710",\
+ "1.577155, 1.837373, 2.116368, 2.579105, 3.504579",\
+ "0.752069, 1.012459, 1.291420, 1.753327, 2.678026",\
+ "0.798222, 1.058612, 1.337573, 1.799481, 2.724180",\
+ "0.882526, 1.142916, 1.421877, 1.883784, 2.808483",\
+ "1.103689, 1.364079, 1.643039, 2.104946, 3.029644",\
+ "1.664564, 1.924954, 2.203914, 2.665819, 3.590512",\
+ "0.832929, 1.101504, 1.379383, 1.840949, 2.764981",\
+ "0.879082, 1.147657, 1.425536, 1.887103, 2.811135",\
+ "0.963386, 1.231961, 1.509840, 1.971406, 2.895438",\
+ "1.184549, 1.453124, 1.731003, 2.192568, 3.116599",\
+ "1.745424, 2.013999, 2.291878, 2.753441, 3.677467",\
+ "0.893718, 1.167232, 1.443522, 1.904862, 2.828490",\
+ "0.939871, 1.213386, 1.489675, 1.951016, 2.874644",\
+ "1.024175, 1.297689, 1.573979, 2.035319, 2.958947",\
+ "1.245338, 1.518852, 1.795141, 2.256481, 3.180108",\
+ "1.806213, 2.079728, 2.356016, 2.817354, 3.740976",\
+ "1.228556, 1.532729, 1.795325, 2.254182, 3.173946",\
+ "1.274709, 1.578882, 1.841479, 2.300336, 3.220100",\
+ "1.359013, 1.663186, 1.925782, 2.384639, 3.304403",\
+ "1.580175, 1.884349, 2.146945, 2.605801, 3.525564",\
+ "2.141051, 2.445224, 2.707820, 3.166674, 4.086432");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.051940, 0.051940, 0.051941, 0.051945, 0.051952",\
+ "0.176973, 0.176973, 0.176974, 0.176981, 0.176994",\
+ "0.381000, 0.381000, 0.381001, 0.381004, 0.381010",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051941, 0.051945, 0.051952",\
+ "0.176973, 0.176973, 0.176974, 0.176981, 0.176994",\
+ "0.381000, 0.381000, 0.381001, 0.381004, 0.381010",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051941, 0.051945, 0.051952",\
+ "0.176973, 0.176973, 0.176974, 0.176981, 0.176994",\
+ "0.381000, 0.381000, 0.381001, 0.381004, 0.381010",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051941, 0.051945, 0.051952",\
+ "0.176973, 0.176973, 0.176974, 0.176981, 0.176994",\
+ "0.381000, 0.381000, 0.381001, 0.381004, 0.381010",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330",\
+ "0.051940, 0.051940, 0.051941, 0.051945, 0.051952",\
+ "0.176973, 0.176973, 0.176974, 0.176981, 0.176994",\
+ "0.381000, 0.381000, 0.381001, 0.381004, 0.381010",\
+ "0.885971, 0.885971, 0.885971, 0.885971, 0.885971",\
+ "2.162330, 2.162330, 2.162330, 2.162330, 2.162330");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.651319, 0.911538, 1.190542, 1.653312, 2.578852",\
+ "0.673670, 0.933888, 1.212892, 1.675662, 2.601202",\
+ "0.714990, 0.975209, 1.254213, 1.716983, 2.642523",\
+ "0.847808, 1.108027, 1.387022, 1.849762, 2.775242",\
+ "1.196915, 1.457133, 1.736129, 2.198870, 3.124351",\
+ "0.738728, 0.999118, 1.278088, 1.740026, 2.664785",\
+ "0.761079, 1.021469, 1.300439, 1.762377, 2.687136",\
+ "0.802400, 1.062789, 1.341759, 1.803697, 2.728456",\
+ "0.935218, 1.195608, 1.474569, 1.936476, 2.861175",\
+ "1.284324, 1.544714, 1.823675, 2.285584, 3.210285",\
+ "0.819588, 1.088164, 1.366052, 1.827648, 2.751740",\
+ "0.841939, 1.110514, 1.388402, 1.849998, 2.774091",\
+ "0.883259, 1.151835, 1.429723, 1.891319, 2.815412",\
+ "1.016078, 1.284653, 1.562532, 2.024098, 2.948130",\
+ "1.365184, 1.633759, 1.911639, 2.373206, 3.297240",\
+ "0.880378, 1.153892, 1.430190, 1.891561, 2.815249",\
+ "0.902728, 1.176243, 1.452541, 1.913912, 2.837600",\
+ "0.944049, 1.217563, 1.493861, 1.955232, 2.878921",\
+ "1.076867, 1.350381, 1.626671, 2.088011, 3.011639",\
+ "1.425974, 1.699488, 1.975777, 2.437119, 3.360749",\
+ "1.215215, 1.519388, 1.781994, 2.240881, 3.160706",\
+ "1.237566, 1.541739, 1.804345, 2.263232, 3.183056",\
+ "1.278886, 1.583060, 1.845665, 2.304552, 3.224377",\
+ "1.411705, 1.715878, 1.978474, 2.437331, 3.357095",\
+ "1.760811, 2.064984, 2.327581, 2.786439, 3.706205");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048191, 0.048191, 0.048188, 0.048176, 0.048153",\
+ "0.098610, 0.098610, 0.098606, 0.098594, 0.098570",\
+ "0.188783, 0.188783, 0.188783, 0.188784, 0.188785",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444124",\
+ "1.101815, 1.101815, 1.101815, 1.101814, 1.101813",\
+ "0.048191, 0.048191, 0.048188, 0.048176, 0.048153",\
+ "0.098610, 0.098610, 0.098606, 0.098594, 0.098570",\
+ "0.188783, 0.188783, 0.188783, 0.188784, 0.188785",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444124",\
+ "1.101815, 1.101815, 1.101815, 1.101814, 1.101813",\
+ "0.048191, 0.048191, 0.048188, 0.048176, 0.048153",\
+ "0.098610, 0.098610, 0.098606, 0.098594, 0.098570",\
+ "0.188783, 0.188783, 0.188783, 0.188784, 0.188785",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444124",\
+ "1.101815, 1.101815, 1.101815, 1.101814, 1.101813",\
+ "0.048191, 0.048191, 0.048188, 0.048176, 0.048153",\
+ "0.098610, 0.098610, 0.098606, 0.098594, 0.098570",\
+ "0.188783, 0.188783, 0.188783, 0.188784, 0.188785",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444124",\
+ "1.101815, 1.101815, 1.101815, 1.101814, 1.101813",\
+ "0.048191, 0.048191, 0.048188, 0.048176, 0.048153",\
+ "0.098610, 0.098610, 0.098606, 0.098594, 0.098570",\
+ "0.188783, 0.188783, 0.188783, 0.188784, 0.188785",\
+ "0.444126, 0.444126, 0.444126, 0.444125, 0.444124",\
+ "1.101815, 1.101815, 1.101815, 1.101814, 1.101813");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2403*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.748501, 1.009671, 1.301852, 1.810246, 2.827035",\
+ "0.794654, 1.055824, 1.348005, 1.856399, 2.873188",\
+ "0.878958, 1.140128, 1.432309, 1.940704, 2.957492",\
+ "1.100121, 1.361291, 1.653472, 2.161867, 3.178656",\
+ "1.660998, 1.922168, 2.214350, 2.722744, 3.739532",\
+ "0.835913, 1.097245, 1.389544, 1.896961, 2.912969",\
+ "0.882066, 1.143398, 1.435697, 1.943114, 2.959122",\
+ "0.966370, 1.227702, 1.520001, 2.027418, 3.043426",\
+ "1.187534, 1.448865, 1.741165, 2.248582, 3.264589",\
+ "1.748411, 2.009742, 2.302042, 2.809459, 3.825466",\
+ "0.916813, 1.186291, 1.477511, 1.984584, 2.999924",\
+ "0.962966, 1.232444, 1.523664, 2.030737, 3.046077",\
+ "1.047270, 1.316748, 1.607968, 2.115041, 3.130381",\
+ "1.268433, 1.537911, 1.829131, 2.336204, 3.351544",\
+ "1.829310, 2.098788, 2.390008, 2.897081, 3.912421",\
+ "0.976448, 1.252020, 1.541657, 2.048497, 3.063433",\
+ "1.022601, 1.298173, 1.587810, 2.094650, 3.109586",\
+ "1.106905, 1.382477, 1.672114, 2.178954, 3.193890",\
+ "1.328068, 1.603641, 1.893278, 2.400118, 3.415053",\
+ "1.888945, 2.164518, 2.454154, 2.960994, 3.975930",\
+ "1.310176, 1.617488, 1.893926, 2.398009, 3.408889",\
+ "1.356329, 1.663641, 1.940079, 2.444162, 3.455042",\
+ "1.440634, 1.747945, 2.024383, 2.528466, 3.539346",\
+ "1.661797, 1.969109, 2.245546, 2.749630, 3.760509",\
+ "2.222674, 2.529986, 2.806423, 3.310507, 4.321386");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.735004, 0.996174, 1.288355, 1.796750, 2.813539",\
+ "0.757355, 1.018525, 1.310706, 1.819101, 2.835889",\
+ "0.798676, 1.059846, 1.352027, 1.860421, 2.877210",\
+ "0.931650, 1.192820, 1.485001, 1.993395, 3.010184",\
+ "1.280755, 1.541925, 1.834106, 2.342501, 3.359290",\
+ "0.822417, 1.083748, 1.376048, 1.883465, 2.899472",\
+ "0.844768, 1.106099, 1.398399, 1.905816, 2.921823",\
+ "0.886088, 1.147419, 1.439719, 1.947136, 2.963144",\
+ "1.019062, 1.280394, 1.572693, 2.080110, 3.096118",\
+ "1.368168, 1.629499, 1.921799, 2.429216, 3.445223",\
+ "0.903316, 1.172794, 1.464014, 1.971087, 2.986427",\
+ "0.925667, 1.195145, 1.486365, 1.993438, 3.008778",\
+ "0.966988, 1.236465, 1.527686, 2.034758, 3.050099",\
+ "1.099962, 1.369439, 1.660660, 2.167732, 3.183073",\
+ "1.449067, 1.718545, 2.009765, 2.516838, 3.532178",\
+ "0.962951, 1.238524, 1.528160, 2.035001, 3.049936",\
+ "0.985302, 1.260875, 1.550511, 2.057351, 3.072287",\
+ "1.026623, 1.302195, 1.591832, 2.098672, 3.113608",\
+ "1.159597, 1.435169, 1.724806, 2.231646, 3.246582",\
+ "1.508702, 1.784275, 2.073912, 2.580752, 3.595687",\
+ "1.296680, 1.603992, 1.880429, 2.384513, 3.395392",\
+ "1.319031, 1.626343, 1.902780, 2.406864, 3.417743",\
+ "1.360351, 1.667663, 1.944100, 2.448184, 3.459064",\
+ "1.493325, 1.800637, 2.077075, 2.581158, 3.592038",\
+ "1.842431, 2.149743, 2.426180, 2.930264, 3.941144");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2467*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.730463, 0.984563, 1.266812, 1.735637, 2.673288",\
+ "0.776616, 1.030716, 1.312965, 1.781790, 2.719441",\
+ "0.860920, 1.115021, 1.397269, 1.866094, 2.803746",\
+ "1.082084, 1.336184, 1.618432, 2.087258, 3.024909",\
+ "1.642961, 1.897061, 2.179309, 2.648135, 3.585786",\
+ "0.817871, 1.072157, 1.354377, 1.822352, 2.759222",\
+ "0.864024, 1.118310, 1.400530, 1.868505, 2.805375",\
+ "0.948328, 1.202614, 1.484834, 1.952809, 2.889679",\
+ "1.169492, 1.423777, 1.705998, 2.173972, 3.110843",\
+ "1.730369, 1.984654, 2.266875, 2.734849, 3.671720",\
+ "0.898712, 1.161224, 1.442341, 1.909973, 2.846177",\
+ "0.944865, 1.207377, 1.488494, 1.956126, 2.892330",\
+ "1.029169, 1.291681, 1.572798, 2.040430, 2.976635",\
+ "1.250332, 1.512845, 1.793961, 2.261594, 3.197798",\
+ "1.811209, 2.073722, 2.354838, 2.822471, 3.758675",\
+ "0.956353, 1.226984, 1.506480, 1.973886, 2.909686",\
+ "1.002506, 1.273137, 1.552633, 2.020039, 2.955839",\
+ "1.086810, 1.357441, 1.636937, 2.104343, 3.040143",\
+ "1.307973, 1.578604, 1.858101, 2.325507, 3.261307",\
+ "1.868850, 2.139482, 2.418978, 2.886384, 3.822184",\
+ "1.288825, 1.592869, 1.858345, 2.323230, 3.255142",\
+ "1.334978, 1.639022, 1.904498, 2.369383, 3.301295",\
+ "1.419282, 1.723326, 1.988802, 2.453687, 3.385599",\
+ "1.640445, 1.944490, 2.209965, 2.674851, 3.606763",\
+ "2.201322, 2.505367, 2.770842, 3.235728, 4.167640");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331",\
+ "0.051937, 0.051937, 0.051937, 0.051937, 0.051937",\
+ "0.176967, 0.176967, 0.176967, 0.176967, 0.176967",\
+ "0.380998, 0.380998, 0.380998, 0.380998, 0.380998",\
+ "0.885970, 0.885970, 0.885970, 0.885970, 0.885970",\
+ "2.162331, 2.162331, 2.162331, 2.162331, 2.162331");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.716967, 0.971067, 1.253316, 1.722141, 2.659792",\
+ "0.739318, 0.993418, 1.275667, 1.744492, 2.682143",\
+ "0.780639, 1.034739, 1.316987, 1.785813, 2.723464",\
+ "0.913612, 1.167712, 1.449961, 1.918786, 2.856437",\
+ "1.262718, 1.516818, 1.799066, 2.267892, 3.205543",\
+ "0.804375, 1.058661, 1.340881, 1.808856, 2.745726",\
+ "0.826726, 1.081012, 1.363232, 1.831207, 2.768077",\
+ "0.868047, 1.122332, 1.404552, 1.872527, 2.809398",\
+ "1.001020, 1.255306, 1.537526, 2.005501, 2.942371",\
+ "1.350126, 1.604411, 1.886632, 2.354606, 3.291477",\
+ "0.885216, 1.147728, 1.428845, 1.896477, 2.832681",\
+ "0.907567, 1.170079, 1.451195, 1.918828, 2.855032",\
+ "0.948887, 1.211399, 1.492516, 1.960149, 2.896353",\
+ "1.081861, 1.344373, 1.625489, 2.093122, 3.029326",\
+ "1.430966, 1.693479, 1.974595, 2.442228, 3.378432",\
+ "0.942857, 1.213488, 1.492984, 1.960390, 2.896190",\
+ "0.965208, 1.235839, 1.515335, 1.982741, 2.918541",\
+ "1.006528, 1.277159, 1.556656, 2.024062, 2.959862",\
+ "1.139502, 1.410133, 1.689629, 2.157035, 3.092835",\
+ "1.488607, 1.759238, 2.038735, 2.506141, 3.441941",\
+ "1.275329, 1.579373, 1.844849, 2.309734, 3.241646",\
+ "1.297680, 1.601724, 1.867200, 2.332085, 3.263997",\
+ "1.339000, 1.643044, 1.908520, 2.373406, 3.305318",\
+ "1.471974, 1.776018, 2.041493, 2.506379, 3.438291",\
+ "1.821079, 2.125124, 2.390599, 2.855485, 3.787397");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816",\
+ "0.048201, 0.048201, 0.048201, 0.048201, 0.048201",\
+ "0.098620, 0.098620, 0.098620, 0.098620, 0.098620",\
+ "0.188783, 0.188783, 0.188783, 0.188783, 0.188783",\
+ "0.444126, 0.444126, 0.444126, 0.444126, 0.444126",\
+ "1.101816, 1.101816, 1.101816, 1.101816, 1.101816");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2517*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.732857, 0.971343, 1.249163, 1.734893, 2.706354",\
+ "0.779384, 1.017870, 1.295690, 1.781420, 2.752881",\
+ "0.865018, 1.103504, 1.381324, 1.867054, 2.838515",\
+ "1.088337, 1.326823, 1.604643, 2.090373, 3.061833",\
+ "1.652282, 1.890768, 2.168588, 2.654318, 3.625778",\
+ "0.820269, 1.058867, 1.336783, 1.821608, 2.792287",\
+ "0.866797, 1.105394, 1.383311, 1.868135, 2.838814",\
+ "0.952431, 1.191029, 1.468945, 1.953769, 2.924448",\
+ "1.175750, 1.414347, 1.692263, 2.177088, 3.147767",\
+ "1.739695, 1.978293, 2.256209, 2.741033, 3.711712",\
+ "0.901137, 1.147799, 1.424749, 1.909230, 2.879242",\
+ "0.947664, 1.194327, 1.471276, 1.955757, 2.925770",\
+ "1.033299, 1.279961, 1.556910, 2.041391, 3.011404",\
+ "1.256617, 1.503280, 1.780229, 2.264710, 3.234722",\
+ "1.820563, 2.067225, 2.344174, 2.828655, 3.798667",\
+ "0.958789, 1.213364, 1.488891, 1.973144, 2.942751",\
+ "1.005316, 1.259891, 1.535418, 2.019671, 2.989279",\
+ "1.090950, 1.345525, 1.621053, 2.105305, 3.074913",\
+ "1.314269, 1.568844, 1.844371, 2.328624, 3.298231",\
+ "1.878214, 2.132789, 2.408317, 2.892569, 3.862176",\
+ "1.276921, 1.576900, 1.840930, 2.322562, 3.288208",\
+ "1.323448, 1.623428, 1.887457, 2.369089, 3.334734",\
+ "1.409082, 1.709062, 1.973091, 2.454723, 3.420369",\
+ "1.632401, 1.932381, 2.196410, 2.678042, 3.643687",\
+ "2.196346, 2.496326, 2.760355, 3.241987, 4.207632");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885508, 0.885506",\
+ "2.163010, 2.163010, 2.163010, 2.163012, 2.163014",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885508, 0.885506",\
+ "2.163010, 2.163010, 2.163010, 2.163012, 2.163014",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885508, 0.885506",\
+ "2.163010, 2.163010, 2.163010, 2.163012, 2.163014",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885508, 0.885506",\
+ "2.163010, 2.163010, 2.163010, 2.163012, 2.163014",\
+ "0.052220, 0.052220, 0.052220, 0.052220, 0.052220",\
+ "0.174408, 0.174408, 0.174408, 0.174408, 0.174408",\
+ "0.378144, 0.378144, 0.378144, 0.378144, 0.378144",\
+ "0.885509, 0.885509, 0.885509, 0.885508, 0.885506",\
+ "2.163010, 2.163010, 2.163010, 2.163012, 2.163014");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.671243, 0.909729, 1.187549, 1.673279, 2.644740",\
+ "0.724532, 0.963018, 1.240838, 1.726568, 2.698029",\
+ "0.785280, 1.023767, 1.301586, 1.787316, 2.758777",\
+ "0.919992, 1.158478, 1.436297, 1.922028, 2.893488",\
+ "1.266500, 1.504986, 1.782806, 2.268536, 3.239997",\
+ "0.758655, 0.997253, 1.275169, 1.759994, 2.730674",\
+ "0.811945, 1.050542, 1.328459, 1.813283, 2.783962",\
+ "0.872693, 1.111291, 1.389207, 1.874031, 2.844710",\
+ "1.007404, 1.246002, 1.523918, 2.008743, 2.979422",\
+ "1.353913, 1.592511, 1.870427, 2.355251, 3.325931",\
+ "0.839523, 1.086185, 1.363135, 1.847616, 2.817629",\
+ "0.892813, 1.139475, 1.416424, 1.900905, 2.870918",\
+ "0.953561, 1.200223, 1.477172, 1.961653, 2.931665",\
+ "1.088272, 1.334934, 1.611884, 2.096365, 3.066377",\
+ "1.434781, 1.681443, 1.958392, 2.442873, 3.412886",\
+ "0.897175, 1.151750, 1.427277, 1.911530, 2.881138",\
+ "0.950464, 1.205039, 1.480567, 1.964819, 2.934427",\
+ "1.011212, 1.265788, 1.541315, 2.025567, 2.995174",\
+ "1.145923, 1.400499, 1.676026, 2.160278, 3.129886",\
+ "1.492432, 1.747007, 2.022535, 2.506787, 3.476395",\
+ "1.215307, 1.515286, 1.779316, 2.260948, 3.226594",\
+ "1.268596, 1.568576, 1.832605, 2.314237, 3.279882",\
+ "1.329345, 1.629324, 1.893353, 2.374985, 3.340631",\
+ "1.464056, 1.764035, 2.028064, 2.509696, 3.475342",\
+ "1.810564, 2.110544, 2.374573, 2.856205, 3.821851");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.060037, 0.060037, 0.060037, 0.060037, 0.060036",\
+ "0.113989, 0.113989, 0.113989, 0.113989, 0.113988",\
+ "0.199694, 0.199694, 0.199694, 0.199693, 0.199693",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060036",\
+ "0.113989, 0.113989, 0.113989, 0.113989, 0.113988",\
+ "0.199694, 0.199694, 0.199694, 0.199693, 0.199693",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060036",\
+ "0.113989, 0.113989, 0.113989, 0.113989, 0.113988",\
+ "0.199694, 0.199694, 0.199694, 0.199693, 0.199693",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060036",\
+ "0.113989, 0.113989, 0.113989, 0.113989, 0.113988",\
+ "0.199694, 0.199694, 0.199694, 0.199693, 0.199693",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436",\
+ "0.060037, 0.060037, 0.060037, 0.060037, 0.060036",\
+ "0.113989, 0.113989, 0.113989, 0.113989, 0.113988",\
+ "0.199694, 0.199694, 0.199694, 0.199693, 0.199693",\
+ "0.445487, 0.445487, 0.445487, 0.445487, 0.445487",\
+ "1.101436, 1.101436, 1.101436, 1.101436, 1.101436");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2654*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.687805, 0.938142, 1.214956, 1.708122, 2.694454",\
+ "0.734333, 0.984670, 1.261485, 1.754655, 2.740993",\
+ "0.819969, 1.070307, 1.347124, 1.840302, 2.826659",\
+ "1.043291, 1.293629, 1.570450, 2.063643, 3.050026",\
+ "1.607241, 1.857579, 2.134405, 2.627615, 3.614036",\
+ "0.775217, 1.025647, 1.302601, 1.794837, 2.780388",\
+ "0.821745, 1.072175, 1.349129, 1.841369, 2.826927",\
+ "0.907382, 1.157812, 1.434768, 1.927017, 2.912592",\
+ "1.130704, 1.381134, 1.658095, 2.150357, 3.135960",\
+ "1.694654, 1.945083, 2.222049, 2.714330, 3.699970",\
+ "0.856074, 1.114534, 1.390566, 1.882460, 2.867343",\
+ "0.902602, 1.161062, 1.437095, 1.928992, 2.913882",\
+ "0.988238, 1.246698, 1.522734, 2.014640, 2.999547",\
+ "1.211560, 1.470021, 1.746060, 2.237980, 3.222915",\
+ "1.775510, 2.033970, 2.310015, 2.801953, 3.786925",\
+ "0.913872, 1.180032, 1.454710, 1.946373, 2.930852",\
+ "0.960400, 1.226560, 1.501239, 1.992905, 2.977391",\
+ "1.046036, 1.312197, 1.586878, 2.078553, 3.063056",\
+ "1.269358, 1.535519, 1.810204, 2.301893, 3.286424",\
+ "1.833308, 2.099468, 2.374159, 2.865866, 3.850434",\
+ "1.246728, 1.542797, 1.806824, 2.295822, 3.276308",\
+ "1.293256, 1.589325, 1.853353, 2.342354, 3.322847",\
+ "1.378892, 1.674961, 1.938992, 2.428002, 3.408513",\
+ "1.602214, 1.898283, 2.162318, 2.651342, 3.631880",\
+ "2.166164, 2.462233, 2.726274, 3.215315, 4.195890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.052222, 0.052222, 0.052225, 0.052234, 0.052252",\
+ "0.174407, 0.174407, 0.174405, 0.174399, 0.174386",\
+ "0.378140, 0.378140, 0.378136, 0.378121, 0.378092",\
+ "0.885509, 0.885509, 0.885508, 0.885504, 0.885495",\
+ "2.163010, 2.163010, 2.163012, 2.163018, 2.163031",\
+ "0.052222, 0.052222, 0.052225, 0.052234, 0.052252",\
+ "0.174407, 0.174407, 0.174405, 0.174399, 0.174386",\
+ "0.378140, 0.378140, 0.378136, 0.378121, 0.378092",\
+ "0.885509, 0.885509, 0.885508, 0.885504, 0.885495",\
+ "2.163010, 2.163010, 2.163012, 2.163018, 2.163031",\
+ "0.052222, 0.052222, 0.052225, 0.052234, 0.052252",\
+ "0.174407, 0.174407, 0.174405, 0.174399, 0.174386",\
+ "0.378140, 0.378140, 0.378136, 0.378121, 0.378092",\
+ "0.885509, 0.885509, 0.885508, 0.885504, 0.885495",\
+ "2.163010, 2.163010, 2.163012, 2.163018, 2.163031",\
+ "0.052222, 0.052222, 0.052225, 0.052234, 0.052252",\
+ "0.174407, 0.174407, 0.174405, 0.174399, 0.174386",\
+ "0.378140, 0.378140, 0.378136, 0.378121, 0.378092",\
+ "0.885509, 0.885509, 0.885508, 0.885504, 0.885495",\
+ "2.163010, 2.163010, 2.163012, 2.163018, 2.163031",\
+ "0.052222, 0.052222, 0.052225, 0.052234, 0.052252",\
+ "0.174407, 0.174407, 0.174405, 0.174399, 0.174386",\
+ "0.378140, 0.378140, 0.378136, 0.378121, 0.378092",\
+ "0.885509, 0.885509, 0.885508, 0.885504, 0.885495",\
+ "2.163010, 2.163010, 2.163012, 2.163018, 2.163031");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.626180, 0.876518, 1.153319, 1.646441, 2.632685",\
+ "0.679480, 0.929817, 1.206631, 1.699795, 2.686123",\
+ "0.740236, 0.990574, 1.267397, 1.760594, 2.746988",\
+ "0.874947, 1.125284, 1.402106, 1.895301, 2.881690",\
+ "1.221451, 1.471789, 1.748606, 2.241784, 3.228139",\
+ "0.713593, 0.964022, 1.240963, 1.733156, 2.718619",\
+ "0.766892, 1.017322, 1.294275, 1.786510, 2.772057",\
+ "0.827649, 1.078079, 1.355041, 1.847309, 2.832922",\
+ "0.962359, 1.212789, 1.489751, 1.982016, 2.967624",\
+ "1.308864, 1.559294, 1.836250, 2.328499, 3.314073",\
+ "0.794449, 1.052909, 1.328929, 1.820778, 2.805574",\
+ "0.847749, 1.106209, 1.382241, 1.874132, 2.859012",\
+ "0.908505, 1.166965, 1.443007, 1.934931, 2.919877",\
+ "1.043216, 1.301676, 1.577716, 2.069638, 3.054579",\
+ "1.389720, 1.648180, 1.924216, 2.416121, 3.401028",\
+ "0.852247, 1.118408, 1.393072, 1.884692, 2.869083",\
+ "0.905546, 1.171707, 1.446384, 1.938046, 2.922521",\
+ "0.966303, 1.232464, 1.507150, 1.998845, 2.983386",\
+ "1.101013, 1.367174, 1.641860, 2.133552, 3.118088",\
+ "1.447518, 1.713679, 1.988360, 2.480035, 3.464537",\
+ "1.185103, 1.481172, 1.745186, 2.234141, 3.214539",\
+ "1.238403, 1.534472, 1.798498, 2.287495, 3.267977",\
+ "1.299159, 1.595228, 1.859265, 2.348294, 3.328842",\
+ "1.433870, 1.729939, 1.993974, 2.483001, 3.463544",\
+ "1.780374, 2.076443, 2.340474, 2.829484, 3.809993");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.060053, 0.060053, 0.060071, 0.060133, 0.060259",\
+ "0.114010, 0.114010, 0.114035, 0.114122, 0.114295",\
+ "0.199713, 0.199713, 0.199736, 0.199815, 0.199972",\
+ "0.445490, 0.445490, 0.445492, 0.445501, 0.445519",\
+ "1.101435, 1.101435, 1.101434, 1.101430, 1.101422",\
+ "0.060053, 0.060053, 0.060071, 0.060133, 0.060259",\
+ "0.114010, 0.114010, 0.114035, 0.114122, 0.114295",\
+ "0.199713, 0.199713, 0.199736, 0.199815, 0.199972",\
+ "0.445490, 0.445490, 0.445492, 0.445501, 0.445519",\
+ "1.101435, 1.101435, 1.101434, 1.101430, 1.101422",\
+ "0.060053, 0.060053, 0.060071, 0.060133, 0.060259",\
+ "0.114010, 0.114010, 0.114035, 0.114122, 0.114295",\
+ "0.199713, 0.199713, 0.199736, 0.199815, 0.199972",\
+ "0.445490, 0.445490, 0.445492, 0.445501, 0.445519",\
+ "1.101435, 1.101435, 1.101434, 1.101430, 1.101422",\
+ "0.060053, 0.060053, 0.060071, 0.060133, 0.060259",\
+ "0.114010, 0.114010, 0.114036, 0.114122, 0.114295",\
+ "0.199713, 0.199713, 0.199736, 0.199815, 0.199972",\
+ "0.445490, 0.445490, 0.445492, 0.445501, 0.445519",\
+ "1.101435, 1.101435, 1.101434, 1.101430, 1.101422",\
+ "0.060053, 0.060053, 0.060071, 0.060134, 0.060259",\
+ "0.114010, 0.114010, 0.114036, 0.114122, 0.114295",\
+ "0.199713, 0.199713, 0.199737, 0.199815, 0.199972",\
+ "0.445490, 0.445490, 0.445492, 0.445501, 0.445519",\
+ "1.101435, 1.101435, 1.101434, 1.101430, 1.101422");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_2645*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[17]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.486994, 0.689024, 0.898048, 1.222707, 1.844099",\
+ "0.536854, 0.738884, 0.947908, 1.272568, 1.893960",\
+ "0.638722, 0.840752, 1.049776, 1.374436, 1.995828",\
+ "0.876584, 1.078614, 1.287637, 1.612297, 2.233689",\
+ "1.448904, 1.650934, 1.859958, 2.184618, 2.806009",\
+ "0.575735, 0.776343, 0.985328, 1.310012, 1.931453",\
+ "0.625596, 0.826203, 1.035189, 1.359873, 1.981313",\
+ "0.727464, 0.928071, 1.137057, 1.461741, 2.083181",\
+ "0.965325, 1.165933, 1.374918, 1.699602, 2.321043",\
+ "1.537645, 1.738253, 1.947239, 2.271923, 2.893363",\
+ "0.665418, 0.856680, 1.065355, 1.390041, 2.011484",\
+ "0.715279, 0.906541, 1.115216, 1.439901, 2.061345",\
+ "0.817147, 1.008409, 1.217084, 1.541770, 2.163213",\
+ "1.055008, 1.246270, 1.454945, 1.779631, 2.401074",\
+ "1.627329, 1.818590, 2.027266, 2.351951, 2.973394",\
+ "0.724126, 0.914549, 1.123120, 1.447544, 2.068644",\
+ "0.773987, 0.964410, 1.172981, 1.497404, 2.118505",\
+ "0.875855, 1.066278, 1.274849, 1.599272, 2.220373",\
+ "1.113716, 1.304139, 1.512710, 1.837134, 2.458234",\
+ "1.686036, 1.876459, 2.085031, 2.409454, 3.030555",\
+ "1.026901, 1.220157, 1.426788, 1.750778, 2.371040",\
+ "1.076761, 1.270018, 1.476649, 1.800639, 2.420901",\
+ "1.178629, 1.371886, 1.578517, 1.902507, 2.522769",\
+ "1.416491, 1.609747, 1.816378, 2.140368, 2.760630",\
+ "1.988811, 2.182067, 2.388699, 2.712689, 3.332951");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.527722, 0.729752, 0.938776, 1.263436, 1.884828",\
+ "0.550072, 0.752102, 0.961126, 1.285786, 1.907177",\
+ "0.591435, 0.793465, 1.002489, 1.327149, 1.948541",\
+ "0.713471, 0.915501, 1.124525, 1.449185, 2.070576",\
+ "1.045084, 1.247114, 1.456138, 1.780797, 2.402189",\
+ "0.616463, 0.817071, 1.026057, 1.350741, 1.972181",\
+ "0.638813, 0.839421, 1.048407, 1.373091, 1.994531",\
+ "0.680177, 0.880784, 1.089770, 1.414454, 2.035894",\
+ "0.802212, 1.002820, 1.211806, 1.536490, 2.157930",\
+ "1.133825, 1.334433, 1.543419, 1.868103, 2.489543",\
+ "0.706147, 0.897409, 1.106084, 1.430769, 2.052213",\
+ "0.728497, 0.919758, 1.128434, 1.453119, 2.074563",\
+ "0.769860, 0.961122, 1.169797, 1.494483, 2.115926",\
+ "0.891896, 1.083158, 1.291833, 1.616518, 2.237962",\
+ "1.223509, 1.414770, 1.623446, 1.948131, 2.569574",\
+ "0.764855, 0.955278, 1.163849, 1.488272, 2.109373",\
+ "0.787204, 0.977627, 1.186199, 1.510622, 2.131722",\
+ "0.828568, 1.018991, 1.227562, 1.551985, 2.173086",\
+ "0.950603, 1.141026, 1.349598, 1.674021, 2.295122",\
+ "1.282216, 1.472639, 1.681211, 2.005634, 2.626734",\
+ "1.067629, 1.260886, 1.467517, 1.791507, 2.411769",\
+ "1.089979, 1.283235, 1.489867, 1.813857, 2.434119",\
+ "1.131342, 1.324599, 1.531230, 1.855220, 2.475482",\
+ "1.253378, 1.446635, 1.653266, 1.977256, 2.597517",\
+ "1.584991, 1.778247, 1.984879, 2.308869, 2.929131");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001292, 0.074290, 0.161471, 0.321651, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2543*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[19]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.402983, 0.589298, 0.781819, 1.078308, 1.645139",\
+ "0.452846, 0.639161, 0.831682, 1.128171, 1.695002",\
+ "0.554714, 0.741029, 0.933550, 1.230039, 1.796870",\
+ "0.792575, 0.978890, 1.171412, 1.467901, 2.034731",\
+ "1.364896, 1.551211, 1.743732, 2.040221, 2.607052",\
+ "0.491182, 0.676616, 0.869099, 1.165613, 1.732492",\
+ "0.541046, 0.726479, 0.918963, 1.215477, 1.782355",\
+ "0.642913, 0.828347, 1.020831, 1.317344, 1.884223",\
+ "0.880775, 1.066208, 1.258693, 1.555206, 2.122085",\
+ "1.453095, 1.638529, 1.831013, 2.127527, 2.694405",\
+ "0.578213, 0.756948, 0.949126, 1.245641, 1.812524",\
+ "0.628077, 0.806812, 0.998990, 1.295505, 1.862387",\
+ "0.729944, 0.908679, 1.100858, 1.397373, 1.964255",\
+ "0.967806, 1.146541, 1.338719, 1.635234, 2.202116",\
+ "1.540126, 1.718862, 1.911040, 2.207555, 2.774437",\
+ "0.635881, 0.814778, 1.006854, 1.303079, 1.869555",\
+ "0.685744, 0.864642, 1.056718, 1.352942, 1.919418",\
+ "0.787612, 0.966509, 1.158586, 1.454810, 2.021286",\
+ "1.025473, 1.204371, 1.396447, 1.692672, 2.259147",\
+ "1.597794, 1.776692, 1.968768, 2.264992, 2.831468",\
+ "0.938596, 1.120091, 1.310515, 1.606257, 2.171795",\
+ "0.988459, 1.169954, 1.360379, 1.656120, 2.221658",\
+ "1.090327, 1.271822, 1.462247, 1.757988, 2.323526",\
+ "1.328188, 1.509683, 1.700108, 1.995849, 2.561387",\
+ "1.900509, 2.082004, 2.272429, 2.568170, 3.133708");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.039806, 0.039806, 0.039806, 0.039805, 0.039804",\
+ "0.147771, 0.147771, 0.147771, 0.147771, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039806, 0.039806, 0.039806, 0.039805, 0.039804",\
+ "0.147771, 0.147771, 0.147771, 0.147771, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039806, 0.039806, 0.039806, 0.039805, 0.039804",\
+ "0.147771, 0.147771, 0.147771, 0.147771, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039806, 0.039806, 0.039806, 0.039805, 0.039804",\
+ "0.147771, 0.147771, 0.147771, 0.147771, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039806, 0.039806, 0.039806, 0.039805, 0.039804",\
+ "0.147771, 0.147771, 0.147771, 0.147771, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.423040, 0.630029, 0.815796, 1.107776, 1.669457",\
+ "0.466065, 0.652380, 0.844901, 1.141390, 1.708220",\
+ "0.507428, 0.693743, 0.886264, 1.182753, 1.749583",\
+ "0.629463, 0.815778, 1.008300, 1.304789, 1.871619",\
+ "0.961076, 1.147391, 1.339912, 1.636401, 2.203231",\
+ "0.511411, 0.717348, 0.903077, 1.195081, 1.756810",\
+ "0.554264, 0.739698, 0.932182, 1.228695, 1.795574",\
+ "0.595627, 0.781061, 0.973545, 1.270058, 1.836937",\
+ "0.717663, 0.903096, 1.095581, 1.392094, 1.958972",\
+ "1.049275, 1.234709, 1.427193, 1.723706, 2.290585",\
+ "0.600722, 0.797680, 0.983104, 1.275110, 1.836842",\
+ "0.641295, 0.820030, 1.012209, 1.308724, 1.875605",\
+ "0.682658, 0.861393, 1.053572, 1.350087, 1.916969",\
+ "0.804694, 0.983429, 1.175608, 1.472122, 2.039004",\
+ "1.136306, 1.315041, 1.507220, 1.803735, 2.370616",\
+ "0.664349, 0.855510, 1.040816, 1.332541, 1.893861",\
+ "0.698963, 0.877860, 1.069937, 1.366161, 1.932636",\
+ "0.740326, 0.919223, 1.111300, 1.407524, 1.974000",\
+ "0.862361, 1.041259, 1.233335, 1.529560, 2.096035",\
+ "1.193974, 1.372871, 1.564948, 1.861172, 2.427648",\
+ "0.979328, 1.160823, 1.344474, 1.635713, 2.196086",\
+ "1.001678, 1.183173, 1.373598, 1.669339, 2.234876",\
+ "1.043041, 1.224536, 1.414961, 1.710702, 2.276240",\
+ "1.165076, 1.346571, 1.536997, 1.832738, 2.398275",\
+ "1.496689, 1.678184, 1.868609, 2.164350, 2.729888");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002405, 0.075404, 0.162307, 0.322208, 0.642011");
+ values ( "0.045855, 0.045855, 0.045855, 0.045855, 0.045855",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045855",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045855",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045855",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045855",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2604*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.374729, 0.574327, 0.761134, 1.059803, 1.637058",\
+ "0.424592, 0.624191, 0.810999, 1.109666, 1.686921",\
+ "0.526460, 0.726059, 0.912867, 1.211534, 1.788789",\
+ "0.764322, 0.963920, 1.150728, 1.449396, 2.026650",\
+ "1.336642, 1.536241, 1.723049, 2.021717, 2.598970",\
+ "0.463046, 0.661644, 0.848415, 1.147108, 1.724412",\
+ "0.512909, 0.711509, 0.898280, 1.196972, 1.774274",\
+ "0.614777, 0.813377, 1.000148, 1.298839, 1.876142",\
+ "0.852638, 1.051238, 1.238009, 1.536701, 2.114003",\
+ "1.424959, 1.623559, 1.810330, 2.109022, 2.686324",\
+ "0.552645, 0.741973, 0.928442, 1.227136, 1.804443",\
+ "0.602508, 0.791838, 0.978307, 1.277000, 1.854306",\
+ "0.704376, 0.893705, 1.080175, 1.378868, 1.956174",\
+ "0.942238, 1.131567, 1.318036, 1.616729, 2.194035",\
+ "1.514558, 1.703888, 1.890357, 2.189050, 2.766356",\
+ "0.616737, 0.799794, 0.986158, 1.284587, 1.861501",\
+ "0.666600, 0.849659, 1.036023, 1.334451, 1.911364",\
+ "0.768468, 0.951526, 1.137890, 1.436318, 2.013232",\
+ "1.006329, 1.189388, 1.375752, 1.674180, 2.251093",\
+ "1.578650, 1.761709, 1.948073, 2.246500, 2.823413",\
+ "0.927115, 1.105032, 1.289816, 1.587775, 2.163774",\
+ "0.976978, 1.154897, 1.339680, 1.637639, 2.213636",\
+ "1.078846, 1.256764, 1.441548, 1.739507, 2.315504",\
+ "1.316707, 1.494626, 1.679409, 1.977368, 2.553366",\
+ "1.889028, 2.066947, 2.251730, 2.549689, 3.125686");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.039798, 0.039798, 0.039798, 0.039798, 0.039798",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375008, 0.375008, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039798, 0.039798, 0.039798, 0.039798, 0.039798",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375008, 0.375008, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039798, 0.039798, 0.039798, 0.039798, 0.039798",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375008, 0.375008, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039798, 0.039798, 0.039798, 0.039798, 0.039798",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375008, 0.375008, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039798, 0.039798, 0.039798, 0.039798, 0.039798",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375008, 0.375008, 0.375009, 0.375009, 0.375009",\
+ "0.869292, 0.869292, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.405230, 0.615060, 0.801868, 1.100535, 1.677789",\
+ "0.437811, 0.637410, 0.824218, 1.122885, 1.700139",\
+ "0.479174, 0.678774, 0.865581, 1.164248, 1.741502",\
+ "0.601210, 0.800809, 0.987617, 1.286284, 1.863538",\
+ "0.932822, 1.132421, 1.319229, 1.617896, 2.195150",\
+ "0.493512, 0.702378, 0.889149, 1.187840, 1.765142",\
+ "0.526127, 0.724728, 0.911499, 1.210190, 1.787492",\
+ "0.567491, 0.766091, 0.952862, 1.251554, 1.828856",\
+ "0.689526, 0.888126, 1.074898, 1.373589, 1.950891",\
+ "1.021139, 1.219739, 1.406510, 1.705201, 2.282504",\
+ "0.583007, 0.782706, 0.969176, 1.267869, 1.845174",\
+ "0.615727, 0.805056, 0.991526, 1.290219, 1.867524",\
+ "0.657090, 0.846420, 1.032889, 1.331582, 1.908887",\
+ "0.779126, 0.968455, 1.154925, 1.453618, 2.030923",\
+ "1.110738, 1.300067, 1.486537, 1.785230, 2.362535",\
+ "0.646999, 0.840528, 1.026891, 1.325319, 1.902232",\
+ "0.679819, 0.862878, 1.049241, 1.347669, 1.924582",\
+ "0.721182, 0.904241, 1.090605, 1.389032, 1.965945",\
+ "0.843217, 1.026276, 1.212640, 1.511068, 2.087981",\
+ "1.174830, 1.357889, 1.544252, 1.842680, 2.419593",\
+ "0.967847, 1.145766, 1.330549, 1.628508, 2.204504",\
+ "0.990197, 1.168116, 1.352899, 1.650858, 2.226855",\
+ "1.031560, 1.209479, 1.394262, 1.692221, 2.268218",\
+ "1.153596, 1.331514, 1.516298, 1.814256, 2.390253",\
+ "1.485208, 1.663126, 1.847910, 2.145869, 2.721866");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.045855, 0.045855, 0.045855, 0.045855, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045855, 0.045855, 0.045855, 0.045855, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2705*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[23]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.222114, 0.403093, 0.604570, 0.931647, 1.565679",\
+ "0.278140, 0.457431, 0.657946, 0.989844, 1.636478",\
+ "0.353958, 0.531643, 0.731437, 1.068535, 1.728488",\
+ "0.556156, 0.731457, 0.928039, 1.271464, 1.949653",\
+ "1.100796, 1.274143, 1.466860, 1.814002, 2.504620",\
+ "0.309523, 0.490411, 0.691851, 1.018952, 1.653032",\
+ "0.365549, 0.544749, 0.745227, 1.077150, 1.723831",\
+ "0.441367, 0.618961, 0.818717, 1.155840, 1.815842",\
+ "0.643566, 0.818775, 1.015320, 1.358769, 2.037007",\
+ "1.188205, 1.361462, 1.554141, 1.901307, 2.591974",\
+ "0.390388, 0.570744, 0.771878, 1.098981, 1.733064",\
+ "0.446403, 0.625082, 0.825254, 1.157178, 1.803863",\
+ "0.522211, 0.699294, 0.898744, 1.235869, 1.895873",\
+ "0.724394, 0.899108, 1.095347, 1.438797, 2.117038",\
+ "1.269020, 1.441795, 1.634168, 1.981336, 2.672005",\
+ "0.448070, 0.628579, 0.829627, 1.156500, 1.790257",\
+ "0.504064, 0.682912, 0.883001, 1.214712, 1.861086",\
+ "0.579852, 0.757117, 0.956490, 1.293419, 1.953129",\
+ "0.782005, 0.956923, 1.153085, 1.496370, 2.174338",\
+ "1.326607, 1.499602, 1.691897, 2.038924, 2.729335",\
+ "0.750884, 0.933934, 1.133292, 1.459748, 2.092693",\
+ "0.806686, 0.988222, 1.186665, 1.517973, 2.163558",\
+ "0.882290, 1.062385, 1.260154, 1.596694, 2.255640",\
+ "1.084171, 1.262128, 1.456748, 1.799664, 2.476902",\
+ "1.628551, 1.804755, 1.995558, 2.342230, 3.031935");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.149901, 0.149901, 0.154272, 0.175587, 0.224039",\
+ "0.237266, 0.237266, 0.240202, 0.254165, 0.285843",\
+ "0.399712, 0.400490, 0.400737, 0.406993, 0.422155",\
+ "0.873536, 0.873536, 0.873536, 0.874623, 0.877289",\
+ "2.137324, 2.139116, 2.139203, 2.139986, 2.141907",\
+ "0.149901, 0.149901, 0.154272, 0.175587, 0.224039",\
+ "0.237266, 0.237266, 0.240202, 0.254165, 0.285843",\
+ "0.399712, 0.400490, 0.400737, 0.406993, 0.422155",\
+ "0.873536, 0.873536, 0.873536, 0.874623, 0.877289",\
+ "2.137324, 2.139116, 2.139203, 2.139986, 2.141907",\
+ "0.149901, 0.149901, 0.154272, 0.175587, 0.224039",\
+ "0.237266, 0.237266, 0.240202, 0.254165, 0.285843",\
+ "0.399717, 0.400490, 0.400737, 0.406993, 0.422155",\
+ "0.873536, 0.873536, 0.873536, 0.874623, 0.877289",\
+ "2.137336, 2.139116, 2.139203, 2.139986, 2.141907",\
+ "0.149901, 0.149901, 0.154282, 0.175646, 0.224156",\
+ "0.237266, 0.237266, 0.240209, 0.254204, 0.285920",\
+ "0.399727, 0.400493, 0.400738, 0.407012, 0.422192",\
+ "0.873536, 0.873536, 0.873536, 0.874626, 0.877296",\
+ "2.137358, 2.139123, 2.139203, 2.139988, 2.141912",\
+ "0.149901, 0.149901, 0.154284, 0.175697, 0.224297",\
+ "0.237266, 0.237266, 0.240210, 0.254237, 0.286012",\
+ "0.399816, 0.400514, 0.400738, 0.407027, 0.422236",\
+ "0.873536, 0.873536, 0.873536, 0.874629, 0.877303",\
+ "2.137563, 2.139170, 2.139203, 2.139990, 2.141917");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.146813, 0.421543, 0.619073, 0.936497, 1.550523",\
+ "0.182955, 0.455962, 0.653305, 0.972716, 1.591584",\
+ "0.237642, 0.505732, 0.702816, 1.023104, 1.644353",\
+ "0.371091, 0.634162, 0.830900, 1.151008, 1.772115",\
+ "0.705966, 0.969914, 1.166368, 1.485322, 2.103856",\
+ "0.235216, 0.509090, 0.706354, 1.023802, 1.637876",\
+ "0.271333, 0.543280, 0.740586, 1.060021, 1.678937",\
+ "0.325990, 0.593050, 0.790097, 1.110409, 1.731706",\
+ "0.459423, 0.721480, 0.918180, 1.238313, 1.859468",\
+ "0.794276, 1.057232, 1.253649, 1.572627, 2.191210",\
+ "0.324565, 0.589422, 0.786381, 1.103830, 1.717908",\
+ "0.360611, 0.623613, 0.820613, 1.140050, 1.758969",\
+ "0.415179, 0.673383, 0.870124, 1.190438, 1.811738",\
+ "0.548565, 0.801813, 0.998207, 1.318341, 1.939500",\
+ "0.883356, 1.137565, 1.333676, 1.652655, 2.271241",\
+ "0.388205, 0.647259, 0.844120, 1.161325, 1.775052",\
+ "0.424183, 0.681450, 0.878352, 1.197550, 1.816125",\
+ "0.478670, 0.731220, 0.927863, 1.247941, 1.868900",\
+ "0.612012, 0.859650, 1.055945, 1.375844, 1.996662",\
+ "0.946745, 1.195402, 1.391413, 1.710155, 2.328397",\
+ "0.724572, 0.952620, 1.147783, 1.464552, 2.077430",\
+ "0.760125, 0.986813, 1.182015, 1.500782, 2.118517",\
+ "0.814091, 1.036585, 1.231526, 1.551176, 2.171298",\
+ "0.947154, 1.165011, 1.359608, 1.679079, 2.299060",\
+ "1.281518, 1.500770, 1.695075, 2.013387, 2.630787");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002308, 0.075306, 0.162234, 0.322159, 0.642011");
+ values ( "0.071550, 0.074340, 0.076398, 0.092998, 0.129684",\
+ "0.104996, 0.104996, 0.106760, 0.117958, 0.143880",\
+ "0.191043, 0.191210, 0.191730, 0.197481, 0.211138",\
+ "0.431517, 0.431517, 0.431517, 0.433284, 0.437618",\
+ "1.064302, 1.065326, 1.065376, 1.065376, 1.065376",\
+ "0.071556, 0.071791, 0.076398, 0.092998, 0.129684",\
+ "0.104996, 0.104996, 0.106760, 0.117958, 0.143880",\
+ "0.191048, 0.191210, 0.191730, 0.197481, 0.211138",\
+ "0.431517, 0.431517, 0.431517, 0.433284, 0.437618",\
+ "1.064330, 1.065326, 1.065376, 1.065376, 1.065376",\
+ "0.071575, 0.071791, 0.076398, 0.092998, 0.129684",\
+ "0.104996, 0.104996, 0.106760, 0.117958, 0.143880",\
+ "0.191061, 0.191210, 0.191730, 0.197481, 0.211138",\
+ "0.431517, 0.431517, 0.431517, 0.433284, 0.437618",\
+ "1.064411, 1.065326, 1.065376, 1.065376, 1.065376",\
+ "0.071593, 0.071792, 0.076409, 0.093042, 0.129773",\
+ "0.104996, 0.104996, 0.106764, 0.117989, 0.143943",\
+ "0.191073, 0.191211, 0.191731, 0.197497, 0.211171",\
+ "0.431517, 0.431517, 0.431517, 0.433289, 0.437628",\
+ "1.064486, 1.065330, 1.065376, 1.065376, 1.065376",\
+ "0.071706, 0.071799, 0.076411, 0.093080, 0.129880",\
+ "0.104996, 0.104996, 0.106764, 0.118016, 0.144018",\
+ "0.191152, 0.191215, 0.191732, 0.197512, 0.211211",\
+ "0.431517, 0.431517, 0.431517, 0.433294, 0.437641",\
+ "1.064965, 1.065357, 1.065376, 1.065376, 1.065376");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.170538, 0.344791, 0.534395, 0.834671, 1.413373",\
+ "0.220382, 0.410357, 0.608123, 0.926913, 1.543930",\
+ "0.296720, 0.496999, 0.695612, 1.028145, 1.678018",\
+ "0.503635, 0.714092, 0.910615, 1.258034, 1.946089",\
+ "1.056522, 1.269056, 1.463869, 1.813497, 2.508420",\
+ "0.258747, 0.432108, 0.621676, 0.921976, 1.500726",\
+ "0.308608, 0.497675, 0.695404, 1.014218, 1.631283",\
+ "0.384956, 0.584317, 0.782893, 1.115450, 1.765372",\
+ "0.591859, 0.801410, 0.997896, 1.345339, 2.033442",\
+ "1.144699, 1.356374, 1.551150, 1.900803, 2.595773",\
+ "0.340253, 0.512437, 0.701702, 1.002005, 1.580758",\
+ "0.397921, 0.578003, 0.775430, 1.094246, 1.711315",\
+ "0.474302, 0.664646, 0.862920, 1.195478, 1.845403",\
+ "0.681166, 0.881738, 1.077923, 1.425368, 2.113474",\
+ "1.233862, 1.436702, 1.631177, 1.980831, 2.675804",\
+ "0.397891, 0.570245, 0.759425, 1.059457, 1.637819",\
+ "0.461736, 0.635815, 0.833172, 1.151745, 1.768469",\
+ "0.538147, 0.722460, 0.920664, 1.253017, 1.902637",\
+ "0.744974, 0.939560, 1.135661, 1.482953, 2.170799",\
+ "1.297532, 1.494526, 1.688912, 2.038425, 2.733147",\
+ "0.700600, 0.875392, 1.063084, 1.362647, 1.940096",\
+ "0.765324, 0.940987, 1.136834, 1.454975, 2.070858",\
+ "0.851439, 1.027647, 1.224326, 1.556282, 2.205122",\
+ "1.066882, 1.244797, 1.439323, 1.786257, 2.473396",\
+ "1.621173, 1.799784, 1.992573, 2.341736, 3.035763");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.138974, 0.138974, 0.138974, 0.148689, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872442, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139574, 2.140537, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148689, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872465, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139599, 2.140537, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148689, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872537, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139673, 2.140537, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148718, 0.172471",\
+ "0.231167, 0.231167, 0.231167, 0.238044, 0.254807",\
+ "0.397287, 0.397287, 0.397287, 0.400384, 0.407935",\
+ "0.872606, 0.873372, 0.873689, 0.874396, 0.875879",\
+ "2.139745, 2.140541, 2.140572, 2.140673, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148743, 0.172540",\
+ "0.231167, 0.231167, 0.231167, 0.238062, 0.254856",\
+ "0.397287, 0.397287, 0.397287, 0.400392, 0.407957",\
+ "0.872562, 0.873396, 0.873689, 0.874398, 0.875884",\
+ "2.139699, 2.140566, 2.140572, 2.140673, 2.140919");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.114471, 0.367066, 0.558465, 0.861628, 1.446142",\
+ "0.150570, 0.396419, 0.587661, 0.892759, 1.482112",\
+ "0.204674, 0.442227, 0.633125, 0.939020, 1.530584",\
+ "0.336064, 0.565592, 0.755956, 1.061790, 1.653617",\
+ "0.673293, 0.896815, 1.086094, 1.390763, 1.980611",\
+ "0.202627, 0.454384, 0.645746, 0.948933, 1.533495",\
+ "0.238831, 0.483737, 0.674942, 0.980064, 1.569466",\
+ "0.292913, 0.529545, 0.720406, 1.026325, 1.617937",\
+ "0.424271, 0.652910, 0.843237, 1.149095, 1.740970",\
+ "0.761475, 0.984133, 1.173375, 1.478068, 2.067965",\
+ "0.291726, 0.534712, 0.725773, 1.028962, 1.613527",\
+ "0.328254, 0.564066, 0.754969, 1.060092, 1.649498",\
+ "0.382266, 0.609874, 0.800433, 1.106354, 1.697969",\
+ "0.513528, 0.733239, 0.923264, 1.229123, 1.821002",\
+ "0.850652, 1.064461, 1.253402, 1.558096, 2.147996",\
+ "0.355336, 0.592555, 0.783499, 1.086421, 1.670602",\
+ "0.392174, 0.621907, 0.812695, 1.117557, 1.706585",\
+ "0.446119, 0.667711, 0.858158, 1.163821, 1.755061",\
+ "0.577288, 0.791071, 0.980987, 1.286592, 1.878095",\
+ "0.914335, 1.122288, 1.311124, 1.615562, 2.205085",\
+ "0.691472, 0.897945, 1.087159, 1.389617, 1.972896",\
+ "0.730295, 0.927282, 1.116354, 1.420759, 2.008893",\
+ "0.783810, 0.973061, 1.161817, 1.467025, 2.057376",\
+ "0.914389, 1.096386, 1.284647, 1.589795, 2.180410",\
+ "1.248447, 1.427560, 1.614782, 1.918764, 2.507394");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.055015, 0.067356, 0.073976, 0.088784, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432838, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.055327, 0.067356, 0.073976, 0.088784, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432865, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.056284, 0.067356, 0.073976, 0.088784, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432950, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.057202, 0.067402, 0.073991, 0.088822, 0.119782",\
+ "0.104870, 0.104870, 0.106673, 0.116322, 0.138328",\
+ "0.190674, 0.190674, 0.191256, 0.196143, 0.207567",\
+ "0.433032, 0.433938, 0.434140, 0.435065, 0.437181",\
+ "1.062723, 1.062723, 1.063224, 1.064132, 1.065926",\
+ "0.063072, 0.067724, 0.073993, 0.088854, 0.119873",\
+ "0.104870, 0.104870, 0.106674, 0.116345, 0.138392",\
+ "0.190674, 0.190674, 0.191256, 0.196155, 0.207600",\
+ "0.433553, 0.433966, 0.434140, 0.435067, 0.437187",\
+ "1.062723, 1.062723, 1.063224, 1.064134, 1.065932");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2340*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.337877, 0.567396, 0.751267, 1.044506, 1.611115",\
+ "0.385816, 0.615335, 0.799206, 1.092445, 1.659054",\
+ "0.487851, 0.717370, 0.901241, 1.194480, 1.761089",\
+ "0.725267, 0.954786, 1.138657, 1.431895, 1.998505",\
+ "1.296926, 1.526444, 1.710315, 2.003554, 2.570163",\
+ "0.426171, 0.654713, 0.838548, 1.131811, 1.698468",\
+ "0.474110, 0.702653, 0.886487, 1.179750, 1.746408",\
+ "0.576145, 0.804687, 0.988522, 1.281785, 1.848443",\
+ "0.813561, 1.042103, 1.225938, 1.519201, 2.085858",\
+ "1.385220, 1.613762, 1.797596, 2.090859, 2.657517",\
+ "0.515866, 0.735041, 0.918575, 1.211839, 1.778500",\
+ "0.563806, 0.782980, 0.966514, 1.259778, 1.826439",\
+ "0.665841, 0.885015, 1.068549, 1.361813, 1.928474",\
+ "0.903256, 1.122430, 1.305965, 1.599229, 2.165890",\
+ "1.474915, 1.694089, 1.877623, 2.170888, 2.737548",\
+ "0.580118, 0.792869, 0.976284, 1.269277, 1.835533",\
+ "0.628057, 0.840809, 1.024223, 1.317216, 1.883472",\
+ "0.730092, 0.942843, 1.126258, 1.419251, 1.985507",\
+ "0.967507, 1.180259, 1.363673, 1.656667, 2.222923",\
+ "1.539166, 1.751918, 1.935332, 2.228325, 2.794581",\
+ "0.919018, 1.098154, 1.279940, 1.572454, 2.137775",\
+ "0.966958, 1.146093, 1.327879, 1.620393, 2.185715",\
+ "1.068992, 1.248128, 1.429914, 1.722428, 2.287750",\
+ "1.306408, 1.485543, 1.667330, 1.959844, 2.525165",\
+ "1.878067, 2.057202, 2.238988, 2.531503, 3.096824");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.372253, 0.601881, 0.784032, 1.076595, 1.643049",\
+ "0.397511, 0.627029, 0.810901, 1.104139, 1.670748",\
+ "0.438896, 0.668415, 0.852286, 1.145524, 1.712134",\
+ "0.561215, 0.790734, 0.974605, 1.267843, 1.834453",\
+ "0.893448, 1.122967, 1.306838, 1.600076, 2.166686",\
+ "0.460528, 0.689198, 0.871313, 1.163900, 1.730402",\
+ "0.485805, 0.714347, 0.898181, 1.191444, 1.758102",\
+ "0.527190, 0.755732, 0.939567, 1.232830, 1.799487",\
+ "0.649509, 0.878051, 1.061886, 1.355149, 1.921806",\
+ "0.981742, 1.210284, 1.394119, 1.687381, 2.254039",\
+ "0.550165, 0.769525, 0.951340, 1.243928, 1.810434",\
+ "0.575500, 0.794674, 0.978208, 1.271473, 1.838133",\
+ "0.616885, 0.836059, 1.019594, 1.312858, 1.879519",\
+ "0.739204, 0.958378, 1.141913, 1.435177, 2.001838",\
+ "1.071437, 1.290611, 1.474146, 1.767410, 2.334071",\
+ "0.614360, 0.827361, 1.009044, 1.301366, 1.867467",\
+ "0.639751, 0.852503, 1.035917, 1.328910, 1.895166",\
+ "0.681136, 0.893888, 1.077302, 1.370296, 1.936552",\
+ "0.803456, 1.016207, 1.199622, 1.492615, 2.058871",\
+ "1.135688, 1.348440, 1.531854, 1.824847, 2.391104",\
+ "0.951814, 1.132696, 1.312700, 1.604543, 2.169709",\
+ "0.978652, 1.157787, 1.339573, 1.632088, 2.197409",\
+ "1.020037, 1.199172, 1.380959, 1.673473, 2.238794",\
+ "1.142356, 1.321491, 1.503278, 1.795792, 2.361114",\
+ "1.474589, 1.653724, 1.835510, 2.128025, 2.693346");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2710*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.323167, 0.539803, 0.719494, 1.009588, 1.571964",\
+ "0.371106, 0.587742, 0.767433, 1.057527, 1.619903",\
+ "0.473141, 0.689777, 0.869468, 1.159562, 1.721938",\
+ "0.710557, 0.927193, 1.106884, 1.396978, 1.959354",\
+ "1.282216, 1.498852, 1.678543, 1.968637, 2.531013",\
+ "0.411457, 0.627121, 0.806775, 1.096893, 1.659318",\
+ "0.459396, 0.675060, 0.854714, 1.144832, 1.707257",\
+ "0.561431, 0.777095, 0.956749, 1.246867, 1.809292",\
+ "0.798847, 1.014511, 1.194165, 1.484283, 2.046708",\
+ "1.370506, 1.586170, 1.765824, 2.055942, 2.618367",\
+ "0.500498, 0.707454, 0.886802, 1.176922, 1.739349",\
+ "0.548437, 0.755393, 0.934741, 1.224860, 1.787288",\
+ "0.650472, 0.857428, 1.036776, 1.326895, 1.889323",\
+ "0.887888, 1.094844, 1.274192, 1.564311, 2.126739",\
+ "1.459547, 1.666503, 1.845851, 2.135971, 2.698398",\
+ "0.563859, 0.765284, 0.944499, 1.234353, 1.796369",\
+ "0.611798, 0.813223, 0.992438, 1.282292, 1.844308",\
+ "0.713833, 0.915258, 1.094473, 1.384327, 1.946343",\
+ "0.951249, 1.152674, 1.331889, 1.621743, 2.183759",\
+ "1.522908, 1.724333, 1.903548, 2.193402, 2.755418",\
+ "0.888835, 1.070603, 1.248155, 1.537527, 2.098596",\
+ "0.936774, 1.118542, 1.296094, 1.585466, 2.146535",\
+ "1.038809, 1.220577, 1.398129, 1.687501, 2.248570",\
+ "1.276225, 1.457993, 1.635545, 1.924917, 2.485986",\
+ "1.847884, 2.029652, 2.207204, 2.496576, 3.057645");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871095, 0.871095, 0.871095, 0.871095, 0.871095",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871095, 0.871095, 0.871095, 0.871095, 0.871095",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871095, 0.871095, 0.871095, 0.871095, 0.871095",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871095, 0.871095, 0.871095, 0.871095, 0.871095",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871095, 0.871095, 0.871095, 0.871095, 0.871095",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.360736, 0.577372, 0.757063, 1.047157, 1.609533",\
+ "0.382801, 0.599437, 0.779128, 1.069222, 1.631598",\
+ "0.424186, 0.640822, 0.820514, 1.110608, 1.672984",\
+ "0.546505, 0.763141, 0.942833, 1.232926, 1.795303",\
+ "0.878738, 1.095374, 1.275065, 1.565159, 2.127535",\
+ "0.449026, 0.664690, 0.844344, 1.134462, 1.696887",\
+ "0.471091, 0.686755, 0.866409, 1.156527, 1.718952",\
+ "0.512477, 0.728141, 0.907795, 1.197913, 1.760337",\
+ "0.634796, 0.850460, 1.030114, 1.320232, 1.882656",\
+ "0.967028, 1.182692, 1.362346, 1.652464, 2.214889",\
+ "0.538067, 0.745023, 0.924371, 1.214491, 1.776918",\
+ "0.560132, 0.767088, 0.946436, 1.236556, 1.798984",\
+ "0.601517, 0.808473, 0.987821, 1.277941, 1.840369",\
+ "0.723837, 0.930792, 1.110141, 1.400260, 1.962688",\
+ "1.056069, 1.263025, 1.442373, 1.732492, 2.294920",\
+ "0.601428, 0.802853, 0.982068, 1.271922, 1.833938",\
+ "0.623493, 0.824919, 1.004133, 1.293988, 1.856004",\
+ "0.664878, 0.866304, 1.045519, 1.335373, 1.897389",\
+ "0.787198, 0.988623, 1.167838, 1.457692, 2.019708",\
+ "1.119430, 1.320855, 1.500070, 1.789924, 2.351940",\
+ "0.926404, 1.108172, 1.285724, 1.575096, 2.136165",\
+ "0.948469, 1.130237, 1.307790, 1.597161, 2.158231",\
+ "0.989855, 1.171622, 1.349175, 1.638546, 2.199616",\
+ "1.112174, 1.293941, 1.471494, 1.760865, 2.321935",\
+ "1.444406, 1.626174, 1.803726, 2.093098, 2.654167");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2399*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[32]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.393798, 0.608317, 0.787191, 1.076625, 1.638145",\
+ "0.443659, 0.658178, 0.837052, 1.126486, 1.688006",\
+ "0.545527, 0.760046, 0.938920, 1.228354, 1.789874",\
+ "0.783388, 0.997908, 1.176781, 1.466215, 2.027735",\
+ "1.355708, 1.570228, 1.749101, 2.038536, 2.600056",\
+ "0.482072, 0.695635, 0.874472, 1.163930, 1.725499",\
+ "0.531933, 0.745496, 0.924333, 1.213791, 1.775360",\
+ "0.633801, 0.847364, 1.026201, 1.315659, 1.877228",\
+ "0.871662, 1.085225, 1.264062, 1.553521, 2.115089",\
+ "1.443982, 1.657546, 1.836382, 2.125841, 2.687409",\
+ "0.571616, 0.775963, 0.954499, 1.243959, 1.805530",\
+ "0.621477, 0.825824, 1.004360, 1.293820, 1.855391",\
+ "0.723345, 0.927692, 1.106228, 1.395688, 1.957259",\
+ "0.961206, 1.165553, 1.344089, 1.633549, 2.195120",\
+ "1.533526, 1.737874, 1.916409, 2.205869, 2.767441",\
+ "0.635684, 0.833793, 1.012195, 1.301390, 1.862550",\
+ "0.685545, 0.883654, 1.062056, 1.351251, 1.912411",\
+ "0.787413, 0.985522, 1.163924, 1.453119, 2.014279",\
+ "1.025275, 1.223383, 1.401785, 1.690980, 2.252141",\
+ "1.597595, 1.795703, 1.974106, 2.263301, 2.824461",\
+ "0.959458, 1.139086, 1.315850, 1.604562, 2.164778",\
+ "1.009318, 1.188946, 1.365711, 1.654423, 2.214639",\
+ "1.111187, 1.290814, 1.467579, 1.756291, 2.316507",\
+ "1.349048, 1.528676, 1.705440, 1.994153, 2.554368",\
+ "1.921368, 2.100996, 2.277760, 2.566473, 3.126688");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.434527, 0.649046, 0.827920, 1.117354, 1.678874",\
+ "0.456877, 0.671396, 0.850269, 1.139704, 1.701224",\
+ "0.498240, 0.712759, 0.891633, 1.181067, 1.742587",\
+ "0.620276, 0.834795, 1.013668, 1.303103, 1.864623",\
+ "0.951889, 1.166408, 1.345281, 1.634716, 2.196236",\
+ "0.522801, 0.736364, 0.915201, 1.204659, 1.766227",\
+ "0.545151, 0.758714, 0.937550, 1.227009, 1.788577",\
+ "0.586514, 0.800077, 0.978914, 1.268372, 1.829941",\
+ "0.708550, 0.922113, 1.100950, 1.390408, 1.951976",\
+ "1.040162, 1.253726, 1.432562, 1.722021, 2.283589",\
+ "0.612344, 0.816692, 0.995228, 1.284688, 1.846259",\
+ "0.634694, 0.839042, 1.017577, 1.307038, 1.868609",\
+ "0.676058, 0.880405, 1.058941, 1.348401, 1.909972",\
+ "0.798093, 1.002441, 1.180976, 1.470437, 2.032008",\
+ "1.129706, 1.334054, 1.512589, 1.802049, 2.363621",\
+ "0.676413, 0.874521, 1.052924, 1.342119, 1.903279",\
+ "0.698763, 0.896871, 1.075274, 1.364469, 1.925629",\
+ "0.740127, 0.938235, 1.116637, 1.405832, 1.966993",\
+ "0.862162, 1.060270, 1.238673, 1.527868, 2.089028",\
+ "1.193775, 1.391883, 1.570286, 1.859481, 2.420641",\
+ "1.000186, 1.179814, 1.356578, 1.645291, 2.205507",\
+ "1.022536, 1.202164, 1.378928, 1.667641, 2.227856",\
+ "1.063900, 1.243527, 1.420292, 1.709004, 2.269220",\
+ "1.185935, 1.365563, 1.542327, 1.831040, 2.391255",\
+ "1.517548, 1.697176, 1.873940, 2.162653, 2.722868");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003362, 0.076361, 0.163024, 0.322686, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2477*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.454939, 0.667221, 0.852612, 1.143493, 1.702667",\
+ "0.502878, 0.715160, 0.900551, 1.191432, 1.750605",\
+ "0.604913, 0.817195, 1.002586, 1.293467, 1.852640",\
+ "0.842329, 1.054611, 1.240002, 1.530883, 2.090056",\
+ "1.413988, 1.626270, 1.811661, 2.102542, 2.661716",\
+ "0.543302, 0.754540, 0.939893, 1.230798, 1.790020",\
+ "0.591241, 0.802479, 0.987832, 1.278737, 1.837959",\
+ "0.693276, 0.904514, 1.089867, 1.380772, 1.939994",\
+ "0.930692, 1.141930, 1.327283, 1.618188, 2.177410",\
+ "1.502351, 1.713589, 1.898942, 2.189847, 2.749069",\
+ "0.632361, 0.834874, 1.019920, 1.310827, 1.870051",\
+ "0.680300, 0.882813, 1.067859, 1.358765, 1.917990",\
+ "0.782335, 0.984848, 1.169894, 1.460800, 2.020025",\
+ "1.019751, 1.222264, 1.407310, 1.698216, 2.257441",\
+ "1.591410, 1.793923, 1.978969, 2.269875, 2.829100",\
+ "0.695656, 0.892702, 1.077631, 1.368254, 1.927063",\
+ "0.743595, 0.940641, 1.125570, 1.416193, 1.975002",\
+ "0.845629, 1.042676, 1.227605, 1.518228, 2.077037",\
+ "1.083045, 1.280092, 1.465021, 1.755644, 2.314453",\
+ "1.654704, 1.851751, 2.036680, 2.327303, 2.886112",\
+ "1.016280, 1.198005, 1.381290, 1.671425, 2.229280",\
+ "1.064219, 1.245944, 1.429229, 1.719364, 2.277219",\
+ "1.166254, 1.347979, 1.531264, 1.821398, 2.379254",\
+ "1.403669, 1.585395, 1.768679, 2.058815, 2.616670",\
+ "1.975328, 2.157054, 2.340338, 2.630474, 3.188329");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.492508, 0.704790, 0.890181, 1.181062, 1.740236",\
+ "0.514573, 0.726856, 0.912247, 1.203127, 1.762301",\
+ "0.555959, 0.768241, 0.953632, 1.244512, 1.803686",\
+ "0.678278, 0.890560, 1.075951, 1.366831, 1.926005",\
+ "1.010510, 1.222792, 1.408183, 1.699064, 2.258237",\
+ "0.580871, 0.792109, 0.977462, 1.268367, 1.827589",\
+ "0.602936, 0.814174, 0.999527, 1.290432, 1.849654",\
+ "0.644321, 0.855559, 1.040913, 1.331817, 1.891039",\
+ "0.766640, 0.977878, 1.163232, 1.454136, 2.013358",\
+ "1.098873, 1.310111, 1.495464, 1.786369, 2.345591",\
+ "0.669930, 0.872443, 1.057489, 1.348396, 1.907620",\
+ "0.691995, 0.894508, 1.079554, 1.370461, 1.929686",\
+ "0.733381, 0.935894, 1.120940, 1.411846, 1.971071",\
+ "0.855700, 1.058213, 1.243259, 1.534165, 2.093390",\
+ "1.187932, 1.390445, 1.575491, 1.866397, 2.425622",\
+ "0.733225, 0.930271, 1.115200, 1.405823, 1.964632",\
+ "0.755290, 0.952336, 1.137265, 1.427888, 1.986697",\
+ "0.796675, 0.993721, 1.178650, 1.469274, 2.028083",\
+ "0.918994, 1.116040, 1.300969, 1.591593, 2.150402",\
+ "1.251227, 1.448273, 1.633202, 1.923825, 2.482634",\
+ "1.053849, 1.235574, 1.418859, 1.708994, 2.266849",\
+ "1.075914, 1.257639, 1.440924, 1.731059, 2.288914",\
+ "1.117299, 1.299025, 1.482309, 1.772444, 2.330299",\
+ "1.239618, 1.421344, 1.604628, 1.894763, 2.452619",\
+ "1.571851, 1.753576, 1.936861, 2.226995, 2.784851");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089555, 0.089555, 0.089555, 0.089555, 0.089555",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089555, 0.089555, 0.089555, 0.089555, 0.089555",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089555, 0.089555, 0.089555, 0.089555, 0.089555",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089555, 0.089555, 0.089555, 0.089555, 0.089555",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089555, 0.089555, 0.089555, 0.089555, 0.089555",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2561*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.429494, 0.640486, 0.817408, 1.101335, 1.650898",\
+ "0.477433, 0.688425, 0.865347, 1.149274, 1.698837",\
+ "0.579467, 0.790460, 0.967382, 1.251309, 1.800872",\
+ "0.816883, 1.027876, 1.204798, 1.488725, 2.038288",\
+ "1.388543, 1.599535, 1.776457, 2.060384, 2.609947",\
+ "0.517769, 0.727804, 0.904689, 1.188640, 1.738251",\
+ "0.565708, 0.775743, 0.952628, 1.236579, 1.786190",\
+ "0.667743, 0.877778, 1.054663, 1.338614, 1.888225",\
+ "0.905159, 1.115194, 1.292079, 1.576030, 2.125641",\
+ "1.476818, 1.686853, 1.863738, 2.147689, 2.697300",\
+ "0.606719, 0.808137, 0.984716, 1.268669, 1.818283",\
+ "0.654658, 0.856076, 1.032655, 1.316607, 1.866222",\
+ "0.756693, 0.958111, 1.134690, 1.418642, 1.968257",\
+ "0.994109, 1.195527, 1.372106, 1.656058, 2.205673",\
+ "1.565768, 1.767186, 1.943765, 2.227717, 2.777332",\
+ "0.669974, 0.865958, 1.042407, 1.326085, 1.875272",\
+ "0.717913, 0.913897, 1.090346, 1.374024, 1.923211",\
+ "0.819948, 1.015932, 1.192381, 1.476059, 2.025246",\
+ "1.057364, 1.253348, 1.429797, 1.713475, 2.262662",\
+ "1.629023, 1.825007, 2.001456, 2.285134, 2.834321",\
+ "0.991556, 1.171211, 1.346062, 1.629245, 2.177461",\
+ "1.039495, 1.219150, 1.394001, 1.677184, 2.225400",\
+ "1.141530, 1.321185, 1.496036, 1.779219, 2.327435",\
+ "1.378946, 1.558601, 1.733452, 2.016635, 2.564851",\
+ "1.950605, 2.130260, 2.305111, 2.588294, 3.136510");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032953, 0.032953, 0.032953, 0.032953, 0.032953",\
+ "0.148289, 0.148289, 0.148289, 0.148289, 0.148289",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.467063, 0.678055, 0.854977, 1.138904, 1.688467",\
+ "0.489128, 0.700120, 0.877042, 1.160969, 1.710532",\
+ "0.530513, 0.741505, 0.918428, 1.202354, 1.751917",\
+ "0.652832, 0.863824, 1.040747, 1.324673, 1.874236",\
+ "0.985064, 1.196057, 1.372979, 1.656906, 2.206469",\
+ "0.555338, 0.765373, 0.942258, 1.226209, 1.775820",\
+ "0.577403, 0.787438, 0.964323, 1.248274, 1.797885",\
+ "0.618789, 0.828824, 1.005709, 1.289660, 1.839271",\
+ "0.741108, 0.951143, 1.128028, 1.411978, 1.961590",\
+ "1.073340, 1.283375, 1.460260, 1.744211, 2.293822",\
+ "0.644288, 0.845706, 1.022285, 1.306238, 1.855852",\
+ "0.666353, 0.867771, 1.044350, 1.328303, 1.877917",\
+ "0.707738, 0.909157, 1.085736, 1.369688, 1.919302",\
+ "0.830057, 1.031476, 1.208055, 1.492007, 2.041621",\
+ "1.162290, 1.363708, 1.540287, 1.824239, 2.373854",\
+ "0.707543, 0.903527, 1.079976, 1.363654, 1.912841",\
+ "0.729608, 0.925592, 1.102041, 1.385719, 1.934906",\
+ "0.770994, 0.966978, 1.143427, 1.427104, 1.976291",\
+ "0.893313, 1.089297, 1.265746, 1.549423, 2.098610",\
+ "1.225545, 1.421529, 1.597978, 1.881656, 2.430843",\
+ "1.029125, 1.208780, 1.383631, 1.666814, 2.215030",\
+ "1.051190, 1.230845, 1.405696, 1.688879, 2.237095",\
+ "1.092575, 1.272231, 1.447082, 1.730264, 2.278481",\
+ "1.214894, 1.394550, 1.569401, 1.852583, 2.400800",\
+ "1.547127, 1.726782, 1.901633, 2.184816, 2.733032");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030",\
+ "0.039651, 0.039651, 0.039651, 0.039651, 0.039651",\
+ "0.089556, 0.089556, 0.089556, 0.089556, 0.089556",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065030, 1.065030, 1.065030, 1.065030, 1.065030");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2624*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.495805, 0.717554, 0.895492, 1.184407, 1.745240",\
+ "0.543744, 0.765493, 0.943432, 1.232346, 1.793180",\
+ "0.645779, 0.867528, 1.045467, 1.334381, 1.895214",\
+ "0.883194, 1.104943, 1.282882, 1.571797, 2.132630",\
+ "1.454853, 1.676602, 1.854541, 2.143455, 2.704289",\
+ "0.584213, 0.804872, 0.982773, 1.271712, 1.832594",\
+ "0.632152, 0.852811, 1.030712, 1.319651, 1.880533",\
+ "0.734187, 0.954846, 1.132747, 1.421686, 1.982568",\
+ "0.971603, 1.192262, 1.370163, 1.659102, 2.219983",\
+ "1.543261, 1.763920, 1.941822, 2.230760, 2.791642",\
+ "0.673303, 0.885207, 1.062800, 1.351740, 1.912625",\
+ "0.721243, 0.933146, 1.110739, 1.399680, 1.960565",\
+ "0.823277, 1.035181, 1.212774, 1.501714, 2.062599",\
+ "1.060693, 1.272597, 1.450190, 1.739130, 2.300015",\
+ "1.632352, 1.844256, 2.021849, 2.310789, 2.871674",\
+ "0.736581, 0.943024, 1.120493, 1.409170, 1.969641",\
+ "0.784520, 0.990963, 1.168432, 1.457109, 2.017580",\
+ "0.886555, 1.092998, 1.270467, 1.559144, 2.119615",\
+ "1.123971, 1.330414, 1.507883, 1.796560, 2.357030",\
+ "1.695630, 1.902072, 2.079542, 2.368218, 2.928689",\
+ "1.068830, 1.248253, 1.424150, 1.712342, 2.271862",\
+ "1.116770, 1.296192, 1.472089, 1.760281, 2.319801",\
+ "1.218804, 1.398227, 1.574124, 1.862316, 2.421836",\
+ "1.456220, 1.635643, 1.811539, 2.099732, 2.659251",\
+ "2.027879, 2.207301, 2.383198, 2.671391, 3.230910");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.529176, 0.750903, 0.928871, 1.217786, 1.778615",\
+ "0.555438, 0.777187, 0.955126, 1.244040, 1.804874",\
+ "0.596823, 0.818572, 0.996511, 1.285426, 1.846259",\
+ "0.719142, 0.940891, 1.118830, 1.407745, 1.968578",\
+ "1.051375, 1.273124, 1.451063, 1.739977, 2.300811",\
+ "0.617584, 0.838221, 1.016152, 1.305091, 1.865968",\
+ "0.643846, 0.864506, 1.042407, 1.331345, 1.892227",\
+ "0.685232, 0.905891, 1.083792, 1.372731, 1.933612",\
+ "0.807551, 1.028210, 1.206111, 1.495050, 2.055932",\
+ "1.139784, 1.360443, 1.538344, 1.827282, 2.388164",\
+ "0.706675, 0.918556, 1.096179, 1.385120, 1.946000",\
+ "0.732937, 0.944841, 1.122434, 1.411374, 1.972259",\
+ "0.774322, 0.986226, 1.163819, 1.452759, 2.013644",\
+ "0.896641, 1.108545, 1.286138, 1.575078, 2.135963",\
+ "1.228874, 1.440778, 1.618371, 1.907311, 2.468196",\
+ "0.769953, 0.976375, 1.153872, 1.442550, 2.003015",\
+ "0.796215, 1.002657, 1.180127, 1.468804, 2.029274",\
+ "0.837600, 1.044043, 1.221512, 1.510189, 2.070659",\
+ "0.959919, 1.166362, 1.343831, 1.632508, 2.192978",\
+ "1.292152, 1.498595, 1.676064, 1.964741, 2.525211",\
+ "1.101828, 1.281614, 1.457528, 1.745722, 2.305236",\
+ "1.128464, 1.307886, 1.483783, 1.771976, 2.331495",\
+ "1.169849, 1.349272, 1.525168, 1.813361, 2.372880",\
+ "1.292168, 1.471591, 1.647487, 1.935680, 2.495200",\
+ "1.624401, 1.803824, 1.979720, 2.267913, 2.827432");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2674*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.473135, 0.702103, 0.886918, 1.182452, 1.753613",\
+ "0.521074, 0.750043, 0.934857, 1.230392, 1.801553",\
+ "0.623109, 0.852077, 1.036892, 1.332426, 1.903588",\
+ "0.860525, 1.089493, 1.274307, 1.569842, 2.141003",\
+ "1.432183, 1.661152, 1.845966, 2.141501, 2.712662",\
+ "0.561467, 0.789422, 0.974199, 1.269758, 1.840967",\
+ "0.609406, 0.837361, 1.022138, 1.317697, 1.888906",\
+ "0.711441, 0.939396, 1.124173, 1.419731, 1.990941",\
+ "0.948857, 1.176811, 1.361588, 1.657147, 2.228357",\
+ "1.520515, 1.748470, 1.933247, 2.228806, 2.800015",\
+ "0.650685, 0.869754, 1.054226, 1.349786, 1.920998",\
+ "0.698624, 0.917693, 1.102165, 1.397725, 1.968938",\
+ "0.800659, 1.019728, 1.204200, 1.499760, 2.070972",\
+ "1.038074, 1.257143, 1.441615, 1.737176, 2.308388",\
+ "1.609733, 1.828802, 2.013274, 2.308835, 2.880047",\
+ "0.714235, 0.927578, 1.111935, 1.407229, 1.978040",\
+ "0.762174, 0.975517, 1.159875, 1.455168, 2.025979",\
+ "0.864209, 1.077552, 1.261909, 1.557203, 2.128014",\
+ "1.101624, 1.314968, 1.499325, 1.794618, 2.365430",\
+ "1.673283, 1.886627, 2.070984, 2.366277, 2.937088",\
+ "1.050030, 1.232851, 1.415593, 1.710411, 2.280293",\
+ "1.097969, 1.280791, 1.463533, 1.758350, 2.328232",\
+ "1.200004, 1.382825, 1.565567, 1.860385, 2.430267",\
+ "1.437420, 1.620241, 1.802983, 2.097801, 2.667683",\
+ "2.009078, 2.191900, 2.374642, 2.669460, 3.239341");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637",\
+ "0.032950, 0.032950, 0.032950, 0.032950, 0.032950",\
+ "0.148290, 0.148290, 0.148290, 0.148290, 0.148290",\
+ "0.376177, 0.376177, 0.376177, 0.376177, 0.376177",\
+ "0.871096, 0.871096, 0.871096, 0.871096, 0.871096",\
+ "2.136637, 2.136637, 2.136637, 2.136637, 2.136637");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.506490, 0.734939, 0.919745, 1.215248, 1.786338",\
+ "0.532768, 0.761737, 0.946551, 1.242086, 1.813247",\
+ "0.574154, 0.803122, 0.987937, 1.283471, 1.854632",\
+ "0.696473, 0.925441, 1.110256, 1.405790, 1.976951",\
+ "1.028706, 1.257674, 1.442488, 1.738023, 2.309184",\
+ "0.594824, 0.822257, 1.007026, 1.302553, 1.873691",\
+ "0.621100, 0.849055, 1.033832, 1.329391, 1.900600",\
+ "0.662486, 0.890440, 1.075217, 1.370776, 1.941986",\
+ "0.784805, 1.012759, 1.197537, 1.493095, 2.064305",\
+ "1.117038, 1.344992, 1.529769, 1.825328, 2.396538",\
+ "0.684045, 0.902590, 1.087053, 1.382582, 1.953723",\
+ "0.710318, 0.929387, 1.113859, 1.409419, 1.980632",\
+ "0.751704, 0.970773, 1.155244, 1.450805, 2.022017",\
+ "0.874023, 1.093092, 1.277564, 1.573124, 2.144336",\
+ "1.206255, 1.425324, 1.609796, 1.905357, 2.476569",\
+ "0.747598, 0.960414, 1.144763, 1.440024, 2.010764",\
+ "0.773868, 0.987212, 1.171569, 1.466862, 2.037673",\
+ "0.815253, 1.028597, 1.212954, 1.508247, 2.079059",\
+ "0.937573, 1.150916, 1.335273, 1.630566, 2.201378",\
+ "1.269805, 1.483149, 1.667506, 1.962799, 2.533611",\
+ "1.083412, 1.265686, 1.448421, 1.743207, 2.313017",\
+ "1.109663, 1.292485, 1.475227, 1.770045, 2.339926",\
+ "1.151049, 1.333870, 1.516612, 1.811430, 2.381312",\
+ "1.273368, 1.456189, 1.638931, 1.933749, 2.503631",\
+ "1.605601, 1.788422, 1.971164, 2.265982, 2.835864");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031",\
+ "0.039649, 0.039649, 0.039649, 0.039649, 0.039649",\
+ "0.089554, 0.089554, 0.089554, 0.089554, 0.089554",\
+ "0.186013, 0.186013, 0.186013, 0.186013, 0.186013",\
+ "0.432402, 0.432402, 0.432402, 0.432402, 0.432402",\
+ "1.065031, 1.065031, 1.065031, 1.065031, 1.065031");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2733*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[40]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.434817, 0.671194, 0.861423, 1.166955, 1.757904",\
+ "0.484677, 0.721055, 0.911284, 1.216816, 1.807764",\
+ "0.586545, 0.822923, 1.013152, 1.318684, 1.909632",\
+ "0.824407, 1.060784, 1.251013, 1.556545, 2.147494",\
+ "1.396727, 1.633105, 1.823334, 2.128865, 2.719814",\
+ "0.523312, 0.758513, 0.948704, 1.254260, 1.845257",\
+ "0.573172, 0.808374, 0.998565, 1.304121, 1.895118",\
+ "0.675041, 0.910242, 1.100433, 1.405989, 1.996986",\
+ "0.912902, 1.148103, 1.338294, 1.643850, 2.234847",\
+ "1.485222, 1.720423, 1.910614, 2.216170, 2.807168",\
+ "0.612642, 0.838848, 1.028731, 1.334289, 1.925289",\
+ "0.662503, 0.888709, 1.078592, 1.384149, 1.975149",\
+ "0.764371, 0.990577, 1.180460, 1.486017, 2.077017",\
+ "1.002232, 1.228438, 1.418321, 1.723879, 2.314878",\
+ "1.574552, 1.800758, 1.990641, 2.296199, 2.887199",\
+ "0.676136, 0.896683, 1.086453, 1.391755, 1.982376",\
+ "0.725997, 0.946544, 1.136314, 1.441616, 2.032237",\
+ "0.827865, 1.048412, 1.238182, 1.543484, 2.134105",\
+ "1.065726, 1.286273, 1.476043, 1.781345, 2.371966",\
+ "1.638046, 1.858593, 2.048363, 2.353665, 2.944287",\
+ "1.011585, 1.202042, 1.390114, 1.694958, 2.284685",\
+ "1.061446, 1.251903, 1.439975, 1.744819, 2.334546",\
+ "1.163314, 1.353770, 1.541843, 1.846687, 2.436414",\
+ "1.401175, 1.591632, 1.779704, 2.084548, 2.674275",\
+ "1.973496, 2.163952, 2.352024, 2.656868, 3.246596");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039800, 0.039800, 0.039800, 0.039800, 0.039800",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.475545, 0.711923, 0.902152, 1.207684, 1.798632",\
+ "0.497895, 0.734273, 0.924502, 1.230033, 1.820982",\
+ "0.539258, 0.775636, 0.965865, 1.271397, 1.862345",\
+ "0.661294, 0.897672, 1.087901, 1.393432, 1.984381",\
+ "0.992907, 1.229285, 1.419514, 1.725045, 2.315994",\
+ "0.564040, 0.799242, 0.989433, 1.294989, 1.885986",\
+ "0.586390, 0.821591, 1.011783, 1.317338, 1.908335",\
+ "0.627753, 0.862955, 1.053146, 1.358702, 1.949699",\
+ "0.749789, 0.984990, 1.175182, 1.480737, 2.071735",\
+ "1.081402, 1.316603, 1.506794, 1.812350, 2.403347",\
+ "0.653370, 0.879577, 1.069460, 1.375017, 1.966017",\
+ "0.675720, 0.901927, 1.091810, 1.397367, 1.988367",\
+ "0.717084, 0.943290, 1.133173, 1.438730, 2.029730",\
+ "0.839119, 1.065326, 1.255209, 1.560766, 2.151766",\
+ "1.170732, 1.396938, 1.586821, 1.892379, 2.483379",\
+ "0.716865, 0.937412, 1.127182, 1.432483, 2.023105",\
+ "0.739214, 0.959762, 1.149531, 1.454833, 2.045455",\
+ "0.780578, 1.001125, 1.190895, 1.496197, 2.086818",\
+ "0.902614, 1.123161, 1.312930, 1.618232, 2.208854",\
+ "1.234226, 1.454773, 1.644543, 1.949845, 2.540467",\
+ "1.052314, 1.242770, 1.430842, 1.735687, 2.325414",\
+ "1.074664, 1.265120, 1.453192, 1.758036, 2.347764",\
+ "1.116027, 1.306484, 1.494555, 1.799400, 2.389127",\
+ "1.238063, 1.428519, 1.616591, 1.921436, 2.511163",\
+ "1.569676, 1.760132, 1.948204, 2.253048, 2.842776");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2365*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.415362, 0.648627, 0.834270, 1.134053, 1.714917",\
+ "0.465223, 0.698488, 0.884131, 1.183914, 1.764778",\
+ "0.567091, 0.800357, 0.985999, 1.285782, 1.866646",\
+ "0.804953, 1.038218, 1.223860, 1.523643, 2.104508",\
+ "1.377273, 1.610538, 1.796180, 2.095963, 2.676828",\
+ "0.503768, 0.735946, 0.921550, 1.221358, 1.802271",\
+ "0.553629, 0.785807, 0.971411, 1.271219, 1.852132",\
+ "0.655497, 0.887675, 1.073280, 1.373087, 1.954000",\
+ "0.893359, 1.125536, 1.311141, 1.610948, 2.191861",\
+ "1.465679, 1.697857, 1.883461, 2.183269, 2.764181",\
+ "0.592852, 0.816281, 1.001577, 1.301386, 1.882302",\
+ "0.642713, 0.866142, 1.051438, 1.351248, 1.932163",\
+ "0.744581, 0.968010, 1.153306, 1.453116, 2.034031",\
+ "0.982442, 1.205871, 1.391168, 1.690977, 2.271893",\
+ "1.554763, 1.778192, 1.963488, 2.263297, 2.844213",\
+ "0.656124, 0.874112, 1.059288, 1.358840, 1.939366",\
+ "0.705985, 0.923973, 1.109149, 1.408702, 1.989227",\
+ "0.807853, 1.025841, 1.211017, 1.510570, 2.091095",\
+ "1.045714, 1.263703, 1.448879, 1.748431, 2.328956",\
+ "1.618035, 1.836023, 2.021199, 2.320751, 2.901277",\
+ "0.990163, 1.179444, 1.362947, 1.662033, 2.241645",\
+ "1.040024, 1.229305, 1.412809, 1.711895, 2.291506",\
+ "1.141892, 1.331173, 1.514677, 1.813762, 2.393374",\
+ "1.379753, 1.569034, 1.752538, 2.051624, 2.631236",\
+ "1.952073, 2.141355, 2.324858, 2.623944, 3.203556");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202",\
+ "0.039801, 0.039801, 0.039801, 0.039801, 0.039801",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375010, 0.375010, 0.375010, 0.375010, 0.375010",\
+ "0.869309, 0.869309, 0.869309, 0.869309, 0.869309",\
+ "2.137202, 2.137202, 2.137202, 2.137202, 2.137202");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.456091, 0.689356, 0.874999, 1.174782, 1.755646",\
+ "0.478441, 0.711706, 0.897348, 1.197132, 1.777996",\
+ "0.519805, 0.753070, 0.938712, 1.238495, 1.819360",\
+ "0.641840, 0.875105, 1.060748, 1.360531, 1.941395",\
+ "0.973453, 1.206718, 1.392360, 1.692143, 2.273008",\
+ "0.544497, 0.776675, 0.962279, 1.262087, 1.843000",\
+ "0.566847, 0.799025, 0.984629, 1.284437, 1.865350",\
+ "0.608211, 0.840388, 1.025993, 1.325800, 1.906713",\
+ "0.730246, 0.962424, 1.148028, 1.447836, 2.028749",\
+ "1.061859, 1.294037, 1.479641, 1.779449, 2.360361",\
+ "0.633581, 0.857010, 1.042306, 1.342116, 1.923031",\
+ "0.655931, 0.879360, 1.064656, 1.364465, 1.945381",\
+ "0.697294, 0.920723, 1.106020, 1.405829, 1.986745",\
+ "0.819330, 1.042759, 1.228055, 1.527864, 2.108780",\
+ "1.150943, 1.374372, 1.559668, 1.859477, 2.440393",\
+ "0.696853, 0.914841, 1.100017, 1.399570, 1.980095",\
+ "0.719203, 0.937191, 1.122367, 1.421919, 2.002445",\
+ "0.760566, 0.978555, 1.163731, 1.463283, 2.043808",\
+ "0.882602, 1.100590, 1.285766, 1.585318, 2.165844",\
+ "1.214215, 1.432203, 1.617379, 1.916931, 2.497457",\
+ "1.030892, 1.220173, 1.403677, 1.702762, 2.282374",\
+ "1.053242, 1.242523, 1.426026, 1.725112, 2.304724",\
+ "1.094605, 1.283886, 1.467390, 1.766476, 2.346087",\
+ "1.216641, 1.405922, 1.589425, 1.888511, 2.468123",\
+ "1.548254, 1.737535, 1.921038, 2.220124, 2.799736");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[4]_redg_min_2479*/
+
+} /* end of pin tl_o[4] */
+
+pin("tl_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.034401 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.510374, 0.770025, 1.057985, 1.558099, 2.558328",\
+ "0.560483, 0.820133, 1.108094, 1.608212, 2.608449",\
+ "0.649192, 0.908842, 1.196806, 1.696939, 2.697205",\
+ "0.873358, 1.133008, 1.420973, 1.921111, 2.921387",\
+ "1.425993, 1.685643, 1.973609, 2.473750, 3.474032",\
+ "0.597787, 0.857587, 1.145651, 1.644814, 2.644262",\
+ "0.647895, 0.907696, 1.195760, 1.694927, 2.694383",\
+ "0.736605, 0.996405, 1.284473, 1.783654, 2.783139",\
+ "0.960770, 1.220570, 1.508639, 2.007826, 3.007321",\
+ "1.513405, 1.773205, 2.061275, 2.560465, 3.559966",\
+ "0.678684, 0.946606, 1.233617, 1.732436, 2.731217",\
+ "0.728793, 0.996715, 1.283726, 1.782550, 2.781338",\
+ "0.817502, 1.085424, 1.372439, 1.871277, 2.870094",\
+ "1.041668, 1.309589, 1.596606, 2.095448, 3.094276",\
+ "1.594303, 1.862224, 2.149241, 2.648087, 3.646921",\
+ "0.738268, 1.012297, 1.297762, 1.796350, 2.794726",\
+ "0.788377, 1.062406, 1.347871, 1.846463, 2.844847",\
+ "0.877086, 1.151115, 1.436584, 1.935190, 2.933603",\
+ "1.101252, 1.375280, 1.660750, 2.159362, 3.157785",\
+ "1.653887, 1.927915, 2.213386, 2.712001, 3.710430",\
+ "1.071814, 1.377311, 1.649946, 2.145828, 3.140182",\
+ "1.121922, 1.427420, 1.700056, 2.195941, 3.190303",\
+ "1.210632, 1.516129, 1.788768, 2.284668, 3.279059",\
+ "1.434798, 1.740294, 2.012935, 2.508840, 3.503241",\
+ "1.987432, 2.292929, 2.565571, 3.061479, 4.055886");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.046974, 0.046974, 0.046974, 0.046974, 0.046974",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324731, 0.324733, 0.324746, 0.324779, 0.324846",\
+ "0.855415, 0.855427, 0.855504, 0.855712, 0.856129",\
+ "2.185958, 2.185963, 2.186002, 2.186108, 2.186319",\
+ "0.046974, 0.046974, 0.046974, 0.046974, 0.046974",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324731, 0.324733, 0.324746, 0.324779, 0.324846",\
+ "0.855415, 0.855427, 0.855504, 0.855712, 0.856129",\
+ "2.185958, 2.185964, 2.186003, 2.186108, 2.186319",\
+ "0.046974, 0.046974, 0.046974, 0.046974, 0.046974",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324731, 0.324733, 0.324746, 0.324779, 0.324846",\
+ "0.855415, 0.855427, 0.855504, 0.855712, 0.856129",\
+ "2.185958, 2.185964, 2.186003, 2.186108, 2.186319",\
+ "0.046974, 0.046974, 0.046974, 0.046974, 0.046974",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324731, 0.324733, 0.324746, 0.324779, 0.324846",\
+ "0.855415, 0.855427, 0.855504, 0.855712, 0.856129",\
+ "2.185958, 2.185964, 2.186003, 2.186108, 2.186319",\
+ "0.046974, 0.046974, 0.046974, 0.046974, 0.046974",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324731, 0.324734, 0.324746, 0.324779, 0.324846",\
+ "0.855415, 0.855432, 0.855507, 0.855713, 0.856129",\
+ "2.185958, 2.185966, 2.186004, 2.186108, 2.186319");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.546335, 0.805984, 1.093953, 1.594109, 2.594421",\
+ "0.568030, 0.827679, 1.115650, 1.615810, 2.616129",\
+ "0.609553, 0.869202, 1.157173, 1.657335, 2.657660",\
+ "0.742836, 1.002485, 1.290455, 1.790615, 2.790934",\
+ "1.091714, 1.351363, 1.639332, 2.139487, 3.139795",\
+ "0.633748, 0.893546, 1.181620, 1.680824, 2.680355",\
+ "0.655443, 0.915241, 1.203316, 1.702524, 2.702063",\
+ "0.696966, 0.956764, 1.244839, 1.744050, 2.743593",\
+ "0.830248, 1.090047, 1.378121, 1.877330, 2.876868",\
+ "1.179126, 1.438925, 1.726998, 2.226201, 3.225729",\
+ "0.714645, 0.982566, 1.269586, 1.768446, 2.767310",\
+ "0.736340, 1.004261, 1.291282, 1.790147, 2.789018",\
+ "0.777863, 1.045783, 1.332805, 1.831672, 2.830549",\
+ "0.911146, 1.179066, 1.466088, 1.964952, 2.963823",\
+ "1.260024, 1.527944, 1.814965, 2.313824, 3.312684",\
+ "0.774229, 1.048256, 1.333731, 1.832360, 2.830819",\
+ "0.795924, 1.069952, 1.355427, 1.854060, 2.852527",\
+ "0.837447, 1.111474, 1.396950, 1.895586, 2.894058",\
+ "0.970730, 1.244757, 1.530232, 2.028866, 3.027332",\
+ "1.319608, 1.593635, 1.879110, 2.377737, 3.376193",\
+ "1.107775, 1.413270, 1.685916, 2.181838, 3.176275",\
+ "1.129470, 1.434965, 1.707612, 2.203538, 3.197983",\
+ "1.170993, 1.476488, 1.749135, 2.245064, 3.239513",\
+ "1.304275, 1.609771, 1.882417, 2.378344, 3.372788",\
+ "1.653153, 1.958649, 2.231294, 2.727215, 3.721649");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.045624, 0.045624, 0.045626, 0.045626, 0.045626",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171713, 0.171715, 0.171723, 0.171737",\
+ "0.455137, 0.455143, 0.455182, 0.455287, 0.455497",\
+ "1.170722, 1.170724, 1.170739, 1.170779, 1.170860",\
+ "0.045624, 0.045624, 0.045626, 0.045626, 0.045626",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171713, 0.171715, 0.171723, 0.171737",\
+ "0.455137, 0.455143, 0.455182, 0.455287, 0.455497",\
+ "1.170722, 1.170724, 1.170739, 1.170779, 1.170860",\
+ "0.045624, 0.045624, 0.045626, 0.045626, 0.045626",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171713, 0.171715, 0.171723, 0.171737",\
+ "0.455137, 0.455143, 0.455182, 0.455287, 0.455497",\
+ "1.170722, 1.170724, 1.170739, 1.170779, 1.170860",\
+ "0.045624, 0.045625, 0.045626, 0.045626, 0.045626",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171713, 0.171715, 0.171723, 0.171737",\
+ "0.455137, 0.455143, 0.455182, 0.455287, 0.455497",\
+ "1.170722, 1.170724, 1.170739, 1.170779, 1.170860",\
+ "0.045624, 0.045625, 0.045626, 0.045626, 0.045626",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171713, 0.171715, 0.171723, 0.171737",\
+ "0.455137, 0.455145, 0.455183, 0.455287, 0.455497",\
+ "1.170722, 1.170725, 1.170740, 1.170779, 1.170860");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2748*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.491611, 0.745113, 1.023814, 1.485459, 2.408749",\
+ "0.541720, 0.795222, 1.073923, 1.535570, 2.458864",\
+ "0.630429, 0.883931, 1.162634, 1.624290, 2.547600",\
+ "0.854595, 1.108097, 1.386801, 1.848459, 2.771775",\
+ "1.407230, 1.660732, 1.939436, 2.401096, 3.324415",\
+ "0.579020, 0.832694, 1.111357, 1.572173, 2.494682",\
+ "0.629129, 0.882803, 1.161466, 1.622284, 2.544798",\
+ "0.717839, 0.971512, 1.250178, 1.711004, 2.633534",\
+ "0.942004, 1.195678, 1.474344, 1.935173, 2.857708",\
+ "1.494639, 1.748312, 2.026979, 2.487810, 3.410349",\
+ "0.659835, 0.921740, 1.199320, 1.659795, 2.581637",\
+ "0.709944, 0.971848, 1.249429, 1.709906, 2.631753",\
+ "0.798653, 1.060558, 1.338141, 1.798626, 2.720489",\
+ "1.022819, 1.284723, 1.562307, 2.022795, 2.944664",\
+ "1.575454, 1.837358, 2.114943, 2.575432, 3.497304",\
+ "0.717415, 0.987469, 1.263459, 1.723708, 2.645146",\
+ "0.767524, 1.037577, 1.313568, 1.773819, 2.695262",\
+ "0.856233, 1.126287, 1.402279, 1.862539, 2.783998",\
+ "1.080399, 1.350452, 1.626446, 2.086708, 3.008173",\
+ "1.633034, 1.903087, 2.179081, 2.639345, 3.560813",\
+ "1.049306, 1.352971, 1.615251, 2.073024, 2.990602",\
+ "1.099415, 1.403079, 1.665360, 2.123135, 3.040718",\
+ "1.188124, 1.491788, 1.754072, 2.211854, 3.129454",\
+ "1.412290, 1.715954, 1.978238, 2.436024, 3.353629",\
+ "1.964925, 2.268589, 2.530873, 2.988661, 3.906269");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.046974, 0.046972, 0.046943, 0.046848, 0.046659",\
+ "0.140333, 0.140333, 0.140330, 0.140323, 0.140308",\
+ "0.324732, 0.324732, 0.324740, 0.324766, 0.324817",\
+ "0.855415, 0.855418, 0.855468, 0.855628, 0.855950",\
+ "2.185958, 2.185959, 2.185984, 2.186066, 2.186228",\
+ "0.046974, 0.046972, 0.046943, 0.046848, 0.046659",\
+ "0.140333, 0.140333, 0.140330, 0.140323, 0.140308",\
+ "0.324732, 0.324732, 0.324740, 0.324766, 0.324817",\
+ "0.855415, 0.855418, 0.855468, 0.855628, 0.855950",\
+ "2.185958, 2.185959, 2.185985, 2.186066, 2.186228",\
+ "0.046974, 0.046972, 0.046943, 0.046848, 0.046659",\
+ "0.140333, 0.140333, 0.140330, 0.140323, 0.140308",\
+ "0.324732, 0.324732, 0.324740, 0.324766, 0.324817",\
+ "0.855415, 0.855418, 0.855468, 0.855628, 0.855950",\
+ "2.185958, 2.185959, 2.185985, 2.186066, 2.186228",\
+ "0.046974, 0.046972, 0.046943, 0.046848, 0.046659",\
+ "0.140333, 0.140333, 0.140330, 0.140323, 0.140308",\
+ "0.324732, 0.324732, 0.324740, 0.324766, 0.324817",\
+ "0.855415, 0.855418, 0.855468, 0.855628, 0.855950",\
+ "2.185958, 2.185959, 2.185985, 2.186066, 2.186228",\
+ "0.046974, 0.046972, 0.046942, 0.046848, 0.046659",\
+ "0.140333, 0.140333, 0.140330, 0.140323, 0.140308",\
+ "0.324732, 0.324732, 0.324740, 0.324766, 0.324817",\
+ "0.855415, 0.855419, 0.855470, 0.855629, 0.855950",\
+ "2.185958, 2.185960, 2.185985, 2.186066, 2.186228");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.527572, 0.781074, 1.059780, 1.521448, 2.444784",\
+ "0.549267, 0.802769, 1.081476, 1.543146, 2.466486",\
+ "0.590790, 0.844292, 1.122999, 1.584671, 2.508013",\
+ "0.724072, 0.977574, 1.256281, 1.717952, 2.641292",\
+ "1.072951, 1.326452, 1.605159, 2.066826, 2.990160",\
+ "0.614981, 0.868654, 1.147323, 1.608162, 2.530717",\
+ "0.636677, 0.890350, 1.169019, 1.629860, 2.552420",\
+ "0.678199, 0.931872, 1.210542, 1.671385, 2.593947",\
+ "0.811482, 1.065155, 1.343825, 1.804666, 2.727225",\
+ "1.160360, 1.414033, 1.692702, 2.153540, 3.076094",\
+ "0.695796, 0.957700, 1.235286, 1.695784, 2.617672",\
+ "0.717491, 0.979395, 1.256982, 1.717482, 2.639375",\
+ "0.759014, 1.020918, 1.298506, 1.759007, 2.680902",\
+ "0.892296, 1.154201, 1.431788, 1.892287, 2.814180",\
+ "1.241175, 1.503079, 1.780665, 2.241162, 3.163049",\
+ "0.753376, 1.023429, 1.299425, 1.759697, 2.681181",\
+ "0.775071, 1.045124, 1.321121, 1.781395, 2.702884",\
+ "0.816594, 1.086647, 1.362644, 1.822920, 2.744411",\
+ "0.949877, 1.219929, 1.495926, 1.956201, 2.877689",\
+ "1.298755, 1.568808, 1.844804, 2.305075, 3.226558",\
+ "1.085267, 1.388931, 1.651218, 2.109013, 3.026638",\
+ "1.106962, 1.410626, 1.672914, 2.130711, 3.048340",\
+ "1.148485, 1.452149, 1.714437, 2.172235, 3.089867",\
+ "1.281768, 1.585431, 1.847719, 2.305516, 3.223145",\
+ "1.630646, 1.934309, 2.196596, 2.654391, 3.572014");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.045624, 0.045624, 0.045624, 0.045624, 0.045624",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171712, 0.171714, 0.171720, 0.171731",\
+ "0.455137, 0.455138, 0.455163, 0.455244, 0.455407",\
+ "1.170722, 1.170722, 1.170732, 1.170763, 1.170825",\
+ "0.045624, 0.045624, 0.045624, 0.045624, 0.045624",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171712, 0.171714, 0.171720, 0.171731",\
+ "0.455137, 0.455138, 0.455164, 0.455244, 0.455407",\
+ "1.170722, 1.170722, 1.170732, 1.170763, 1.170825",\
+ "0.045624, 0.045624, 0.045624, 0.045624, 0.045624",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171712, 0.171714, 0.171720, 0.171731",\
+ "0.455137, 0.455138, 0.455164, 0.455244, 0.455407",\
+ "1.170722, 1.170722, 1.170732, 1.170763, 1.170825",\
+ "0.045624, 0.045624, 0.045624, 0.045624, 0.045624",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171712, 0.171714, 0.171720, 0.171731",\
+ "0.455137, 0.455138, 0.455164, 0.455244, 0.455407",\
+ "1.170722, 1.170722, 1.170732, 1.170763, 1.170825",\
+ "0.045624, 0.045624, 0.045624, 0.045624, 0.045624",\
+ "0.082731, 0.082731, 0.082731, 0.082731, 0.082731",\
+ "0.171712, 0.171712, 0.171714, 0.171720, 0.171731",\
+ "0.455137, 0.455139, 0.455164, 0.455245, 0.455407",\
+ "1.170722, 1.170722, 1.170732, 1.170763, 1.170825");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2324*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.570251, 0.828412, 1.116558, 1.622590, 2.634653",\
+ "0.620360, 0.878521, 1.166668, 1.672702, 2.684771",\
+ "0.709070, 0.967232, 1.255383, 1.761428, 2.773518",\
+ "0.933236, 1.191399, 1.479551, 1.985599, 2.997696",\
+ "1.485871, 1.744034, 2.032187, 2.538238, 3.550339",\
+ "0.657660, 0.915972, 1.204241, 1.709304, 2.720587",\
+ "0.707769, 0.966081, 1.254351, 1.759417, 2.770705",\
+ "0.796479, 1.054792, 1.343066, 1.848142, 2.859451",\
+ "1.020645, 1.278959, 1.567234, 2.072314, 3.083630",\
+ "1.573280, 1.831594, 2.119870, 2.624952, 3.636273",\
+ "0.738545, 1.004968, 1.292206, 1.796926, 2.807542",\
+ "0.788654, 1.055077, 1.342316, 1.847038, 2.857660",\
+ "0.877364, 1.143789, 1.431032, 1.935764, 2.946406",\
+ "1.101530, 1.367955, 1.655199, 2.159935, 3.170585",\
+ "1.654165, 1.920590, 2.207835, 2.712574, 3.723228",\
+ "0.799029, 1.070625, 1.356352, 1.860839, 2.871051",\
+ "0.849138, 1.120734, 1.406462, 1.910952, 2.921169",\
+ "0.937848, 1.209445, 1.495178, 1.999677, 3.009915",\
+ "1.162014, 1.433611, 1.719345, 2.223849, 3.234094",\
+ "1.714649, 1.986246, 2.271981, 2.776487, 3.786737",\
+ "1.134610, 1.435289, 1.708595, 2.210337, 3.216507",\
+ "1.184719, 1.485398, 1.758705, 2.260450, 3.266625",\
+ "1.273429, 1.574110, 1.847420, 2.349176, 3.355371",\
+ "1.497595, 1.798276, 2.071588, 2.573347, 3.579550",\
+ "2.050230, 2.350911, 2.624224, 3.125986, 4.132193");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.046967, 0.046968, 0.046968, 0.046968, 0.046968",\
+ "0.140332, 0.140332, 0.140332, 0.140332, 0.140332",\
+ "0.324733, 0.324734, 0.324740, 0.324758, 0.324793",\
+ "0.855426, 0.855431, 0.855470, 0.855580, 0.855800",\
+ "2.185963, 2.185966, 2.185986, 2.186041, 2.186152",\
+ "0.046967, 0.046968, 0.046968, 0.046968, 0.046968",\
+ "0.140332, 0.140332, 0.140332, 0.140332, 0.140332",\
+ "0.324733, 0.324734, 0.324740, 0.324758, 0.324793",\
+ "0.855426, 0.855431, 0.855470, 0.855580, 0.855800",\
+ "2.185963, 2.185966, 2.185986, 2.186041, 2.186152",\
+ "0.046967, 0.046968, 0.046968, 0.046968, 0.046968",\
+ "0.140332, 0.140332, 0.140332, 0.140332, 0.140332",\
+ "0.324733, 0.324734, 0.324740, 0.324758, 0.324793",\
+ "0.855426, 0.855431, 0.855470, 0.855580, 0.855800",\
+ "2.185963, 2.185966, 2.185986, 2.186041, 2.186152",\
+ "0.046967, 0.046968, 0.046968, 0.046968, 0.046968",\
+ "0.140332, 0.140332, 0.140332, 0.140332, 0.140332",\
+ "0.324733, 0.324734, 0.324740, 0.324758, 0.324793",\
+ "0.855426, 0.855431, 0.855470, 0.855580, 0.855800",\
+ "2.185963, 2.185966, 2.185986, 2.186041, 2.186152",\
+ "0.046967, 0.046968, 0.046968, 0.046968, 0.046968",\
+ "0.140332, 0.140332, 0.140332, 0.140332, 0.140332",\
+ "0.324733, 0.324734, 0.324740, 0.324758, 0.324793",\
+ "0.855426, 0.855433, 0.855471, 0.855580, 0.855800",\
+ "2.185963, 2.185967, 2.185986, 2.186041, 2.186152");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.606214, 0.864377, 1.152534, 1.658596, 2.670718",\
+ "0.627909, 0.886073, 1.174231, 1.680295, 2.692423",\
+ "0.669432, 0.927596, 1.215755, 1.721821, 2.733952",\
+ "0.802715, 1.060879, 1.349037, 1.855101, 2.867229",\
+ "1.151593, 1.409756, 1.697913, 2.203973, 3.216093",\
+ "0.693623, 0.951938, 1.240217, 1.745310, 2.756651",\
+ "0.715318, 0.973633, 1.261914, 1.767010, 2.778357",\
+ "0.756841, 1.015157, 1.303438, 1.808535, 2.819886",\
+ "0.890124, 1.148439, 1.436720, 1.941815, 2.953162",\
+ "1.239002, 1.497316, 1.785596, 2.290687, 3.302027",\
+ "0.774507, 1.040934, 1.328183, 1.832932, 2.843606",\
+ "0.796203, 1.062629, 1.349880, 1.854631, 2.865312",\
+ "0.837726, 1.104153, 1.391404, 1.896157, 2.906841",\
+ "0.971008, 1.237435, 1.524685, 2.029437, 3.040117",\
+ "1.319886, 1.586312, 1.873561, 2.378309, 3.388982",\
+ "0.834992, 1.106590, 1.392329, 1.896845, 2.907115",\
+ "0.856687, 1.128286, 1.414026, 1.918545, 2.928821",\
+ "0.898210, 1.169809, 1.455549, 1.960070, 2.970350",\
+ "1.031493, 1.303092, 1.588831, 2.093350, 3.103626",\
+ "1.380370, 1.651969, 1.937707, 2.442222, 3.452491",\
+ "1.170573, 1.471255, 1.744571, 2.246343, 3.252572",\
+ "1.192269, 1.492951, 1.766268, 2.268043, 3.274277",\
+ "1.233792, 1.534474, 1.807792, 2.309569, 3.315806",\
+ "1.367074, 1.667757, 1.941074, 2.442849, 3.449082",\
+ "1.715952, 2.016634, 2.289950, 2.791721, 3.797947");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.045622, 0.045622, 0.045622, 0.045622, 0.045622",\
+ "0.082730, 0.082730, 0.082730, 0.082730, 0.082730",\
+ "0.171713, 0.171713, 0.171714, 0.171718, 0.171726",\
+ "0.455143, 0.455145, 0.455165, 0.455220, 0.455331",\
+ "1.170724, 1.170725, 1.170732, 1.170754, 1.170796",\
+ "0.045622, 0.045622, 0.045622, 0.045622, 0.045622",\
+ "0.082730, 0.082730, 0.082730, 0.082730, 0.082730",\
+ "0.171713, 0.171713, 0.171714, 0.171718, 0.171726",\
+ "0.455143, 0.455145, 0.455165, 0.455220, 0.455331",\
+ "1.170724, 1.170725, 1.170732, 1.170754, 1.170796",\
+ "0.045622, 0.045622, 0.045622, 0.045622, 0.045622",\
+ "0.082730, 0.082730, 0.082730, 0.082730, 0.082730",\
+ "0.171713, 0.171713, 0.171714, 0.171718, 0.171726",\
+ "0.455143, 0.455145, 0.455165, 0.455220, 0.455331",\
+ "1.170724, 1.170725, 1.170732, 1.170754, 1.170796",\
+ "0.045622, 0.045622, 0.045622, 0.045622, 0.045622",\
+ "0.082730, 0.082730, 0.082730, 0.082730, 0.082730",\
+ "0.171713, 0.171713, 0.171714, 0.171718, 0.171726",\
+ "0.455143, 0.455145, 0.455165, 0.455220, 0.455331",\
+ "1.170724, 1.170725, 1.170732, 1.170754, 1.170796",\
+ "0.045622, 0.045622, 0.045622, 0.045622, 0.045622",\
+ "0.082730, 0.082730, 0.082730, 0.082730, 0.082730",\
+ "0.171713, 0.171713, 0.171714, 0.171718, 0.171726",\
+ "0.455143, 0.455146, 0.455165, 0.455220, 0.455331",\
+ "1.170724, 1.170725, 1.170733, 1.170754, 1.170796");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2270*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.553742, 0.804842, 1.083529, 1.550229, 2.483630",\
+ "0.603850, 0.854951, 1.133639, 1.600341, 2.533747",\
+ "0.692561, 0.943663, 1.222354, 1.689065, 2.622488",\
+ "0.916727, 1.167829, 1.446522, 1.913236, 2.846664",\
+ "1.469362, 1.720464, 1.999158, 2.465874, 3.399306",\
+ "0.641147, 0.892423, 1.171086, 1.636943, 2.569564",\
+ "0.691255, 0.942532, 1.221196, 1.687055, 2.619680",\
+ "0.779966, 1.031244, 1.309911, 1.775779, 2.708421",\
+ "1.004132, 1.255410, 1.534079, 1.999949, 2.932598",\
+ "1.556767, 1.808045, 2.086715, 2.552587, 3.485240",\
+ "0.721960, 0.981448, 1.259048, 1.724564, 2.656519",\
+ "0.772069, 1.031557, 1.309159, 1.774676, 2.706635",\
+ "0.860779, 1.120269, 1.397874, 1.863400, 2.795376",\
+ "1.084945, 1.344435, 1.622041, 2.087571, 3.019553",\
+ "1.637580, 1.897070, 2.174678, 2.640208, 3.572195",\
+ "0.779579, 1.047145, 1.323188, 1.788477, 2.720028",\
+ "0.829687, 1.097255, 1.373298, 1.838589, 2.770144",\
+ "0.918398, 1.185966, 1.462013, 1.927313, 2.858885",\
+ "1.142564, 1.410133, 1.686181, 2.151483, 3.083062",\
+ "1.695199, 1.962768, 2.238817, 2.704121, 3.635704",\
+ "1.113274, 1.412343, 1.675029, 2.137809, 3.065484",\
+ "1.163383, 1.462452, 1.725139, 2.187922, 3.115601",\
+ "1.252093, 1.551164, 1.813854, 2.276645, 3.204341",\
+ "1.476259, 1.775330, 2.038022, 2.500816, 3.428518",\
+ "2.028894, 2.327965, 2.590658, 3.053454, 3.981160");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.046966, 0.046965, 0.046949, 0.046900, 0.046802",\
+ "0.140332, 0.140332, 0.140331, 0.140327, 0.140319",\
+ "0.324733, 0.324734, 0.324738, 0.324752, 0.324778",\
+ "0.855428, 0.855430, 0.855457, 0.855540, 0.855707",\
+ "2.185964, 2.185965, 2.185979, 2.186021, 2.186105",\
+ "0.046966, 0.046965, 0.046949, 0.046900, 0.046802",\
+ "0.140332, 0.140332, 0.140331, 0.140327, 0.140319",\
+ "0.324733, 0.324734, 0.324738, 0.324752, 0.324778",\
+ "0.855428, 0.855430, 0.855457, 0.855540, 0.855707",\
+ "2.185964, 2.185965, 2.185979, 2.186021, 2.186105",\
+ "0.046966, 0.046965, 0.046949, 0.046900, 0.046802",\
+ "0.140332, 0.140332, 0.140331, 0.140327, 0.140319",\
+ "0.324733, 0.324734, 0.324738, 0.324752, 0.324778",\
+ "0.855428, 0.855430, 0.855457, 0.855540, 0.855707",\
+ "2.185964, 2.185965, 2.185979, 2.186021, 2.186105",\
+ "0.046966, 0.046965, 0.046949, 0.046900, 0.046802",\
+ "0.140332, 0.140332, 0.140331, 0.140327, 0.140319",\
+ "0.324733, 0.324734, 0.324738, 0.324752, 0.324778",\
+ "0.855428, 0.855430, 0.855457, 0.855540, 0.855707",\
+ "2.185964, 2.185965, 2.185979, 2.186021, 2.186105",\
+ "0.046966, 0.046965, 0.046949, 0.046900, 0.046802",\
+ "0.140332, 0.140332, 0.140331, 0.140327, 0.140319",\
+ "0.324733, 0.324734, 0.324738, 0.324752, 0.324778",\
+ "0.855428, 0.855430, 0.855458, 0.855541, 0.855707",\
+ "2.185964, 2.185965, 2.185979, 2.186021, 2.186105");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.589705, 0.840809, 1.119505, 1.586230, 2.519679",\
+ "0.611400, 0.862504, 1.141202, 1.607929, 2.541383",\
+ "0.652923, 0.904028, 1.182726, 1.649454, 2.582911",\
+ "0.786206, 1.037310, 1.316008, 1.782735, 2.716188",\
+ "1.135083, 1.386187, 1.664884, 2.131607, 3.065055",\
+ "0.677110, 0.928390, 1.207063, 1.672943, 2.605613",\
+ "0.698805, 0.950085, 1.228760, 1.694643, 2.627316",\
+ "0.740328, 0.991609, 1.270283, 1.736168, 2.668845",\
+ "0.873611, 1.124891, 1.403565, 1.869448, 2.802122",\
+ "1.222489, 1.473768, 1.752441, 2.218321, 3.150989",\
+ "0.757923, 1.017414, 1.295025, 1.760565, 2.692568",\
+ "0.779619, 1.039110, 1.316722, 1.782264, 2.714272",\
+ "0.821142, 1.080633, 1.358246, 1.823789, 2.755800",\
+ "0.954424, 1.213916, 1.491528, 1.957069, 2.889077",\
+ "1.303302, 1.562793, 1.840404, 2.305942, 3.237944",\
+ "0.815542, 1.083112, 1.359165, 1.824477, 2.756077",\
+ "0.837237, 1.104808, 1.380862, 1.846177, 2.777781",\
+ "0.878760, 1.146331, 1.422385, 1.887702, 2.819309",\
+ "1.012043, 1.279613, 1.555667, 2.020982, 2.952586",\
+ "1.360920, 1.628491, 1.904543, 2.369855, 3.301453",\
+ "1.149238, 1.448310, 1.711006, 2.173810, 3.101533",\
+ "1.170933, 1.470006, 1.732703, 2.195509, 3.123237",\
+ "1.212456, 1.511529, 1.774227, 2.237035, 3.164765",\
+ "1.345739, 1.644811, 1.907508, 2.370315, 3.298042",\
+ "1.694616, 1.993689, 2.256384, 2.719187, 3.646909");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.045622, 0.045620, 0.045614, 0.045600, 0.045572",\
+ "0.082730, 0.082730, 0.082728, 0.082724, 0.082717",\
+ "0.171713, 0.171713, 0.171714, 0.171717, 0.171723",\
+ "0.455143, 0.455144, 0.455158, 0.455200, 0.455284",\
+ "1.170724, 1.170725, 1.170730, 1.170746, 1.170779",\
+ "0.045622, 0.045620, 0.045614, 0.045600, 0.045572",\
+ "0.082730, 0.082730, 0.082728, 0.082724, 0.082717",\
+ "0.171713, 0.171713, 0.171714, 0.171717, 0.171723",\
+ "0.455143, 0.455144, 0.455158, 0.455200, 0.455284",\
+ "1.170724, 1.170725, 1.170730, 1.170746, 1.170779",\
+ "0.045622, 0.045620, 0.045614, 0.045600, 0.045572",\
+ "0.082730, 0.082730, 0.082728, 0.082724, 0.082717",\
+ "0.171713, 0.171713, 0.171714, 0.171717, 0.171723",\
+ "0.455143, 0.455144, 0.455158, 0.455200, 0.455284",\
+ "1.170724, 1.170725, 1.170730, 1.170746, 1.170779",\
+ "0.045622, 0.045620, 0.045614, 0.045600, 0.045572",\
+ "0.082730, 0.082730, 0.082728, 0.082724, 0.082717",\
+ "0.171713, 0.171713, 0.171714, 0.171717, 0.171723",\
+ "0.455143, 0.455144, 0.455158, 0.455200, 0.455284",\
+ "1.170724, 1.170725, 1.170730, 1.170746, 1.170779",\
+ "0.045622, 0.045620, 0.045614, 0.045600, 0.045572",\
+ "0.082730, 0.082730, 0.082728, 0.082724, 0.082717",\
+ "0.171713, 0.171713, 0.171714, 0.171717, 0.171723",\
+ "0.455143, 0.455145, 0.455158, 0.455200, 0.455284",\
+ "1.170724, 1.170725, 1.170730, 1.170746, 1.170779");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2356*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.451072, 0.689495, 0.967641, 1.455853, 2.432276",\
+ "0.493930, 0.732354, 1.010260, 1.497643, 2.472409",\
+ "0.570383, 0.808808, 1.086665, 1.573880, 2.548310",\
+ "0.793657, 1.032083, 1.309620, 1.795731, 2.767951",\
+ "1.356346, 1.594772, 1.872207, 2.357962, 3.329473",\
+ "0.538482, 0.777023, 1.055268, 1.542567, 2.518210",\
+ "0.581340, 0.819882, 1.097884, 1.584358, 2.558343",\
+ "0.657793, 0.896336, 1.174289, 1.660595, 2.634244",\
+ "0.881067, 1.119611, 1.397241, 1.882445, 2.853885",\
+ "1.443756, 1.682300, 1.959826, 2.444677, 3.415407",\
+ "0.619344, 0.865949, 1.143233, 1.630189, 2.605165",\
+ "0.662202, 0.908808, 1.185849, 1.671979, 2.645298",\
+ "0.738655, 0.985262, 1.262254, 1.748217, 2.721199",\
+ "0.961929, 1.208537, 1.485206, 1.970067, 2.940840",\
+ "1.524618, 1.771226, 2.047791, 2.532299, 3.502362",\
+ "0.677016, 0.931504, 1.207376, 1.694102, 2.668674",\
+ "0.719874, 0.974362, 1.249992, 1.735892, 2.708807",\
+ "0.796327, 1.050816, 1.326397, 1.812130, 2.784708",\
+ "1.019601, 1.274091, 1.549348, 2.033980, 3.004349",\
+ "1.582290, 1.836781, 2.111933, 2.596212, 3.565871",\
+ "0.998045, 1.294967, 1.559438, 2.043528, 3.014130",\
+ "1.040903, 1.337826, 1.602045, 2.085314, 3.054263",\
+ "1.117357, 1.414280, 1.678448, 2.161551, 3.130164",\
+ "1.340631, 1.637555, 1.901389, 2.383397, 3.349805",\
+ "1.903320, 2.200244, 2.463970, 2.945627, 3.911327");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.072525, 0.072525, 0.072525, 0.072525, 0.072526",\
+ "0.151107, 0.151107, 0.151107, 0.151107, 0.151107",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855550, 0.855550, 0.855550, 0.855551",\
+ "2.186890, 2.186890, 2.186890, 2.186890, 2.186891",\
+ "0.072525, 0.072525, 0.072525, 0.072525, 0.072526",\
+ "0.151107, 0.151107, 0.151107, 0.151107, 0.151107",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855550, 0.855550, 0.855550, 0.855551",\
+ "2.186890, 2.186890, 2.186890, 2.186890, 2.186891",\
+ "0.072525, 0.072525, 0.072525, 0.072525, 0.072526",\
+ "0.151107, 0.151107, 0.151107, 0.151107, 0.151107",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855550, 0.855550, 0.855550, 0.855551",\
+ "2.186890, 2.186890, 2.186890, 2.186890, 2.186891",\
+ "0.072525, 0.072525, 0.072525, 0.072525, 0.072526",\
+ "0.151107, 0.151107, 0.151107, 0.151107, 0.151107",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855550, 0.855550, 0.855550, 0.855551",\
+ "2.186890, 2.186890, 2.186890, 2.186890, 2.186891",\
+ "0.072525, 0.072525, 0.072525, 0.072525, 0.072526",\
+ "0.151107, 0.151107, 0.151107, 0.151107, 0.151107",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855550, 0.855550, 0.855550, 0.855551",\
+ "2.186890, 2.186890, 2.186890, 2.186890, 2.186891");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.463085, 0.701506, 0.978942, 1.464699, 2.436214",\
+ "0.490745, 0.729166, 1.006601, 1.492359, 2.463874",\
+ "0.539949, 0.778370, 1.055805, 1.541563, 2.513078",\
+ "0.680533, 0.918956, 1.196391, 1.682148, 2.653661",\
+ "1.033170, 1.271589, 1.549246, 2.035768, 3.008812",\
+ "0.550495, 0.789034, 1.066561, 1.551413, 2.522148",\
+ "0.578155, 0.816694, 1.094220, 1.579073, 2.549807",\
+ "0.627359, 0.865897, 1.143424, 1.628277, 2.599012",\
+ "0.767943, 1.006484, 1.284010, 1.768862, 2.739595",\
+ "1.120580, 1.359117, 1.636868, 2.122482, 3.094745",\
+ "0.631357, 0.877960, 1.154525, 1.639035, 2.609103",\
+ "0.659017, 0.905619, 1.182185, 1.666695, 2.636762",\
+ "0.708221, 0.954823, 1.231389, 1.715899, 2.685967",\
+ "0.848805, 1.095410, 1.371975, 1.856484, 2.826550",\
+ "1.201442, 1.448043, 1.724832, 2.210104, 3.181700",\
+ "0.689029, 0.943515, 1.218668, 1.702948, 2.672612",\
+ "0.716689, 0.971174, 1.246328, 1.730608, 2.700271",\
+ "0.765893, 1.020378, 1.295531, 1.779812, 2.749476",\
+ "0.906477, 1.160964, 1.436117, 1.920397, 2.890059",\
+ "1.259114, 1.513598, 1.788975, 2.274017, 3.245209",\
+ "1.010056, 1.306978, 1.570705, 2.052364, 3.018068",\
+ "1.037716, 1.334638, 1.598365, 2.080023, 3.045727",\
+ "1.086920, 1.383842, 1.647568, 2.129227, 3.094932",\
+ "1.227505, 1.524428, 1.788154, 2.269813, 3.235515",\
+ "1.580140, 1.877061, 2.141020, 2.623435, 3.590666");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.031044, 0.031047, 0.031141, 0.031458, 0.032092",\
+ "0.078404, 0.078404, 0.078413, 0.078441, 0.078497",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169261, 1.169261, 1.169280, 1.169343, 1.169468",\
+ "0.031044, 0.031047, 0.031142, 0.031458, 0.032092",\
+ "0.078404, 0.078404, 0.078413, 0.078441, 0.078497",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169261, 1.169261, 1.169280, 1.169343, 1.169468",\
+ "0.031044, 0.031047, 0.031142, 0.031458, 0.032092",\
+ "0.078404, 0.078404, 0.078413, 0.078441, 0.078497",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169261, 1.169261, 1.169280, 1.169343, 1.169468",\
+ "0.031044, 0.031047, 0.031142, 0.031458, 0.032092",\
+ "0.078404, 0.078404, 0.078413, 0.078441, 0.078497",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169261, 1.169261, 1.169280, 1.169343, 1.169468",\
+ "0.031045, 0.031048, 0.031146, 0.031459, 0.032092",\
+ "0.078404, 0.078404, 0.078413, 0.078441, 0.078497",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169261, 1.169262, 1.169281, 1.169343, 1.169468");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2423*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.549373, 0.808602, 1.094677, 1.588458, 2.576021",\
+ "0.599470, 0.858699, 1.144772, 1.638553, 2.626115",\
+ "0.688134, 0.947361, 1.233431, 1.727210, 2.714768",\
+ "0.912284, 1.171509, 1.457578, 1.951357, 2.938914",\
+ "1.464909, 1.724133, 2.010202, 2.503980, 3.491537",\
+ "0.636786, 0.896164, 1.182323, 1.675173, 2.661954",\
+ "0.686883, 0.946261, 1.232418, 1.725268, 2.712049",\
+ "0.775547, 1.034922, 1.321077, 1.813925, 2.800702",\
+ "0.999696, 1.259071, 1.545225, 2.038072, 3.024848",\
+ "1.552321, 1.811695, 2.097848, 2.590695, 3.577471",\
+ "0.717681, 0.985182, 1.270288, 1.762795, 2.748909",\
+ "0.767778, 1.035279, 1.320384, 1.812890, 2.799004",\
+ "0.856442, 1.123940, 1.409043, 1.901547, 2.887657",\
+ "1.080592, 1.348089, 1.633190, 2.125694, 3.111803",\
+ "1.633216, 1.900714, 2.185814, 2.678318, 3.664426",\
+ "0.777205, 1.050872, 1.334432, 1.826709, 2.812418",\
+ "0.827302, 1.100968, 1.384528, 1.876804, 2.862513",\
+ "0.915966, 1.189630, 1.473186, 1.965461, 2.951166",\
+ "1.140115, 1.413779, 1.697334, 2.189608, 3.175312",\
+ "1.692740, 1.966403, 2.249958, 2.742231, 3.727935",\
+ "1.110638, 1.415870, 1.686553, 2.176160, 3.157875",\
+ "1.160735, 1.465966, 1.736648, 2.226255, 3.207969",\
+ "1.249399, 1.554628, 1.825307, 2.314913, 3.296622",\
+ "1.473549, 1.778776, 2.049454, 2.539060, 3.520768",\
+ "2.026173, 2.331400, 2.602078, 3.091683, 4.073391");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.046980, 0.046981, 0.046983, 0.046983, 0.046983",\
+ "0.140333, 0.140333, 0.140334, 0.140334, 0.140334",\
+ "0.324730, 0.324730, 0.324730, 0.324732, 0.324735",\
+ "0.855404, 0.855405, 0.855408, 0.855419, 0.855440",\
+ "2.185952, 2.185953, 2.185954, 2.185960, 2.185970",\
+ "0.046980, 0.046981, 0.046983, 0.046983, 0.046983",\
+ "0.140333, 0.140333, 0.140334, 0.140334, 0.140334",\
+ "0.324730, 0.324730, 0.324730, 0.324732, 0.324735",\
+ "0.855404, 0.855405, 0.855408, 0.855419, 0.855440",\
+ "2.185952, 2.185953, 2.185954, 2.185960, 2.185970",\
+ "0.046980, 0.046981, 0.046983, 0.046983, 0.046983",\
+ "0.140333, 0.140333, 0.140334, 0.140334, 0.140334",\
+ "0.324730, 0.324730, 0.324730, 0.324732, 0.324735",\
+ "0.855404, 0.855405, 0.855408, 0.855419, 0.855440",\
+ "2.185952, 2.185953, 2.185954, 2.185960, 2.185970",\
+ "0.046980, 0.046981, 0.046983, 0.046983, 0.046983",\
+ "0.140333, 0.140333, 0.140334, 0.140334, 0.140334",\
+ "0.324730, 0.324730, 0.324730, 0.324732, 0.324735",\
+ "0.855405, 0.855405, 0.855408, 0.855419, 0.855440",\
+ "2.185952, 2.185953, 2.185954, 2.185960, 2.185970",\
+ "0.046980, 0.046982, 0.046983, 0.046983, 0.046983",\
+ "0.140333, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324730, 0.324730, 0.324730, 0.324732, 0.324735",\
+ "0.855405, 0.855405, 0.855408, 0.855419, 0.855440",\
+ "2.185952, 2.185953, 2.185954, 2.185960, 2.185970");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.585206, 0.844429, 1.130494, 1.624271, 2.611824",\
+ "0.606889, 0.866111, 1.152175, 1.645951, 2.633503",\
+ "0.648404, 0.907626, 1.193689, 1.687465, 2.675017",\
+ "0.781694, 1.040916, 1.326981, 1.820757, 2.808309",\
+ "1.130589, 1.389812, 1.675878, 2.169654, 3.157208",\
+ "0.672619, 0.931991, 1.218140, 1.710986, 2.697757",\
+ "0.694301, 0.953673, 1.239821, 1.732666, 2.719437",\
+ "0.735816, 0.995187, 1.281336, 1.774180, 2.760951",\
+ "0.869107, 1.128478, 1.414627, 1.907472, 2.894243",\
+ "1.218002, 1.477374, 1.763524, 2.256369, 3.243142",\
+ "0.753514, 1.021009, 1.306106, 1.798608, 2.784713",\
+ "0.775196, 1.042691, 1.327787, 1.820288, 2.806392",\
+ "0.816712, 1.084206, 1.369301, 1.861803, 2.847906",\
+ "0.950002, 1.217496, 1.502593, 1.995094, 2.981198",\
+ "1.298897, 1.566392, 1.851490, 2.343992, 3.330097",\
+ "0.813038, 1.086698, 1.370250, 1.862521, 2.848222",\
+ "0.834720, 1.108380, 1.391931, 1.884202, 2.869901",\
+ "0.876235, 1.149895, 1.433445, 1.925716, 2.911415",\
+ "1.009526, 1.283186, 1.566736, 2.059008, 3.044707",\
+ "1.358421, 1.632081, 1.915633, 2.407905, 3.393606",\
+ "1.146470, 1.451694, 1.722370, 2.211973, 3.193677",\
+ "1.168153, 1.473376, 1.744051, 2.233654, 3.215357",\
+ "1.209668, 1.514891, 1.785565, 2.275168, 3.256871",\
+ "1.342959, 1.648182, 1.918857, 2.408459, 3.390163",\
+ "1.691854, 1.997078, 2.267754, 2.757357, 3.739062");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045699, 0.045703, 0.045708, 0.045711, 0.045717",\
+ "0.082751, 0.082753, 0.082754, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171713",\
+ "0.455132, 0.455132, 0.455133, 0.455139, 0.455149",\
+ "1.170720, 1.170720, 1.170720, 1.170722, 1.170727",\
+ "0.045699, 0.045703, 0.045708, 0.045711, 0.045717",\
+ "0.082751, 0.082753, 0.082754, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171713",\
+ "0.455132, 0.455132, 0.455133, 0.455139, 0.455149",\
+ "1.170720, 1.170720, 1.170720, 1.170722, 1.170727",\
+ "0.045699, 0.045703, 0.045708, 0.045711, 0.045717",\
+ "0.082751, 0.082753, 0.082754, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171713",\
+ "0.455132, 0.455132, 0.455133, 0.455139, 0.455149",\
+ "1.170720, 1.170720, 1.170720, 1.170722, 1.170727",\
+ "0.045699, 0.045703, 0.045708, 0.045711, 0.045717",\
+ "0.082752, 0.082753, 0.082754, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171713",\
+ "0.455132, 0.455132, 0.455133, 0.455139, 0.455149",\
+ "1.170720, 1.170720, 1.170720, 1.170722, 1.170727",\
+ "0.045700, 0.045704, 0.045708, 0.045711, 0.045717",\
+ "0.082752, 0.082753, 0.082754, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171713",\
+ "0.455132, 0.455132, 0.455133, 0.455139, 0.455149",\
+ "1.170720, 1.170720, 1.170720, 1.170722, 1.170727");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2482*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.531759, 0.784650, 1.063366, 1.526559, 2.452945",\
+ "0.581856, 0.834746, 1.113461, 1.576654, 2.503039",\
+ "0.670520, 0.923407, 1.202119, 1.665310, 2.591694",\
+ "0.894669, 1.147555, 1.426266, 1.889457, 2.815840",\
+ "1.447294, 1.700179, 1.978889, 2.442080, 3.368464",\
+ "0.619167, 0.872231, 1.150913, 1.613273, 2.538878",\
+ "0.669264, 0.922327, 1.201009, 1.663368, 2.588973",\
+ "0.757928, 1.010988, 1.289666, 1.752025, 2.677628",\
+ "0.982077, 1.235136, 1.513813, 1.976171, 2.901774",\
+ "1.534702, 1.787760, 2.066437, 2.528795, 3.454397",\
+ "0.699981, 0.961270, 1.238877, 1.700895, 2.625834",\
+ "0.750078, 1.011366, 1.288972, 1.750990, 2.675928",\
+ "0.838742, 1.100027, 1.377629, 1.839646, 2.764583",\
+ "1.062892, 1.324176, 1.601776, 2.063793, 2.988729",\
+ "1.615517, 1.876800, 2.154400, 2.616416, 3.541352",\
+ "0.757572, 1.026990, 1.303015, 1.764808, 2.689342",\
+ "0.807669, 1.077086, 1.353110, 1.814903, 2.739437",\
+ "0.896333, 1.165747, 1.441768, 1.903559, 2.828092",\
+ "1.120482, 1.389895, 1.665915, 2.127706, 3.052238",\
+ "1.673107, 1.942519, 2.218538, 2.680329, 3.604861",\
+ "1.090182, 1.392406, 1.654823, 2.114129, 3.034798",\
+ "1.140279, 1.442501, 1.704918, 2.164223, 3.084893",\
+ "1.228943, 1.531161, 1.793575, 2.252880, 3.173548",\
+ "1.453092, 1.755309, 2.017722, 2.477027, 3.397694",\
+ "2.005717, 2.307933, 2.570345, 3.029650, 3.950317");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.046980, 0.046980, 0.046980, 0.046980, 0.046980",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324730, 0.324730, 0.324730, 0.324731, 0.324732",\
+ "0.855404, 0.855404, 0.855405, 0.855410, 0.855418",\
+ "2.185952, 2.185952, 2.185953, 2.185955, 2.185959",\
+ "0.046980, 0.046980, 0.046980, 0.046980, 0.046980",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324730, 0.324730, 0.324730, 0.324731, 0.324732",\
+ "0.855404, 0.855404, 0.855405, 0.855410, 0.855418",\
+ "2.185952, 2.185952, 2.185953, 2.185955, 2.185959",\
+ "0.046980, 0.046980, 0.046980, 0.046980, 0.046980",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324730, 0.324730, 0.324730, 0.324731, 0.324732",\
+ "0.855404, 0.855404, 0.855405, 0.855410, 0.855418",\
+ "2.185952, 2.185952, 2.185953, 2.185955, 2.185959",\
+ "0.046980, 0.046980, 0.046980, 0.046980, 0.046980",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324730, 0.324730, 0.324730, 0.324731, 0.324732",\
+ "0.855404, 0.855404, 0.855405, 0.855410, 0.855418",\
+ "2.185952, 2.185952, 2.185953, 2.185955, 2.185959",\
+ "0.046980, 0.046980, 0.046980, 0.046980, 0.046980",\
+ "0.140333, 0.140333, 0.140333, 0.140333, 0.140333",\
+ "0.324730, 0.324730, 0.324730, 0.324731, 0.324732",\
+ "0.855404, 0.855404, 0.855406, 0.855410, 0.855418",\
+ "2.185952, 2.185952, 2.185953, 2.185955, 2.185959");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.567591, 0.820473, 1.099180, 1.562370, 2.488752",\
+ "0.589274, 0.842155, 1.120860, 1.584051, 2.510432",\
+ "0.630789, 0.883670, 1.162374, 1.625565, 2.551946",\
+ "0.764080, 1.016961, 1.295666, 1.758857, 2.685237",\
+ "1.112975, 1.365857, 1.644563, 2.107754, 3.034136",\
+ "0.655000, 0.908054, 1.186727, 1.649085, 2.574686",\
+ "0.676682, 0.929736, 1.208408, 1.670765, 2.596366",\
+ "0.718198, 0.971251, 1.249922, 1.712279, 2.637879",\
+ "0.851488, 1.104542, 1.383214, 1.845571, 2.771171",\
+ "1.200383, 1.453438, 1.732111, 2.194468, 3.120070",\
+ "0.735814, 0.997094, 1.274690, 1.736706, 2.661641",\
+ "0.757496, 1.018775, 1.296371, 1.758387, 2.683321",\
+ "0.799012, 1.060290, 1.337885, 1.799901, 2.724834",\
+ "0.932302, 1.193581, 1.471177, 1.933192, 2.858126",\
+ "1.281197, 1.542477, 1.820074, 2.282090, 3.207025",\
+ "0.793404, 1.062813, 1.338829, 1.800619, 2.725150",\
+ "0.815087, 1.084495, 1.360510, 1.822300, 2.746830",\
+ "0.856602, 1.126010, 1.402024, 1.863814, 2.788343",\
+ "0.989893, 1.259301, 1.535315, 1.997105, 2.921635",\
+ "1.338787, 1.608197, 1.884213, 2.346003, 3.270534",\
+ "1.126013, 1.428226, 1.690636, 2.149940, 3.070606",\
+ "1.147696, 1.449908, 1.712317, 2.171620, 3.092286",\
+ "1.189211, 1.491422, 1.753831, 2.213135, 3.133800",\
+ "1.322502, 1.624713, 1.887123, 2.346426, 3.267091",\
+ "1.671397, 1.973610, 2.236020, 2.695324, 3.615990");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.045699, 0.045705, 0.045710, 0.045712, 0.045714",\
+ "0.082751, 0.082753, 0.082755, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171712",\
+ "0.455131, 0.455131, 0.455132, 0.455134, 0.455138",\
+ "1.170720, 1.170720, 1.170720, 1.170721, 1.170722",\
+ "0.045699, 0.045705, 0.045710, 0.045712, 0.045714",\
+ "0.082751, 0.082753, 0.082755, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171712",\
+ "0.455131, 0.455131, 0.455132, 0.455134, 0.455138",\
+ "1.170720, 1.170720, 1.170720, 1.170721, 1.170722",\
+ "0.045699, 0.045705, 0.045710, 0.045712, 0.045714",\
+ "0.082751, 0.082753, 0.082755, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171712",\
+ "0.455131, 0.455131, 0.455132, 0.455134, 0.455138",\
+ "1.170720, 1.170720, 1.170720, 1.170721, 1.170722",\
+ "0.045699, 0.045705, 0.045710, 0.045712, 0.045714",\
+ "0.082751, 0.082753, 0.082755, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171712",\
+ "0.455131, 0.455131, 0.455132, 0.455134, 0.455138",\
+ "1.170720, 1.170720, 1.170720, 1.170721, 1.170722",\
+ "0.045700, 0.045706, 0.045710, 0.045712, 0.045714",\
+ "0.082752, 0.082753, 0.082755, 0.082755, 0.082756",\
+ "0.171712, 0.171712, 0.171712, 0.171712, 0.171712",\
+ "0.455131, 0.455131, 0.455132, 0.455134, 0.455138",\
+ "1.170720, 1.170720, 1.170720, 1.170721, 1.170722");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2546*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.406169, 0.656592, 0.934420, 1.432277, 2.427991",\
+ "0.449017, 0.699439, 0.977034, 1.474087, 2.468193",\
+ "0.525461, 0.775882, 1.053428, 1.550312, 2.544081",\
+ "0.748731, 0.999151, 1.276378, 1.772159, 2.763722",\
+ "1.311413, 1.561833, 1.838149, 2.330786, 3.316060",\
+ "0.493579, 0.744100, 1.022078, 1.518992, 2.513925",\
+ "0.536427, 0.786947, 1.064689, 1.560801, 2.554126",\
+ "0.612871, 0.863390, 1.141083, 1.637027, 2.630014",\
+ "0.836140, 1.086659, 1.364029, 1.858874, 2.849656",\
+ "1.398823, 1.649341, 1.925790, 2.417500, 3.401994",\
+ "0.574430, 0.832981, 1.110043, 1.606613, 2.600880",\
+ "0.617278, 0.875827, 1.152654, 1.648423, 2.641081",\
+ "0.693722, 0.952271, 1.229048, 1.724649, 2.716969",\
+ "0.916992, 1.175540, 1.451994, 1.946496, 2.936611",\
+ "1.479674, 1.738222, 2.013755, 2.505122, 3.488949",\
+ "0.633136, 0.898470, 1.174188, 1.670527, 2.664389",\
+ "0.675984, 0.941316, 1.216799, 1.712336, 2.704590",\
+ "0.752428, 1.017760, 1.293192, 1.788562, 2.780478",\
+ "0.975698, 1.241029, 1.516138, 2.010409, 3.000120",\
+ "1.538380, 1.803711, 2.077899, 2.569036, 3.552458",\
+ "0.968049, 1.261165, 1.526347, 2.019992, 3.009845",\
+ "1.010896, 1.304012, 1.568950, 2.061798, 3.050046",\
+ "1.087340, 1.380455, 1.645342, 2.138023, 3.125935",\
+ "1.310609, 1.603724, 1.868277, 2.359865, 3.345576",\
+ "1.873291, 2.166406, 2.430006, 2.918479, 3.897913");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.072784, 0.072803, 0.073020, 0.073739, 0.075177",\
+ "0.151157, 0.151161, 0.151203, 0.151342, 0.151621",\
+ "0.326364, 0.326364, 0.326365, 0.326368, 0.326373",\
+ "0.855741, 0.855755, 0.855915, 0.856445, 0.857505",\
+ "2.187214, 2.187237, 2.187508, 2.188406, 2.190202",\
+ "0.072784, 0.072803, 0.073022, 0.073739, 0.075177",\
+ "0.151157, 0.151161, 0.151203, 0.151342, 0.151621",\
+ "0.326364, 0.326364, 0.326365, 0.326368, 0.326373",\
+ "0.855741, 0.855755, 0.855917, 0.856445, 0.857505",\
+ "2.187214, 2.187237, 2.187511, 2.188406, 2.190202",\
+ "0.072785, 0.072803, 0.073022, 0.073739, 0.075177",\
+ "0.151157, 0.151161, 0.151203, 0.151342, 0.151621",\
+ "0.326364, 0.326364, 0.326365, 0.326368, 0.326373",\
+ "0.855742, 0.855755, 0.855917, 0.856445, 0.857505",\
+ "2.187214, 2.187238, 2.187511, 2.188406, 2.190202",\
+ "0.072787, 0.072803, 0.073023, 0.073739, 0.075177",\
+ "0.151157, 0.151161, 0.151203, 0.151342, 0.151621",\
+ "0.326364, 0.326364, 0.326365, 0.326368, 0.326373",\
+ "0.855743, 0.855755, 0.855917, 0.856445, 0.857505",\
+ "2.187217, 2.187238, 2.187511, 2.188406, 2.190202",\
+ "0.072792, 0.072806, 0.073030, 0.073742, 0.075177",\
+ "0.151158, 0.151161, 0.151205, 0.151343, 0.151621",\
+ "0.326364, 0.326364, 0.326365, 0.326368, 0.326373",\
+ "0.855747, 0.855757, 0.855922, 0.856447, 0.857505",\
+ "2.187224, 2.187241, 2.187521, 2.188410, 2.190202");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.418201, 0.668626, 0.943179, 1.429721, 2.402805",\
+ "0.445861, 0.696286, 0.970980, 1.458010, 2.432069",\
+ "0.495070, 0.745495, 1.020403, 1.508166, 2.483693",\
+ "0.635634, 0.886057, 1.161631, 1.651703, 2.631847",\
+ "0.988299, 1.238725, 1.516052, 2.012175, 3.004421",\
+ "0.505610, 0.756134, 1.030800, 1.516435, 2.488739",\
+ "0.533270, 0.783794, 1.058603, 1.544724, 2.518003",\
+ "0.582480, 0.833003, 1.108028, 1.594880, 2.569627",\
+ "0.723043, 0.973565, 1.249264, 1.738417, 2.717781",\
+ "1.075708, 1.326233, 1.603704, 2.098890, 3.090355",\
+ "0.586462, 0.845014, 1.118765, 1.604057, 2.575694",\
+ "0.614122, 0.872674, 1.146568, 1.632346, 2.604958",\
+ "0.663331, 0.921884, 1.195993, 1.682502, 2.656582",\
+ "0.803894, 1.062445, 1.337229, 1.826039, 2.804736",\
+ "1.156560, 1.415114, 1.691670, 2.186512, 3.177310",\
+ "0.645168, 0.910503, 1.182908, 1.667970, 2.639203",\
+ "0.672828, 0.938163, 1.210711, 1.696259, 2.668467",\
+ "0.722037, 0.987373, 1.260136, 1.746415, 2.720091",\
+ "0.862600, 1.127934, 1.401372, 1.889952, 2.868245",\
+ "1.215266, 1.480603, 1.755814, 2.250425, 3.240819",\
+ "0.980081, 1.273199, 1.534953, 2.017389, 2.984659",\
+ "1.007741, 1.300859, 1.562760, 2.045680, 3.013923",\
+ "1.056951, 1.350069, 1.612193, 2.095839, 3.065547",\
+ "1.197513, 1.490629, 1.753453, 2.239386, 3.213701",\
+ "1.550180, 1.843298, 2.107956, 2.599883, 3.586275");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.031046, 0.031099, 0.031481, 0.032572, 0.034755",\
+ "0.078404, 0.078409, 0.078443, 0.078540, 0.078733",\
+ "0.173504, 0.173502, 0.173487, 0.173444, 0.173357",\
+ "0.457144, 0.457135, 0.457066, 0.456868, 0.456473",\
+ "1.169261, 1.169272, 1.169347, 1.169562, 1.169994",\
+ "0.031046, 0.031099, 0.031484, 0.032572, 0.034755",\
+ "0.078404, 0.078409, 0.078443, 0.078540, 0.078733",\
+ "0.173504, 0.173502, 0.173487, 0.173444, 0.173357",\
+ "0.457144, 0.457135, 0.457065, 0.456868, 0.456473",\
+ "1.169261, 1.169272, 1.169348, 1.169562, 1.169994",\
+ "0.031046, 0.031100, 0.031484, 0.032572, 0.034755",\
+ "0.078404, 0.078409, 0.078443, 0.078540, 0.078733",\
+ "0.173504, 0.173502, 0.173487, 0.173444, 0.173357",\
+ "0.457144, 0.457134, 0.457065, 0.456868, 0.456473",\
+ "1.169261, 1.169272, 1.169348, 1.169562, 1.169994",\
+ "0.031048, 0.031101, 0.031484, 0.032572, 0.034755",\
+ "0.078404, 0.078409, 0.078443, 0.078540, 0.078733",\
+ "0.173504, 0.173502, 0.173487, 0.173444, 0.173357",\
+ "0.457144, 0.457134, 0.457065, 0.456868, 0.456473",\
+ "1.169261, 1.169272, 1.169348, 1.169562, 1.169994",\
+ "0.031051, 0.031118, 0.031495, 0.032577, 0.034755",\
+ "0.078405, 0.078410, 0.078444, 0.078540, 0.078733",\
+ "0.173504, 0.173502, 0.173487, 0.173443, 0.173357",\
+ "0.457143, 0.457131, 0.457063, 0.456867, 0.456473",\
+ "1.169262, 1.169275, 1.169350, 1.169563, 1.169994");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2619*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.553465, 0.819964, 1.109829, 1.605668, 2.597345",\
+ "0.603560, 0.870058, 1.159923, 1.655763, 2.647441",\
+ "0.692214, 0.958711, 1.248576, 1.744417, 2.736099",\
+ "0.916360, 1.182856, 1.472721, 1.968563, 2.960246",\
+ "1.468983, 1.735479, 2.025344, 2.521186, 3.512870",\
+ "0.640874, 0.907555, 1.197480, 1.692382, 2.683279",\
+ "0.690968, 0.957649, 1.247574, 1.742477, 2.733375",\
+ "0.779622, 1.046302, 1.336226, 1.831131, 2.822032",\
+ "1.003768, 1.270447, 1.560372, 2.055277, 3.046180",\
+ "1.556391, 1.823070, 2.112994, 2.607900, 3.598804",\
+ "0.721784, 0.996619, 1.285445, 1.780004, 2.770234",\
+ "0.771879, 1.046713, 1.335539, 1.830098, 2.820330",\
+ "0.860533, 1.135366, 1.424191, 1.918753, 2.908988",\
+ "1.084679, 1.359511, 1.648337, 2.142899, 3.133135",\
+ "1.637302, 1.912134, 2.200959, 2.695522, 3.685759",\
+ "0.783629, 1.062374, 1.349589, 1.843917, 2.833743",\
+ "0.833723, 1.112468, 1.399683, 1.894011, 2.883839",\
+ "0.922377, 1.201121, 1.488336, 1.982666, 2.972497",\
+ "1.146523, 1.425267, 1.712481, 2.206812, 3.196644",\
+ "1.699146, 1.977889, 2.265103, 2.759435, 3.749268",\
+ "1.121586, 1.428200, 1.701728, 2.193373, 3.179199",\
+ "1.171680, 1.478294, 1.751822, 2.243467, 3.229295",\
+ "1.260334, 1.566947, 1.840474, 2.332122, 3.317953",\
+ "1.484480, 1.791093, 2.064620, 2.556268, 3.542100",\
+ "2.037102, 2.343715, 2.617242, 3.108891, 4.094724");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324730, 0.324733",\
+ "0.855392, 0.855392, 0.855394, 0.855403, 0.855422",\
+ "2.185946, 2.185946, 2.185947, 2.185952, 2.185961",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324730, 0.324733",\
+ "0.855392, 0.855392, 0.855394, 0.855403, 0.855422",\
+ "2.185946, 2.185946, 2.185947, 2.185952, 2.185961",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324730, 0.324733",\
+ "0.855392, 0.855392, 0.855394, 0.855403, 0.855422",\
+ "2.185946, 2.185946, 2.185947, 2.185952, 2.185961",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324730, 0.324733",\
+ "0.855392, 0.855392, 0.855394, 0.855403, 0.855422",\
+ "2.185946, 2.185946, 2.185947, 2.185952, 2.185961",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324730, 0.324733",\
+ "0.855392, 0.855392, 0.855394, 0.855403, 0.855422",\
+ "2.185946, 2.185946, 2.185947, 2.185952, 2.185961");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.589270, 0.855765, 1.145630, 1.641474, 2.633161",\
+ "0.610950, 0.877444, 1.167309, 1.663153, 2.654842",\
+ "0.652464, 0.918958, 1.208822, 1.704667, 2.696356",\
+ "0.785756, 1.052250, 1.342115, 1.837959, 2.829648",\
+ "1.134654, 1.401149, 1.691014, 2.186858, 3.178545",\
+ "0.676679, 0.943356, 1.233280, 1.728188, 2.719095",\
+ "0.698358, 0.965036, 1.254959, 1.749868, 2.740776",\
+ "0.739872, 1.006549, 1.296473, 1.791381, 2.782290",\
+ "0.873164, 1.139841, 1.429765, 1.924673, 2.915581",\
+ "1.222063, 1.488740, 1.778664, 2.273572, 3.264479",\
+ "0.757589, 1.032420, 1.321245, 1.815809, 2.806050",\
+ "0.779269, 1.054100, 1.342925, 1.837489, 2.827731",\
+ "0.820783, 1.095613, 1.384438, 1.879003, 2.869245",\
+ "0.954075, 1.228905, 1.517730, 2.012295, 3.002537",\
+ "1.302974, 1.577804, 1.866629, 2.361193, 3.351434",\
+ "0.819433, 1.098175, 1.385389, 1.879722, 2.869559",\
+ "0.841113, 1.119855, 1.407069, 1.901402, 2.891240",\
+ "0.882627, 1.161368, 1.448582, 1.942916, 2.932754",\
+ "1.015919, 1.294661, 1.581874, 2.076208, 3.066046",\
+ "1.364817, 1.643559, 1.930773, 2.425107, 3.414943",\
+ "1.157390, 1.464001, 1.737528, 2.229178, 3.215015",\
+ "1.179069, 1.485680, 1.759207, 2.250858, 3.236696",\
+ "1.220583, 1.527194, 1.800721, 2.292372, 3.278210",\
+ "1.353875, 1.660486, 1.934013, 2.425664, 3.411501",\
+ "1.702774, 2.009385, 2.282912, 2.774562, 3.760399");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.045715, 0.045718, 0.045719, 0.045719, 0.045719",\
+ "0.082756, 0.082757, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455131, 0.455140",\
+ "1.170717, 1.170717, 1.170718, 1.170720, 1.170723",\
+ "0.045715, 0.045718, 0.045719, 0.045719, 0.045719",\
+ "0.082756, 0.082757, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455131, 0.455140",\
+ "1.170717, 1.170717, 1.170718, 1.170720, 1.170723",\
+ "0.045715, 0.045718, 0.045719, 0.045719, 0.045719",\
+ "0.082756, 0.082757, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455131, 0.455140",\
+ "1.170717, 1.170717, 1.170718, 1.170720, 1.170723",\
+ "0.045716, 0.045718, 0.045719, 0.045719, 0.045719",\
+ "0.082756, 0.082757, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455131, 0.455140",\
+ "1.170717, 1.170717, 1.170718, 1.170720, 1.170723",\
+ "0.045716, 0.045718, 0.045719, 0.045719, 0.045719",\
+ "0.082756, 0.082757, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455131, 0.455140",\
+ "1.170717, 1.170717, 1.170718, 1.170720, 1.170723");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2551*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.535912, 0.788172, 1.068241, 1.533239, 2.463234",\
+ "0.586006, 0.838266, 1.118335, 1.583333, 2.513329",\
+ "0.674661, 0.926920, 1.206988, 1.671987, 2.601985",\
+ "0.898807, 1.151066, 1.431133, 1.896132, 2.826131",\
+ "1.451430, 1.703688, 1.983755, 2.448755, 3.378754",\
+ "0.623320, 0.875758, 1.155794, 1.619953, 2.549168",\
+ "0.673414, 0.925853, 1.205888, 1.670047, 2.599263",\
+ "0.762069, 1.014506, 1.294541, 1.758701, 2.687918",\
+ "0.986215, 1.238652, 1.518686, 1.982847, 2.912065",\
+ "1.538838, 1.791275, 2.071309, 2.535469, 3.464688",\
+ "0.704222, 0.964810, 1.243757, 1.707574, 2.636123",\
+ "0.754316, 1.014904, 1.293851, 1.757668, 2.686218",\
+ "0.842971, 1.103558, 1.382504, 1.846323, 2.774873",\
+ "1.067117, 1.327704, 1.606649, 2.070468, 2.999020",\
+ "1.619740, 1.880326, 2.159272, 2.623091, 3.551643",\
+ "0.761984, 1.030547, 1.307896, 1.771487, 2.699632",\
+ "0.812078, 1.080642, 1.357990, 1.821582, 2.749727",\
+ "0.900733, 1.169295, 1.446643, 1.910236, 2.838382",\
+ "1.124879, 1.393441, 1.670788, 2.134381, 3.062529",\
+ "1.677502, 1.946064, 2.223411, 2.687004, 3.615152",\
+ "1.092601, 1.396168, 1.659722, 2.120816, 3.045088",\
+ "1.142695, 1.446262, 1.709816, 2.170910, 3.095183",\
+ "1.231350, 1.534915, 1.798469, 2.259564, 3.183838",\
+ "1.455496, 1.759061, 2.022614, 2.483710, 3.407985",\
+ "2.008119, 2.311684, 2.575236, 3.036332, 3.960608");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324729, 0.324730",\
+ "0.855391, 0.855391, 0.855393, 0.855398, 0.855408",\
+ "2.185946, 2.185946, 2.185946, 2.185949, 2.185954",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324729, 0.324730",\
+ "0.855391, 0.855391, 0.855393, 0.855398, 0.855408",\
+ "2.185946, 2.185946, 2.185946, 2.185949, 2.185954",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324729, 0.324730",\
+ "0.855391, 0.855391, 0.855393, 0.855398, 0.855408",\
+ "2.185946, 2.185946, 2.185946, 2.185949, 2.185954",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324729, 0.324730",\
+ "0.855391, 0.855391, 0.855393, 0.855398, 0.855408",\
+ "2.185946, 2.185946, 2.185946, 2.185949, 2.185954",\
+ "0.046988, 0.046989, 0.046990, 0.046990, 0.046990",\
+ "0.140334, 0.140334, 0.140334, 0.140334, 0.140334",\
+ "0.324728, 0.324728, 0.324728, 0.324729, 0.324730",\
+ "0.855391, 0.855391, 0.855393, 0.855398, 0.855408",\
+ "2.185946, 2.185946, 2.185946, 2.185949, 2.185954");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.571718, 0.823975, 1.104042, 1.569042, 2.499043",\
+ "0.593398, 0.845655, 1.125721, 1.590722, 2.520724",\
+ "0.634911, 0.887169, 1.167235, 1.632236, 2.562238",\
+ "0.768203, 1.020461, 1.300527, 1.765528, 2.695529",\
+ "1.117102, 1.369359, 1.649426, 2.114426, 3.044427",\
+ "0.659126, 0.911562, 1.191595, 1.655756, 2.584977",\
+ "0.680806, 0.933241, 1.213274, 1.677436, 2.606658",\
+ "0.722320, 0.974755, 1.254788, 1.718950, 2.648171",\
+ "0.855612, 1.108047, 1.388080, 1.852242, 2.781463",\
+ "1.204510, 1.456946, 1.736979, 2.201141, 3.130361",\
+ "0.740028, 1.000613, 1.279558, 1.743378, 2.671932",\
+ "0.761708, 1.022293, 1.301237, 1.765058, 2.693613",\
+ "0.803222, 1.063807, 1.342751, 1.806571, 2.735126",\
+ "0.936514, 1.197099, 1.476043, 1.939863, 2.868418",\
+ "1.285412, 1.545998, 1.824942, 2.288762, 3.217316",\
+ "0.797790, 1.066351, 1.343697, 1.807291, 2.735441",\
+ "0.819470, 1.088030, 1.365376, 1.828971, 2.757122",\
+ "0.860984, 1.129544, 1.406890, 1.870484, 2.798635",\
+ "0.994276, 1.262836, 1.540182, 2.003777, 2.931927",\
+ "1.343174, 1.611735, 1.889081, 2.352675, 3.280825",\
+ "1.128407, 1.431970, 1.695523, 2.156619, 3.080897",\
+ "1.150087, 1.453650, 1.717202, 2.178299, 3.102577",\
+ "1.191600, 1.495163, 1.758715, 2.219813, 3.144091",\
+ "1.324893, 1.628456, 1.892008, 2.353105, 3.277383",\
+ "1.673791, 1.977355, 2.240907, 2.702003, 3.626281");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.045715, 0.045716, 0.045718, 0.045718, 0.045718",\
+ "0.082756, 0.082756, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455128, 0.455133",\
+ "1.170717, 1.170717, 1.170717, 1.170718, 1.170720",\
+ "0.045715, 0.045716, 0.045718, 0.045718, 0.045718",\
+ "0.082756, 0.082756, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455128, 0.455133",\
+ "1.170717, 1.170717, 1.170717, 1.170718, 1.170720",\
+ "0.045715, 0.045716, 0.045718, 0.045718, 0.045718",\
+ "0.082756, 0.082756, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455128, 0.455133",\
+ "1.170717, 1.170717, 1.170717, 1.170718, 1.170720",\
+ "0.045715, 0.045716, 0.045718, 0.045718, 0.045718",\
+ "0.082756, 0.082756, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455128, 0.455133",\
+ "1.170717, 1.170717, 1.170717, 1.170718, 1.170720",\
+ "0.045715, 0.045717, 0.045718, 0.045718, 0.045718",\
+ "0.082756, 0.082756, 0.082757, 0.082757, 0.082757",\
+ "0.171711, 0.171711, 0.171711, 0.171712, 0.171712",\
+ "0.455125, 0.455125, 0.455126, 0.455128, 0.455133",\
+ "1.170717, 1.170717, 1.170717, 1.170718, 1.170720");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2487*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.552964, 0.814309, 1.099442, 1.604025, 2.613190",\
+ "0.595811, 0.857156, 1.142289, 1.646869, 2.656030",\
+ "0.672254, 0.933599, 1.218732, 1.723310, 2.732467",\
+ "0.895523, 1.156868, 1.442001, 1.946579, 2.955732",\
+ "1.458204, 1.719550, 2.004683, 2.509259, 3.518410",\
+ "0.640373, 0.901851, 1.187121, 1.690739, 2.699123",\
+ "0.683220, 0.944698, 1.229968, 1.733584, 2.741963",\
+ "0.759663, 1.021142, 1.306411, 1.810025, 2.818400",\
+ "0.982932, 1.244411, 1.529680, 2.033293, 3.041666",\
+ "1.545614, 1.807093, 2.092361, 2.595973, 3.604344",\
+ "0.723483, 0.990810, 1.275087, 1.778361, 2.786078",\
+ "0.766329, 1.033657, 1.317933, 1.821205, 2.828918",\
+ "0.842772, 1.110100, 1.394377, 1.897646, 2.905355",\
+ "1.066041, 1.333369, 1.617646, 2.120914, 3.128621",\
+ "1.628723, 1.896051, 2.180327, 2.683595, 3.691299",\
+ "0.786922, 1.056412, 1.339232, 1.842274, 2.849587",\
+ "0.829768, 1.099259, 1.382079, 1.885119, 2.892427",\
+ "0.906211, 1.175702, 1.458522, 1.961560, 2.968864",\
+ "1.129480, 1.398971, 1.681791, 2.184828, 3.192130",\
+ "1.692162, 1.961653, 2.244473, 2.747508, 3.754808",\
+ "1.122015, 1.420432, 1.691460, 2.191767, 3.195044",\
+ "1.164862, 1.463279, 1.734307, 2.234612, 3.237884",\
+ "1.241305, 1.539723, 1.810750, 2.311053, 3.314321",\
+ "1.464574, 1.762992, 2.034019, 2.534321, 3.537586",\
+ "2.027255, 2.325674, 2.596701, 3.097001, 4.100264");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.072811, 0.072811, 0.072826, 0.072880, 0.072987",\
+ "0.151162, 0.151162, 0.151165, 0.151176, 0.151196",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855772, 0.855812, 0.855891",\
+ "2.187247, 2.187247, 2.187266, 2.187333, 2.187467",\
+ "0.072811, 0.072811, 0.072827, 0.072880, 0.072987",\
+ "0.151162, 0.151162, 0.151165, 0.151176, 0.151196",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855772, 0.855812, 0.855891",\
+ "2.187247, 2.187247, 2.187267, 2.187333, 2.187467",\
+ "0.072811, 0.072811, 0.072827, 0.072880, 0.072987",\
+ "0.151162, 0.151162, 0.151165, 0.151176, 0.151196",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855772, 0.855812, 0.855891",\
+ "2.187247, 2.187247, 2.187267, 2.187333, 2.187467",\
+ "0.072811, 0.072811, 0.072827, 0.072880, 0.072987",\
+ "0.151162, 0.151162, 0.151165, 0.151176, 0.151196",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855772, 0.855812, 0.855891",\
+ "2.187247, 2.187247, 2.187267, 2.187333, 2.187467",\
+ "0.072811, 0.072811, 0.072827, 0.072880, 0.072987",\
+ "0.151162, 0.151162, 0.151165, 0.151176, 0.151196",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855773, 0.855812, 0.855891",\
+ "2.187247, 2.187247, 2.187267, 2.187334, 2.187467");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.564998, 0.826343, 1.111477, 1.616063, 2.625237",\
+ "0.592658, 0.854002, 1.139137, 1.643723, 2.652897",\
+ "0.641868, 0.903212, 1.188347, 1.692935, 2.702110",\
+ "0.782429, 1.043773, 1.328907, 1.833490, 2.842657",\
+ "1.135098, 1.396442, 1.681576, 2.186166, 3.195345",\
+ "0.652408, 0.913885, 1.199155, 1.702778, 2.711171",\
+ "0.680068, 0.941545, 1.226815, 1.730438, 2.738831",\
+ "0.729278, 0.990755, 1.276025, 1.779649, 2.788044",\
+ "0.869838, 1.131316, 1.416586, 1.920205, 2.928591",\
+ "1.222507, 1.483984, 1.769255, 2.272880, 3.281279",\
+ "0.735517, 1.002843, 1.287121, 1.790400, 2.798126",\
+ "0.763177, 1.030503, 1.314781, 1.818060, 2.825786",\
+ "0.812387, 1.079713, 1.363991, 1.867271, 2.874999",\
+ "0.952947, 1.220274, 1.504552, 2.007827, 3.015546",\
+ "1.305617, 1.572943, 1.857221, 2.360502, 3.368234",\
+ "0.798956, 1.068446, 1.351267, 1.854313, 2.861635",\
+ "0.826616, 1.096106, 1.378927, 1.881973, 2.889295",\
+ "0.875826, 1.145315, 1.428137, 1.931184, 2.938508",\
+ "1.016386, 1.285877, 1.568697, 2.071740, 3.079055",\
+ "1.369056, 1.638545, 1.921366, 2.424415, 3.431743",\
+ "1.134049, 1.432466, 1.703495, 2.203806, 3.207091",\
+ "1.161709, 1.460126, 1.731154, 2.231466, 3.234751",\
+ "1.210919, 1.509335, 1.780365, 2.280677, 3.283964",\
+ "1.351480, 1.649897, 1.920925, 2.421233, 3.424510",\
+ "1.704149, 2.002565, 2.273594, 2.773909, 3.777199");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.031035, 0.031069, 0.031220, 0.031570, 0.032271",\
+ "0.078403, 0.078406, 0.078420, 0.078451, 0.078513",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169266, 1.169295, 1.169365, 1.169503",\
+ "0.031035, 0.031069, 0.031221, 0.031570, 0.032271",\
+ "0.078403, 0.078406, 0.078420, 0.078451, 0.078513",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169266, 1.169296, 1.169365, 1.169503",\
+ "0.031035, 0.031070, 0.031221, 0.031570, 0.032271",\
+ "0.078403, 0.078406, 0.078420, 0.078451, 0.078513",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169266, 1.169296, 1.169365, 1.169503",\
+ "0.031035, 0.031071, 0.031221, 0.031570, 0.032271",\
+ "0.078403, 0.078406, 0.078420, 0.078451, 0.078513",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169266, 1.169296, 1.169365, 1.169503",\
+ "0.031035, 0.031083, 0.031224, 0.031571, 0.032271",\
+ "0.078403, 0.078407, 0.078420, 0.078451, 0.078513",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169268, 1.169296, 1.169365, 1.169503");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.538940, 0.779876, 1.050099, 1.503272, 2.409617",\
+ "0.581786, 0.822723, 1.092946, 1.546117, 2.452459",\
+ "0.658229, 0.899166, 1.169389, 1.622558, 2.528897",\
+ "0.881498, 1.122435, 1.392658, 1.845826, 2.752164",\
+ "1.444180, 1.685117, 1.955339, 2.408507, 3.314842",\
+ "0.626346, 0.867426, 1.137614, 1.589986, 2.495551",\
+ "0.669192, 0.910272, 1.180461, 1.632831, 2.538393",\
+ "0.745635, 0.986716, 1.256904, 1.709272, 2.614831",\
+ "0.968904, 1.209985, 1.480173, 1.932540, 2.838098",\
+ "1.531586, 1.772666, 2.042854, 2.495221, 3.400776",\
+ "0.707175, 0.956384, 1.225576, 1.677607, 2.582506",\
+ "0.750022, 0.999231, 1.268423, 1.720452, 2.625348",\
+ "0.826465, 1.075674, 1.344866, 1.796893, 2.701786",\
+ "1.049734, 1.298944, 1.568135, 2.020162, 2.925053",\
+ "1.612416, 1.861625, 2.130816, 2.582842, 3.487731",\
+ "0.764818, 1.021986, 1.289713, 1.741520, 2.646015",\
+ "0.807664, 1.064833, 1.332560, 1.784365, 2.688857",\
+ "0.884107, 1.141276, 1.409003, 1.860806, 2.765295",\
+ "1.107376, 1.364545, 1.632272, 2.084074, 2.988562",\
+ "1.670058, 1.927227, 2.194953, 2.646755, 3.551240",\
+ "1.090702, 1.386049, 1.641418, 2.090797, 2.991471",\
+ "1.133548, 1.428896, 1.684264, 2.133642, 3.034313",\
+ "1.209992, 1.505339, 1.760707, 2.210084, 3.110751",\
+ "1.433261, 1.728608, 1.983976, 2.433352, 3.334018",\
+ "1.995942, 2.291290, 2.546658, 2.996032, 3.896696");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.072811, 0.072811, 0.072823, 0.072863, 0.072944",\
+ "0.151162, 0.151162, 0.151164, 0.151172, 0.151188",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855770, 0.855800, 0.855859",\
+ "2.187248, 2.187248, 2.187262, 2.187313, 2.187414",\
+ "0.072811, 0.072811, 0.072823, 0.072863, 0.072944",\
+ "0.151162, 0.151162, 0.151165, 0.151172, 0.151188",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855770, 0.855800, 0.855859",\
+ "2.187248, 2.187248, 2.187262, 2.187313, 2.187414",\
+ "0.072811, 0.072811, 0.072823, 0.072863, 0.072944",\
+ "0.151162, 0.151162, 0.151165, 0.151172, 0.151188",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855770, 0.855800, 0.855859",\
+ "2.187248, 2.187248, 2.187262, 2.187313, 2.187414",\
+ "0.072811, 0.072811, 0.072823, 0.072863, 0.072944",\
+ "0.151162, 0.151162, 0.151165, 0.151172, 0.151188",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855770, 0.855800, 0.855859",\
+ "2.187248, 2.187248, 2.187263, 2.187313, 2.187414",\
+ "0.072811, 0.072811, 0.072824, 0.072864, 0.072944",\
+ "0.151162, 0.151162, 0.151165, 0.151172, 0.151188",\
+ "0.326364, 0.326364, 0.326364, 0.326364, 0.326365",\
+ "0.855761, 0.855761, 0.855770, 0.855800, 0.855859",\
+ "2.187248, 2.187248, 2.187263, 2.187313, 2.187414");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.550974, 0.791910, 1.062134, 1.515310, 2.421661",\
+ "0.578634, 0.819570, 1.089794, 1.542970, 2.449322",\
+ "0.627844, 0.868780, 1.139004, 1.592180, 2.498534",\
+ "0.768404, 1.009341, 1.279564, 1.732737, 2.639084",\
+ "1.121073, 1.362010, 1.632233, 2.085412, 2.991768",\
+ "0.638380, 0.879460, 1.149649, 1.602023, 2.507595",\
+ "0.666040, 0.907120, 1.177309, 1.629683, 2.535255",\
+ "0.715250, 0.956330, 1.226519, 1.678894, 2.584468",\
+ "0.855810, 1.096890, 1.367079, 1.819451, 2.725018",\
+ "1.208480, 1.449559, 1.719748, 2.172125, 3.077702",\
+ "0.719210, 0.968418, 1.237611, 1.689645, 2.594550",\
+ "0.746870, 0.996078, 1.265271, 1.717305, 2.622211",\
+ "0.796080, 1.045288, 1.314481, 1.766516, 2.671423",\
+ "0.936640, 1.185849, 1.455041, 1.907072, 2.811973",\
+ "1.289309, 1.538518, 1.807710, 2.259747, 3.164657",\
+ "0.776852, 1.034020, 1.301748, 1.753558, 2.658059",\
+ "0.804512, 1.061680, 1.329408, 1.781218, 2.685719",\
+ "0.853722, 1.110890, 1.378618, 1.830429, 2.734932",\
+ "0.994283, 1.251451, 1.519178, 1.970985, 2.875482",\
+ "1.346952, 1.604120, 1.871847, 2.323660, 3.228166",\
+ "1.102736, 1.398083, 1.653452, 2.102835, 3.003515",\
+ "1.130396, 1.425743, 1.681112, 2.130495, 3.031176",\
+ "1.179606, 1.474952, 1.730322, 2.179706, 3.080388",\
+ "1.320167, 1.615513, 1.870883, 2.320263, 3.220938",\
+ "1.672836, 1.968182, 2.223552, 2.672937, 3.573622");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.031036, 0.031054, 0.031161, 0.031438, 0.031991",\
+ "0.078403, 0.078405, 0.078414, 0.078439, 0.078488",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169263, 1.169284, 1.169338, 1.169448",\
+ "0.031036, 0.031055, 0.031162, 0.031438, 0.031991",\
+ "0.078403, 0.078405, 0.078414, 0.078439, 0.078488",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169263, 1.169284, 1.169338, 1.169448",\
+ "0.031036, 0.031055, 0.031162, 0.031438, 0.031991",\
+ "0.078403, 0.078405, 0.078414, 0.078439, 0.078488",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169263, 1.169284, 1.169338, 1.169448",\
+ "0.031036, 0.031055, 0.031162, 0.031438, 0.031991",\
+ "0.078403, 0.078405, 0.078414, 0.078439, 0.078488",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169263, 1.169284, 1.169338, 1.169448",\
+ "0.031036, 0.031062, 0.031165, 0.031439, 0.031991",\
+ "0.078403, 0.078406, 0.078415, 0.078439, 0.078488",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457146, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169259, 1.169264, 1.169285, 1.169339, 1.169448");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2727*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.564410, 0.823611, 1.109689, 1.603513, 2.591161",\
+ "0.607267, 0.866469, 1.152547, 1.646371, 2.634019",\
+ "0.683720, 0.942922, 1.229000, 1.722825, 2.710474",\
+ "0.906994, 1.166196, 1.452275, 1.946099, 2.933748",\
+ "1.469683, 1.728885, 2.014963, 2.508788, 3.496438",\
+ "0.651822, 0.911173, 1.197335, 1.690228, 2.677094",\
+ "0.694680, 0.954031, 1.240193, 1.733086, 2.719953",\
+ "0.771133, 1.030483, 1.316646, 1.809540, 2.796407",\
+ "0.994407, 1.253758, 1.539921, 2.032814, 3.019682",\
+ "1.557095, 1.816446, 2.102610, 2.595503, 3.582371",\
+ "0.732717, 1.000191, 1.285301, 1.777850, 2.764050",\
+ "0.775575, 1.043049, 1.328159, 1.820708, 2.806908",\
+ "0.852028, 1.119502, 1.404612, 1.897162, 2.883362",\
+ "1.075302, 1.342776, 1.627887, 2.120436, 3.106637",\
+ "1.637990, 1.905464, 2.190576, 2.683125, 3.669326",\
+ "0.792238, 1.065880, 1.349444, 1.841763, 2.827559",\
+ "0.835095, 1.108738, 1.392303, 1.884622, 2.870417",\
+ "0.911548, 1.185191, 1.468756, 1.961075, 2.946871",\
+ "1.134822, 1.408465, 1.692031, 2.184350, 3.170146",\
+ "1.697511, 1.971154, 2.254719, 2.747039, 3.732835",\
+ "1.125661, 1.430876, 1.701565, 2.191215, 3.173015",\
+ "1.168519, 1.473734, 1.744423, 2.234074, 3.215873",\
+ "1.244972, 1.550187, 1.820877, 2.310527, 3.292327",\
+ "1.468246, 1.773462, 2.044151, 2.533802, 3.515602",\
+ "2.030934, 2.336150, 2.606840, 3.096491, 4.078291");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.072526, 0.072519, 0.072509, 0.072504, 0.072494",\
+ "0.151107, 0.151106, 0.151104, 0.151103, 0.151101",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855546, 0.855538, 0.855535, 0.855527",\
+ "2.186892, 2.186883, 2.186870, 2.186864, 2.186852",\
+ "0.072526, 0.072519, 0.072509, 0.072504, 0.072494",\
+ "0.151107, 0.151105, 0.151104, 0.151103, 0.151101",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855546, 0.855538, 0.855535, 0.855527",\
+ "2.186892, 2.186883, 2.186870, 2.186864, 2.186852",\
+ "0.072526, 0.072519, 0.072509, 0.072504, 0.072494",\
+ "0.151107, 0.151105, 0.151104, 0.151103, 0.151101",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855546, 0.855538, 0.855535, 0.855527",\
+ "2.186892, 2.186882, 2.186870, 2.186864, 2.186852",\
+ "0.072526, 0.072519, 0.072509, 0.072504, 0.072494",\
+ "0.151107, 0.151105, 0.151104, 0.151103, 0.151101",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855546, 0.855538, 0.855535, 0.855527",\
+ "2.186892, 2.186882, 2.186870, 2.186864, 2.186852",\
+ "0.072525, 0.072517, 0.072509, 0.072504, 0.072494",\
+ "0.151107, 0.151105, 0.151104, 0.151103, 0.151101",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855544, 0.855538, 0.855535, 0.855527",\
+ "2.186891, 2.186880, 2.186870, 2.186864, 2.186852");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.576423, 0.835624, 1.121701, 1.615525, 2.603172",\
+ "0.604083, 0.863284, 1.149361, 1.643184, 2.630832",\
+ "0.653288, 0.912488, 1.198565, 1.692388, 2.680036",\
+ "0.793871, 1.053072, 1.339149, 1.832974, 2.820621",\
+ "1.146508, 1.405709, 1.691785, 2.185609, 3.173255",\
+ "0.663836, 0.923186, 1.209347, 1.702240, 2.689106",\
+ "0.691496, 0.950845, 1.237007, 1.729899, 2.716765",\
+ "0.740700, 1.000050, 1.286211, 1.779103, 2.765969",\
+ "0.881284, 1.140634, 1.426796, 1.919688, 2.906555",\
+ "1.233921, 1.493270, 1.779431, 2.272324, 3.259189",\
+ "0.744731, 1.012204, 1.297313, 1.789862, 2.776061",\
+ "0.772390, 1.039863, 1.324972, 1.817521, 2.803720",\
+ "0.821595, 1.089068, 1.374177, 1.866726, 2.852924",\
+ "0.962178, 1.229652, 1.514761, 2.007311, 2.993510",\
+ "1.314816, 1.582289, 1.867397, 2.359946, 3.346144",\
+ "0.804251, 1.077893, 1.361457, 1.853775, 2.839570",\
+ "0.831911, 1.105553, 1.389116, 1.881435, 2.867229",\
+ "0.881115, 1.154757, 1.438321, 1.930639, 2.916433",\
+ "1.021699, 1.295341, 1.578905, 2.071224, 3.057019",\
+ "1.374336, 1.647978, 1.931541, 2.423859, 3.409653",\
+ "1.137675, 1.442889, 1.713577, 2.203227, 3.185026",\
+ "1.165335, 1.470549, 1.741237, 2.230887, 3.212686",\
+ "1.214539, 1.519753, 1.790441, 2.280091, 3.261889",\
+ "1.355123, 1.660337, 1.931026, 2.420676, 3.402475",\
+ "1.707760, 2.012974, 2.283661, 2.773311, 3.755109");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.031042, 0.031042, 0.031051, 0.031083, 0.031146",\
+ "0.078404, 0.078404, 0.078405, 0.078407, 0.078413",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457146, 0.457146, 0.457146",\
+ "1.169260, 1.169260, 1.169262, 1.169268, 1.169281",\
+ "0.031042, 0.031042, 0.031051, 0.031083, 0.031146",\
+ "0.078404, 0.078404, 0.078405, 0.078407, 0.078413",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457146, 0.457146, 0.457146",\
+ "1.169260, 1.169260, 1.169262, 1.169268, 1.169281",\
+ "0.031042, 0.031042, 0.031051, 0.031083, 0.031146",\
+ "0.078404, 0.078404, 0.078405, 0.078407, 0.078413",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169260, 1.169260, 1.169262, 1.169268, 1.169281",\
+ "0.031042, 0.031042, 0.031051, 0.031083, 0.031146",\
+ "0.078404, 0.078404, 0.078405, 0.078407, 0.078413",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169260, 1.169260, 1.169262, 1.169268, 1.169281",\
+ "0.031042, 0.031042, 0.031051, 0.031083, 0.031146",\
+ "0.078404, 0.078404, 0.078405, 0.078407, 0.078413",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457146, 0.457146, 0.457146, 0.457146",\
+ "1.169260, 1.169260, 1.169262, 1.169268, 1.169281");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2658*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.548070, 0.800917, 1.079123, 1.542119, 2.468112",\
+ "0.590927, 0.843775, 1.121981, 1.584977, 2.510970",\
+ "0.667380, 0.920228, 1.198434, 1.661431, 2.587423",\
+ "0.890654, 1.143502, 1.421709, 1.884705, 2.810698",\
+ "1.453343, 1.706191, 1.984398, 2.447394, 3.373387",\
+ "0.635475, 0.888501, 1.166668, 1.628833, 2.554045",\
+ "0.678333, 0.931359, 1.209527, 1.671691, 2.596904",\
+ "0.754786, 1.007812, 1.285980, 1.748145, 2.673357",\
+ "0.978060, 1.231086, 1.509255, 1.971419, 2.896632",\
+ "1.540748, 1.793775, 2.071944, 2.534108, 3.459321",\
+ "0.716287, 0.977534, 1.254631, 1.716454, 2.641000",\
+ "0.759144, 1.020392, 1.297489, 1.759312, 2.683859",\
+ "0.835597, 1.096845, 1.373943, 1.835766, 2.760312",\
+ "1.058871, 1.320120, 1.597218, 2.059040, 2.983587",\
+ "1.621560, 1.882808, 2.159906, 2.621729, 3.546276",\
+ "0.773896, 1.043245, 1.318770, 1.780367, 2.704509",\
+ "0.816754, 1.086103, 1.361628, 1.823225, 2.747368",\
+ "0.893206, 1.162556, 1.438081, 1.899679, 2.823821",\
+ "1.116481, 1.385830, 1.661356, 2.122953, 3.047096",\
+ "1.679169, 1.948519, 2.224045, 2.685642, 3.609785",\
+ "1.108670, 1.408584, 1.670573, 2.129684, 3.049965",\
+ "1.151528, 1.451442, 1.713432, 2.172543, 3.092824",\
+ "1.227981, 1.527896, 1.789885, 2.248996, 3.169277",\
+ "1.451255, 1.751170, 2.013160, 2.472271, 3.392552",\
+ "2.013944, 2.313859, 2.575849, 3.034960, 3.955241");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.072526, 0.072516, 0.072505, 0.072503, 0.072500",\
+ "0.151107, 0.151105, 0.151103, 0.151102, 0.151102",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855543, 0.855535, 0.855534, 0.855532",\
+ "2.186892, 2.186879, 2.186865, 2.186863, 2.186859",\
+ "0.072526, 0.072516, 0.072505, 0.072503, 0.072500",\
+ "0.151107, 0.151105, 0.151103, 0.151102, 0.151102",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855543, 0.855535, 0.855534, 0.855532",\
+ "2.186892, 2.186878, 2.186865, 2.186863, 2.186859",\
+ "0.072526, 0.072515, 0.072505, 0.072503, 0.072500",\
+ "0.151107, 0.151105, 0.151103, 0.151102, 0.151102",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855543, 0.855535, 0.855534, 0.855532",\
+ "2.186892, 2.186878, 2.186865, 2.186863, 2.186859",\
+ "0.072526, 0.072515, 0.072505, 0.072503, 0.072500",\
+ "0.151107, 0.151105, 0.151103, 0.151102, 0.151102",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855551, 0.855543, 0.855535, 0.855534, 0.855532",\
+ "2.186892, 2.186878, 2.186865, 2.186863, 2.186859",\
+ "0.072524, 0.072513, 0.072505, 0.072503, 0.072500",\
+ "0.151107, 0.151104, 0.151103, 0.151102, 0.151102",\
+ "0.326363, 0.326363, 0.326363, 0.326363, 0.326363",\
+ "0.855550, 0.855541, 0.855535, 0.855534, 0.855532",\
+ "2.186889, 2.186875, 2.186865, 2.186863, 2.186859");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.560083, 0.812930, 1.091135, 1.554131, 2.480123",\
+ "0.587743, 0.840589, 1.118794, 1.581790, 2.507782",\
+ "0.636947, 0.889794, 1.167998, 1.630994, 2.556986",\
+ "0.777531, 1.030378, 1.308583, 1.771580, 2.697572",\
+ "1.130168, 1.383014, 1.661218, 2.124214, 3.050207",\
+ "0.647489, 0.900513, 1.178680, 1.640844, 2.566057",\
+ "0.675148, 0.928173, 1.206340, 1.668504, 2.593716",\
+ "0.724353, 0.977377, 1.255544, 1.717708, 2.642920",\
+ "0.864936, 1.117962, 1.396129, 1.858294, 2.783506",\
+ "1.217574, 1.470598, 1.748764, 2.210928, 3.136140",\
+ "0.728300, 0.989547, 1.266643, 1.728466, 2.653012",\
+ "0.755960, 1.017207, 1.294303, 1.756125, 2.680671",\
+ "0.805164, 1.066411, 1.343507, 1.805329, 2.729875",\
+ "0.945748, 1.206995, 1.484092, 1.945915, 2.870461",\
+ "1.298385, 1.559631, 1.836727, 2.298549, 3.223095",\
+ "0.785910, 1.055257, 1.330781, 1.792379, 2.716521",\
+ "0.813569, 1.082917, 1.358441, 1.820038, 2.744180",\
+ "0.862774, 1.132121, 1.407645, 1.869242, 2.793384",\
+ "1.003357, 1.272706, 1.548230, 2.009828, 2.933970",\
+ "1.355995, 1.625342, 1.900865, 2.362462, 3.286604",\
+ "1.120684, 1.420597, 1.682585, 2.141696, 3.061977",\
+ "1.148343, 1.448256, 1.710245, 2.169356, 3.089636",\
+ "1.197548, 1.497461, 1.759449, 2.218560, 3.138840",\
+ "1.338132, 1.638045, 1.900034, 2.359145, 3.279426",\
+ "1.690769, 1.990681, 2.252669, 2.711780, 3.632061");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.031042, 0.031042, 0.031047, 0.031067, 0.031107",\
+ "0.078404, 0.078404, 0.078404, 0.078406, 0.078410",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169260, 1.169260, 1.169261, 1.169265, 1.169273",\
+ "0.031042, 0.031042, 0.031047, 0.031067, 0.031107",\
+ "0.078404, 0.078404, 0.078404, 0.078406, 0.078410",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169260, 1.169260, 1.169261, 1.169265, 1.169273",\
+ "0.031042, 0.031042, 0.031047, 0.031067, 0.031107",\
+ "0.078404, 0.078404, 0.078404, 0.078406, 0.078410",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169260, 1.169260, 1.169261, 1.169265, 1.169273",\
+ "0.031042, 0.031042, 0.031047, 0.031067, 0.031107",\
+ "0.078404, 0.078404, 0.078404, 0.078406, 0.078410",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169260, 1.169260, 1.169261, 1.169265, 1.169273",\
+ "0.031042, 0.031042, 0.031048, 0.031067, 0.031107",\
+ "0.078404, 0.078404, 0.078404, 0.078406, 0.078410",\
+ "0.173505, 0.173505, 0.173505, 0.173505, 0.173505",\
+ "0.457145, 0.457145, 0.457145, 0.457145, 0.457145",\
+ "1.169260, 1.169260, 1.169261, 1.169265, 1.169273");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_2601*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[20]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.380795, 0.602668, 0.780712, 1.069465, 1.629809",\
+ "0.415064, 0.636936, 0.814980, 1.103733, 1.664078",\
+ "0.488546, 0.710419, 0.888463, 1.177216, 1.737561",\
+ "0.709765, 0.931638, 1.109681, 1.398435, 1.958779",\
+ "1.271568, 1.493441, 1.671484, 1.960238, 2.520582",\
+ "0.469199, 0.689987, 0.867992, 1.156770, 1.717163",\
+ "0.503468, 0.724255, 0.902261, 1.191038, 1.751431",\
+ "0.576950, 0.797738, 0.975743, 1.264521, 1.824914",\
+ "0.798169, 1.018957, 1.196962, 1.485740, 2.046133",\
+ "1.359972, 1.580759, 1.758765, 2.047543, 2.607936",\
+ "0.558271, 0.770322, 0.948019, 1.236798, 1.797194",\
+ "0.592539, 0.804590, 0.982288, 1.271067, 1.831463",\
+ "0.666022, 0.878073, 1.055770, 1.344549, 1.904946",\
+ "0.887241, 1.099292, 1.276989, 1.565768, 2.126164",\
+ "1.449044, 1.661095, 1.838792, 2.127571, 2.687967",\
+ "0.621529, 0.828138, 1.005713, 1.294227, 1.854208",\
+ "0.655798, 0.862407, 1.039981, 1.328496, 1.888477",\
+ "0.729280, 0.935889, 1.113464, 1.401978, 1.961960",\
+ "0.950499, 1.157108, 1.334682, 1.623197, 2.183178",\
+ "1.512302, 1.718911, 1.896485, 2.185000, 2.744981",\
+ "0.953935, 1.133367, 1.309369, 1.597399, 2.156428",\
+ "0.988204, 1.167636, 1.343637, 1.631667, 2.190696",\
+ "1.061687, 1.241118, 1.417120, 1.705150, 2.264179",\
+ "1.282905, 1.462337, 1.638339, 1.926369, 2.485398",\
+ "1.844708, 2.024140, 2.200142, 2.488172, 3.047201");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.027358, 0.027358, 0.027358, 0.027363, 0.027374",\
+ "0.129497, 0.129497, 0.129497, 0.129497, 0.129497",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831905, 0.831905, 0.831905, 0.831905, 0.831908",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131889",\
+ "0.027358, 0.027358, 0.027358, 0.027363, 0.027374",\
+ "0.129497, 0.129497, 0.129497, 0.129497, 0.129497",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831905, 0.831905, 0.831905, 0.831905, 0.831908",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131889",\
+ "0.027358, 0.027358, 0.027358, 0.027363, 0.027374",\
+ "0.129497, 0.129497, 0.129497, 0.129497, 0.129497",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831905, 0.831905, 0.831905, 0.831905, 0.831908",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131889",\
+ "0.027358, 0.027358, 0.027358, 0.027363, 0.027374",\
+ "0.129497, 0.129497, 0.129497, 0.129497, 0.129497",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831905, 0.831905, 0.831905, 0.831905, 0.831908",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131889",\
+ "0.027358, 0.027358, 0.027358, 0.027363, 0.027374",\
+ "0.129497, 0.129497, 0.129497, 0.129497, 0.129497",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831905, 0.831905, 0.831905, 0.831905, 0.831908",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131889");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.351941, 0.573814, 0.751857, 1.040610, 1.600955",\
+ "0.377860, 0.599733, 0.777776, 1.066529, 1.626874",\
+ "0.432503, 0.654375, 0.832419, 1.121172, 1.681517",\
+ "0.582379, 0.804252, 0.982296, 1.271049, 1.831393",\
+ "0.955531, 1.177403, 1.355447, 1.644200, 2.204545",\
+ "0.440345, 0.661132, 0.839138, 1.127915, 1.688308",\
+ "0.466264, 0.687051, 0.865057, 1.153834, 1.714228",\
+ "0.520907, 0.741694, 0.919700, 1.208477, 1.768870",\
+ "0.670783, 0.891571, 1.069576, 1.358354, 1.918747",\
+ "1.043935, 1.264722, 1.442728, 1.731505, 2.291898",\
+ "0.529417, 0.741468, 0.919165, 1.207944, 1.768340",\
+ "0.555336, 0.767386, 0.945084, 1.233863, 1.794259",\
+ "0.609978, 0.822029, 0.999727, 1.288506, 1.848902",\
+ "0.759855, 0.971906, 1.149603, 1.438382, 1.998778",\
+ "1.133006, 1.345057, 1.522755, 1.811534, 2.371930",\
+ "0.592675, 0.799284, 0.976858, 1.265373, 1.825354",\
+ "0.618594, 0.825203, 1.002777, 1.291292, 1.851273",\
+ "0.673236, 0.879846, 1.057420, 1.345935, 1.905916",\
+ "0.823113, 1.029722, 1.207296, 1.495811, 2.055792",\
+ "1.196265, 1.402874, 1.580448, 1.868963, 2.428944",\
+ "0.925081, 1.104513, 1.280515, 1.568545, 2.127573",\
+ "0.951000, 1.130432, 1.306434, 1.594464, 2.153493",\
+ "1.005643, 1.185075, 1.361076, 1.649106, 2.208135",\
+ "1.155519, 1.334951, 1.510953, 1.798983, 2.358012",\
+ "1.528671, 1.708103, 1.884104, 2.172134, 2.731164");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001805, 0.074804, 0.161857, 0.321908, 0.642011");
+ values ( "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122213, 1.122213, 1.122213, 1.122213, 1.122214",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122213, 1.122213, 1.122213, 1.122213, 1.122214",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122213, 1.122213, 1.122213, 1.122213, 1.122214",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122213, 1.122213, 1.122213, 1.122213, 1.122214",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122213, 1.122213, 1.122213, 1.122213, 1.122214");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2664*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[22]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.357049, 0.595251, 0.779226, 1.073282, 1.641542",\
+ "0.391318, 0.630694, 0.814727, 1.108794, 1.677077",\
+ "0.464801, 0.704176, 0.888210, 1.182277, 1.750560",\
+ "0.686019, 0.925396, 1.109429, 1.403496, 1.971779",\
+ "1.247822, 1.487198, 1.671232, 1.965299, 2.533582",\
+ "0.445388, 0.682569, 0.866506, 1.160588, 1.728896",\
+ "0.479656, 0.718012, 0.902008, 1.196099, 1.764431",\
+ "0.553139, 0.791495, 0.975491, 1.269582, 1.837914",\
+ "0.774358, 1.012714, 1.196710, 1.490801, 2.059132",\
+ "1.336161, 1.574517, 1.758512, 2.052604, 2.620935",\
+ "0.534519, 0.762902, 0.946533, 1.240616, 1.808927",\
+ "0.568788, 0.798345, 0.982035, 1.276128, 1.844462",\
+ "0.642270, 0.871828, 1.055518, 1.349610, 1.917945",\
+ "0.863489, 1.093047, 1.276737, 1.570829, 2.139164",\
+ "1.425292, 1.654850, 1.838539, 2.132632, 2.700967",\
+ "0.597943, 0.820727, 1.004241, 1.298055, 1.865961",\
+ "0.632211, 0.856174, 1.039743, 1.333567, 1.901497",\
+ "0.705694, 0.929657, 1.113225, 1.407049, 1.974979",\
+ "0.926913, 1.150876, 1.334444, 1.628268, 2.196198",\
+ "1.488716, 1.712679, 1.896247, 2.190071, 2.758001",\
+ "0.932941, 1.126006, 1.307899, 1.601235, 2.168205",\
+ "0.967209, 1.161484, 1.343401, 1.636746, 2.203741",\
+ "1.040692, 1.234967, 1.416883, 1.710229, 2.277223",\
+ "1.261911, 1.456186, 1.638102, 1.931448, 2.498442",\
+ "1.823713, 2.017988, 2.199905, 2.493251, 3.060245");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.027366, 0.027366, 0.027366, 0.027374, 0.027393",\
+ "0.129494, 0.129494, 0.129494, 0.129494, 0.129494",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831904, 0.831904, 0.831904, 0.831906, 0.831910",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131891",\
+ "0.027366, 0.027366, 0.027366, 0.027374, 0.027393",\
+ "0.129494, 0.129494, 0.129494, 0.129494, 0.129494",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831904, 0.831904, 0.831904, 0.831906, 0.831910",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131891",\
+ "0.027366, 0.027366, 0.027366, 0.027374, 0.027393",\
+ "0.129494, 0.129494, 0.129494, 0.129494, 0.129494",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831904, 0.831904, 0.831904, 0.831906, 0.831910",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131891",\
+ "0.027366, 0.027366, 0.027366, 0.027374, 0.027393",\
+ "0.129494, 0.129494, 0.129494, 0.129494, 0.129494",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831904, 0.831904, 0.831904, 0.831906, 0.831910",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131891",\
+ "0.027366, 0.027366, 0.027366, 0.027374, 0.027393",\
+ "0.129494, 0.129494, 0.129494, 0.129494, 0.129494",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314624",\
+ "0.831904, 0.831904, 0.831904, 0.831906, 0.831910",\
+ "2.131887, 2.131887, 2.131887, 2.131888, 2.131891");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.328195, 0.567571, 0.751605, 1.045671, 1.613954",\
+ "0.354114, 0.593490, 0.777524, 1.071590, 1.639874",\
+ "0.408757, 0.648133, 0.832166, 1.126233, 1.694516",\
+ "0.558634, 0.798009, 0.982043, 1.276110, 1.844393",\
+ "0.931785, 1.171161, 1.355194, 1.649261, 2.217544",\
+ "0.416534, 0.654889, 0.838885, 1.132977, 1.701308",\
+ "0.442453, 0.680808, 0.864804, 1.158895, 1.727227",\
+ "0.497095, 0.735451, 0.919447, 1.213538, 1.781870",\
+ "0.646972, 0.885328, 1.069324, 1.363415, 1.931746",\
+ "1.020123, 1.258479, 1.442475, 1.736566, 2.304898",\
+ "0.505665, 0.735223, 0.918912, 1.213005, 1.781339",\
+ "0.531584, 0.761142, 0.944831, 1.238924, 1.807259",\
+ "0.586226, 0.815784, 0.999474, 1.293567, 1.861901",\
+ "0.736103, 0.965661, 1.149351, 1.443443, 2.011778",\
+ "1.109254, 1.338812, 1.522502, 1.816595, 2.384929",\
+ "0.569089, 0.793052, 0.976620, 1.270444, 1.838374",\
+ "0.595008, 0.818971, 1.002539, 1.296363, 1.864293",\
+ "0.649650, 0.873613, 1.057182, 1.351006, 1.918935",\
+ "0.799527, 1.023490, 1.207058, 1.500882, 2.068812",\
+ "1.172678, 1.396641, 1.580210, 1.874034, 2.441963",\
+ "0.904086, 1.098361, 1.280278, 1.573624, 2.140618",\
+ "0.930005, 1.124280, 1.306197, 1.599543, 2.166537",\
+ "0.984648, 1.178923, 1.360839, 1.654185, 2.221179",\
+ "1.134525, 1.328800, 1.510716, 1.804062, 2.371056",\
+ "1.507676, 1.701951, 1.883868, 2.177213, 2.744207");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122212, 1.122212, 1.122212, 1.122213, 1.122215",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122212, 1.122212, 1.122212, 1.122213, 1.122215",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122212, 1.122212, 1.122212, 1.122213, 1.122215",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122212, 1.122212, 1.122212, 1.122213, 1.122215",\
+ "0.015511, 0.015511, 0.015511, 0.015511, 0.015512",\
+ "0.067734, 0.067734, 0.067734, 0.067734, 0.067734",\
+ "0.170292, 0.170292, 0.170292, 0.170292, 0.170293",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122212, 1.122212, 1.122212, 1.122213, 1.122215");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.439056, 0.659338, 0.836735, 1.125199, 1.685426",\
+ "0.473321, 0.693604, 0.871000, 1.159464, 1.719692",\
+ "0.546805, 0.767087, 0.944484, 1.232948, 1.793175",\
+ "0.768026, 0.988308, 1.165705, 1.454169, 2.014396",\
+ "1.329834, 1.550117, 1.727513, 2.015977, 2.576204",\
+ "0.527452, 0.746657, 0.924016, 1.212504, 1.772779",\
+ "0.561718, 0.780922, 0.958281, 1.246769, 1.807045",\
+ "0.635202, 0.854406, 1.031765, 1.320253, 1.880529",\
+ "0.856422, 1.075626, 1.252986, 1.541474, 2.101749",\
+ "1.418231, 1.637435, 1.814794, 2.103282, 2.663558",\
+ "0.616803, 0.826989, 1.004043, 1.292532, 1.852811",\
+ "0.651068, 0.861255, 1.038308, 1.326798, 1.887077",\
+ "0.724552, 0.934738, 1.111792, 1.400281, 1.960560",\
+ "0.945773, 1.155959, 1.333013, 1.621502, 2.181781",\
+ "1.507581, 1.717768, 1.894821, 2.183311, 2.743589",\
+ "0.680452, 0.884805, 1.061735, 1.349962, 1.909826",\
+ "0.714717, 0.919071, 1.096000, 1.384227, 1.944092",\
+ "0.788201, 0.992554, 1.169484, 1.457711, 2.017575",\
+ "1.009422, 1.213775, 1.390705, 1.678931, 2.238796",\
+ "1.571230, 1.775584, 1.952513, 2.240740, 2.800604",\
+ "1.011732, 1.190021, 1.365390, 1.653133, 2.212047",\
+ "1.045997, 1.224287, 1.399656, 1.687398, 2.246312",\
+ "1.119481, 1.297770, 1.473139, 1.760882, 2.319796",\
+ "1.340702, 1.518991, 1.694360, 1.982103, 2.541017",\
+ "1.902511, 2.080800, 2.256169, 2.543911, 3.102825");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.027424, 0.027424, 0.027425, 0.027426, 0.027427",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831916, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027424, 0.027424, 0.027425, 0.027426, 0.027427",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831916, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027424, 0.027424, 0.027425, 0.027426, 0.027427",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831916, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027424, 0.027424, 0.027425, 0.027426, 0.027427",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831916, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027424, 0.027424, 0.027425, 0.027426, 0.027427",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831916, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.410231, 0.630513, 0.807909, 1.096372, 1.656599",\
+ "0.436125, 0.656408, 0.833804, 1.122268, 1.682495",\
+ "0.490769, 0.711051, 0.888448, 1.176911, 1.737139",\
+ "0.640645, 0.860927, 1.038324, 1.326787, 1.887015",\
+ "1.013797, 1.234079, 1.411476, 1.699939, 2.260167",\
+ "0.498627, 0.717831, 0.895190, 1.183677, 1.743952",\
+ "0.524522, 0.743726, 0.921085, 1.209573, 1.769848",\
+ "0.579165, 0.798369, 0.975729, 1.264216, 1.824492",\
+ "0.729041, 0.948246, 1.125605, 1.414093, 1.974368",\
+ "1.102193, 1.321398, 1.498757, 1.787244, 2.347520",\
+ "0.587977, 0.798164, 0.975217, 1.263706, 1.823984",\
+ "0.613872, 0.824059, 1.001112, 1.289602, 1.849880",\
+ "0.668516, 0.878702, 1.055755, 1.344245, 1.904523",\
+ "0.818392, 1.028578, 1.205631, 1.494121, 2.054400",\
+ "1.191543, 1.401730, 1.578784, 1.867273, 2.427552",\
+ "0.651626, 0.855980, 1.032909, 1.321135, 1.880999",\
+ "0.677521, 0.881875, 1.058804, 1.347031, 1.906895",\
+ "0.732164, 0.936518, 1.113448, 1.401674, 1.961538",\
+ "0.882041, 1.086394, 1.263324, 1.551550, 2.111415",\
+ "1.255192, 1.459546, 1.636476, 1.924702, 2.484566",\
+ "0.982907, 1.161196, 1.336565, 1.624306, 2.183219",\
+ "1.008801, 1.187091, 1.362460, 1.650202, 2.209116",\
+ "1.063445, 1.241734, 1.417103, 1.704845, 2.263759",\
+ "1.213321, 1.391610, 1.566979, 1.854722, 2.413635",\
+ "1.586473, 1.764762, 1.940131, 2.227873, 2.786787");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.015464, 0.015464, 0.015465, 0.015465, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015464, 0.015465, 0.015465, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015464, 0.015465, 0.015465, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015464, 0.015465, 0.015465, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015464, 0.015465, 0.015465, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2417*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.416720, 0.653678, 0.840231, 1.138631, 1.715459",\
+ "0.450985, 0.687943, 0.874496, 1.172896, 1.749724",\
+ "0.524469, 0.761427, 0.947980, 1.246380, 1.823208",\
+ "0.745690, 0.982648, 1.169201, 1.467601, 2.044429",\
+ "1.307499, 1.544456, 1.731009, 2.029409, 2.606237",\
+ "0.505034, 0.740996, 0.927512, 1.225936, 1.802812",\
+ "0.539300, 0.775261, 0.961777, 1.260202, 1.837078",\
+ "0.612783, 0.848745, 1.035261, 1.333685, 1.910561",\
+ "0.834004, 1.069966, 1.256482, 1.554906, 2.131782",\
+ "1.395813, 1.631774, 1.818290, 2.116714, 2.693590",\
+ "0.594427, 0.821326, 1.007539, 1.305964, 1.882844",\
+ "0.628693, 0.855591, 1.041804, 1.340230, 1.917109",\
+ "0.702176, 0.929075, 1.115288, 1.413714, 1.990593",\
+ "0.923397, 1.150296, 1.336509, 1.634935, 2.211814",\
+ "1.485206, 1.712105, 1.898317, 2.196743, 2.773622",\
+ "0.658240, 0.879157, 1.065253, 1.363414, 1.939900",\
+ "0.692506, 0.913422, 1.099519, 1.397680, 1.974165",\
+ "0.765989, 0.986906, 1.173002, 1.471163, 2.047649",\
+ "0.987210, 1.208127, 1.394223, 1.692384, 2.268870",\
+ "1.549019, 1.769935, 1.956032, 2.254193, 2.830678",\
+ "0.995697, 1.184467, 1.368911, 1.666602, 2.242170",\
+ "1.029963, 1.218732, 1.403177, 1.700868, 2.276436",\
+ "1.103446, 1.292216, 1.476660, 1.774352, 2.349919",\
+ "1.324667, 1.513437, 1.697881, 1.995573, 2.571140",\
+ "1.886476, 2.075245, 2.259690, 2.557381, 3.132948");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.027423, 0.027425, 0.027425, 0.027426, 0.027428",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027423, 0.027425, 0.027425, 0.027426, 0.027428",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027423, 0.027425, 0.027425, 0.027426, 0.027428",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027423, 0.027425, 0.027425, 0.027426, 0.027428",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895",\
+ "0.027424, 0.027425, 0.027425, 0.027426, 0.027428",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314624, 0.314624, 0.314624, 0.314623",\
+ "0.831916, 0.831916, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131895");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.387894, 0.624852, 0.811405, 1.109804, 1.686631",\
+ "0.413789, 0.650747, 0.837300, 1.135700, 1.712528",\
+ "0.468433, 0.705391, 0.891944, 1.190343, 1.767171",\
+ "0.618309, 0.855267, 1.041820, 1.340220, 1.917047",\
+ "0.991461, 1.228418, 1.414971, 1.713371, 2.290199",\
+ "0.476209, 0.712170, 0.898686, 1.197109, 1.773985",\
+ "0.502103, 0.738065, 0.924581, 1.223005, 1.799881",\
+ "0.556747, 0.792708, 0.979225, 1.277649, 1.854524",\
+ "0.706623, 0.942585, 1.129101, 1.427525, 2.004401",\
+ "1.079775, 1.315736, 1.502252, 1.800677, 2.377553",\
+ "0.565602, 0.792500, 0.978712, 1.277138, 1.854016",\
+ "0.591497, 0.818395, 1.004608, 1.303034, 1.879913",\
+ "0.646140, 0.873039, 1.059251, 1.357677, 1.934556",\
+ "0.796016, 1.022915, 1.209128, 1.507553, 2.084432",\
+ "1.169168, 1.396067, 1.582279, 1.880705, 2.457584",\
+ "0.629415, 0.850331, 1.036427, 1.334588, 1.911072",\
+ "0.655310, 0.876226, 1.062322, 1.360483, 1.936969",\
+ "0.709953, 0.930869, 1.116966, 1.415127, 1.991612",\
+ "0.859829, 1.080746, 1.266842, 1.565003, 2.141489",\
+ "1.232981, 1.453897, 1.639994, 1.938155, 2.514640",\
+ "0.966871, 1.155640, 1.340085, 1.637776, 2.213343",\
+ "0.992766, 1.181536, 1.365980, 1.663672, 2.239239",\
+ "1.047410, 1.236179, 1.420624, 1.718315, 2.293883",\
+ "1.197286, 1.386055, 1.570500, 1.868191, 2.443759",\
+ "1.570438, 1.759207, 1.943652, 2.241343, 2.816911");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.015464, 0.015465, 0.015465, 0.015466, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122217, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015465, 0.015465, 0.015466, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122217, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015465, 0.015465, 0.015466, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122217, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015464, 0.015465, 0.015465, 0.015466, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122217, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015465, 0.015465, 0.015465, 0.015466, 0.015467",\
+ "0.067728, 0.067728, 0.067728, 0.067728, 0.067729",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2525*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[35]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.317807, 0.553382, 0.743028, 1.048041, 1.638313",\
+ "0.360716, 0.596291, 0.785937, 1.090950, 1.681222",\
+ "0.437216, 0.672790, 0.862436, 1.167450, 1.757720",\
+ "0.660515, 0.896090, 1.085736, 1.390749, 1.981019",\
+ "1.219139, 1.454558, 1.644426, 1.949632, 2.540179",\
+ "0.406273, 0.640700, 0.830308, 1.135346, 1.725666",\
+ "0.449182, 0.683609, 0.873218, 1.178255, 1.768575",\
+ "0.525681, 0.760108, 0.949717, 1.254755, 1.845074",\
+ "0.748981, 0.983408, 1.173017, 1.478054, 2.068373",\
+ "1.307619, 1.541876, 1.731707, 2.036937, 2.627532",\
+ "0.495773, 0.721033, 0.910335, 1.215375, 1.805698",\
+ "0.538682, 0.763942, 0.953244, 1.258284, 1.848607",\
+ "0.615182, 0.840441, 1.029744, 1.334783, 1.925105",\
+ "0.838481, 1.063741, 1.253043, 1.558083, 2.148405",\
+ "1.397163, 1.622209, 1.811734, 2.116965, 2.707564",\
+ "0.559539, 0.778868, 0.968056, 1.272841, 1.862785",\
+ "0.602449, 0.821777, 1.010965, 1.315750, 1.905694",\
+ "0.678948, 0.898276, 1.087465, 1.392249, 1.982193",\
+ "0.902248, 1.121576, 1.310764, 1.615548, 2.205492",\
+ "1.460969, 1.680044, 1.869455, 2.174432, 2.764652",\
+ "0.896716, 1.084217, 1.271716, 1.576043, 2.165093",\
+ "0.939625, 1.127126, 1.314625, 1.618952, 2.208002",\
+ "1.016124, 1.203625, 1.391125, 1.695451, 2.284501",\
+ "1.239424, 1.426925, 1.614424, 1.918751, 2.507800",\
+ "1.798400, 1.985393, 2.173115, 2.477634, 3.066961");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136074, 0.136074, 0.136074, 0.136074, 0.136074",\
+ "0.314166, 0.314166, 0.314166, 0.314166, 0.314166",\
+ "0.833609, 0.833609, 0.833609, 0.833609, 0.833609",\
+ "2.135110, 2.135110, 2.135110, 2.135111, 2.135114",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136074, 0.136074, 0.136074, 0.136074, 0.136074",\
+ "0.314166, 0.314166, 0.314166, 0.314166, 0.314166",\
+ "0.833609, 0.833609, 0.833609, 0.833609, 0.833609",\
+ "2.135110, 2.135110, 2.135110, 2.135111, 2.135114",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136074, 0.136074, 0.136074, 0.136074, 0.136074",\
+ "0.314166, 0.314166, 0.314166, 0.314166, 0.314166",\
+ "0.833609, 0.833609, 0.833609, 0.833609, 0.833609",\
+ "2.135110, 2.135110, 2.135110, 2.135111, 2.135114",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136074, 0.136074, 0.136074, 0.136074, 0.136074",\
+ "0.314166, 0.314166, 0.314166, 0.314166, 0.314166",\
+ "0.833609, 0.833609, 0.833609, 0.833609, 0.833609",\
+ "2.135110, 2.135110, 2.135110, 2.135111, 2.135114",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136074, 0.136074, 0.136074, 0.136074, 0.136074",\
+ "0.314166, 0.314166, 0.314166, 0.314166, 0.314166",\
+ "0.833609, 0.833609, 0.833609, 0.833609, 0.833609",\
+ "2.135110, 2.135110, 2.135110, 2.135111, 2.135114");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.305217, 0.540636, 0.730505, 1.035711, 1.626258",\
+ "0.334877, 0.570296, 0.760166, 1.065372, 1.655918",\
+ "0.386817, 0.622236, 0.812106, 1.117312, 1.707858",\
+ "0.535277, 0.770695, 0.960565, 1.265772, 1.856318",\
+ "0.899736, 1.135311, 1.324957, 1.629971, 2.220244",\
+ "0.393698, 0.627954, 0.817786, 1.123016, 1.713611",\
+ "0.423358, 0.657614, 0.847447, 1.152677, 1.743272",\
+ "0.475298, 0.709554, 0.899387, 1.204617, 1.795212",\
+ "0.623757, 0.858014, 1.047846, 1.353077, 1.943671",\
+ "0.988201, 1.222629, 1.412238, 1.717276, 2.307598",\
+ "0.483241, 0.708287, 0.897813, 1.203045, 1.793643",\
+ "0.512901, 0.737947, 0.927473, 1.232705, 1.823303",\
+ "0.564842, 0.789887, 0.979414, 1.284645, 1.875243",\
+ "0.713301, 0.938347, 1.127873, 1.433105, 2.023703",\
+ "1.077702, 1.302962, 1.492265, 1.797305, 2.387629",\
+ "0.547048, 0.766122, 0.955534, 1.260511, 1.850731",\
+ "0.576708, 0.795782, 0.985195, 1.290171, 1.880391",\
+ "0.628648, 0.847722, 1.037135, 1.342111, 1.932331",\
+ "0.777107, 0.996181, 1.185595, 1.490571, 2.080791",\
+ "1.141469, 1.360797, 1.549985, 1.854770, 2.444716",\
+ "0.884478, 1.071471, 1.259194, 1.563713, 2.153039",\
+ "0.914138, 1.101131, 1.288855, 1.593374, 2.182700",\
+ "0.966078, 1.153071, 1.340795, 1.645314, 2.234640",\
+ "1.114538, 1.301530, 1.489255, 1.793774, 2.383100",\
+ "1.478645, 1.666146, 1.853645, 2.157973, 2.747025");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002254, 0.075253, 0.162193, 0.322132, 0.642011");
+ values ( "0.026620, 0.026620, 0.026620, 0.026620, 0.026620",\
+ "0.075782, 0.075782, 0.075782, 0.075782, 0.075782",\
+ "0.169298, 0.169298, 0.169298, 0.169298, 0.169298",\
+ "0.439562, 0.439563, 0.439563, 0.439565, 0.439573",\
+ "1.119158, 1.119160, 1.119160, 1.119170, 1.119193",\
+ "0.026620, 0.026620, 0.026620, 0.026620, 0.026620",\
+ "0.075782, 0.075782, 0.075782, 0.075782, 0.075782",\
+ "0.169298, 0.169298, 0.169298, 0.169298, 0.169298",\
+ "0.439562, 0.439563, 0.439563, 0.439565, 0.439573",\
+ "1.119158, 1.119160, 1.119160, 1.119170, 1.119193",\
+ "0.026620, 0.026620, 0.026620, 0.026620, 0.026620",\
+ "0.075782, 0.075782, 0.075782, 0.075782, 0.075782",\
+ "0.169298, 0.169298, 0.169298, 0.169298, 0.169298",\
+ "0.439562, 0.439563, 0.439563, 0.439565, 0.439573",\
+ "1.119158, 1.119160, 1.119160, 1.119170, 1.119193",\
+ "0.026620, 0.026620, 0.026620, 0.026620, 0.026620",\
+ "0.075782, 0.075782, 0.075782, 0.075782, 0.075782",\
+ "0.169298, 0.169298, 0.169298, 0.169298, 0.169298",\
+ "0.439562, 0.439563, 0.439563, 0.439565, 0.439573",\
+ "1.119159, 1.119160, 1.119160, 1.119170, 1.119193",\
+ "0.026620, 0.026620, 0.026620, 0.026620, 0.026620",\
+ "0.075782, 0.075782, 0.075782, 0.075782, 0.075782",\
+ "0.169298, 0.169298, 0.169298, 0.169298, 0.169298",\
+ "0.439562, 0.439563, 0.439563, 0.439565, 0.439573",\
+ "1.119160, 1.119160, 1.119160, 1.119170, 1.119193");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2639*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[36]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.385015, 0.606699, 0.784745, 1.073680, 1.634527",\
+ "0.435014, 0.656698, 0.834744, 1.123679, 1.684526",\
+ "0.515571, 0.737187, 0.915297, 1.204231, 1.765078",\
+ "0.736804, 0.958420, 1.136530, 1.425464, 1.986311",\
+ "1.298648, 1.520264, 1.698375, 1.987309, 2.548156",\
+ "0.473424, 0.694018, 0.872026, 1.160985, 1.721881",\
+ "0.523423, 0.744017, 0.922025, 1.210984, 1.771880",\
+ "0.603979, 0.824505, 1.002578, 1.291536, 1.852431",\
+ "0.825212, 1.045738, 1.223811, 1.512769, 2.073665",\
+ "1.387057, 1.607583, 1.785656, 2.074614, 2.635510",\
+ "0.562514, 0.774353, 0.952053, 1.241014, 1.801912",\
+ "0.612513, 0.824352, 1.002052, 1.291013, 1.851911",\
+ "0.693070, 0.904840, 1.082605, 1.371564, 1.932463",\
+ "0.914303, 1.126073, 1.303838, 1.592798, 2.153697",\
+ "1.476147, 1.687918, 1.865683, 2.154643, 2.715541",\
+ "0.625792, 0.832174, 1.009746, 1.298444, 1.858928",\
+ "0.675791, 0.882173, 1.059745, 1.348443, 1.908927",\
+ "0.756348, 0.962666, 1.140298, 1.428994, 1.989478",\
+ "0.977581, 1.183899, 1.361531, 1.650227, 2.210711",\
+ "1.539425, 1.745744, 1.923376, 2.212072, 2.772557",\
+ "0.956955, 1.137434, 1.313402, 1.601616, 2.161149",\
+ "1.006954, 1.187433, 1.363401, 1.651615, 2.211148",\
+ "1.086373, 1.267959, 1.443954, 1.732166, 2.291699",\
+ "1.307606, 1.489192, 1.665187, 1.953399, 2.512933",\
+ "1.869451, 2.051037, 2.227032, 2.515244, 3.074778");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.027446, 0.027446, 0.027446, 0.027446, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027446, 0.027446, 0.027446, 0.027446, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027446, 0.027446, 0.027446, 0.027446, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027446, 0.027446, 0.027446, 0.027446, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027446, 0.027446, 0.027446, 0.027446, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.379185, 0.600800, 0.778912, 1.067847, 1.628695",\
+ "0.404931, 0.626547, 0.804658, 1.093592, 1.654439",\
+ "0.459580, 0.681196, 0.859307, 1.148241, 1.709088",\
+ "0.609453, 0.831069, 1.009180, 1.298114, 1.858961",\
+ "0.965195, 1.186879, 1.364924, 1.653859, 2.214706",\
+ "0.467593, 0.688119, 0.866193, 1.155152, 1.716048",\
+ "0.493340, 0.713866, 0.891939, 1.180897, 1.741792",\
+ "0.547989, 0.768515, 0.946587, 1.235546, 1.796441",\
+ "0.697862, 0.918388, 1.096461, 1.385419, 1.946315",\
+ "1.053603, 1.274197, 1.452205, 1.741164, 2.302060",\
+ "0.556683, 0.768454, 0.946220, 1.235180, 1.796080",\
+ "0.582430, 0.794201, 0.971965, 1.260925, 1.821824",\
+ "0.637079, 0.848850, 1.026614, 1.315574, 1.876473",\
+ "0.786952, 0.998723, 1.176488, 1.465447, 2.026346",\
+ "1.142694, 1.354532, 1.532232, 1.821193, 2.382091",\
+ "0.619961, 0.826280, 1.003913, 1.292610, 1.853095",\
+ "0.645708, 0.852026, 1.029659, 1.318355, 1.878839",\
+ "0.700357, 0.906675, 1.084307, 1.373004, 1.933488",\
+ "0.850230, 1.056549, 1.234181, 1.522877, 2.083362",\
+ "1.205971, 1.412353, 1.589925, 1.878623, 2.439106",\
+ "0.949987, 1.131573, 1.307569, 1.595782, 2.155316",\
+ "0.975733, 1.157320, 1.333315, 1.621527, 2.181061",\
+ "1.030382, 1.211969, 1.387964, 1.676176, 2.235709",\
+ "1.180256, 1.361842, 1.537837, 1.826049, 2.385583",\
+ "1.537134, 1.717614, 1.893581, 2.181795, 2.741328");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.015175, 0.015175, 0.015173, 0.015172, 0.015170",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015175, 0.015175, 0.015173, 0.015172, 0.015170",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015175, 0.015175, 0.015173, 0.015172, 0.015170",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015175, 0.015175, 0.015173, 0.015172, 0.015170",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015175, 0.015175, 0.015173, 0.015172, 0.015170",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2690*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[37]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.362229, 0.589916, 0.774631, 1.069784, 1.640082",\
+ "0.412228, 0.639915, 0.824630, 1.119783, 1.690081",\
+ "0.492795, 0.719167, 0.903893, 1.199092, 1.769493",\
+ "0.714028, 0.940400, 1.125127, 1.420325, 1.990727",\
+ "1.275872, 1.502245, 1.686972, 1.982170, 2.552572",\
+ "0.450567, 0.677234, 0.861912, 1.157089, 1.727435",\
+ "0.500567, 0.727233, 0.911911, 1.207088, 1.777434",\
+ "0.581133, 0.806485, 0.991174, 1.286397, 1.856847",\
+ "0.802366, 1.027718, 1.212408, 1.507630, 2.078080",\
+ "1.364210, 1.589563, 1.774253, 2.069476, 2.639925",\
+ "0.539804, 0.757567, 0.941939, 1.237118, 1.807467",\
+ "0.589803, 0.807566, 0.991938, 1.287117, 1.857466",\
+ "0.670367, 0.886817, 1.071201, 1.366425, 1.936878",\
+ "0.891600, 1.108051, 1.292434, 1.587659, 2.158112",\
+ "1.453444, 1.669896, 1.854280, 2.149504, 2.719957",\
+ "0.603371, 0.815390, 0.999649, 1.294559, 1.864506",\
+ "0.653370, 0.865389, 1.049648, 1.344558, 1.914505",\
+ "0.733934, 0.944641, 1.128911, 1.423867, 1.993918",\
+ "0.955166, 1.165874, 1.350144, 1.645100, 2.215151",\
+ "1.517011, 1.727719, 1.911989, 2.206946, 2.776997",\
+ "0.939278, 1.120654, 1.303307, 1.597741, 2.166757",\
+ "0.989277, 1.170653, 1.353306, 1.647740, 2.216756",\
+ "1.069831, 1.249906, 1.432569, 1.727049, 2.296169",\
+ "1.291064, 1.471139, 1.653802, 1.948282, 2.517402",\
+ "1.852909, 2.032984, 2.215647, 2.510128, 3.079247");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.027448, 0.027445, 0.027445, 0.027445, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027448, 0.027445, 0.027445, 0.027445, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027447, 0.027445, 0.027445, 0.027445, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027447, 0.027445, 0.027445, 0.027445, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897",\
+ "0.027446, 0.027445, 0.027445, 0.027445, 0.027445",\
+ "0.129491, 0.129491, 0.129491, 0.129491, 0.129491",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831920, 0.831920, 0.831920, 0.831920, 0.831920",\
+ "2.131897, 2.131897, 2.131897, 2.131897, 2.131897");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.356406, 0.582783, 0.767510, 1.062709, 1.633111",\
+ "0.382155, 0.608528, 0.793254, 1.088453, 1.658855",\
+ "0.436803, 0.663177, 0.847903, 1.143102, 1.713504",\
+ "0.586677, 0.813050, 0.997777, 1.292975, 1.863377",\
+ "0.942409, 1.170095, 1.354810, 1.649963, 2.220260",\
+ "0.444744, 0.670102, 0.854791, 1.150014, 1.720465",\
+ "0.470493, 0.695846, 0.880535, 1.175758, 1.746208",\
+ "0.525141, 0.750495, 0.935184, 1.230407, 1.800857",\
+ "0.675015, 0.900368, 1.085058, 1.380280, 1.950730",\
+ "1.030747, 1.257413, 1.442091, 1.737268, 2.307614",\
+ "0.533979, 0.750434, 0.934818, 1.230043, 1.800496",\
+ "0.559727, 0.776178, 0.960562, 1.255787, 1.826240",\
+ "0.614376, 0.830827, 1.015211, 1.310436, 1.880889",\
+ "0.764250, 0.980701, 1.165085, 1.460309, 2.030762",\
+ "1.119983, 1.337745, 1.522118, 1.817296, 2.387645",\
+ "0.597545, 0.808257, 0.992528, 1.287485, 1.857536",\
+ "0.623294, 0.834002, 1.018272, 1.313228, 1.883280",\
+ "0.677942, 0.888651, 1.072921, 1.367877, 1.937928",\
+ "0.827816, 1.038524, 1.222794, 1.517751, 2.087802",\
+ "1.183551, 1.395569, 1.579828, 1.874738, 2.444685",\
+ "0.933445, 1.113522, 1.296186, 1.590666, 2.159787",\
+ "0.959191, 1.139267, 1.321930, 1.616410, 2.185530",\
+ "1.013840, 1.193916, 1.376579, 1.671059, 2.240179",\
+ "1.163714, 1.343789, 1.526452, 1.820932, 2.390052",\
+ "1.519457, 1.700833, 1.883486, 2.177920, 2.746935");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.015179, 0.015170, 0.015169, 0.015169, 0.015168",\
+ "0.067695, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015179, 0.015170, 0.015169, 0.015169, 0.015168",\
+ "0.067695, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015178, 0.015170, 0.015169, 0.015169, 0.015168",\
+ "0.067695, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015177, 0.015170, 0.015169, 0.015169, 0.015168",\
+ "0.067695, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219",\
+ "0.015173, 0.015170, 0.015169, 0.015169, 0.015168",\
+ "0.067694, 0.067694, 0.067694, 0.067694, 0.067694",\
+ "0.170296, 0.170296, 0.170296, 0.170296, 0.170296",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122219, 1.122219, 1.122219, 1.122219, 1.122219");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2258*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[39]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.309159, 0.541794, 0.727047, 1.026481, 1.606878",\
+ "0.349227, 0.581863, 0.767115, 1.066549, 1.646947",\
+ "0.425113, 0.657750, 0.843001, 1.142434, 1.722832",\
+ "0.644749, 0.877387, 1.062637, 1.362070, 1.942469",\
+ "1.197363, 1.430001, 1.615251, 1.914684, 2.495083",\
+ "0.397555, 0.629112, 0.814328, 1.113786, 1.694232",\
+ "0.437623, 0.669181, 0.854396, 1.153854, 1.734300",\
+ "0.513508, 0.745068, 0.930282, 1.229739, 1.810186",\
+ "0.733145, 0.964705, 1.149918, 1.449375, 2.029822",\
+ "1.285759, 1.517319, 1.702532, 2.001989, 2.582437",\
+ "0.486858, 0.709445, 0.894355, 1.193814, 1.774263",\
+ "0.526927, 0.749514, 0.934423, 1.233882, 1.814332",\
+ "0.602812, 0.825401, 1.010309, 1.309767, 1.890217",\
+ "0.822449, 1.045038, 1.229945, 1.529404, 2.109854",\
+ "1.375063, 1.597652, 1.782559, 2.082017, 2.662468",\
+ "0.550445, 0.767276, 0.952066, 1.251268, 1.831326",\
+ "0.590513, 0.807345, 0.992134, 1.291336, 1.871395",\
+ "0.666399, 0.883232, 1.068019, 1.367221, 1.947281",\
+ "0.886036, 1.102869, 1.287656, 1.586857, 2.166918",\
+ "1.438650, 1.655483, 1.840269, 2.139471, 2.719532",\
+ "0.886476, 1.072598, 1.255724, 1.554460, 2.133606",\
+ "0.926545, 1.112668, 1.295792, 1.594528, 2.173675",\
+ "1.002432, 1.188554, 1.371677, 1.670413, 2.249560",\
+ "1.222068, 1.408191, 1.591314, 1.890050, 2.469197",\
+ "1.774683, 1.960806, 2.143928, 2.442663, 3.021811");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.048599, 0.048599, 0.048599, 0.048599, 0.048600",\
+ "0.136046, 0.136046, 0.136046, 0.136046, 0.136046",\
+ "0.314136, 0.314136, 0.314136, 0.314136, 0.314136",\
+ "0.833556, 0.833556, 0.833556, 0.833556, 0.833556",\
+ "2.135299, 2.135299, 2.135299, 2.135304, 2.135317",\
+ "0.048599, 0.048599, 0.048599, 0.048599, 0.048600",\
+ "0.136046, 0.136046, 0.136046, 0.136046, 0.136046",\
+ "0.314136, 0.314136, 0.314136, 0.314136, 0.314136",\
+ "0.833556, 0.833556, 0.833556, 0.833556, 0.833556",\
+ "2.135299, 2.135299, 2.135299, 2.135304, 2.135317",\
+ "0.048599, 0.048599, 0.048599, 0.048599, 0.048600",\
+ "0.136046, 0.136046, 0.136046, 0.136046, 0.136046",\
+ "0.314136, 0.314136, 0.314136, 0.314136, 0.314136",\
+ "0.833556, 0.833556, 0.833556, 0.833556, 0.833556",\
+ "2.135299, 2.135299, 2.135299, 2.135304, 2.135317",\
+ "0.048599, 0.048599, 0.048599, 0.048599, 0.048600",\
+ "0.136046, 0.136046, 0.136046, 0.136046, 0.136046",\
+ "0.314136, 0.314136, 0.314136, 0.314136, 0.314136",\
+ "0.833556, 0.833556, 0.833556, 0.833556, 0.833556",\
+ "2.135299, 2.135299, 2.135299, 2.135304, 2.135317",\
+ "0.048599, 0.048599, 0.048599, 0.048599, 0.048600",\
+ "0.136046, 0.136046, 0.136046, 0.136046, 0.136046",\
+ "0.314136, 0.314136, 0.314136, 0.314136, 0.314136",\
+ "0.833556, 0.833556, 0.833556, 0.833556, 0.833556",\
+ "2.135299, 2.135299, 2.135299, 2.135304, 2.135317");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.283419, 0.516054, 0.701307, 1.000741, 1.581138",\
+ "0.313066, 0.545699, 0.730954, 1.030388, 1.610784",\
+ "0.365001, 0.597634, 0.782889, 1.082323, 1.662719",\
+ "0.513456, 0.746088, 0.931344, 1.230778, 1.811174",\
+ "0.885857, 1.118488, 1.303746, 1.603180, 2.183575",\
+ "0.371815, 0.603373, 0.788588, 1.088046, 1.668492",\
+ "0.401461, 0.633018, 0.818235, 1.117693, 1.698138",\
+ "0.453396, 0.684952, 0.870170, 1.169628, 1.750072",\
+ "0.601851, 0.833406, 1.018625, 1.318083, 1.898527",\
+ "0.974253, 1.205806, 1.391027, 1.690485, 2.270928",\
+ "0.461119, 0.683706, 0.868615, 1.168074, 1.748523",\
+ "0.490765, 0.713351, 0.898262, 1.197721, 1.778169",\
+ "0.542700, 0.765285, 0.950197, 1.249656, 1.830104",\
+ "0.691155, 0.913739, 1.098652, 1.398111, 1.978559",\
+ "1.063556, 1.286139, 1.471054, 1.770513, 2.350960",\
+ "0.524705, 0.741537, 0.926326, 1.225528, 1.805587",\
+ "0.554351, 0.771182, 0.955972, 1.255175, 1.835233",\
+ "0.606286, 0.823116, 1.007907, 1.307110, 1.887167",\
+ "0.754741, 0.971570, 1.156362, 1.455565, 2.035622",\
+ "1.127142, 1.343970, 1.528764, 1.827967, 2.408023",\
+ "0.860737, 1.046859, 1.229984, 1.528720, 2.107866",\
+ "0.890382, 1.076504, 1.259631, 1.558367, 2.137512",\
+ "0.942317, 1.128438, 1.311566, 1.610302, 2.189447",\
+ "1.090771, 1.276893, 1.460021, 1.758757, 2.337902",\
+ "1.463172, 1.649293, 1.832423, 2.131159, 2.710303");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002265, 0.075263, 0.162201, 0.322138, 0.642011");
+ values ( "0.026622, 0.026622, 0.026622, 0.026622, 0.026622",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439546, 0.439546, 0.439546, 0.439549, 0.439556",\
+ "1.119113, 1.119113, 1.119113, 1.119121, 1.119143",\
+ "0.026622, 0.026622, 0.026622, 0.026622, 0.026622",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439546, 0.439546, 0.439546, 0.439549, 0.439556",\
+ "1.119113, 1.119113, 1.119113, 1.119121, 1.119143",\
+ "0.026622, 0.026622, 0.026622, 0.026622, 0.026622",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439546, 0.439546, 0.439546, 0.439549, 0.439556",\
+ "1.119113, 1.119113, 1.119113, 1.119121, 1.119143",\
+ "0.026622, 0.026622, 0.026622, 0.026622, 0.026622",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439546, 0.439546, 0.439546, 0.439549, 0.439556",\
+ "1.119113, 1.119113, 1.119113, 1.119121, 1.119143",\
+ "0.026622, 0.026622, 0.026622, 0.026622, 0.026622",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439546, 0.439546, 0.439546, 0.439549, 0.439556",\
+ "1.119113, 1.119113, 1.119113, 1.119121, 1.119143");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2336*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.409726, 0.620265, 0.806005, 1.096897, 1.655910",\
+ "0.459725, 0.670264, 0.856003, 1.146896, 1.705909",\
+ "0.539627, 0.750535, 0.935997, 1.226788, 1.785793",\
+ "0.760860, 0.971768, 1.157229, 1.448020, 2.007025",\
+ "1.322703, 1.533611, 1.719072, 2.009862, 2.568867",\
+ "0.498079, 0.707583, 0.893286, 1.184203, 1.743264",\
+ "0.548078, 0.757582, 0.943284, 1.234201, 1.793262",\
+ "0.627981, 0.837853, 1.023278, 1.314093, 1.873147",\
+ "0.849213, 1.059086, 1.244510, 1.535325, 2.094379",\
+ "1.411056, 1.620929, 1.806353, 2.097167, 2.656221",\
+ "0.587342, 0.787916, 0.973312, 1.264231, 1.823296",\
+ "0.637340, 0.837914, 1.023311, 1.314230, 1.873294",\
+ "0.717243, 0.918186, 1.103305, 1.394121, 1.953178",\
+ "0.938476, 1.139418, 1.324537, 1.615354, 2.174411",\
+ "1.500319, 1.701261, 1.886380, 2.177196, 2.736252",\
+ "0.650926, 0.845743, 1.031024, 1.321659, 1.880308",\
+ "0.700925, 0.895741, 1.081023, 1.371658, 1.930306",\
+ "0.780828, 0.976013, 1.161016, 1.451549, 2.010190",\
+ "1.002060, 1.197245, 1.382248, 1.672781, 2.231423",\
+ "1.563903, 1.759089, 1.944091, 2.234624, 2.793264",\
+ "0.970227, 1.151036, 1.334683, 1.624829, 2.182525",\
+ "1.020226, 1.201034, 1.384681, 1.674827, 2.232523",\
+ "1.100497, 1.281306, 1.464674, 1.754719, 2.312408",\
+ "1.321730, 1.502538, 1.685907, 1.975951, 2.533640",\
+ "1.883573, 2.064381, 2.247749, 2.537794, 3.095482");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.027428, 0.027428, 0.027429, 0.027429, 0.027431",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027428, 0.027429, 0.027429, 0.027431",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027428, 0.027429, 0.027429, 0.027431",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027428, 0.027429, 0.027429, 0.027431",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027428, 0.027429, 0.027429, 0.027431",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314623, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831917",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.403233, 0.614141, 0.799601, 1.090390, 1.649393",\
+ "0.428986, 0.639894, 0.825355, 1.116146, 1.675151",\
+ "0.483635, 0.694543, 0.880004, 1.170794, 1.729799",\
+ "0.633508, 0.844416, 1.029877, 1.320668, 1.879673",\
+ "0.989900, 1.200439, 1.386178, 1.677071, 2.236084",\
+ "0.491587, 0.701459, 0.886882, 1.177695, 1.736746",\
+ "0.517340, 0.727212, 0.912636, 1.203451, 1.762504",\
+ "0.571988, 0.781861, 0.967285, 1.258099, 1.817153",\
+ "0.721862, 0.931734, 1.117158, 1.407973, 1.967026",\
+ "1.078253, 1.287757, 1.473459, 1.764376, 2.323438",\
+ "0.580849, 0.781792, 0.966909, 1.257724, 1.816778",\
+ "0.606602, 0.807544, 0.992663, 1.283479, 1.842536",\
+ "0.661251, 0.862193, 1.047312, 1.338128, 1.897184",\
+ "0.811124, 1.012067, 1.197185, 1.488001, 2.047058",\
+ "1.167515, 1.368089, 1.553486, 1.844405, 2.403470",\
+ "0.644433, 0.839619, 1.024620, 1.315152, 1.873790",\
+ "0.670186, 0.865372, 1.050374, 1.340907, 1.899548",\
+ "0.724835, 0.920020, 1.105023, 1.395556, 1.954196",\
+ "0.874709, 1.069894, 1.254896, 1.545429, 2.104070",\
+ "1.231100, 1.425916, 1.611198, 1.901833, 2.460482",\
+ "0.964103, 1.144912, 1.328278, 1.618321, 2.176007",\
+ "0.989856, 1.170664, 1.354033, 1.644077, 2.201765",\
+ "1.044504, 1.225313, 1.408681, 1.698726, 2.256414",\
+ "1.194378, 1.375186, 1.558555, 1.848599, 2.406287",\
+ "1.550400, 1.731209, 1.914856, 2.205003, 2.762699");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.015187, 0.015187, 0.015189, 0.015192, 0.015197",\
+ "0.067696, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015187, 0.015187, 0.015189, 0.015192, 0.015197",\
+ "0.067696, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015187, 0.015187, 0.015189, 0.015192, 0.015197",\
+ "0.067696, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015187, 0.015187, 0.015189, 0.015192, 0.015197",\
+ "0.067696, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015187, 0.015187, 0.015189, 0.015192, 0.015197",\
+ "0.067696, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2358*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.383225, 0.593036, 0.770038, 1.054268, 1.604513",\
+ "0.433223, 0.643035, 0.820037, 1.104266, 1.654512",\
+ "0.513146, 0.723307, 0.900324, 1.184595, 1.734933",\
+ "0.734379, 0.944539, 1.121556, 1.405827, 1.956165",\
+ "1.296223, 1.506382, 1.683399, 1.967670, 2.518007",\
+ "0.471502, 0.680354, 0.857319, 1.141573, 1.691867",\
+ "0.521500, 0.730353, 0.907318, 1.191571, 1.741865",\
+ "0.601422, 0.810625, 0.987605, 1.271900, 1.822286",\
+ "0.822655, 1.031858, 1.208837, 1.493132, 2.043518",\
+ "1.384499, 1.593700, 1.770680, 2.054975, 2.605360",\
+ "0.560557, 0.760687, 0.937346, 1.221601, 1.771898",\
+ "0.610556, 0.810685, 0.987345, 1.271600, 1.821897",\
+ "0.690474, 0.890957, 1.067632, 1.351929, 1.902318",\
+ "0.911707, 1.112190, 1.288864, 1.573161, 2.123550",\
+ "1.473551, 1.674033, 1.850707, 2.135003, 2.685391",\
+ "0.623957, 0.818509, 0.995037, 1.279018, 1.828889",\
+ "0.673955, 0.868507, 1.045036, 1.329017, 1.878888",\
+ "0.753870, 0.948779, 1.125323, 1.409346, 1.959309",\
+ "0.975103, 1.170012, 1.346555, 1.630578, 2.180541",\
+ "1.536947, 1.731855, 1.908398, 2.192420, 2.742383",\
+ "0.944232, 1.123764, 1.298692, 1.582179, 2.131082",\
+ "0.994231, 1.173763, 1.348691, 1.632178, 2.181080",\
+ "1.074451, 1.254037, 1.428978, 1.712507, 2.261501",\
+ "1.295684, 1.475269, 1.650211, 1.933739, 2.482733",\
+ "1.857528, 2.037112, 2.212053, 2.495582, 3.044575");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.027427, 0.027429, 0.027430, 0.027431, 0.027432",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831918",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027427, 0.027429, 0.027430, 0.027431, 0.027432",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831918",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027429, 0.027430, 0.027431, 0.027432",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831918",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027429, 0.027430, 0.027431, 0.027432",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831918",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896",\
+ "0.027428, 0.027429, 0.027430, 0.027431, 0.027432",\
+ "0.129493, 0.129493, 0.129493, 0.129493, 0.129493",\
+ "0.314624, 0.314623, 0.314623, 0.314623, 0.314623",\
+ "0.831917, 0.831917, 0.831917, 0.831917, 0.831918",\
+ "2.131895, 2.131895, 2.131895, 2.131895, 2.131896");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.376757, 0.586911, 0.763927, 1.048197, 1.598532",\
+ "0.402506, 0.612665, 0.789682, 1.073953, 1.624290",\
+ "0.457155, 0.667314, 0.844331, 1.128602, 1.678938",\
+ "0.607028, 0.817188, 0.994204, 1.278475, 1.828812",\
+ "0.963398, 1.173210, 1.350212, 1.634442, 2.184688",\
+ "0.465033, 0.674229, 0.851208, 1.135502, 1.685885",\
+ "0.490782, 0.699983, 0.876963, 1.161258, 1.711643",\
+ "0.545431, 0.754632, 0.931612, 1.215907, 1.766292",\
+ "0.695304, 0.904506, 1.081485, 1.365780, 1.916165",\
+ "1.051675, 1.260528, 1.437493, 1.721747, 2.272042",\
+ "0.554085, 0.754561, 0.931235, 1.215531, 1.765917",\
+ "0.579834, 0.780316, 0.956990, 1.241287, 1.791675",\
+ "0.634483, 0.834964, 1.011639, 1.295935, 1.846323",\
+ "0.784356, 0.984838, 1.161512, 1.445809, 1.996197",\
+ "1.140731, 1.340860, 1.517520, 1.801775, 2.352073",\
+ "0.617480, 0.812384, 0.988926, 1.272948, 1.822908",\
+ "0.643230, 0.838138, 1.014681, 1.298704, 1.848666",\
+ "0.697878, 0.892787, 1.069330, 1.353353, 1.903315",\
+ "0.847752, 1.042660, 1.219203, 1.503226, 2.053188",\
+ "1.204130, 1.398682, 1.575211, 1.859193, 2.409064",\
+ "0.938061, 1.117640, 1.292582, 1.576109, 2.125101",\
+ "0.963811, 1.143395, 1.318336, 1.601865, 2.150858",\
+ "1.018459, 1.198044, 1.372985, 1.656513, 2.205507",\
+ "1.168333, 1.347917, 1.522858, 1.806387, 2.355381",\
+ "1.524406, 1.703938, 1.878866, 2.162354, 2.711256");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.015179, 0.015189, 0.015191, 0.015192, 0.015197",\
+ "0.067695, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015179, 0.015189, 0.015191, 0.015192, 0.015197",\
+ "0.067695, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015180, 0.015189, 0.015191, 0.015192, 0.015197",\
+ "0.067695, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015181, 0.015190, 0.015191, 0.015192, 0.015197",\
+ "0.067695, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218",\
+ "0.015181, 0.015190, 0.015191, 0.015192, 0.015197",\
+ "0.067695, 0.067696, 0.067696, 0.067696, 0.067697",\
+ "0.170295, 0.170295, 0.170295, 0.170295, 0.170295",\
+ "0.440750, 0.440750, 0.440750, 0.440750, 0.440750",\
+ "1.122218, 1.122218, 1.122218, 1.122218, 1.122218");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2303*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[43]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.405550, 0.622555, 0.800684, 1.089918, 1.651394",\
+ "0.445619, 0.662624, 0.840753, 1.129987, 1.691463",\
+ "0.521505, 0.738510, 0.916639, 1.205873, 1.767349",\
+ "0.741141, 0.958147, 1.136276, 1.425510, 1.986986",\
+ "1.293756, 1.510761, 1.688890, 1.978124, 2.539600",\
+ "0.493926, 0.709873, 0.887965, 1.177224, 1.738747",\
+ "0.533995, 0.749942, 0.928034, 1.217292, 1.778816",\
+ "0.609881, 0.825828, 1.003920, 1.293178, 1.854702",\
+ "0.829518, 1.045465, 1.223557, 1.512815, 2.074339",\
+ "1.382132, 1.598079, 1.776171, 2.065429, 2.626953",\
+ "0.583177, 0.790206, 0.967992, 1.257252, 1.818779",\
+ "0.623246, 0.830275, 1.008061, 1.297321, 1.858848",\
+ "0.699132, 0.906161, 1.083947, 1.373207, 1.934734",\
+ "0.918768, 1.125798, 1.303584, 1.592844, 2.154371",\
+ "1.471382, 1.678412, 1.856198, 2.145458, 2.706985",\
+ "0.646716, 0.848023, 1.025686, 1.314683, 1.875797",\
+ "0.686785, 0.888092, 1.065755, 1.354752, 1.915866",\
+ "0.762671, 0.963978, 1.141641, 1.430638, 1.991752",\
+ "0.982307, 1.183615, 1.361278, 1.650275, 2.211389",\
+ "1.534921, 1.736229, 1.913892, 2.202889, 2.764003",\
+ "0.974642, 1.153245, 1.329341, 1.617855, 2.178021",\
+ "1.014711, 1.193314, 1.369410, 1.657924, 2.218090",\
+ "1.090597, 1.269200, 1.445296, 1.733810, 2.293976",\
+ "1.310234, 1.488837, 1.664933, 1.953447, 2.513613",\
+ "1.862848, 2.041451, 2.217547, 2.506061, 3.066227");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833559, 0.833558",\
+ "2.135322, 2.135322, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833559, 0.833558",\
+ "2.135322, 2.135322, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833559, 0.833558",\
+ "2.135322, 2.135322, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833559, 0.833558",\
+ "2.135322, 2.135322, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833559, 0.833558",\
+ "2.135322, 2.135322, 2.135323, 2.135323, 2.135323");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.379810, 0.596815, 0.774944, 1.064179, 1.625654",\
+ "0.409456, 0.626461, 0.804590, 1.093824, 1.655300",\
+ "0.461390, 0.678396, 0.856524, 1.145759, 1.707235",\
+ "0.609845, 0.826850, 1.004979, 1.294214, 1.855689",\
+ "0.982246, 1.199251, 1.377380, 1.666614, 2.228090",\
+ "0.468186, 0.684134, 0.862225, 1.151484, 1.713008",\
+ "0.497832, 0.713779, 0.891871, 1.181129, 1.742653",\
+ "0.549766, 0.765714, 0.943805, 1.233064, 1.794588",\
+ "0.698221, 0.914169, 1.092260, 1.381519, 1.943043",\
+ "1.070622, 1.286569, 1.464661, 1.753919, 2.315443",\
+ "0.557437, 0.764467, 0.942252, 1.231513, 1.793039",\
+ "0.587083, 0.794112, 0.971898, 1.261158, 1.822685",\
+ "0.639017, 0.846047, 1.023832, 1.313093, 1.874619",\
+ "0.787472, 0.994502, 1.172287, 1.461547, 2.023074",\
+ "1.159873, 1.366902, 1.544688, 1.833948, 2.395475",\
+ "0.620976, 0.822284, 0.999946, 1.288943, 1.850057",\
+ "0.650622, 0.851929, 1.029592, 1.318589, 1.879703",\
+ "0.702556, 0.903864, 1.081526, 1.370523, 1.931637",\
+ "0.851011, 1.052318, 1.229981, 1.518978, 2.080092",\
+ "1.223412, 1.424719, 1.602382, 1.891379, 2.452493",\
+ "0.948902, 1.127506, 1.303602, 1.592116, 2.152281",\
+ "0.978548, 1.157151, 1.333247, 1.621761, 2.181927",\
+ "1.030483, 1.209086, 1.385182, 1.673696, 2.233861",\
+ "1.178937, 1.357541, 1.533637, 1.822151, 2.382316",\
+ "1.551338, 1.729941, 1.906037, 2.194551, 2.754717");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002272, 0.075270, 0.162206, 0.322141, 0.642011");
+ values ( "0.026625, 0.026625, 0.026625, 0.026625, 0.026625",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439544, 0.439544, 0.439546, 0.439549",\
+ "1.119108, 1.119108, 1.119109, 1.119113, 1.119123",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026625",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439544, 0.439544, 0.439546, 0.439549",\
+ "1.119108, 1.119108, 1.119109, 1.119113, 1.119123",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026625",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439544, 0.439544, 0.439546, 0.439549",\
+ "1.119108, 1.119108, 1.119109, 1.119113, 1.119123",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026625",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439544, 0.439544, 0.439546, 0.439549",\
+ "1.119108, 1.119108, 1.119109, 1.119113, 1.119123",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026625",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439544, 0.439544, 0.439546, 0.439549",\
+ "1.119108, 1.119108, 1.119109, 1.119113, 1.119123");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2271*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[44]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.386364, 0.626816, 0.817125, 1.119925, 1.704580",\
+ "0.426433, 0.666885, 0.857194, 1.159994, 1.744649",\
+ "0.502319, 0.742771, 0.933080, 1.235880, 1.820535",\
+ "0.721956, 0.962408, 1.152717, 1.455517, 2.040172",\
+ "1.274570, 1.515022, 1.705331, 2.008131, 2.592786",\
+ "0.474664, 0.714134, 0.904406, 1.207230, 1.791934",\
+ "0.514733, 0.754203, 0.944475, 1.247299, 1.832002",\
+ "0.590619, 0.830089, 1.020361, 1.323185, 1.907888",\
+ "0.810256, 1.049726, 1.239998, 1.542822, 2.127525",\
+ "1.362870, 1.602340, 1.792612, 2.095436, 2.680139",\
+ "0.563948, 0.794465, 0.984433, 1.287259, 1.871965",\
+ "0.604017, 0.834534, 1.024502, 1.327327, 1.912034",\
+ "0.679903, 0.910420, 1.100388, 1.403213, 1.987920",\
+ "0.899539, 1.130056, 1.320024, 1.622850, 2.207557",\
+ "1.452153, 1.682670, 1.872638, 2.175464, 2.760171",\
+ "0.627629, 0.852329, 1.042155, 1.344718, 1.929040",\
+ "0.667698, 0.892398, 1.082224, 1.384787, 1.969109",\
+ "0.743584, 0.968284, 1.158110, 1.460673, 2.044995",\
+ "0.963221, 1.187921, 1.377747, 1.680310, 2.264632",\
+ "1.515835, 1.740535, 1.930361, 2.232924, 2.817246",\
+ "0.964253, 1.157875, 1.345814, 1.647914, 2.231333",\
+ "1.004322, 1.197944, 1.385883, 1.687983, 2.271402",\
+ "1.080208, 1.273830, 1.461769, 1.763869, 2.347288",\
+ "1.299845, 1.493467, 1.681406, 1.983506, 2.566925",\
+ "1.852459, 2.046081, 2.234020, 2.536120, 3.119539");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833558, 0.833558",\
+ "2.135322, 2.135323, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833558, 0.833558",\
+ "2.135322, 2.135323, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833558, 0.833558",\
+ "2.135322, 2.135323, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833558, 0.833558",\
+ "2.135322, 2.135323, 2.135323, 2.135323, 2.135323",\
+ "0.048600, 0.048600, 0.048600, 0.048600, 0.048600",\
+ "0.136047, 0.136047, 0.136047, 0.136047, 0.136047",\
+ "0.314137, 0.314137, 0.314137, 0.314137, 0.314137",\
+ "0.833559, 0.833559, 0.833559, 0.833558, 0.833558",\
+ "2.135323, 2.135323, 2.135323, 2.135323, 2.135323");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.360625, 0.601076, 0.791385, 1.094185, 1.678841",\
+ "0.390270, 0.630722, 0.821031, 1.123831, 1.708486",\
+ "0.442205, 0.682656, 0.872965, 1.175765, 1.760421",\
+ "0.590660, 0.831111, 1.021420, 1.324220, 1.908875",\
+ "0.963060, 1.203512, 1.393821, 1.696621, 2.281276",\
+ "0.448924, 0.688394, 0.878666, 1.181490, 1.766194",\
+ "0.478570, 0.718040, 0.908312, 1.211136, 1.795840",\
+ "0.530504, 0.769974, 0.960246, 1.263070, 1.847774",\
+ "0.678959, 0.918429, 1.108701, 1.411525, 1.996229",\
+ "1.051360, 1.290830, 1.481102, 1.783926, 2.368629",\
+ "0.538208, 0.768725, 0.958693, 1.261519, 1.846226",\
+ "0.567854, 0.798371, 0.988339, 1.291164, 1.875871",\
+ "0.619788, 0.850305, 1.040273, 1.343099, 1.927806",\
+ "0.768243, 0.998760, 1.188728, 1.491554, 2.076260",\
+ "1.140644, 1.371161, 1.561129, 1.863954, 2.448661",\
+ "0.601890, 0.826589, 1.016415, 1.318978, 1.903300",\
+ "0.631535, 0.856235, 1.046061, 1.348624, 1.932946",\
+ "0.683470, 0.908169, 1.097996, 1.400558, 1.984880",\
+ "0.831925, 1.056624, 1.246450, 1.549013, 2.133335",\
+ "1.204325, 1.429025, 1.618851, 1.921414, 2.505736",\
+ "0.938514, 1.132136, 1.320075, 1.622174, 2.205594",\
+ "0.968159, 1.161781, 1.349720, 1.651820, 2.235239",\
+ "1.020094, 1.213716, 1.401655, 1.703755, 2.287174",\
+ "1.168548, 1.362170, 1.550110, 1.852209, 2.435628",\
+ "1.540949, 1.734571, 1.922510, 2.224610, 2.808029");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002742, 0.075741, 0.162559, 0.322376, 0.642011");
+ values ( "0.026625, 0.026625, 0.026625, 0.026625, 0.026624",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439546, 0.439547, 0.439548, 0.439550",\
+ "1.119107, 1.119112, 1.119115, 1.119119, 1.119125",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026624",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439546, 0.439547, 0.439548, 0.439550",\
+ "1.119107, 1.119112, 1.119115, 1.119119, 1.119125",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026624",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439546, 0.439547, 0.439548, 0.439550",\
+ "1.119108, 1.119112, 1.119115, 1.119119, 1.119125",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026624",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439544, 0.439546, 0.439547, 0.439548, 0.439550",\
+ "1.119108, 1.119112, 1.119115, 1.119119, 1.119125",\
+ "0.026625, 0.026625, 0.026625, 0.026625, 0.026624",\
+ "0.075785, 0.075785, 0.075785, 0.075785, 0.075785",\
+ "0.169304, 0.169304, 0.169304, 0.169304, 0.169303",\
+ "0.439545, 0.439546, 0.439547, 0.439548, 0.439550",\
+ "1.119111, 1.119112, 1.119115, 1.119119, 1.119125");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2441*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[46]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.401355, 0.623039, 0.801084, 1.090019, 1.650864",\
+ "0.444265, 0.665948, 0.843993, 1.132928, 1.693773",\
+ "0.520764, 0.742448, 0.920493, 1.209427, 1.770273",\
+ "0.744064, 0.965747, 1.143793, 1.432727, 1.993572",\
+ "1.303239, 1.524854, 1.702965, 1.991765, 2.552283",\
+ "0.489764, 0.710357, 0.888365, 1.177324, 1.738218",\
+ "0.532673, 0.753266, 0.931274, 1.220233, 1.781127",\
+ "0.609173, 0.829766, 1.007774, 1.296732, 1.857626",\
+ "0.832472, 1.053066, 1.231073, 1.520032, 2.080926",\
+ "1.391647, 1.612173, 1.790246, 2.079070, 2.639636",\
+ "0.578854, 0.790693, 0.968392, 1.257352, 1.818249",\
+ "0.621763, 0.833602, 1.011301, 1.300261, 1.861158",\
+ "0.698263, 0.910101, 1.087801, 1.376761, 1.937658",\
+ "0.921562, 1.133401, 1.311100, 1.600060, 2.160957",\
+ "1.480738, 1.692508, 1.870273, 2.159099, 2.719668",\
+ "0.642132, 0.848514, 1.026085, 1.314782, 1.875265",\
+ "0.685041, 0.891423, 1.068994, 1.357691, 1.918174",\
+ "0.761541, 0.967922, 1.145494, 1.434191, 1.994673",\
+ "0.984840, 1.191222, 1.368793, 1.657490, 2.217973",\
+ "1.544015, 1.750334, 1.927966, 2.216528, 2.776682",\
+ "0.973287, 1.153774, 1.329742, 1.617954, 2.177485",\
+ "1.016196, 1.196683, 1.372651, 1.660863, 2.220395",\
+ "1.092696, 1.273183, 1.449150, 1.737363, 2.296894",\
+ "1.315995, 1.496482, 1.672450, 1.960662, 2.520194",\
+ "1.874038, 2.055627, 2.231622, 2.519700, 3.078903");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833612, 0.833612, 0.833612, 0.833613",\
+ "2.135107, 2.135107, 2.135107, 2.135106, 2.135106",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833612, 0.833612, 0.833612, 0.833613",\
+ "2.135107, 2.135107, 2.135107, 2.135106, 2.135106",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833612, 0.833612, 0.833612, 0.833613",\
+ "2.135107, 2.135107, 2.135107, 2.135106, 2.135106",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833612, 0.833612, 0.833612, 0.833613",\
+ "2.135107, 2.135107, 2.135107, 2.135106, 2.135106",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833612, 0.833612, 0.833612, 0.833613",\
+ "2.135107, 2.135107, 2.135107, 2.135106, 2.135106");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.389319, 0.610934, 0.789045, 1.077845, 1.638363",\
+ "0.418979, 0.640595, 0.818706, 1.107506, 1.668024",\
+ "0.470920, 0.692535, 0.870646, 1.159446, 1.719964",\
+ "0.619380, 0.840995, 1.019106, 1.307906, 1.868424",\
+ "0.983284, 1.204968, 1.383013, 1.671947, 2.232793",\
+ "0.477727, 0.698253, 0.876326, 1.165150, 1.725716",\
+ "0.507388, 0.727914, 0.905987, 1.194811, 1.755377",\
+ "0.559328, 0.779854, 0.957927, 1.246751, 1.807317",\
+ "0.707788, 0.928314, 1.106387, 1.395211, 1.955777",\
+ "1.071693, 1.292286, 1.470294, 1.759253, 2.320147",\
+ "0.566817, 0.778588, 0.956353, 1.245178, 1.805748",\
+ "0.596478, 0.808249, 0.986014, 1.274839, 1.835409",\
+ "0.648419, 0.860189, 1.037954, 1.326780, 1.887349",\
+ "0.796878, 1.008649, 1.186414, 1.475240, 2.035809",\
+ "1.160783, 1.372622, 1.550321, 1.839281, 2.400178",\
+ "0.630095, 0.836414, 1.014046, 1.302608, 1.862762",\
+ "0.659756, 0.866074, 1.043707, 1.332269, 1.892423",\
+ "0.711696, 0.918015, 1.095647, 1.384209, 1.944364",\
+ "0.860156, 1.066475, 1.244107, 1.532669, 2.092824",\
+ "1.224061, 1.430443, 1.608014, 1.896711, 2.457193",\
+ "0.960117, 1.141707, 1.317702, 1.605780, 2.164983",\
+ "0.989778, 1.171368, 1.347363, 1.635441, 2.194643",\
+ "1.041718, 1.223308, 1.399303, 1.687381, 2.246584",\
+ "1.190178, 1.371768, 1.547763, 1.835841, 2.395044",\
+ "1.555216, 1.735703, 1.911671, 2.199883, 2.759414");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439562, 0.439562, 0.439561",\
+ "1.119158, 1.119158, 1.119158, 1.119158, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439562, 0.439562, 0.439561",\
+ "1.119158, 1.119158, 1.119158, 1.119158, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439562, 0.439562, 0.439561",\
+ "1.119158, 1.119158, 1.119158, 1.119158, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439562, 0.439562, 0.439561",\
+ "1.119158, 1.119158, 1.119158, 1.119158, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439562, 0.439562, 0.439561",\
+ "1.119158, 1.119158, 1.119158, 1.119158, 1.119157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2497*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[47]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.380051, 0.607077, 0.791540, 1.086441, 1.656420",\
+ "0.422960, 0.649986, 0.834449, 1.129350, 1.699329",\
+ "0.499459, 0.726486, 0.910949, 1.205850, 1.775828",\
+ "0.722759, 0.949785, 1.134248, 1.429149, 1.999128",\
+ "1.281942, 1.507667, 1.692145, 1.987100, 2.557201",\
+ "0.468382, 0.694395, 0.878821, 1.173746, 1.743773",\
+ "0.511291, 0.737304, 0.921730, 1.216655, 1.786682",\
+ "0.587791, 0.813804, 0.998230, 1.293155, 1.863182",\
+ "0.811090, 1.037103, 1.221529, 1.516454, 2.086481",\
+ "1.370273, 1.594985, 1.779426, 2.074405, 2.644555",\
+ "0.557789, 0.774725, 0.958848, 1.253775, 1.823805",\
+ "0.600698, 0.817634, 1.001757, 1.296684, 1.866714",\
+ "0.677198, 0.894134, 1.078257, 1.373183, 1.943213",\
+ "0.900497, 1.117434, 1.301556, 1.596483, 2.166513",\
+ "1.459679, 1.675315, 1.859452, 2.154434, 2.724586",\
+ "0.621599, 0.832548, 1.016557, 1.311216, 1.880844",\
+ "0.664508, 0.875457, 1.059467, 1.354125, 1.923753",\
+ "0.741007, 0.951957, 1.135966, 1.430625, 2.000253",\
+ "0.964307, 1.175256, 1.359266, 1.653924, 2.223552",\
+ "1.523487, 1.733139, 1.917162, 2.211875, 2.781626",\
+ "0.958721, 1.137805, 1.320215, 1.614397, 2.183095",\
+ "1.001630, 1.180714, 1.363124, 1.657306, 2.226004",\
+ "1.078130, 1.257213, 1.439624, 1.733806, 2.302503",\
+ "1.301429, 1.480513, 1.662923, 1.957105, 2.525803",\
+ "1.859271, 2.038396, 2.220819, 2.515056, 3.083877");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136075, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833613, 0.833613, 0.833613, 0.833613",\
+ "2.135108, 2.135106, 2.135105, 2.135105, 2.135105",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136075, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833613, 0.833613, 0.833613, 0.833613",\
+ "2.135108, 2.135106, 2.135105, 2.135105, 2.135105",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833613, 0.833613, 0.833613, 0.833613",\
+ "2.135108, 2.135106, 2.135105, 2.135105, 2.135105",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833613, 0.833613, 0.833613, 0.833613",\
+ "2.135108, 2.135106, 2.135105, 2.135105, 2.135105",\
+ "0.048588, 0.048588, 0.048588, 0.048588, 0.048588",\
+ "0.136076, 0.136076, 0.136076, 0.136076, 0.136076",\
+ "0.314168, 0.314168, 0.314168, 0.314168, 0.314168",\
+ "0.833612, 0.833613, 0.833613, 0.833613, 0.833613",\
+ "2.135108, 2.135106, 2.135105, 2.135105, 2.135105");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.368022, 0.593747, 0.778225, 1.073180, 1.643281",\
+ "0.397682, 0.623408, 0.807886, 1.102841, 1.672942",\
+ "0.449623, 0.675348, 0.859826, 1.154781, 1.724883",\
+ "0.598083, 0.823808, 1.008286, 1.303241, 1.873343",\
+ "0.961980, 1.189006, 1.373469, 1.668370, 2.238349",\
+ "0.456353, 0.681065, 0.865506, 1.160485, 1.730635",\
+ "0.486014, 0.710726, 0.895167, 1.190146, 1.760296",\
+ "0.537954, 0.762666, 0.947107, 1.242086, 1.812236",\
+ "0.686414, 0.911126, 1.095567, 1.390546, 1.960696",\
+ "1.050311, 1.276324, 1.460750, 1.755675, 2.325702",\
+ "0.545759, 0.761395, 0.945533, 1.240514, 1.810667",\
+ "0.575419, 0.791056, 0.975194, 1.270175, 1.840328",\
+ "0.627360, 0.842997, 1.027134, 1.322115, 1.892268",\
+ "0.775819, 0.991457, 1.175594, 1.470575, 2.040728",\
+ "1.139718, 1.356654, 1.540777, 1.835704, 2.405734",\
+ "0.609567, 0.819218, 1.003242, 1.297955, 1.867706",\
+ "0.639228, 0.848879, 1.032903, 1.327616, 1.897367",\
+ "0.691168, 0.900820, 1.084843, 1.379556, 1.949308",\
+ "0.839628, 1.049280, 1.233303, 1.528016, 2.097767",\
+ "1.203528, 1.414477, 1.598486, 1.893145, 2.462773",\
+ "0.945351, 1.124476, 1.306899, 1.601136, 2.169957",\
+ "0.975012, 1.154137, 1.336560, 1.630797, 2.199618",\
+ "1.026952, 1.206077, 1.388500, 1.682738, 2.251558",\
+ "1.175412, 1.354537, 1.536960, 1.831198, 2.400018",\
+ "1.540650, 1.719733, 1.902144, 2.196326, 2.765023");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001581, 0.004543, 0.013052, 0.034401");
+ index_3 ( "0.002792, 0.075790, 0.162597, 0.322401, 0.642011");
+ values ( "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439561, 0.439561, 0.439561",\
+ "1.119159, 1.119158, 1.119157, 1.119157, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439561, 0.439561, 0.439561",\
+ "1.119159, 1.119158, 1.119157, 1.119157, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439561, 0.439561, 0.439561",\
+ "1.119159, 1.119158, 1.119157, 1.119157, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439561, 0.439561, 0.439561",\
+ "1.119159, 1.119158, 1.119157, 1.119157, 1.119157",\
+ "0.026623, 0.026623, 0.026623, 0.026623, 0.026623",\
+ "0.075784, 0.075784, 0.075784, 0.075784, 0.075784",\
+ "0.169301, 0.169301, 0.169301, 0.169301, 0.169301",\
+ "0.439562, 0.439562, 0.439561, 0.439561, 0.439561",\
+ "1.119159, 1.119157, 1.119157, 1.119157, 1.119157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[3]_redg_min_2420*/
+
+} /* end of pin tl_o[3] */
+
+pin("tl_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.020161 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.596162, 0.867359, 1.159405, 1.656731, 2.651384",\
+ "0.643260, 0.914475, 1.206618, 1.704208, 2.699388",\
+ "0.730525, 1.001791, 1.294214, 1.792557, 2.789245",\
+ "0.956361, 1.227706, 1.520560, 2.020066, 3.019080",\
+ "1.523589, 1.795036, 2.088453, 2.589476, 3.591523",\
+ "0.683575, 0.954952, 1.247062, 1.743446, 2.737318",\
+ "0.730672, 1.002068, 1.294276, 1.790923, 2.785322",\
+ "0.817938, 1.089384, 1.381874, 1.879272, 2.875178",\
+ "1.043774, 1.315300, 1.608224, 2.106781, 3.105014",\
+ "1.611001, 1.882631, 2.176121, 2.676191, 3.677457",\
+ "0.766406, 1.044042, 1.335028, 1.831069, 2.824273",\
+ "0.813504, 1.091158, 1.382242, 1.878545, 2.872277",\
+ "0.900771, 1.178475, 1.469840, 1.966895, 2.962133",\
+ "1.126608, 1.404392, 1.696190, 2.194404, 3.191969",\
+ "1.693838, 1.971725, 2.264088, 2.763813, 3.764412",\
+ "0.829815, 1.109836, 1.399173, 1.894982, 2.887782",\
+ "0.876913, 1.156952, 1.446387, 1.942459, 2.935786",\
+ "0.964180, 1.244271, 1.533985, 2.030808, 3.025642",\
+ "1.190018, 1.470190, 1.760335, 2.258317, 3.255478",\
+ "1.757249, 2.037525, 2.328233, 2.827727, 3.827921",\
+ "1.164720, 1.476052, 1.751329, 2.244448, 3.233238",\
+ "1.211820, 1.523174, 1.798545, 2.291926, 3.281242",\
+ "1.299091, 1.610508, 1.886151, 2.380279, 3.371099",\
+ "1.524935, 1.836451, 2.112513, 2.607793, 3.600934",\
+ "2.092175, 2.403818, 2.680427, 3.177208, 4.173377");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.053862, 0.053914, 0.054909, 0.058152, 0.064638",\
+ "0.173267, 0.173231, 0.173035, 0.172508, 0.171453",\
+ "0.375460, 0.375376, 0.374957, 0.373858, 0.371660",\
+ "0.885481, 0.885445, 0.885292, 0.884908, 0.884140",\
+ "2.163051, 2.163105, 2.163316, 2.163829, 2.164857",\
+ "0.053862, 0.053914, 0.054919, 0.058152, 0.064638",\
+ "0.173267, 0.173231, 0.173034, 0.172508, 0.171453",\
+ "0.375460, 0.375376, 0.374953, 0.373858, 0.371660",\
+ "0.885481, 0.885444, 0.885291, 0.884908, 0.884140",\
+ "2.163051, 2.163105, 2.163317, 2.163829, 2.164857",\
+ "0.053863, 0.053915, 0.054919, 0.058152, 0.064638",\
+ "0.173266, 0.173230, 0.173034, 0.172508, 0.171453",\
+ "0.375459, 0.375374, 0.374953, 0.373858, 0.371660",\
+ "0.885480, 0.885444, 0.885290, 0.884908, 0.884140",\
+ "2.163052, 2.163106, 2.163317, 2.163829, 2.164857",\
+ "0.053864, 0.053916, 0.054920, 0.058152, 0.064638",\
+ "0.173266, 0.173229, 0.173034, 0.172508, 0.171453",\
+ "0.375457, 0.375372, 0.374953, 0.373858, 0.371660",\
+ "0.885480, 0.885443, 0.885290, 0.884908, 0.884140",\
+ "2.163053, 2.163108, 2.163317, 2.163829, 2.164857",\
+ "0.053868, 0.053932, 0.054952, 0.058165, 0.064638",\
+ "0.173263, 0.173218, 0.173028, 0.172506, 0.171453",\
+ "0.375451, 0.375346, 0.374942, 0.373853, 0.371660",\
+ "0.885476, 0.885432, 0.885287, 0.884906, 0.884140",\
+ "2.163059, 2.163123, 2.163322, 2.163831, 2.164857");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.526597, 0.797546, 1.089766, 1.588771, 2.586781",\
+ "0.587519, 0.858706, 1.150697, 1.647877, 2.642235",\
+ "0.654254, 0.925628, 1.218645, 1.718590, 2.718481",\
+ "0.788462, 1.059820, 1.352751, 1.852464, 2.851889",\
+ "1.131923, 1.403187, 1.695595, 2.193900, 3.190510",\
+ "0.614010, 0.885137, 1.177429, 1.675486, 2.672715",\
+ "0.674932, 0.946299, 1.238354, 1.734592, 2.728169",\
+ "0.741667, 1.013223, 1.306311, 1.805305, 2.804415",\
+ "0.875874, 1.147414, 1.440416, 1.939178, 2.937823",\
+ "1.219336, 1.490780, 1.783256, 2.280615, 3.276443",\
+ "0.696837, 0.974222, 1.265395, 1.763108, 2.759670",\
+ "0.757763, 1.035389, 1.326320, 1.822214, 2.815124",\
+ "0.824502, 1.102316, 1.394277, 1.892928, 2.891370",\
+ "0.958709, 1.236507, 1.528382, 2.026801, 3.024778",\
+ "1.302169, 1.579871, 1.871222, 2.368237, 3.363399",\
+ "0.760242, 1.040009, 1.329540, 1.827022, 2.823179",\
+ "0.821171, 1.101182, 1.390465, 1.886127, 2.878633",\
+ "0.887912, 1.168114, 1.458422, 1.956841, 2.954879",\
+ "1.022119, 1.302305, 1.592527, 2.090714, 3.088287",\
+ "1.365578, 1.645666, 1.935366, 2.432151, 3.426908",\
+ "1.095129, 1.406150, 1.681713, 2.176495, 3.168635",\
+ "1.156076, 1.467395, 1.742619, 2.235593, 3.224089",\
+ "1.222832, 1.534384, 1.810604, 2.306318, 3.300335",\
+ "1.357038, 1.668570, 1.944707, 2.440191, 3.433743",\
+ "1.700489, 2.011903, 2.287532, 2.781621, 3.772364");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.071571, 0.071932, 0.073911, 0.079246, 0.089916",\
+ "0.129642, 0.130131, 0.132813, 0.140046, 0.154511",\
+ "0.213984, 0.214431, 0.216880, 0.223483, 0.236689",\
+ "0.447086, 0.447136, 0.447410, 0.448149, 0.449626",\
+ "1.100696, 1.100673, 1.100546, 1.100205, 1.099521",\
+ "0.071571, 0.071935, 0.073927, 0.079246, 0.089916",\
+ "0.129642, 0.130135, 0.132836, 0.140046, 0.154511",\
+ "0.213984, 0.214435, 0.216901, 0.223483, 0.236689",\
+ "0.447086, 0.447137, 0.447412, 0.448149, 0.449626",\
+ "1.100696, 1.100673, 1.100545, 1.100205, 1.099521",\
+ "0.071578, 0.071942, 0.073928, 0.079246, 0.089916",\
+ "0.129651, 0.130144, 0.132837, 0.140046, 0.154511",\
+ "0.213993, 0.214443, 0.216901, 0.223483, 0.236689",\
+ "0.447087, 0.447137, 0.447412, 0.448149, 0.449626",\
+ "1.100696, 1.100673, 1.100545, 1.100205, 1.099521",\
+ "0.071582, 0.071951, 0.073929, 0.079246, 0.089916",\
+ "0.129657, 0.130157, 0.132838, 0.140046, 0.154511",\
+ "0.213998, 0.214454, 0.216902, 0.223483, 0.236689",\
+ "0.447088, 0.447139, 0.447413, 0.448149, 0.449626",\
+ "1.100696, 1.100672, 1.100545, 1.100205, 1.099521",\
+ "0.071611, 0.072061, 0.073983, 0.079268, 0.089916",\
+ "0.129696, 0.130306, 0.132911, 0.140076, 0.154511",\
+ "0.214033, 0.214590, 0.216969, 0.223510, 0.236689",\
+ "0.447092, 0.447154, 0.447420, 0.448152, 0.449626",\
+ "1.100694, 1.100665, 1.100542, 1.100203, 1.099521");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2642*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.620483, 0.875327, 1.158797, 1.657448, 2.654750",\
+ "0.666691, 0.921535, 1.205006, 1.703663, 2.700977",\
+ "0.750941, 1.005785, 1.289255, 1.787906, 2.785209",\
+ "0.971936, 1.226783, 1.510836, 2.011498, 3.012820",\
+ "1.532384, 1.787236, 2.072631, 2.577909, 3.588464",\
+ "0.707891, 0.962871, 1.246456, 1.744162, 2.740684",\
+ "0.754100, 1.009078, 1.292665, 1.790377, 2.786911",\
+ "0.838350, 1.093329, 1.376915, 1.874621, 2.871142",\
+ "1.059345, 1.314327, 1.598502, 2.098212, 3.098754",\
+ "1.619793, 1.874780, 2.160311, 2.664623, 3.674398",\
+ "0.788766, 1.051830, 1.334422, 1.831784, 2.827639",\
+ "0.834975, 1.098037, 1.380631, 1.877999, 2.873866",\
+ "0.919225, 1.182288, 1.464880, 1.962242, 2.958097",\
+ "1.140220, 1.403286, 1.686468, 2.185834, 3.185709",\
+ "1.700668, 1.963739, 2.248277, 2.752245, 3.761353",\
+ "0.848948, 1.117433, 1.398566, 1.895697, 2.891148",\
+ "0.895156, 1.163640, 1.444775, 1.941912, 2.937375",\
+ "0.979406, 1.247891, 1.529024, 2.026155, 3.021606",\
+ "1.200402, 1.468889, 1.750613, 2.249747, 3.249218",\
+ "1.760850, 2.029342, 2.312423, 2.816158, 3.824862",\
+ "1.183848, 1.481469, 1.750734, 2.245165, 3.236604",\
+ "1.230056, 1.527677, 1.796943, 2.291380, 3.282831",\
+ "1.314306, 1.611928, 1.881192, 2.375623, 3.367063",\
+ "1.535303, 1.832926, 2.102801, 2.599223, 3.594674",\
+ "2.095753, 2.393380, 2.664657, 3.165653, 4.170318");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.052746, 0.052746, 0.052770, 0.052852, 0.053015",\
+ "0.178338, 0.178338, 0.178378, 0.178516, 0.178792",\
+ "0.381631, 0.381631, 0.381650, 0.381714, 0.381841",\
+ "0.885930, 0.885935, 0.885937, 0.885937, 0.885937",\
+ "2.162390, 2.162390, 2.162427, 2.162551, 2.162801",\
+ "0.052746, 0.052746, 0.052770, 0.052852, 0.053015",\
+ "0.178338, 0.178338, 0.178378, 0.178516, 0.178792",\
+ "0.381631, 0.381631, 0.381650, 0.381714, 0.381841",\
+ "0.885930, 0.885935, 0.885937, 0.885937, 0.885937",\
+ "2.162390, 2.162390, 2.162427, 2.162551, 2.162801",\
+ "0.052746, 0.052746, 0.052770, 0.052852, 0.053015",\
+ "0.178338, 0.178338, 0.178378, 0.178516, 0.178792",\
+ "0.381631, 0.381631, 0.381650, 0.381714, 0.381841",\
+ "0.885930, 0.885935, 0.885937, 0.885937, 0.885937",\
+ "2.162390, 2.162390, 2.162427, 2.162551, 2.162801",\
+ "0.052746, 0.052746, 0.052770, 0.052852, 0.053015",\
+ "0.178338, 0.178338, 0.178378, 0.178516, 0.178792",\
+ "0.381631, 0.381631, 0.381650, 0.381714, 0.381841",\
+ "0.885931, 0.885935, 0.885937, 0.885937, 0.885937",\
+ "2.162390, 2.162390, 2.162427, 2.162551, 2.162801",\
+ "0.052746, 0.052746, 0.052771, 0.052852, 0.053015",\
+ "0.178338, 0.178338, 0.178380, 0.178516, 0.178792",\
+ "0.381631, 0.381631, 0.381651, 0.381714, 0.381841",\
+ "0.885932, 0.885936, 0.885937, 0.885937, 0.885937",\
+ "2.162390, 2.162390, 2.162428, 2.162552, 2.162801");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.568910, 0.823730, 1.112547, 1.629674, 2.663928",\
+ "0.612218, 0.867064, 1.154057, 1.664859, 2.686463",\
+ "0.668015, 0.922863, 1.208574, 1.714952, 2.727708",\
+ "0.803644, 1.058488, 1.343000, 1.845245, 2.849735",\
+ "1.152943, 1.407785, 1.691260, 2.189933, 3.187279",\
+ "0.656319, 0.911274, 1.200265, 1.716388, 2.749862",\
+ "0.699627, 0.954607, 1.241755, 1.751573, 2.772397",\
+ "0.755424, 1.010406, 1.296258, 1.801666, 2.813642",\
+ "0.891053, 1.146032, 1.430671, 1.931960, 2.935669",\
+ "1.240352, 1.495328, 1.778919, 2.276647, 3.273213",\
+ "0.737194, 1.000233, 1.288231, 1.804010, 2.836817",\
+ "0.780502, 1.043566, 1.329721, 1.839195, 2.859352",\
+ "0.836299, 1.099365, 1.384223, 1.889288, 2.900597",\
+ "0.971928, 1.234991, 1.518637, 2.019581, 3.022624",\
+ "1.321227, 1.584288, 1.866885, 2.364269, 3.360168",\
+ "0.797372, 1.065835, 1.352379, 1.867923, 2.900326",\
+ "0.840683, 1.109169, 1.393867, 1.903108, 2.922861",\
+ "0.896481, 1.164968, 1.448369, 1.953201, 2.964106",\
+ "1.032109, 1.300594, 1.582782, 2.083494, 3.086133",\
+ "1.381408, 1.649890, 1.931029, 2.428182, 3.423677",\
+ "1.132264, 1.429870, 1.704734, 2.217468, 3.245782",\
+ "1.175584, 1.473206, 1.746158, 2.252626, 3.268317",\
+ "1.231382, 1.529005, 1.800615, 2.302701, 3.309562",\
+ "1.367010, 1.664631, 1.934986, 2.432977, 3.431589",\
+ "1.716307, 2.013927, 2.283197, 2.777650, 3.769133");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.046309, 0.046309, 0.046284, 0.046200, 0.046032",\
+ "0.096054, 0.096054, 0.095973, 0.095695, 0.095137",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443993",\
+ "1.101657, 1.101657, 1.101653, 1.101637, 1.101605",\
+ "0.046309, 0.046309, 0.046284, 0.046200, 0.046032",\
+ "0.096054, 0.096054, 0.095972, 0.095695, 0.095137",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443993",\
+ "1.101657, 1.101657, 1.101653, 1.101637, 1.101605",\
+ "0.046309, 0.046309, 0.046284, 0.046200, 0.046032",\
+ "0.096054, 0.096054, 0.095972, 0.095695, 0.095137",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443993",\
+ "1.101657, 1.101657, 1.101653, 1.101637, 1.101605",\
+ "0.046309, 0.046309, 0.046284, 0.046200, 0.046032",\
+ "0.096054, 0.096054, 0.095972, 0.095695, 0.095137",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443993",\
+ "1.101657, 1.101657, 1.101653, 1.101637, 1.101605",\
+ "0.046309, 0.046309, 0.046283, 0.046200, 0.046032",\
+ "0.096054, 0.096054, 0.095970, 0.095693, 0.095137",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443993",\
+ "1.101657, 1.101657, 1.101653, 1.101637, 1.101605");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2640*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.197465, 0.431884, 0.691143, 1.132576, 2.015443",\
+ "0.256904, 0.482244, 0.742878, 1.186420, 2.073503",\
+ "0.340726, 0.558560, 0.820216, 1.263968, 2.151470",\
+ "0.552743, 0.766273, 1.030363, 1.473596, 2.360062",\
+ "1.106694, 1.318615, 1.585993, 2.032644, 2.925946",\
+ "0.284867, 0.519390, 0.778620, 1.219289, 2.101377",\
+ "0.344307, 0.569755, 0.830361, 1.273133, 2.159437",\
+ "0.428128, 0.646078, 0.907700, 1.350681, 2.237404",\
+ "0.640145, 0.853808, 1.117845, 1.560309, 2.445995",\
+ "1.194097, 1.406166, 1.673486, 2.119357, 3.011879",\
+ "0.365670, 0.608240, 0.866580, 1.306910, 2.188332",\
+ "0.425121, 0.658616, 0.918322, 1.360754, 2.246392",\
+ "0.508950, 0.734952, 0.995661, 1.438301, 2.324359",\
+ "0.720977, 0.942721, 1.205806, 1.647930, 2.532950",\
+ "1.274933, 1.495112, 1.761447, 2.206978, 3.098835",\
+ "0.423291, 0.673682, 0.930715, 1.370823, 2.251841",\
+ "0.482765, 0.724074, 0.982457, 1.424666, 2.309901",\
+ "0.566610, 0.800431, 1.059796, 1.502214, 2.387868",\
+ "0.778657, 1.008255, 1.269941, 1.711842, 2.596459",\
+ "1.332621, 1.560694, 1.825583, 2.270890, 3.162344",\
+ "0.752280, 1.035917, 1.282299, 1.720049, 2.597297",\
+ "0.801700, 1.086498, 1.334062, 1.773901, 2.655357",\
+ "0.877280, 1.163095, 1.411404, 1.851450, 2.733324",\
+ "1.083334, 1.371566, 1.621543, 2.061076, 2.941916",\
+ "1.635803, 1.924576, 2.177220, 2.620138, 3.507800");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.177313, 0.213506, 0.303388, 0.457575, 0.765950",\
+ "0.250045, 0.279683, 0.356813, 0.520203, 0.846983",\
+ "0.414563, 0.415723, 0.459642, 0.603351, 0.890769",\
+ "0.887841, 0.887858, 0.923884, 1.046147, 1.290675",\
+ "2.163213, 2.163213, 2.177271, 2.225014, 2.320500",\
+ "0.177313, 0.213805, 0.303871, 0.457575, 0.765950",\
+ "0.250045, 0.279878, 0.357325, 0.520203, 0.846983",\
+ "0.414563, 0.415734, 0.460093, 0.603351, 0.890769",\
+ "0.887841, 0.887859, 0.924267, 1.046147, 1.290675",\
+ "2.163213, 2.163213, 2.177421, 2.225014, 2.320500",\
+ "0.177336, 0.214457, 0.303880, 0.457575, 0.765950",\
+ "0.250094, 0.280303, 0.357335, 0.520203, 0.846983",\
+ "0.414563, 0.415757, 0.460101, 0.603351, 0.890769",\
+ "0.887841, 0.887859, 0.924274, 1.046147, 1.290675",\
+ "2.163213, 2.163213, 2.177424, 2.225014, 2.320500",\
+ "0.177382, 0.215405, 0.303907, 0.457575, 0.765950",\
+ "0.250194, 0.280922, 0.357363, 0.520203, 0.846983",\
+ "0.414563, 0.415792, 0.460126, 0.603351, 0.890769",\
+ "0.887841, 0.887859, 0.924295, 1.046147, 1.290675",\
+ "2.163213, 2.163213, 2.177432, 2.225014, 2.320500",\
+ "0.179823, 0.226531, 0.305470, 0.458210, 0.765950",\
+ "0.255480, 0.288180, 0.359019, 0.520875, 0.846983",\
+ "0.414563, 0.416192, 0.461583, 0.603943, 0.890769",\
+ "0.887841, 0.887865, 0.925535, 1.046651, 1.290675",\
+ "2.163213, 2.163213, 2.177916, 2.225211, 2.320500");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.186444, 0.372257, 0.626401, 1.055911, 1.914929",\
+ "0.215837, 0.420150, 0.691942, 1.154794, 2.080498",\
+ "0.262380, 0.480818, 0.763209, 1.249238, 2.221297",\
+ "0.391146, 0.611553, 0.905194, 1.430347, 2.480653",\
+ "0.735395, 0.947247, 1.249008, 1.808760, 2.928262",\
+ "0.273847, 0.459753, 0.713841, 1.142624, 2.000862",\
+ "0.303239, 0.507698, 0.779487, 1.241508, 2.166432",\
+ "0.349783, 0.568392, 0.850825, 1.335951, 2.307231",\
+ "0.478548, 0.699125, 0.992933, 1.517060, 2.566586",\
+ "0.822797, 1.034805, 1.336856, 1.895473, 3.014196",\
+ "0.354708, 0.548579, 0.801801, 1.230244, 2.087817",\
+ "0.384100, 0.596639, 0.867448, 1.329128, 2.253387",\
+ "0.430643, 0.657388, 0.938789, 1.423572, 2.394186",\
+ "0.559400, 0.788117, 1.080899, 1.604681, 2.653542",\
+ "0.903640, 1.123767, 1.424824, 1.983094, 3.101151",\
+ "0.412447, 0.613987, 0.865934, 1.294157, 2.151326",\
+ "0.441838, 0.662214, 0.931587, 1.393041, 2.316896",\
+ "0.488379, 0.723043, 1.002931, 1.487485, 2.457695",\
+ "0.617120, 0.853767, 1.145048, 1.668593, 2.717051",\
+ "0.961342, 1.189372, 1.488979, 2.047006, 3.164660",\
+ "0.716098, 0.975821, 1.217396, 1.643334, 2.496783",\
+ "0.745485, 1.026006, 1.283388, 1.742355, 2.662352",\
+ "0.795750, 1.087780, 1.354967, 1.836895, 2.803151",\
+ "0.926660, 1.218436, 1.497480, 2.018165, 3.062507",\
+ "1.264652, 1.553524, 1.841762, 2.396720, 3.510116");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.071183, 0.106877, 0.175281, 0.296416, 0.538687",\
+ "0.120882, 0.144932, 0.213033, 0.350090, 0.624205",\
+ "0.200934, 0.210788, 0.256182, 0.378836, 0.624145",\
+ "0.444935, 0.444935, 0.478349, 0.591825, 0.818777",\
+ "1.101088, 1.102468, 1.122488, 1.190477, 1.326455",\
+ "0.071183, 0.107097, 0.175661, 0.296416, 0.538687",\
+ "0.120882, 0.145118, 0.213463, 0.350090, 0.624205",\
+ "0.200934, 0.210850, 0.256566, 0.378836, 0.624145",\
+ "0.444935, 0.444935, 0.478705, 0.591825, 0.818777",\
+ "1.101088, 1.102468, 1.122701, 1.190477, 1.326455",\
+ "0.071251, 0.107578, 0.175668, 0.296416, 0.538687",\
+ "0.120905, 0.145525, 0.213471, 0.350090, 0.624205",\
+ "0.200952, 0.210986, 0.256574, 0.378836, 0.624145",\
+ "0.444935, 0.444935, 0.478711, 0.591825, 0.818777",\
+ "1.101096, 1.102468, 1.122705, 1.190477, 1.326455",\
+ "0.071390, 0.108275, 0.175689, 0.296416, 0.538687",\
+ "0.120951, 0.146116, 0.213494, 0.350090, 0.624205",\
+ "0.200988, 0.211184, 0.256595, 0.378836, 0.624145",\
+ "0.444935, 0.444935, 0.478731, 0.591825, 0.818777",\
+ "1.101112, 1.102468, 1.122717, 1.190477, 1.326455",\
+ "0.072681, 0.116463, 0.176917, 0.296915, 0.538687",\
+ "0.121377, 0.153056, 0.214884, 0.350655, 0.624205",\
+ "0.202910, 0.213504, 0.257838, 0.379341, 0.624145",\
+ "0.444935, 0.444935, 0.479881, 0.592292, 0.818777",\
+ "1.101261, 1.102468, 1.123406, 1.190757, 1.326455");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2293*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.606811, 0.855240, 1.131420, 1.600406, 2.538379",\
+ "0.653020, 0.901448, 1.177629, 1.646621, 2.584605",\
+ "0.737270, 0.985698, 1.261878, 1.730864, 2.668837",\
+ "0.958264, 1.206694, 1.482871, 1.951840, 2.889778",\
+ "1.518707, 1.767142, 2.043312, 2.512236, 3.450085",\
+ "0.694214, 0.942805, 1.218983, 1.687119, 2.624312",\
+ "0.740423, 0.989013, 1.265193, 1.733334, 2.670539",\
+ "0.824672, 1.073263, 1.349441, 1.817578, 2.754771",\
+ "1.045666, 1.294259, 1.570434, 2.038553, 2.975712",\
+ "1.606110, 1.854707, 2.130875, 2.598950, 3.536019",\
+ "0.775027, 1.031783, 1.306946, 1.774740, 2.711267",\
+ "0.821236, 1.077992, 1.353155, 1.820955, 2.757494",\
+ "0.905485, 1.162242, 1.437404, 1.905199, 2.841726",\
+ "1.126479, 1.383237, 1.658397, 2.126174, 3.062667",\
+ "1.686923, 1.943686, 2.218838, 2.686570, 3.622974",\
+ "0.832667, 1.097413, 1.371085, 1.838653, 2.774776",\
+ "0.878876, 1.143622, 1.417294, 1.884868, 2.821003",\
+ "0.963125, 1.227872, 1.501543, 1.969111, 2.905235",\
+ "1.184119, 1.448868, 1.722536, 2.190087, 3.126176",\
+ "1.744563, 2.009316, 2.282977, 2.750483, 3.686483",\
+ "1.167769, 1.461851, 1.722948, 2.187993, 3.120233",\
+ "1.213978, 1.508059, 1.769157, 2.234208, 3.166459",\
+ "1.298227, 1.592309, 1.853406, 2.318451, 3.250691",\
+ "1.519221, 1.813305, 2.074399, 2.539426, 3.471632",\
+ "2.079665, 2.373755, 2.634840, 3.099823, 4.031939");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.052753, 0.052753, 0.052776, 0.052854, 0.053011",\
+ "0.178350, 0.178350, 0.178389, 0.178521, 0.178785",\
+ "0.381637, 0.381637, 0.381655, 0.381716, 0.381838",\
+ "0.885927, 0.885931, 0.885936, 0.885936, 0.885936",\
+ "2.162395, 2.162395, 2.162430, 2.162547, 2.162780",\
+ "0.052753, 0.052753, 0.052777, 0.052854, 0.053011",\
+ "0.178350, 0.178350, 0.178389, 0.178521, 0.178785",\
+ "0.381637, 0.381637, 0.381655, 0.381716, 0.381838",\
+ "0.885927, 0.885931, 0.885936, 0.885936, 0.885936",\
+ "2.162395, 2.162395, 2.162430, 2.162547, 2.162780",\
+ "0.052753, 0.052753, 0.052777, 0.052854, 0.053011",\
+ "0.178350, 0.178350, 0.178389, 0.178521, 0.178785",\
+ "0.381637, 0.381637, 0.381655, 0.381716, 0.381838",\
+ "0.885927, 0.885931, 0.885936, 0.885936, 0.885936",\
+ "2.162395, 2.162395, 2.162430, 2.162547, 2.162780",\
+ "0.052753, 0.052753, 0.052777, 0.052854, 0.053011",\
+ "0.178350, 0.178350, 0.178389, 0.178521, 0.178785",\
+ "0.381637, 0.381637, 0.381655, 0.381716, 0.381838",\
+ "0.885927, 0.885931, 0.885936, 0.885936, 0.885936",\
+ "2.162395, 2.162395, 2.162430, 2.162547, 2.162780",\
+ "0.052753, 0.052753, 0.052777, 0.052855, 0.053011",\
+ "0.178350, 0.178350, 0.178390, 0.178521, 0.178785",\
+ "0.381637, 0.381637, 0.381656, 0.381716, 0.381838",\
+ "0.885927, 0.885932, 0.885936, 0.885936, 0.885936",\
+ "2.162395, 2.162395, 2.162431, 2.162547, 2.162780");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.555254, 0.803664, 1.079873, 1.549041, 2.487376",\
+ "0.598546, 0.846975, 1.123154, 1.592132, 2.530087",\
+ "0.654342, 0.902772, 1.178949, 1.647912, 2.585838",\
+ "0.789973, 1.038401, 1.314582, 1.783569, 2.721544",\
+ "1.139274, 1.387700, 1.663883, 2.132891, 3.070906",\
+ "0.642657, 0.891229, 1.167437, 1.635754, 2.573310",\
+ "0.685949, 0.934540, 1.210717, 1.678845, 2.616020",\
+ "0.741745, 0.990338, 1.266512, 1.734625, 2.671772",\
+ "0.877376, 1.125967, 1.402145, 1.870283, 2.807478",\
+ "1.226676, 1.475265, 1.751447, 2.219604, 3.156840",\
+ "0.723469, 0.980207, 1.255399, 1.723375, 2.660265",\
+ "0.766762, 1.023519, 1.298680, 1.766466, 2.702976",\
+ "0.822557, 1.079316, 1.354475, 1.822246, 2.758727",\
+ "0.958189, 1.214945, 1.490107, 1.957903, 2.894433",\
+ "1.307489, 1.564244, 1.839409, 2.307225, 3.243795",\
+ "0.781109, 1.045837, 1.319539, 1.787287, 2.723774",\
+ "0.824402, 1.089149, 1.362819, 1.830378, 2.766484",\
+ "0.880198, 1.144946, 1.418614, 1.886158, 2.822236",\
+ "1.015829, 1.280575, 1.554247, 2.021816, 2.957942",\
+ "1.365129, 1.629874, 1.903549, 2.371138, 3.307304",\
+ "1.116211, 1.410268, 1.671404, 2.136628, 3.069230",\
+ "1.159504, 1.453587, 1.714682, 2.179718, 3.111940",\
+ "1.215299, 1.509384, 1.770477, 2.235498, 3.167692",\
+ "1.350931, 1.645012, 1.906110, 2.371156, 3.303398",\
+ "1.700231, 1.994310, 2.255412, 2.720478, 3.652760");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.046307, 0.046307, 0.046284, 0.046204, 0.046045",\
+ "0.096045, 0.096045, 0.095965, 0.095693, 0.095150",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443994",\
+ "1.101656, 1.101656, 1.101651, 1.101636, 1.101606",\
+ "0.046307, 0.046307, 0.046284, 0.046204, 0.046045",\
+ "0.096045, 0.096045, 0.095964, 0.095693, 0.095150",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443994",\
+ "1.101656, 1.101656, 1.101651, 1.101636, 1.101606",\
+ "0.046307, 0.046307, 0.046284, 0.046204, 0.046045",\
+ "0.096045, 0.096045, 0.095964, 0.095693, 0.095150",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443994",\
+ "1.101656, 1.101656, 1.101651, 1.101636, 1.101606",\
+ "0.046307, 0.046307, 0.046284, 0.046204, 0.046045",\
+ "0.096045, 0.096045, 0.095964, 0.095693, 0.095150",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443994",\
+ "1.101656, 1.101656, 1.101651, 1.101636, 1.101606",\
+ "0.046307, 0.046307, 0.046283, 0.046204, 0.046045",\
+ "0.096045, 0.096045, 0.095961, 0.095692, 0.095150",\
+ "0.188958, 0.188958, 0.188958, 0.188958, 0.188958",\
+ "0.444028, 0.444028, 0.444025, 0.444014, 0.443994",\
+ "1.101656, 1.101656, 1.101651, 1.101636, 1.101606");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2451*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.574242, 0.825673, 1.106128, 1.575345, 2.513779",\
+ "0.621341, 0.872791, 1.153329, 1.622748, 2.561586",\
+ "0.708610, 0.960115, 1.240890, 1.710886, 2.650879",\
+ "0.934451, 1.186041, 1.467182, 1.938070, 2.879846",\
+ "1.501685, 1.753387, 2.035005, 2.507055, 3.451155",\
+ "0.661652, 0.913251, 1.193695, 1.662059, 2.599712",\
+ "0.708750, 0.960370, 1.240897, 1.709462, 2.647520",\
+ "0.796019, 1.047694, 1.328459, 1.797601, 2.736813",\
+ "1.021860, 1.273621, 1.554754, 2.024784, 2.965779",\
+ "1.589094, 1.840967, 2.122581, 2.593769, 3.537089",\
+ "0.742484, 1.002291, 1.281659, 1.749681, 2.686667",\
+ "0.789583, 1.049409, 1.328861, 1.797084, 2.734475",\
+ "0.876852, 1.136734, 1.416423, 1.885223, 2.823768",\
+ "1.102693, 1.362663, 1.642718, 2.112406, 3.052734",\
+ "1.669927, 1.930012, 2.210544, 2.681391, 3.624044",\
+ "0.800100, 1.068010, 1.345799, 1.813594, 2.750176",\
+ "0.847199, 1.115129, 1.393000, 1.860997, 2.797984",\
+ "0.934467, 1.202456, 1.480563, 1.949136, 2.887277",\
+ "1.160309, 1.428387, 1.706858, 2.176319, 3.116243",\
+ "1.727543, 1.995738, 2.274684, 2.745304, 3.687553",\
+ "1.129877, 1.433405, 1.697668, 2.162941, 3.095633",\
+ "1.176977, 1.480531, 1.744871, 2.210345, 3.143440",\
+ "1.264251, 1.567875, 1.832440, 2.298486, 3.232733",\
+ "1.490099, 1.793832, 2.058744, 2.525673, 3.461699",\
+ "2.057343, 2.361218, 2.626582, 3.094663, 4.033009");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.053866, 0.053921, 0.054375, 0.055698, 0.058344",\
+ "0.173264, 0.173226, 0.173060, 0.172656, 0.171847",\
+ "0.375455, 0.375364, 0.374978, 0.374041, 0.372167",\
+ "0.885489, 0.885476, 0.885382, 0.885110, 0.884566",\
+ "2.163040, 2.163059, 2.163198, 2.163598, 2.164399",\
+ "0.053866, 0.053922, 0.054379, 0.055698, 0.058344",\
+ "0.173264, 0.173226, 0.173059, 0.172656, 0.171847",\
+ "0.375455, 0.375363, 0.374975, 0.374041, 0.372167",\
+ "0.885489, 0.885476, 0.885381, 0.885110, 0.884566",\
+ "2.163040, 2.163059, 2.163199, 2.163598, 2.164399",\
+ "0.053866, 0.053923, 0.054379, 0.055698, 0.058344",\
+ "0.173264, 0.173225, 0.173059, 0.172656, 0.171847",\
+ "0.375455, 0.375361, 0.374975, 0.374041, 0.372167",\
+ "0.885489, 0.885476, 0.885381, 0.885110, 0.884566",\
+ "2.163040, 2.163059, 2.163199, 2.163598, 2.164399",\
+ "0.053866, 0.053924, 0.054379, 0.055698, 0.058344",\
+ "0.173264, 0.173224, 0.173059, 0.172656, 0.171847",\
+ "0.375454, 0.375359, 0.374975, 0.374041, 0.372167",\
+ "0.885489, 0.885476, 0.885381, 0.885110, 0.884566",\
+ "2.163040, 2.163060, 2.163199, 2.163598, 2.164399",\
+ "0.053870, 0.053942, 0.054392, 0.055703, 0.058344",\
+ "0.173261, 0.173212, 0.173054, 0.172654, 0.171847",\
+ "0.375447, 0.375331, 0.374965, 0.374037, 0.372167",\
+ "0.885488, 0.885472, 0.885378, 0.885109, 0.884566",\
+ "2.163042, 2.163065, 2.163203, 2.163600, 2.164399");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.504662, 0.755823, 1.035123, 1.501524, 2.434327",\
+ "0.565599, 0.817019, 1.097428, 1.566532, 2.504740",\
+ "0.632345, 0.883968, 1.165247, 1.636471, 2.578919",\
+ "0.766552, 1.018158, 1.299363, 1.770409, 2.712501",\
+ "1.110008, 1.361510, 1.642273, 2.112240, 3.052173",\
+ "0.592071, 0.843399, 1.122681, 1.588239, 2.520261",\
+ "0.653008, 0.904597, 1.184994, 1.653246, 2.590674",\
+ "0.719755, 0.971548, 1.252820, 1.723185, 2.664853",\
+ "0.853962, 1.105738, 1.386936, 1.857124, 2.798434",\
+ "1.197417, 1.449089, 1.729842, 2.198954, 3.138107",\
+ "0.672903, 0.932434, 1.210645, 1.675861, 2.607216",\
+ "0.733841, 0.993636, 1.272958, 1.740868, 2.677629",\
+ "0.800588, 1.060591, 1.340784, 1.810807, 2.751808",\
+ "0.934794, 1.194780, 1.474900, 1.944745, 2.885390",\
+ "1.278250, 1.538130, 1.817806, 2.286576, 3.225062",\
+ "0.730518, 0.998146, 1.274784, 1.739774, 2.670725",\
+ "0.791456, 1.059355, 1.337098, 1.804781, 2.741138",\
+ "0.858203, 1.126316, 1.404924, 1.874720, 2.815317",\
+ "0.992410, 1.260504, 1.539040, 2.008659, 2.948899",\
+ "1.335865, 1.603851, 1.881946, 2.350489, 3.288571",\
+ "1.060274, 1.363457, 1.626624, 2.089109, 3.016181",\
+ "1.121233, 1.424747, 1.688966, 2.154127, 3.086594",\
+ "1.187996, 1.491771, 1.756814, 2.224075, 3.160773",\
+ "1.322202, 1.625954, 1.890928, 2.358013, 3.294354",\
+ "1.665648, 1.969269, 2.233823, 2.699839, 3.634027");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.071595, 0.071985, 0.073663, 0.077752, 0.085929",\
+ "0.129674, 0.130204, 0.132478, 0.138021, 0.149107",\
+ "0.214013, 0.214497, 0.216573, 0.221634, 0.231755",\
+ "0.447089, 0.447144, 0.447376, 0.447942, 0.449074",\
+ "1.100695, 1.100670, 1.100562, 1.100300, 1.099777",\
+ "0.071595, 0.071989, 0.073676, 0.077752, 0.085929",\
+ "0.129674, 0.130208, 0.132495, 0.138021, 0.149107",\
+ "0.214013, 0.214501, 0.216589, 0.221634, 0.231755",\
+ "0.447089, 0.447144, 0.447378, 0.447942, 0.449074",\
+ "1.100695, 1.100670, 1.100561, 1.100300, 1.099777",\
+ "0.071595, 0.071996, 0.073676, 0.077752, 0.085929",\
+ "0.129674, 0.130218, 0.132496, 0.138021, 0.149107",\
+ "0.214014, 0.214510, 0.216590, 0.221634, 0.231755",\
+ "0.447089, 0.447145, 0.447378, 0.447942, 0.449074",\
+ "1.100695, 1.100669, 1.100561, 1.100300, 1.099777",\
+ "0.071596, 0.072006, 0.073677, 0.077752, 0.085929",\
+ "0.129675, 0.130232, 0.132497, 0.138021, 0.149107",\
+ "0.214014, 0.214523, 0.216591, 0.221634, 0.231755",\
+ "0.447090, 0.447146, 0.447378, 0.447942, 0.449074",\
+ "1.100695, 1.100668, 1.100561, 1.100300, 1.099777",\
+ "0.071627, 0.072128, 0.073719, 0.077769, 0.085929",\
+ "0.129718, 0.130397, 0.132553, 0.138044, 0.149107",\
+ "0.214054, 0.214674, 0.216642, 0.221655, 0.231755",\
+ "0.447094, 0.447163, 0.447384, 0.447944, 0.449074",\
+ "1.100693, 1.100661, 1.100559, 1.100299, 1.099777");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2541*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.244315, 0.514723, 0.800077, 1.287472, 2.262263",\
+ "0.295834, 0.565221, 0.850051, 1.338109, 2.314226",\
+ "0.370354, 0.642449, 0.926203, 1.412852, 2.386149",\
+ "0.577074, 0.851060, 1.132979, 1.615988, 2.582005",\
+ "1.130301, 1.404191, 1.684823, 2.164586, 3.124112",\
+ "0.331716, 0.602319, 0.887697, 1.374185, 2.348197",\
+ "0.383234, 0.652812, 0.937673, 1.424822, 2.400160",\
+ "0.457755, 0.730036, 1.013820, 1.499564, 2.472083",\
+ "0.665475, 0.938641, 1.220586, 1.702701, 2.667939",\
+ "1.218705, 1.491770, 1.772419, 2.251299, 3.210045",\
+ "0.417649, 0.691352, 0.975660, 1.461806, 2.435152",\
+ "0.468650, 0.741835, 1.025635, 1.512442, 2.487115",\
+ "0.546403, 0.819049, 1.101783, 1.587185, 2.559038",\
+ "0.755504, 1.027643, 1.308548, 1.790321, 2.754894",\
+ "1.308745, 1.580767, 1.860382, 2.338919, 3.297000",\
+ "0.482221, 0.757061, 1.039803, 1.525718, 2.498661",\
+ "0.533223, 0.807529, 1.089778, 1.576355, 2.550624",\
+ "0.610973, 0.884729, 1.165926, 1.651097, 2.622547",\
+ "0.820080, 1.093307, 1.372690, 1.854234, 2.818403",\
+ "1.373332, 1.646424, 1.924523, 2.402832, 3.360509",\
+ "0.824496, 1.122462, 1.391851, 1.875132, 2.844117",\
+ "0.875514, 1.172748, 1.441833, 1.925771, 2.896080",\
+ "0.953244, 1.249783, 1.517967, 2.000508, 2.968003",\
+ "1.162385, 1.458171, 1.724694, 2.203629, 3.163859",\
+ "1.715704, 2.011206, 2.276494, 2.752214, 3.705966");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.247846, 0.303832, 0.405143, 0.595020, 0.974773",\
+ "0.313786, 0.346638, 0.435686, 0.627210, 1.010259",\
+ "0.435716, 0.458756, 0.530637, 0.704592, 1.052501",\
+ "0.888071, 0.889365, 0.918106, 1.015199, 1.209385",\
+ "2.165255, 2.165436, 2.171895, 2.192891, 2.234884",\
+ "0.247846, 0.304139, 0.405737, 0.595020, 0.974773",\
+ "0.313786, 0.346858, 0.436285, 0.627210, 1.010259",\
+ "0.435716, 0.458895, 0.531182, 0.704592, 1.052501",\
+ "0.888102, 0.889365, 0.918410, 1.015199, 1.209385",\
+ "2.165255, 2.165437, 2.171961, 2.192891, 2.234884",\
+ "0.250082, 0.304803, 0.405749, 0.595020, 0.974773",\
+ "0.314671, 0.347334, 0.436296, 0.627210, 1.010259",\
+ "0.436504, 0.459195, 0.531192, 0.704592, 1.052501",\
+ "0.888199, 0.889365, 0.918416, 1.015199, 1.209385",\
+ "2.165255, 2.165441, 2.171962, 2.192891, 2.234884",\
+ "0.251727, 0.305767, 0.405781, 0.595020, 0.974773",\
+ "0.315322, 0.348025, 0.436329, 0.627210, 1.010259",\
+ "0.437083, 0.459631, 0.531222, 0.704592, 1.052501",\
+ "0.888292, 0.889365, 0.918433, 1.015199, 1.209385",\
+ "2.165255, 2.165446, 2.171966, 2.192891, 2.234884",\
+ "0.262263, 0.317092, 0.407706, 0.595800, 0.974773",\
+ "0.319491, 0.356149, 0.438270, 0.627998, 1.010259",\
+ "0.440795, 0.464750, 0.532985, 0.705307, 1.052501",\
+ "0.888892, 0.889365, 0.919417, 1.015598, 1.209385",\
+ "2.165255, 2.165507, 2.172179, 2.192978, 2.234884");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.244906, 0.429066, 0.715031, 1.201577, 2.174669",\
+ "0.279961, 0.467088, 0.760757, 1.264102, 2.270793",\
+ "0.330500, 0.520871, 0.819993, 1.340074, 2.380235",\
+ "0.460001, 0.650607, 0.955135, 1.497108, 2.581054",\
+ "0.797840, 0.992388, 1.299994, 1.860913, 2.982751",\
+ "0.332306, 0.516668, 0.802648, 1.288290, 2.260602",\
+ "0.367361, 0.554708, 0.848427, 1.350815, 2.356727",\
+ "0.417900, 0.608494, 0.907716, 1.426787, 2.466169",\
+ "0.547401, 0.738223, 1.042926, 1.583821, 2.666988",\
+ "0.885240, 1.079987, 1.387844, 1.947626, 3.068685",\
+ "0.413157, 0.605714, 0.890611, 1.375910, 2.347558",\
+ "0.448212, 0.643794, 0.936391, 1.438436, 2.443682",\
+ "0.498750, 0.697588, 0.995681, 1.514407, 2.553124",\
+ "0.628251, 0.827301, 1.130892, 1.671441, 2.753943",\
+ "0.966089, 1.169027, 1.475811, 2.035246, 3.155640",\
+ "0.470897, 0.671442, 0.954754, 1.439822, 2.411067",\
+ "0.505953, 0.709581, 1.000537, 1.502348, 2.507191",\
+ "0.556489, 0.763385, 1.059829, 1.578320, 2.616633",\
+ "0.685989, 0.893075, 1.195044, 1.735354, 2.817452",\
+ "1.023827, 1.234747, 1.539967, 2.099159, 3.219149",\
+ "0.774671, 1.037059, 1.306793, 1.789232, 2.756522",\
+ "0.809728, 1.075884, 1.352747, 1.851827, 2.852647",\
+ "0.860246, 1.129813, 1.412209, 1.927867, 2.962089",\
+ "0.989742, 1.259233, 1.547645, 2.084991, 3.162908",\
+ "1.327573, 1.600271, 1.892761, 2.448874, 3.564605");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.078481, 0.114548, 0.190287, 0.342583, 0.647174",\
+ "0.121015, 0.135349, 0.195602, 0.346123, 0.647167",\
+ "0.210717, 0.216175, 0.259364, 0.388602, 0.647078",\
+ "0.448759, 0.449668, 0.471637, 0.541681, 0.681771",\
+ "1.102116, 1.102394, 1.113655, 1.151696, 1.227780",\
+ "0.078481, 0.114757, 0.190764, 0.342583, 0.647174",\
+ "0.121015, 0.135456, 0.196073, 0.346123, 0.647167",\
+ "0.210717, 0.216208, 0.259768, 0.388602, 0.647078",\
+ "0.448759, 0.449677, 0.471856, 0.541681, 0.681771",\
+ "1.102116, 1.102394, 1.113774, 1.151696, 1.227780",\
+ "0.078556, 0.115208, 0.190773, 0.342583, 0.647174",\
+ "0.121030, 0.135687, 0.196082, 0.346123, 0.647167",\
+ "0.210727, 0.216281, 0.259776, 0.388602, 0.647078",\
+ "0.448759, 0.449695, 0.471860, 0.541681, 0.681771",\
+ "1.102118, 1.102394, 1.113776, 1.151696, 1.227780",\
+ "0.078710, 0.115863, 0.190799, 0.342583, 0.647174",\
+ "0.121062, 0.136023, 0.196108, 0.346123, 0.647167",\
+ "0.210748, 0.216386, 0.259798, 0.388602, 0.647078",\
+ "0.448759, 0.449721, 0.471872, 0.541681, 0.681771",\
+ "1.102121, 1.102394, 1.113783, 1.151696, 1.227780",\
+ "0.080154, 0.123560, 0.192343, 0.343209, 0.647174",\
+ "0.121358, 0.139963, 0.197633, 0.346742, 0.647167",\
+ "0.210943, 0.217625, 0.261108, 0.389133, 0.647078",\
+ "0.448759, 0.450031, 0.472582, 0.541969, 0.681771",\
+ "1.102151, 1.102394, 1.114168, 1.151853, 1.227780");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2586*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.802622, 1.056036, 1.346324, 1.867286, 2.909209",\
+ "0.849165, 1.102582, 1.392879, 1.913861, 2.955825",\
+ "0.934845, 1.188269, 1.478593, 1.999634, 3.041714",\
+ "1.158235, 1.411669, 1.702036, 2.223166, 3.265427",\
+ "1.722272, 1.975720, 2.266142, 2.787390, 3.829885",\
+ "0.890034, 1.143575, 1.434056, 1.954001, 2.995142",\
+ "0.936578, 1.190121, 1.480612, 2.000576, 3.041759",\
+ "1.022258, 1.275808, 1.566326, 2.086349, 3.127648",\
+ "1.245647, 1.499208, 1.789768, 2.309881, 3.351360",\
+ "1.809685, 2.063260, 2.353875, 2.874104, 3.915819",\
+ "0.970907, 1.232542, 1.522024, 2.041623, 3.082098",\
+ "1.017450, 1.279087, 1.568579, 2.088199, 3.128714",\
+ "1.103130, 1.364774, 1.654293, 2.173971, 3.214603",\
+ "1.326520, 1.588175, 1.877736, 2.397503, 3.438315",\
+ "1.890557, 2.152227, 2.441842, 2.961727, 4.002774",\
+ "1.029596, 1.298156, 1.586172, 2.105536, 3.145607",\
+ "1.076139, 1.344701, 1.632727, 2.152112, 3.192223",\
+ "1.161819, 1.430389, 1.718441, 2.237885, 3.278112",\
+ "1.385208, 1.653790, 1.941884, 2.461417, 3.501824",\
+ "1.949246, 2.217842, 2.505991, 3.025640, 4.066283",\
+ "1.361666, 1.662270, 1.938568, 2.455101, 3.491063",\
+ "1.408209, 1.708817, 1.985123, 2.501677, 3.537679",\
+ "1.493889, 1.794507, 2.070838, 2.587449, 3.623568",\
+ "1.717279, 2.017912, 2.294282, 2.810982, 3.847281",\
+ "2.281316, 2.581969, 2.858389, 3.375206, 4.411739");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.052266, 0.052273, 0.052301, 0.052359, 0.052477",\
+ "0.174376, 0.174371, 0.174352, 0.174312, 0.174230",\
+ "0.378069, 0.378057, 0.378013, 0.377917, 0.377724",\
+ "0.885437, 0.885434, 0.885402, 0.885305, 0.885113",\
+ "2.163117, 2.163121, 2.163168, 2.163310, 2.163594",\
+ "0.052266, 0.052273, 0.052301, 0.052359, 0.052477",\
+ "0.174376, 0.174371, 0.174352, 0.174312, 0.174230",\
+ "0.378069, 0.378057, 0.378012, 0.377917, 0.377724",\
+ "0.885437, 0.885434, 0.885401, 0.885305, 0.885113",\
+ "2.163117, 2.163121, 2.163169, 2.163310, 2.163594",\
+ "0.052266, 0.052274, 0.052301, 0.052359, 0.052477",\
+ "0.174376, 0.174371, 0.174352, 0.174312, 0.174230",\
+ "0.378069, 0.378057, 0.378012, 0.377917, 0.377724",\
+ "0.885437, 0.885434, 0.885401, 0.885305, 0.885113",\
+ "2.163117, 2.163121, 2.163169, 2.163310, 2.163594",\
+ "0.052266, 0.052274, 0.052301, 0.052359, 0.052477",\
+ "0.174376, 0.174371, 0.174352, 0.174312, 0.174230",\
+ "0.378069, 0.378057, 0.378012, 0.377917, 0.377724",\
+ "0.885437, 0.885434, 0.885401, 0.885305, 0.885113",\
+ "2.163117, 2.163121, 2.163169, 2.163310, 2.163594",\
+ "0.052266, 0.052276, 0.052301, 0.052360, 0.052477",\
+ "0.174376, 0.174369, 0.174352, 0.174311, 0.174230",\
+ "0.378069, 0.378052, 0.378011, 0.377916, 0.377724",\
+ "0.885437, 0.885432, 0.885400, 0.885305, 0.885113",\
+ "2.163117, 2.163123, 2.163170, 2.163311, 2.163594");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.740784, 0.994165, 1.284321, 1.804998, 2.846352",\
+ "0.794288, 1.047701, 1.337984, 1.858934, 2.900834",\
+ "0.855205, 1.108643, 1.399026, 1.920190, 2.962518",\
+ "0.989902, 1.243338, 1.533712, 2.054859, 3.097151",\
+ "1.336325, 1.589748, 1.880072, 2.401109, 3.443183",\
+ "0.828197, 1.081704, 1.372052, 1.891713, 2.932285",\
+ "0.881701, 1.135240, 1.425716, 1.945649, 2.986768",\
+ "0.942617, 1.196183, 1.486758, 2.006905, 3.048452",\
+ "1.077314, 1.330878, 1.621445, 2.141573, 3.183085",\
+ "1.423737, 1.677287, 1.967804, 2.487824, 3.529117",\
+ "0.909070, 1.170669, 1.460019, 1.979335, 3.019240",\
+ "0.962574, 1.224207, 1.513683, 2.033271, 3.073723",\
+ "1.023490, 1.285149, 1.574726, 2.094527, 3.135407",\
+ "1.158187, 1.419844, 1.709412, 2.229196, 3.270040",\
+ "1.504610, 1.766254, 2.055771, 2.575446, 3.616072",\
+ "0.967758, 1.236282, 1.524167, 2.043248, 3.082749",\
+ "1.021262, 1.289820, 1.577832, 2.097185, 3.137232",\
+ "1.082179, 1.350764, 1.638874, 2.158441, 3.198916",\
+ "1.216876, 1.485459, 1.773561, 2.293109, 3.333549",\
+ "1.563299, 1.831868, 2.119919, 2.639359, 3.679581",\
+ "1.299828, 1.600384, 1.876561, 2.392812, 3.428205",\
+ "1.353332, 1.653935, 1.930228, 2.446749, 3.482688",\
+ "1.414249, 1.714888, 1.991272, 2.508006, 3.544372",\
+ "1.548946, 1.849582, 2.125958, 2.642674, 3.679005",\
+ "1.895369, 2.195986, 2.472316, 2.988924, 4.025037");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.060356, 0.060405, 0.060595, 0.061007, 0.061830",\
+ "0.114429, 0.114496, 0.114756, 0.115316, 0.116436",\
+ "0.200095, 0.200156, 0.200394, 0.200905, 0.201928",\
+ "0.445532, 0.445539, 0.445566, 0.445623, 0.445737",\
+ "1.101415, 1.101412, 1.101400, 1.101373, 1.101320",\
+ "0.060356, 0.060405, 0.060597, 0.061007, 0.061830",\
+ "0.114429, 0.114496, 0.114758, 0.115316, 0.116436",\
+ "0.200095, 0.200157, 0.200396, 0.200905, 0.201928",\
+ "0.445532, 0.445539, 0.445566, 0.445623, 0.445737",\
+ "1.101415, 1.101412, 1.101400, 1.101373, 1.101320",\
+ "0.060356, 0.060406, 0.060597, 0.061007, 0.061830",\
+ "0.114429, 0.114498, 0.114758, 0.115316, 0.116436",\
+ "0.200095, 0.200158, 0.200396, 0.200905, 0.201928",\
+ "0.445532, 0.445539, 0.445566, 0.445623, 0.445737",\
+ "1.101415, 1.101412, 1.101400, 1.101373, 1.101320",\
+ "0.060356, 0.060408, 0.060597, 0.061007, 0.061830",\
+ "0.114429, 0.114500, 0.114758, 0.115316, 0.116436",\
+ "0.200095, 0.200160, 0.200396, 0.200905, 0.201928",\
+ "0.445532, 0.445540, 0.445566, 0.445623, 0.445737",\
+ "1.101415, 1.101412, 1.101400, 1.101373, 1.101320",\
+ "0.060356, 0.060425, 0.060601, 0.061009, 0.061830",\
+ "0.114429, 0.114524, 0.114764, 0.115319, 0.116436",\
+ "0.200095, 0.200182, 0.200401, 0.200907, 0.201928",\
+ "0.445532, 0.445542, 0.445567, 0.445623, 0.445737",\
+ "1.101415, 1.101411, 1.101399, 1.101373, 1.101320");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2628*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.793277, 1.039130, 1.319023, 1.798101, 2.756257",\
+ "0.839819, 1.085675, 1.365575, 1.844669, 2.802857",\
+ "0.925498, 1.171358, 1.451280, 1.930420, 2.888700",\
+ "1.148884, 1.394753, 1.674707, 2.153918, 3.112340",\
+ "1.712918, 1.958797, 2.238793, 2.718097, 3.676705",\
+ "0.880682, 1.126695, 1.406620, 1.884815, 2.842191",\
+ "0.927225, 1.173240, 1.453171, 1.931383, 2.888791",\
+ "1.012903, 1.258923, 1.538876, 2.017133, 2.974633",\
+ "1.236289, 1.482318, 1.762303, 2.240632, 3.198274",\
+ "1.800323, 2.046363, 2.326390, 2.804811, 3.762639",\
+ "0.961504, 1.215685, 1.494583, 1.972436, 2.929146",\
+ "1.008047, 1.262229, 1.541135, 2.019004, 2.975746",\
+ "1.093725, 1.347913, 1.626839, 2.104754, 3.061589",\
+ "1.317111, 1.571308, 1.850267, 2.328253, 3.285229",\
+ "1.881145, 2.135353, 2.414354, 2.892432, 3.849594",\
+ "1.019140, 1.281331, 1.558724, 2.036349, 2.992655",\
+ "1.065682, 1.327876, 1.605276, 2.082916, 3.039255",\
+ "1.151360, 1.413560, 1.690981, 2.168667, 3.125098",\
+ "1.374747, 1.636955, 1.914408, 2.392166, 3.348738",\
+ "1.938781, 2.201000, 2.478495, 2.956345, 3.913103",\
+ "1.348815, 1.645927, 1.910691, 2.385732, 3.338111",\
+ "1.395358, 1.692472, 1.957243, 2.432300, 3.384711",\
+ "1.481036, 1.778158, 2.042948, 2.518051, 3.470554",\
+ "1.704422, 2.001556, 2.266376, 2.741550, 3.694194",\
+ "2.268456, 2.565605, 2.830464, 3.305729, 4.258559");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.052265, 0.052270, 0.052291, 0.052337, 0.052430",\
+ "0.174378, 0.174374, 0.174359, 0.174327, 0.174262",\
+ "0.378072, 0.378063, 0.378028, 0.377953, 0.377801",\
+ "0.885436, 0.885432, 0.885397, 0.885300, 0.885105",\
+ "2.163117, 2.163124, 2.163175, 2.163318, 2.163605",\
+ "0.052265, 0.052270, 0.052291, 0.052337, 0.052430",\
+ "0.174378, 0.174374, 0.174359, 0.174327, 0.174262",\
+ "0.378072, 0.378063, 0.378028, 0.377953, 0.377801",\
+ "0.885436, 0.885432, 0.885397, 0.885300, 0.885105",\
+ "2.163117, 2.163124, 2.163175, 2.163318, 2.163605",\
+ "0.052265, 0.052270, 0.052291, 0.052337, 0.052430",\
+ "0.174378, 0.174374, 0.174359, 0.174327, 0.174262",\
+ "0.378072, 0.378063, 0.378028, 0.377953, 0.377801",\
+ "0.885436, 0.885432, 0.885397, 0.885300, 0.885105",\
+ "2.163117, 2.163124, 2.163175, 2.163318, 2.163605",\
+ "0.052265, 0.052270, 0.052291, 0.052337, 0.052430",\
+ "0.174378, 0.174374, 0.174359, 0.174327, 0.174262",\
+ "0.378072, 0.378062, 0.378028, 0.377953, 0.377801",\
+ "0.885436, 0.885432, 0.885397, 0.885300, 0.885105",\
+ "2.163117, 2.163124, 2.163175, 2.163318, 2.163605",\
+ "0.052265, 0.052272, 0.052292, 0.052338, 0.052430",\
+ "0.174378, 0.174372, 0.174359, 0.174327, 0.174262",\
+ "0.378072, 0.378059, 0.378027, 0.377952, 0.377801",\
+ "0.885436, 0.885430, 0.885396, 0.885299, 0.885105",\
+ "2.163117, 2.163126, 2.163177, 2.163319, 2.163605");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.731449, 0.977276, 1.257067, 1.735920, 2.693626",\
+ "0.784944, 1.030796, 1.310685, 1.789754, 2.747891",\
+ "0.845853, 1.091725, 1.371691, 1.850929, 2.809405",\
+ "0.980551, 1.226421, 1.506381, 1.985605, 2.944052",\
+ "1.326977, 1.572838, 1.852758, 2.331896, 3.290171",\
+ "0.818854, 1.064841, 1.344662, 1.822633, 2.779559",\
+ "0.872349, 1.118361, 1.398281, 1.876467, 2.833825",\
+ "0.933258, 1.179290, 1.459288, 1.937643, 2.895339",\
+ "1.067956, 1.313987, 1.593977, 2.072318, 3.029986",\
+ "1.414383, 1.660403, 1.940354, 2.418609, 3.376105",\
+ "0.899676, 1.153830, 1.432626, 1.910254, 2.866514",\
+ "0.953171, 1.207350, 1.486244, 1.964088, 2.920780",\
+ "1.014081, 1.268280, 1.547251, 2.025264, 2.982294",\
+ "1.148778, 1.402976, 1.681941, 2.159939, 3.116941",\
+ "1.495205, 1.749392, 2.028318, 2.506230, 3.463060",\
+ "0.957311, 1.219475, 1.496767, 1.974167, 2.930023",\
+ "1.010806, 1.272997, 1.550386, 2.028001, 2.984289",\
+ "1.071716, 1.333927, 1.611393, 2.089177, 3.045803",\
+ "1.206414, 1.468623, 1.746082, 2.223852, 3.180450",\
+ "1.552840, 1.815039, 2.092459, 2.570143, 3.526569",\
+ "1.286987, 1.584062, 1.848731, 2.323550, 3.275480",\
+ "1.340482, 1.637592, 1.902352, 2.377385, 3.329745",\
+ "1.401392, 1.698529, 1.963361, 2.438561, 3.391259",\
+ "1.536089, 1.833225, 2.098050, 2.573236, 3.525906",\
+ "1.882516, 2.179637, 2.444427, 2.919527, 3.872025");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.060343, 0.060380, 0.060528, 0.060852, 0.061502",\
+ "0.114411, 0.114462, 0.114664, 0.115106, 0.115991",\
+ "0.200079, 0.200126, 0.200310, 0.200714, 0.201522",\
+ "0.445531, 0.445536, 0.445556, 0.445602, 0.445692",\
+ "1.101416, 1.101414, 1.101404, 1.101383, 1.101341",\
+ "0.060343, 0.060381, 0.060529, 0.060852, 0.061502",\
+ "0.114411, 0.114463, 0.114665, 0.115106, 0.115991",\
+ "0.200079, 0.200126, 0.200311, 0.200714, 0.201522",\
+ "0.445531, 0.445536, 0.445556, 0.445602, 0.445692",\
+ "1.101416, 1.101414, 1.101404, 1.101383, 1.101341",\
+ "0.060343, 0.060382, 0.060529, 0.060852, 0.061502",\
+ "0.114411, 0.114464, 0.114665, 0.115106, 0.115991",\
+ "0.200079, 0.200127, 0.200311, 0.200714, 0.201522",\
+ "0.445531, 0.445536, 0.445556, 0.445602, 0.445692",\
+ "1.101416, 1.101413, 1.101404, 1.101383, 1.101341",\
+ "0.060343, 0.060383, 0.060529, 0.060852, 0.061502",\
+ "0.114411, 0.114465, 0.114665, 0.115106, 0.115991",\
+ "0.200079, 0.200128, 0.200311, 0.200714, 0.201522",\
+ "0.445531, 0.445536, 0.445556, 0.445602, 0.445692",\
+ "1.101416, 1.101413, 1.101404, 1.101383, 1.101341",\
+ "0.060343, 0.060396, 0.060532, 0.060854, 0.061502",\
+ "0.114411, 0.114483, 0.114670, 0.115108, 0.115991",\
+ "0.200079, 0.200145, 0.200315, 0.200715, 0.201522",\
+ "0.445531, 0.445538, 0.445557, 0.445602, 0.445692",\
+ "1.101416, 1.101413, 1.101404, 1.101383, 1.101341");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2679*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.704078, 0.962448, 1.254543, 1.772415, 2.808159",\
+ "0.750305, 1.008676, 1.300771, 1.818645, 2.854393",\
+ "0.834537, 1.092907, 1.385001, 1.902873, 2.938617",\
+ "1.055475, 1.313845, 1.605937, 2.123804, 3.159536",\
+ "1.615778, 1.874147, 2.166233, 2.684084, 3.719787",\
+ "0.791487, 1.050012, 1.342263, 1.859129, 2.894093",\
+ "0.837714, 1.096239, 1.388491, 1.905359, 2.940326",\
+ "0.921945, 1.180470, 1.472721, 1.989588, 3.024551",\
+ "1.142884, 1.401409, 1.693658, 2.210518, 3.245470",\
+ "1.703187, 1.961710, 2.253953, 2.770799, 3.805721",\
+ "0.872371, 1.139015, 1.430229, 1.946751, 2.981048",\
+ "0.918598, 1.185243, 1.476457, 1.992981, 3.027281",\
+ "1.002829, 1.269474, 1.560688, 2.077209, 3.111506",\
+ "1.223768, 1.490412, 1.781624, 2.298140, 3.332425",\
+ "1.784070, 2.050714, 2.341920, 2.858420, 3.892676",\
+ "0.932831, 1.204683, 1.494377, 2.010664, 3.044557",\
+ "0.979058, 1.250910, 1.540605, 2.056894, 3.090790",\
+ "1.063289, 1.335141, 1.624835, 2.141123, 3.175015",\
+ "1.284228, 1.556080, 1.845772, 2.362053, 3.395934",\
+ "1.844531, 2.116381, 2.406067, 2.922334, 3.956185",\
+ "1.268348, 1.569475, 1.846740, 2.360211, 3.390013",\
+ "1.314575, 1.615702, 1.892967, 2.406441, 3.436246",\
+ "1.398806, 1.699933, 1.977198, 2.490670, 3.520471",\
+ "1.619745, 1.920872, 2.198134, 2.711600, 3.741390",\
+ "2.180047, 2.481173, 2.758430, 3.271881, 4.301641");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.053020, 0.053022, 0.053032, 0.053060, 0.053117",\
+ "0.178801, 0.178804, 0.178822, 0.178869, 0.178965",\
+ "0.381845, 0.381847, 0.381855, 0.381877, 0.381921",\
+ "0.885630, 0.885624, 0.885585, 0.885483, 0.885278",\
+ "2.162832, 2.162841, 2.162898, 2.163049, 2.163351",\
+ "0.053020, 0.053022, 0.053032, 0.053060, 0.053117",\
+ "0.178801, 0.178804, 0.178822, 0.178869, 0.178965",\
+ "0.381845, 0.381847, 0.381855, 0.381877, 0.381921",\
+ "0.885630, 0.885624, 0.885585, 0.885483, 0.885278",\
+ "2.162832, 2.162841, 2.162899, 2.163049, 2.163351",\
+ "0.053020, 0.053022, 0.053032, 0.053060, 0.053117",\
+ "0.178801, 0.178804, 0.178822, 0.178869, 0.178965",\
+ "0.381845, 0.381847, 0.381855, 0.381877, 0.381921",\
+ "0.885630, 0.885624, 0.885585, 0.885483, 0.885278",\
+ "2.162832, 2.162841, 2.162899, 2.163049, 2.163351",\
+ "0.053020, 0.053022, 0.053032, 0.053060, 0.053117",\
+ "0.178801, 0.178804, 0.178822, 0.178869, 0.178965",\
+ "0.381845, 0.381847, 0.381855, 0.381877, 0.381921",\
+ "0.885630, 0.885624, 0.885585, 0.885483, 0.885278",\
+ "2.162832, 2.162841, 2.162899, 2.163049, 2.163351",\
+ "0.053020, 0.053022, 0.053033, 0.053061, 0.053117",\
+ "0.178801, 0.178805, 0.178823, 0.178870, 0.178965",\
+ "0.381845, 0.381847, 0.381855, 0.381877, 0.381921",\
+ "0.885630, 0.885621, 0.885584, 0.885482, 0.885278",\
+ "2.162832, 2.162845, 2.162900, 2.163050, 2.163351");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.653096, 0.911470, 1.203587, 1.721520, 2.757385",\
+ "0.695785, 0.954155, 1.246248, 1.764117, 2.799856",\
+ "0.751534, 1.009904, 1.301996, 1.819860, 2.855588",\
+ "0.887244, 1.145615, 1.437709, 1.955581, 2.991326",\
+ "1.236608, 1.494979, 1.787076, 2.304955, 3.340714",\
+ "0.740505, 0.999033, 1.291307, 1.808234, 2.843319",\
+ "0.783194, 1.041719, 1.333969, 1.850832, 2.885789",\
+ "0.838943, 1.097468, 1.389716, 1.906574, 2.941522",\
+ "0.974653, 1.233178, 1.525429, 2.042296, 3.077260",\
+ "1.324017, 1.582542, 1.874796, 2.391670, 3.426647",\
+ "0.821388, 1.088037, 1.379274, 1.895856, 2.930274",\
+ "0.864078, 1.130722, 1.421935, 1.938454, 2.972744",\
+ "0.919827, 1.186471, 1.477682, 1.994196, 3.028477",\
+ "1.055537, 1.322181, 1.613395, 2.129917, 3.164215",\
+ "1.404901, 1.671546, 1.962763, 2.479291, 3.513602",\
+ "0.881849, 1.153705, 1.443422, 1.959769, 2.993783",\
+ "0.924538, 1.196390, 1.486083, 2.002367, 3.036253",\
+ "0.980287, 1.252139, 1.541830, 2.058109, 3.091986",\
+ "1.115997, 1.387849, 1.677543, 2.193830, 3.227724",\
+ "1.465361, 1.737213, 2.026911, 2.543204, 3.577111",\
+ "1.217365, 1.518498, 1.795785, 2.309317, 3.339239",\
+ "1.260055, 1.561182, 1.838445, 2.351914, 3.381710",\
+ "1.315804, 1.616930, 1.894192, 2.407657, 3.437442",\
+ "1.451514, 1.752641, 2.029906, 2.543378, 3.573180",\
+ "1.800878, 2.102005, 2.379273, 2.892752, 3.922567");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.046012, 0.046005, 0.045968, 0.045869, 0.045670",\
+ "0.095119, 0.095114, 0.095079, 0.094989, 0.094807",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188975",\
+ "0.443992, 0.443992, 0.443991, 0.443987, 0.443980",\
+ "1.101604, 1.101604, 1.101601, 1.101596, 1.101585",\
+ "0.046012, 0.046005, 0.045968, 0.045869, 0.045670",\
+ "0.095119, 0.095114, 0.095079, 0.094989, 0.094807",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188975",\
+ "0.443992, 0.443992, 0.443991, 0.443987, 0.443980",\
+ "1.101604, 1.101604, 1.101601, 1.101596, 1.101585",\
+ "0.046012, 0.046005, 0.045968, 0.045869, 0.045670",\
+ "0.095119, 0.095114, 0.095079, 0.094989, 0.094807",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188975",\
+ "0.443992, 0.443992, 0.443991, 0.443987, 0.443980",\
+ "1.101604, 1.101604, 1.101601, 1.101596, 1.101585",\
+ "0.046012, 0.046005, 0.045968, 0.045869, 0.045670",\
+ "0.095119, 0.095113, 0.095079, 0.094989, 0.094807",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188975",\
+ "0.443992, 0.443992, 0.443991, 0.443987, 0.443980",\
+ "1.101604, 1.101604, 1.101601, 1.101596, 1.101585",\
+ "0.046012, 0.046003, 0.045967, 0.045868, 0.045670",\
+ "0.095119, 0.095111, 0.095078, 0.094988, 0.094807",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188975",\
+ "0.443992, 0.443992, 0.443991, 0.443987, 0.443980",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101585");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.687749, 0.939290, 1.220370, 1.693212, 2.638895",\
+ "0.733976, 0.985517, 1.266598, 1.739441, 2.685128",\
+ "0.818208, 1.069748, 1.350828, 1.823670, 2.769354",\
+ "1.039147, 1.290687, 1.571764, 2.044601, 2.990274",\
+ "1.599449, 1.850988, 2.132060, 2.604883, 3.550529",\
+ "0.775154, 1.026875, 1.307946, 1.779925, 2.724829",\
+ "0.821381, 1.073102, 1.354175, 1.826155, 2.771062",\
+ "0.905613, 1.157333, 1.438405, 1.910384, 2.855288",\
+ "1.126552, 1.378272, 1.659341, 2.131315, 3.076208",\
+ "1.686854, 1.938572, 2.219636, 2.691597, 3.636462",\
+ "0.855968, 1.115908, 1.395910, 1.867546, 2.811784",\
+ "0.902195, 1.162135, 1.442138, 1.913776, 2.858017",\
+ "0.986426, 1.246367, 1.526368, 1.998005, 2.942243",\
+ "1.207365, 1.467305, 1.747304, 2.218936, 3.163163",\
+ "1.767667, 2.027606, 2.307599, 2.779218, 3.723417",\
+ "0.913586, 1.181618, 1.460050, 1.931459, 2.875293",\
+ "0.959814, 1.227846, 1.506278, 1.977689, 2.921526",\
+ "1.044045, 1.312077, 1.590508, 2.061918, 3.005752",\
+ "1.264984, 1.533015, 1.811444, 2.282849, 3.226672",\
+ "1.825286, 2.093316, 2.371740, 2.843130, 3.786926",\
+ "1.247292, 1.546964, 1.811953, 2.280817, 3.220749",\
+ "1.293519, 1.593192, 1.858181, 2.327047, 3.266982",\
+ "1.377751, 1.677423, 1.942412, 2.411276, 3.351208",\
+ "1.598690, 1.898361, 2.163348, 2.632206, 3.572128",\
+ "2.158992, 2.458661, 2.723643, 3.192488, 4.132382");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.053020, 0.053023, 0.053033, 0.053059, 0.053110",\
+ "0.178802, 0.178805, 0.178823, 0.178866, 0.178953",\
+ "0.381846, 0.381847, 0.381856, 0.381876, 0.381916",\
+ "0.885629, 0.885621, 0.885582, 0.885489, 0.885303",\
+ "2.162833, 2.162845, 2.162902, 2.163039, 2.163313",\
+ "0.053020, 0.053023, 0.053033, 0.053059, 0.053110",\
+ "0.178802, 0.178805, 0.178823, 0.178866, 0.178953",\
+ "0.381846, 0.381847, 0.381856, 0.381876, 0.381916",\
+ "0.885629, 0.885621, 0.885582, 0.885489, 0.885303",\
+ "2.162833, 2.162845, 2.162903, 2.163039, 2.163313",\
+ "0.053020, 0.053023, 0.053033, 0.053059, 0.053110",\
+ "0.178802, 0.178805, 0.178823, 0.178866, 0.178953",\
+ "0.381846, 0.381847, 0.381856, 0.381876, 0.381916",\
+ "0.885629, 0.885621, 0.885582, 0.885489, 0.885303",\
+ "2.162833, 2.162846, 2.162903, 2.163039, 2.163313",\
+ "0.053020, 0.053023, 0.053033, 0.053059, 0.053110",\
+ "0.178802, 0.178805, 0.178823, 0.178866, 0.178953",\
+ "0.381846, 0.381847, 0.381856, 0.381876, 0.381916",\
+ "0.885629, 0.885621, 0.885582, 0.885489, 0.885303",\
+ "2.162833, 2.162846, 2.162903, 2.163039, 2.163313",\
+ "0.053020, 0.053023, 0.053033, 0.053059, 0.053110",\
+ "0.178802, 0.178807, 0.178824, 0.178867, 0.178953",\
+ "0.381846, 0.381848, 0.381856, 0.381876, 0.381916",\
+ "0.885629, 0.885618, 0.885581, 0.885489, 0.885303",\
+ "2.162833, 2.162850, 2.162904, 2.163039, 2.163313");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.636768, 0.888313, 1.169416, 1.642313, 2.588106",\
+ "0.679456, 0.930997, 1.212076, 1.684915, 2.630593",\
+ "0.735206, 0.986745, 1.267823, 1.740657, 2.686327",\
+ "0.870915, 1.122456, 1.403536, 1.876378, 2.822062",\
+ "1.220279, 1.471821, 1.752903, 2.225752, 3.171448",\
+ "0.724173, 0.975898, 1.256993, 1.729026, 2.674040",\
+ "0.766861, 1.018582, 1.299652, 1.771628, 2.716527",\
+ "0.822611, 1.074330, 1.355399, 1.827371, 2.772260",\
+ "0.958320, 1.210041, 1.491113, 1.963092, 2.907996",\
+ "1.307685, 1.559406, 1.840480, 2.312465, 3.257382",\
+ "0.804986, 1.064932, 1.344956, 1.816648, 2.760995",\
+ "0.847675, 1.107615, 1.387615, 1.859249, 2.803482",\
+ "0.903424, 1.163364, 1.443362, 1.914992, 2.859215",\
+ "1.039134, 1.299074, 1.579076, 2.050713, 2.994951",\
+ "1.388498, 1.648439, 1.928443, 2.400086, 3.344337",\
+ "0.862605, 1.130642, 1.409096, 1.880560, 2.824504",\
+ "0.905293, 1.173325, 1.451756, 1.923162, 2.866991",\
+ "0.961043, 1.229074, 1.507503, 1.978905, 2.922724",\
+ "1.096752, 1.364785, 1.643216, 2.114626, 3.058460",\
+ "1.446117, 1.714149, 1.992583, 2.463999, 3.407846",\
+ "1.196311, 1.495989, 1.761000, 2.229918, 3.169960",\
+ "1.238999, 1.538671, 1.803659, 2.272520, 3.212447",\
+ "1.294749, 1.594420, 1.859406, 2.328263, 3.268181",\
+ "1.430458, 1.730130, 1.995120, 2.463984, 3.403916",\
+ "1.779823, 2.079495, 2.344487, 2.813357, 3.753302");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.046010, 0.046003, 0.045965, 0.045875, 0.045695",\
+ "0.095118, 0.095111, 0.095077, 0.094995, 0.094830",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188974",\
+ "0.443992, 0.443992, 0.443991, 0.443988, 0.443981",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101586",\
+ "0.046010, 0.046002, 0.045965, 0.045875, 0.045695",\
+ "0.095118, 0.095111, 0.095077, 0.094995, 0.094830",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188974",\
+ "0.443992, 0.443992, 0.443991, 0.443988, 0.443981",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101586",\
+ "0.046010, 0.046002, 0.045965, 0.045875, 0.045695",\
+ "0.095118, 0.095111, 0.095077, 0.094995, 0.094830",\
+ "0.188959, 0.188960, 0.188961, 0.188966, 0.188974",\
+ "0.443992, 0.443992, 0.443991, 0.443988, 0.443981",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101586",\
+ "0.046010, 0.046002, 0.045965, 0.045875, 0.045695",\
+ "0.095118, 0.095111, 0.095077, 0.094995, 0.094830",\
+ "0.188959, 0.188960, 0.188962, 0.188966, 0.188974",\
+ "0.443992, 0.443992, 0.443991, 0.443988, 0.443981",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101586",\
+ "0.046010, 0.045999, 0.045964, 0.045875, 0.045695",\
+ "0.095118, 0.095108, 0.095076, 0.094994, 0.094830",\
+ "0.188959, 0.188960, 0.188962, 0.188966, 0.188974",\
+ "0.443992, 0.443992, 0.443991, 0.443988, 0.443981",\
+ "1.101604, 1.101603, 1.101601, 1.101596, 1.101586");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2370*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.622933, 0.904214, 1.205191, 1.719790, 2.748989",\
+ "0.669468, 0.950758, 1.251803, 1.766599, 2.796192",\
+ "0.755125, 1.036441, 1.337680, 1.853039, 2.883759",\
+ "0.978478, 1.259834, 1.561373, 2.077602, 3.110059",\
+ "1.542469, 1.823877, 2.125806, 2.643168, 3.677893",\
+ "0.710344, 0.991835, 1.292902, 1.806505, 2.834923",\
+ "0.756879, 1.038379, 1.339514, 1.853314, 2.882126",\
+ "0.842536, 1.124062, 1.425393, 1.939754, 2.969692",\
+ "1.065890, 1.347456, 1.649089, 2.164316, 3.195993",\
+ "1.629880, 1.911499, 2.213525, 2.729883, 3.763827",\
+ "0.799646, 1.080982, 1.380869, 1.894127, 2.921878",\
+ "0.846182, 1.127527, 1.427481, 1.940936, 2.969081",\
+ "0.931839, 1.213210, 1.513360, 2.027376, 3.056648",\
+ "1.155193, 1.436604, 1.737056, 2.251938, 3.282948",\
+ "1.719185, 2.000648, 2.301492, 2.817505, 3.850782",\
+ "0.863267, 1.146859, 1.445016, 1.958041, 2.985387",\
+ "0.909803, 1.193403, 1.491629, 2.004849, 3.032590",\
+ "0.995460, 1.279087, 1.577507, 2.091290, 3.120157",\
+ "1.218815, 1.502483, 1.801203, 2.315852, 3.346457",\
+ "1.782807, 2.066528, 2.365640, 2.881418, 3.914291",\
+ "1.199521, 1.514063, 1.797347, 2.307577, 3.330843",\
+ "1.246057, 1.560610, 1.843961, 2.354387, 3.378046",\
+ "1.331717, 1.646302, 1.929846, 2.440829, 3.465612",\
+ "1.555075, 1.869709, 2.153550, 2.665395, 3.691913",\
+ "2.119071, 2.433770, 2.717999, 3.230966, 4.259747");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.052243, 0.052269, 0.054671, 0.062895, 0.079343",\
+ "0.174393, 0.174375, 0.174239, 0.173844, 0.173056",\
+ "0.378107, 0.378064, 0.377824, 0.377171, 0.375864",\
+ "0.885321, 0.885201, 0.884881, 0.884213, 0.882876",\
+ "2.163287, 2.163464, 2.163713, 2.163931, 2.164366",\
+ "0.052243, 0.052269, 0.054697, 0.062895, 0.079343",\
+ "0.174393, 0.174374, 0.174237, 0.173844, 0.173056",\
+ "0.378107, 0.378064, 0.377822, 0.377171, 0.375864",\
+ "0.885321, 0.885200, 0.884879, 0.884213, 0.882876",\
+ "2.163287, 2.163465, 2.163714, 2.163931, 2.164366",\
+ "0.052243, 0.052270, 0.054697, 0.062895, 0.079343",\
+ "0.174392, 0.174374, 0.174237, 0.173844, 0.173056",\
+ "0.378106, 0.378063, 0.377822, 0.377171, 0.375864",\
+ "0.885318, 0.885198, 0.884879, 0.884213, 0.882876",\
+ "2.163292, 2.163468, 2.163714, 2.163931, 2.164366",\
+ "0.052244, 0.052270, 0.054698, 0.062895, 0.079343",\
+ "0.174392, 0.174374, 0.174237, 0.173844, 0.173056",\
+ "0.378106, 0.378062, 0.377822, 0.377171, 0.375864",\
+ "0.885315, 0.885196, 0.884879, 0.884213, 0.882876",\
+ "2.163296, 2.163471, 2.163714, 2.163931, 2.164366",\
+ "0.052246, 0.052278, 0.054782, 0.062929, 0.079343",\
+ "0.174391, 0.174368, 0.174233, 0.173843, 0.173056",\
+ "0.378102, 0.378049, 0.377815, 0.377168, 0.375864",\
+ "0.885300, 0.885164, 0.884872, 0.884210, 0.882876",\
+ "2.163318, 2.163518, 2.163716, 2.163932, 2.164366");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.561209, 0.842364, 1.145718, 1.669104, 2.715876",\
+ "0.614604, 0.895880, 1.196912, 1.711724, 2.741347",\
+ "0.675435, 0.956806, 1.258457, 1.775014, 2.808127",\
+ "0.810139, 1.091502, 1.393093, 1.909477, 2.942242",\
+ "1.156606, 1.437920, 1.739149, 2.254480, 3.285141",\
+ "0.648620, 0.929984, 1.233457, 1.755819, 2.801810",\
+ "0.702015, 0.983501, 1.284623, 1.798438, 2.827281",\
+ "0.762846, 1.044428, 1.346174, 1.861729, 2.894061",\
+ "0.897551, 1.179124, 1.480810, 1.996191, 3.028176",\
+ "1.244017, 1.525542, 1.826863, 2.341195, 3.371075",\
+ "0.737920, 1.019129, 1.321424, 1.843441, 2.888765",\
+ "0.791317, 1.072648, 1.372590, 1.886060, 2.914236",\
+ "0.852150, 1.133576, 1.434141, 1.949351, 2.981016",\
+ "0.986854, 1.268272, 1.568777, 2.083813, 3.115131",\
+ "1.333320, 1.614689, 1.914829, 2.428817, 3.458030",\
+ "0.801540, 1.085002, 1.385573, 1.907354, 2.952274",\
+ "0.854938, 1.138524, 1.436738, 1.949974, 2.977745",\
+ "0.915772, 1.199455, 1.498289, 2.013264, 3.044525",\
+ "1.050476, 1.334151, 1.632925, 2.147727, 3.178640",\
+ "1.396941, 1.680567, 1.978977, 2.492730, 3.521539",\
+ "1.137784, 1.452168, 1.737993, 2.256927, 3.297729",\
+ "1.191192, 1.505727, 1.789070, 2.299511, 3.323201",\
+ "1.252033, 1.566686, 1.850639, 2.362809, 3.389981",\
+ "1.386736, 1.701380, 1.985273, 2.497271, 3.524096",\
+ "1.733197, 2.047781, 2.331315, 2.842270, 3.866995");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.060194, 0.060374, 0.061744, 0.065730, 0.073703",\
+ "0.114206, 0.114454, 0.116316, 0.121721, 0.132532",\
+ "0.199891, 0.200118, 0.201818, 0.206753, 0.216623",\
+ "0.445510, 0.445535, 0.445725, 0.446277, 0.447381",\
+ "1.101426, 1.101414, 1.101326, 1.101071, 1.100560",\
+ "0.060194, 0.060375, 0.061757, 0.065730, 0.073703",\
+ "0.114206, 0.114455, 0.116333, 0.121721, 0.132532",\
+ "0.199891, 0.200119, 0.201834, 0.206753, 0.216623",\
+ "0.445510, 0.445535, 0.445727, 0.446277, 0.447381",\
+ "1.101426, 1.101414, 1.101325, 1.101071, 1.100560",\
+ "0.060197, 0.060379, 0.061757, 0.065730, 0.073703",\
+ "0.114210, 0.114460, 0.116333, 0.121721, 0.132532",\
+ "0.199895, 0.200123, 0.201834, 0.206753, 0.216623",\
+ "0.445510, 0.445535, 0.445727, 0.446277, 0.447381",\
+ "1.101426, 1.101414, 1.101325, 1.101071, 1.100560",\
+ "0.060200, 0.060383, 0.061757, 0.065730, 0.073703",\
+ "0.114213, 0.114466, 0.116334, 0.121721, 0.132532",\
+ "0.199898, 0.200129, 0.201835, 0.206753, 0.216623",\
+ "0.445510, 0.445536, 0.445727, 0.446277, 0.447381",\
+ "1.101425, 1.101413, 1.101325, 1.101071, 1.100560",\
+ "0.060213, 0.060438, 0.061798, 0.065747, 0.073703",\
+ "0.114232, 0.114541, 0.116389, 0.121744, 0.132532",\
+ "0.199915, 0.200198, 0.201885, 0.206773, 0.216623",\
+ "0.445512, 0.445544, 0.445733, 0.446279, 0.447381",\
+ "1.101425, 1.101410, 1.101323, 1.101070, 1.100560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2367*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.746470, 1.014882, 1.306808, 1.802638, 2.794297",\
+ "0.792702, 1.061114, 1.353041, 1.848873, 2.840536",\
+ "0.876929, 1.145341, 1.437267, 1.933097, 2.924756",\
+ "1.097854, 1.366266, 1.658190, 2.154013, 3.145659",\
+ "1.658121, 1.926532, 2.218450, 2.714257, 3.705872",\
+ "0.833878, 1.102487, 1.394459, 1.889352, 2.880230",\
+ "0.880110, 1.148719, 1.440691, 1.935587, 2.926469",\
+ "0.964337, 1.232946, 1.524917, 2.019811, 3.010689",\
+ "1.185262, 1.453871, 1.745840, 2.240727, 3.231593",\
+ "1.745530, 2.014137, 2.306100, 2.800972, 3.791806",\
+ "0.914792, 1.191581, 1.482424, 1.976974, 2.967185",\
+ "0.961024, 1.237813, 1.528656, 2.023208, 3.013424",\
+ "1.045251, 1.322040, 1.612882, 2.107432, 3.097644",\
+ "1.266176, 1.542965, 1.833805, 2.328349, 3.318548",\
+ "1.826444, 2.103231, 2.394065, 2.888593, 3.878761",\
+ "0.976718, 1.257380, 1.546568, 2.040887, 3.030694",\
+ "1.022949, 1.303612, 1.592801, 2.087121, 3.076933",\
+ "1.107176, 1.387838, 1.677027, 2.171345, 3.161153",\
+ "1.328102, 1.608763, 1.897949, 2.392262, 3.382057",\
+ "1.888369, 2.169030, 2.458210, 2.952506, 3.942270",\
+ "1.314895, 1.623717, 1.898706, 2.390343, 3.376151",\
+ "1.361127, 1.669949, 1.944939, 2.436577, 3.422390",\
+ "1.445354, 1.754176, 2.029165, 2.520801, 3.506609",\
+ "1.666279, 1.975101, 2.250087, 2.741717, 3.727513",\
+ "2.226547, 2.535367, 2.810348, 3.301962, 4.287725");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.053085, 0.053087, 0.053099, 0.053129, 0.053189",\
+ "0.178912, 0.178915, 0.178935, 0.178986, 0.179088",\
+ "0.381897, 0.381898, 0.381907, 0.381931, 0.381978",\
+ "0.885391, 0.885384, 0.885342, 0.885232, 0.885012",\
+ "2.163183, 2.163193, 2.163255, 2.163418, 2.163742",\
+ "0.053085, 0.053087, 0.053099, 0.053129, 0.053189",\
+ "0.178912, 0.178915, 0.178935, 0.178986, 0.179088",\
+ "0.381897, 0.381898, 0.381907, 0.381931, 0.381978",\
+ "0.885391, 0.885384, 0.885342, 0.885232, 0.885012",\
+ "2.163183, 2.163194, 2.163256, 2.163418, 2.163742",\
+ "0.053085, 0.053087, 0.053099, 0.053129, 0.053189",\
+ "0.178912, 0.178915, 0.178935, 0.178986, 0.179088",\
+ "0.381897, 0.381898, 0.381907, 0.381931, 0.381978",\
+ "0.885391, 0.885384, 0.885342, 0.885232, 0.885012",\
+ "2.163183, 2.163194, 2.163256, 2.163418, 2.163742",\
+ "0.053085, 0.053087, 0.053099, 0.053129, 0.053189",\
+ "0.178912, 0.178915, 0.178935, 0.178986, 0.179088",\
+ "0.381897, 0.381898, 0.381907, 0.381931, 0.381978",\
+ "0.885391, 0.885384, 0.885342, 0.885232, 0.885012",\
+ "2.163183, 2.163194, 2.163256, 2.163418, 2.163742",\
+ "0.053085, 0.053088, 0.053099, 0.053129, 0.053189",\
+ "0.178912, 0.178916, 0.178935, 0.178986, 0.179088",\
+ "0.381897, 0.381899, 0.381907, 0.381931, 0.381978",\
+ "0.885391, 0.885382, 0.885341, 0.885232, 0.885012",\
+ "2.163183, 2.163198, 2.163258, 2.163418, 2.163742");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.695629, 0.964045, 1.256010, 1.751953, 2.743838",\
+ "0.738170, 1.006582, 1.298507, 1.794334, 2.785986",\
+ "0.793908, 1.062320, 1.354243, 1.850064, 2.841706",\
+ "0.929637, 1.198049, 1.489976, 1.985806, 2.977466",\
+ "1.279017, 1.547430, 1.839359, 2.335196, 3.326870",\
+ "0.783037, 1.051650, 1.343661, 1.838667, 2.829772",\
+ "0.825579, 1.094187, 1.386158, 1.881048, 2.871920",\
+ "0.881317, 1.149925, 1.441893, 1.936778, 2.927640",\
+ "1.017045, 1.285654, 1.577626, 2.072520, 3.063399",\
+ "1.366425, 1.635035, 1.927009, 2.421910, 3.412804",\
+ "0.863951, 1.140744, 1.431626, 1.926289, 2.916727",\
+ "0.906492, 1.183281, 1.474123, 1.968669, 2.958875",\
+ "0.962231, 1.239019, 1.529858, 2.024400, 3.014595",\
+ "1.097959, 1.374748, 1.665591, 2.160141, 3.150354",\
+ "1.447339, 1.724128, 2.014974, 2.509532, 3.499759",\
+ "0.925877, 1.206543, 1.495770, 1.990202, 2.980236",\
+ "0.968418, 1.249080, 1.538267, 2.032583, 3.022384",\
+ "1.024156, 1.304818, 1.594002, 2.088313, 3.078104",\
+ "1.159885, 1.440547, 1.729735, 2.224055, 3.213863",\
+ "1.509265, 1.789927, 2.079118, 2.573445, 3.563268",\
+ "1.264054, 1.572882, 1.847910, 2.339658, 3.325692",\
+ "1.306595, 1.615417, 1.890405, 2.382038, 3.367840",\
+ "1.362333, 1.671155, 1.946141, 2.437769, 3.423560",\
+ "1.498062, 1.806884, 2.081874, 2.573510, 3.559319",\
+ "1.847442, 2.156265, 2.431257, 2.922901, 3.908724");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.045780, 0.045773, 0.045733, 0.045626, 0.045413",\
+ "0.094908, 0.094902, 0.094864, 0.094767, 0.094572",\
+ "0.188970, 0.188970, 0.188972, 0.188977, 0.188987",\
+ "0.443984, 0.443984, 0.443983, 0.443979, 0.443971",\
+ "1.101591, 1.101591, 1.101588, 1.101583, 1.101571",\
+ "0.045780, 0.045773, 0.045733, 0.045626, 0.045413",\
+ "0.094908, 0.094902, 0.094864, 0.094767, 0.094572",\
+ "0.188970, 0.188970, 0.188972, 0.188977, 0.188987",\
+ "0.443984, 0.443984, 0.443983, 0.443979, 0.443971",\
+ "1.101591, 1.101591, 1.101588, 1.101583, 1.101571",\
+ "0.045780, 0.045773, 0.045733, 0.045626, 0.045413",\
+ "0.094908, 0.094901, 0.094864, 0.094767, 0.094572",\
+ "0.188970, 0.188970, 0.188972, 0.188977, 0.188987",\
+ "0.443984, 0.443984, 0.443983, 0.443979, 0.443971",\
+ "1.101591, 1.101591, 1.101588, 1.101583, 1.101571",\
+ "0.045780, 0.045773, 0.045732, 0.045626, 0.045413",\
+ "0.094908, 0.094901, 0.094864, 0.094767, 0.094572",\
+ "0.188970, 0.188970, 0.188972, 0.188977, 0.188987",\
+ "0.443984, 0.443984, 0.443983, 0.443979, 0.443971",\
+ "1.101591, 1.101591, 1.101588, 1.101583, 1.101571",\
+ "0.045780, 0.045771, 0.045731, 0.045626, 0.045413",\
+ "0.094908, 0.094899, 0.094863, 0.094766, 0.094572",\
+ "0.188970, 0.188970, 0.188972, 0.188977, 0.188987",\
+ "0.443984, 0.443984, 0.443983, 0.443979, 0.443971",\
+ "1.101591, 1.101591, 1.101588, 1.101583, 1.101571");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2564*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.720239, 0.982131, 1.267428, 1.744868, 2.699749",\
+ "0.766471, 1.028363, 1.313660, 1.791102, 2.745986",\
+ "0.850698, 1.112590, 1.397886, 1.875327, 2.830208",\
+ "1.071623, 1.333515, 1.618809, 2.096245, 3.051117",\
+ "1.631890, 1.893781, 2.179071, 2.656495, 3.611344",\
+ "0.807647, 1.069728, 1.355020, 1.831583, 2.785683",\
+ "0.853879, 1.115960, 1.401253, 1.877816, 2.831920",\
+ "0.938106, 1.200187, 1.485479, 1.962041, 2.916142",\
+ "1.159031, 1.421112, 1.706402, 2.182960, 3.137051",\
+ "1.719299, 1.981378, 2.266663, 2.743210, 3.697278",\
+ "0.888462, 1.158804, 1.442984, 1.919204, 2.872638",\
+ "0.934694, 1.205035, 1.489217, 1.965438, 2.918875",\
+ "1.018921, 1.289262, 1.573443, 2.049663, 3.003097",\
+ "1.239846, 1.510187, 1.794366, 2.270581, 3.224006",\
+ "1.800113, 2.070453, 2.354627, 2.830831, 3.784233",\
+ "0.949702, 1.224575, 1.507125, 1.983117, 2.936147",\
+ "0.995934, 1.270807, 1.553358, 2.029351, 2.982384",\
+ "1.080161, 1.355034, 1.637584, 2.113576, 3.066606",\
+ "1.301086, 1.575958, 1.858507, 2.334494, 3.287515",\
+ "1.861354, 2.136225, 2.418768, 2.894744, 3.847742",\
+ "1.285416, 1.590595, 1.859077, 2.332497, 3.281603",\
+ "1.331648, 1.636827, 1.905309, 2.378731, 3.327840",\
+ "1.415875, 1.721054, 1.989536, 2.462955, 3.412062",\
+ "1.636800, 1.941979, 2.210458, 2.683874, 3.632971",\
+ "2.197067, 2.502244, 2.770720, 3.244124, 4.193198");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.053086, 0.053088, 0.053097, 0.053119, 0.053163",\
+ "0.178912, 0.178915, 0.178931, 0.178968, 0.179043",\
+ "0.381897, 0.381898, 0.381905, 0.381923, 0.381957",\
+ "0.885390, 0.885384, 0.885350, 0.885270, 0.885109",\
+ "2.163185, 2.163195, 2.163244, 2.163362, 2.163599",\
+ "0.053086, 0.053088, 0.053097, 0.053119, 0.053163",\
+ "0.178912, 0.178915, 0.178931, 0.178968, 0.179043",\
+ "0.381897, 0.381898, 0.381905, 0.381923, 0.381957",\
+ "0.885390, 0.885384, 0.885350, 0.885270, 0.885109",\
+ "2.163185, 2.163195, 2.163244, 2.163362, 2.163599",\
+ "0.053086, 0.053088, 0.053097, 0.053119, 0.053163",\
+ "0.178912, 0.178916, 0.178931, 0.178968, 0.179043",\
+ "0.381897, 0.381898, 0.381905, 0.381923, 0.381957",\
+ "0.885390, 0.885383, 0.885350, 0.885270, 0.885109",\
+ "2.163185, 2.163195, 2.163244, 2.163362, 2.163599",\
+ "0.053086, 0.053088, 0.053097, 0.053119, 0.053163",\
+ "0.178912, 0.178916, 0.178931, 0.178968, 0.179043",\
+ "0.381897, 0.381898, 0.381905, 0.381923, 0.381957",\
+ "0.885390, 0.885383, 0.885350, 0.885270, 0.885109",\
+ "2.163185, 2.163195, 2.163244, 2.163362, 2.163599",\
+ "0.053086, 0.053088, 0.053097, 0.053119, 0.053163",\
+ "0.178912, 0.178917, 0.178931, 0.178968, 0.179043",\
+ "0.381897, 0.381899, 0.381906, 0.381923, 0.381957",\
+ "0.885390, 0.885381, 0.885349, 0.885270, 0.885109",\
+ "2.163185, 2.163199, 2.163245, 2.163363, 2.163599");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.669399, 0.931295, 1.216611, 1.694099, 2.649075",\
+ "0.711939, 0.973832, 1.259127, 1.736565, 2.691442",\
+ "0.767677, 1.029569, 1.314863, 1.792297, 2.747166",\
+ "0.903406, 1.165299, 1.450595, 1.928036, 2.882917",\
+ "1.252786, 1.514679, 1.799978, 2.277424, 3.232316",\
+ "0.756807, 1.018892, 1.304204, 1.780813, 2.735009",\
+ "0.799348, 1.061428, 1.346719, 1.823279, 2.777375",\
+ "0.855086, 1.117166, 1.402455, 1.879012, 2.833100",\
+ "0.990815, 1.252895, 1.538187, 2.014750, 2.968851",\
+ "1.340194, 1.602276, 1.887570, 2.364138, 3.318250",\
+ "0.837622, 1.107967, 1.392168, 1.868435, 2.821964",\
+ "0.880162, 1.150504, 1.434683, 1.910901, 2.864330",\
+ "0.935900, 1.206241, 1.490419, 1.966633, 2.920055",\
+ "1.071629, 1.341971, 1.626151, 2.102372, 3.055806",\
+ "1.421009, 1.691351, 1.975534, 2.451760, 3.405205",\
+ "0.898862, 1.173739, 1.456309, 1.932348, 2.885473",\
+ "0.941403, 1.216275, 1.498824, 1.974814, 2.927839",\
+ "0.997141, 1.272013, 1.554560, 2.030546, 2.983564",\
+ "1.132869, 1.407742, 1.690292, 2.166285, 3.119315",\
+ "1.482249, 1.757123, 2.039675, 2.515673, 3.468714",\
+ "1.234576, 1.539761, 1.808261, 2.281728, 3.230929",\
+ "1.277116, 1.582295, 1.850776, 2.324194, 3.273295",\
+ "1.332854, 1.638033, 1.906512, 2.379926, 3.329020",\
+ "1.468583, 1.773762, 2.042244, 2.515665, 3.464771",\
+ "1.817963, 2.123143, 2.391627, 2.865052, 3.814170");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.045779, 0.045773, 0.045741, 0.045663, 0.045507",\
+ "0.094907, 0.094901, 0.094871, 0.094800, 0.094658",\
+ "0.188970, 0.188970, 0.188972, 0.188975, 0.188983",\
+ "0.443984, 0.443984, 0.443983, 0.443980, 0.443975",\
+ "1.101591, 1.101591, 1.101589, 1.101584, 1.101576",\
+ "0.045779, 0.045773, 0.045740, 0.045663, 0.045507",\
+ "0.094907, 0.094901, 0.094871, 0.094800, 0.094658",\
+ "0.188970, 0.188970, 0.188972, 0.188975, 0.188983",\
+ "0.443984, 0.443984, 0.443983, 0.443980, 0.443975",\
+ "1.101591, 1.101591, 1.101589, 1.101584, 1.101576",\
+ "0.045779, 0.045773, 0.045740, 0.045663, 0.045507",\
+ "0.094907, 0.094901, 0.094871, 0.094800, 0.094658",\
+ "0.188970, 0.188970, 0.188972, 0.188975, 0.188983",\
+ "0.443984, 0.443984, 0.443983, 0.443980, 0.443975",\
+ "1.101591, 1.101591, 1.101589, 1.101584, 1.101576",\
+ "0.045779, 0.045772, 0.045740, 0.045663, 0.045507",\
+ "0.094907, 0.094901, 0.094871, 0.094800, 0.094658",\
+ "0.188970, 0.188970, 0.188972, 0.188975, 0.188983",\
+ "0.443984, 0.443984, 0.443983, 0.443980, 0.443975",\
+ "1.101591, 1.101591, 1.101589, 1.101584, 1.101576",\
+ "0.045779, 0.045770, 0.045740, 0.045662, 0.045507",\
+ "0.094907, 0.094898, 0.094871, 0.094800, 0.094658",\
+ "0.188970, 0.188970, 0.188972, 0.188975, 0.188983",\
+ "0.443984, 0.443984, 0.443983, 0.443980, 0.443975",\
+ "1.101591, 1.101590, 1.101589, 1.101584, 1.101576");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2515*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.505424, 0.768046, 1.055041, 1.540850, 2.512468",\
+ "0.551960, 0.814596, 1.101656, 1.587624, 2.559559",\
+ "0.637620, 0.900293, 1.187543, 1.673963, 2.646803",\
+ "0.860979, 1.123711, 1.411252, 1.898370, 2.872607",\
+ "1.424976, 1.687784, 1.975705, 2.463734, 3.439793",\
+ "0.593483, 0.855643, 1.142658, 1.627564, 2.598402",\
+ "0.640020, 0.902192, 1.189274, 1.674337, 2.645493",\
+ "0.725680, 0.987891, 1.275163, 1.760677, 2.732737",\
+ "0.949039, 1.211309, 1.498873, 1.985084, 2.958541",\
+ "1.513036, 1.775383, 2.063330, 2.550448, 3.525727",\
+ "0.682045, 0.944707, 1.230622, 1.715185, 2.685357",\
+ "0.728581, 0.991257, 1.277238, 1.761959, 2.732448",\
+ "0.814241, 1.076956, 1.363127, 1.848298, 2.819692",\
+ "1.037599, 1.300375, 1.586838, 2.072705, 3.045496",\
+ "1.601596, 1.864452, 2.151294, 2.638070, 3.612682",\
+ "0.745042, 1.010463, 1.294765, 1.779098, 2.748866",\
+ "0.791578, 1.057013, 1.341381, 1.825872, 2.795957",\
+ "0.877238, 1.142714, 1.427269, 1.912211, 2.883201",\
+ "1.100596, 1.366135, 1.650980, 2.136618, 3.109005",\
+ "1.664593, 1.930213, 2.215437, 2.701982, 3.676191",\
+ "1.077301, 1.376325, 1.646801, 2.128510, 3.094322",\
+ "1.123837, 1.422881, 1.693418, 2.175285, 3.141412",\
+ "1.209496, 1.508595, 1.779311, 2.261626, 3.228657",\
+ "1.432853, 1.732038, 2.003029, 2.486036, 3.454461",\
+ "1.996848, 2.296144, 2.567495, 3.051404, 4.021647");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.052246, 0.052286, 0.053457, 0.057279, 0.064922",\
+ "0.174390, 0.174392, 0.174392, 0.174392, 0.174392",\
+ "0.378101, 0.378105, 0.378105, 0.378105, 0.378105",\
+ "0.885463, 0.885472, 0.885472, 0.885472, 0.885472",\
+ "2.163077, 2.163087, 2.163255, 2.163786, 2.164848",\
+ "0.052246, 0.052286, 0.053469, 0.057279, 0.064922",\
+ "0.174390, 0.174392, 0.174392, 0.174392, 0.174392",\
+ "0.378101, 0.378105, 0.378105, 0.378105, 0.378105",\
+ "0.885464, 0.885472, 0.885472, 0.885472, 0.885472",\
+ "2.163077, 2.163087, 2.163257, 2.163786, 2.164848",\
+ "0.052246, 0.052287, 0.053469, 0.057279, 0.064922",\
+ "0.174390, 0.174392, 0.174392, 0.174392, 0.174392",\
+ "0.378102, 0.378105, 0.378105, 0.378105, 0.378105",\
+ "0.885464, 0.885472, 0.885472, 0.885472, 0.885472",\
+ "2.163077, 2.163087, 2.163257, 2.163786, 2.164848",\
+ "0.052246, 0.052288, 0.053470, 0.057279, 0.064922",\
+ "0.174390, 0.174392, 0.174392, 0.174392, 0.174392",\
+ "0.378102, 0.378105, 0.378105, 0.378105, 0.378105",\
+ "0.885465, 0.885472, 0.885472, 0.885472, 0.885472",\
+ "2.163077, 2.163087, 2.163257, 2.163786, 2.164848",\
+ "0.052246, 0.052302, 0.053509, 0.057295, 0.064922",\
+ "0.174391, 0.174392, 0.174392, 0.174392, 0.174392",\
+ "0.378103, 0.378105, 0.378105, 0.378105, 0.378105",\
+ "0.885469, 0.885472, 0.885472, 0.885472, 0.885472",\
+ "2.163077, 2.163090, 2.163262, 2.163788, 2.164848");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.443684, 0.706121, 0.992534, 1.477296, 2.446822",\
+ "0.497094, 0.759709, 1.046667, 1.532387, 2.503829",\
+ "0.557938, 0.820691, 1.108342, 1.595724, 2.570488",\
+ "0.692641, 0.955383, 1.242975, 1.730217, 2.704702",\
+ "1.039101, 1.301772, 1.589012, 2.075409, 3.048203",\
+ "0.531743, 0.793716, 1.080148, 1.564010, 2.532755",\
+ "0.585154, 0.847306, 1.134284, 1.619101, 2.589763",\
+ "0.645997, 0.908289, 1.195965, 1.682438, 2.656422",\
+ "0.780700, 1.042981, 1.330598, 1.816931, 2.790636",\
+ "1.127160, 1.389370, 1.676632, 2.162122, 3.134136",\
+ "0.620305, 0.882776, 1.168112, 1.651631, 2.619710",\
+ "0.673715, 0.936370, 1.222248, 1.706723, 2.676718",\
+ "0.734558, 0.997357, 1.283929, 1.770059, 2.743377",\
+ "0.869261, 1.132048, 1.418562, 1.904553, 2.877591",\
+ "1.215722, 1.478435, 1.764596, 2.249744, 3.221091",\
+ "0.683303, 0.948526, 1.232255, 1.715544, 2.683219",\
+ "0.736712, 1.002125, 1.286391, 1.770636, 2.740227",\
+ "0.797555, 1.063117, 1.348072, 1.833972, 2.806886",\
+ "0.932258, 1.197807, 1.482705, 1.968466, 2.941100",\
+ "1.278719, 1.544192, 1.828738, 2.313657, 3.284600",\
+ "1.015567, 1.314320, 1.584279, 2.064952, 3.028676",\
+ "1.068972, 1.367985, 1.638425, 2.120048, 3.085683",\
+ "1.129811, 1.429028, 1.700123, 2.183391, 3.152342",\
+ "1.264514, 1.563714, 1.834755, 2.317884, 3.286556",\
+ "1.610977, 1.910073, 2.180780, 2.663072, 3.630056");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.060218, 0.060490, 0.061813, 0.065017, 0.071424",\
+ "0.114238, 0.114613, 0.116413, 0.120756, 0.129442",\
+ "0.199921, 0.200263, 0.201907, 0.205872, 0.213802",\
+ "0.445513, 0.445551, 0.445735, 0.446179, 0.447066",\
+ "1.101424, 1.101424, 1.101424, 1.101424, 1.101424",\
+ "0.060218, 0.060493, 0.061823, 0.065017, 0.071424",\
+ "0.114238, 0.114616, 0.116427, 0.120756, 0.129442",\
+ "0.199921, 0.200266, 0.201919, 0.205872, 0.213802",\
+ "0.445513, 0.445551, 0.445736, 0.446179, 0.447066",\
+ "1.101424, 1.101424, 1.101424, 1.101424, 1.101424",\
+ "0.060218, 0.060498, 0.061824, 0.065017, 0.071424",\
+ "0.114238, 0.114624, 0.116427, 0.120756, 0.129442",\
+ "0.199921, 0.200273, 0.201920, 0.205872, 0.213802",\
+ "0.445513, 0.445552, 0.445736, 0.446179, 0.447066",\
+ "1.101424, 1.101424, 1.101424, 1.101424, 1.101424",\
+ "0.060218, 0.060507, 0.061824, 0.065017, 0.071424",\
+ "0.114238, 0.114635, 0.116428, 0.120756, 0.129442",\
+ "0.199921, 0.200284, 0.201920, 0.205872, 0.213802",\
+ "0.445513, 0.445553, 0.445737, 0.446179, 0.447066",\
+ "1.101424, 1.101424, 1.101424, 1.101424, 1.101424",\
+ "0.060218, 0.060603, 0.061857, 0.065030, 0.071424",\
+ "0.114238, 0.114768, 0.116472, 0.120774, 0.129442",\
+ "0.199921, 0.200405, 0.201961, 0.205888, 0.213802",\
+ "0.445513, 0.445567, 0.445741, 0.446180, 0.447066",\
+ "1.101424, 1.101424, 1.101424, 1.101424, 1.101424");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_2700*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[16]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.378256, 0.565826, 0.756593, 1.054119, 1.624836",\
+ "0.428118, 0.615688, 0.806455, 1.103981, 1.674699",\
+ "0.529986, 0.717556, 0.908323, 1.205849, 1.776567",\
+ "0.767847, 0.955417, 1.146184, 1.443710, 2.014428",\
+ "1.340168, 1.527737, 1.718505, 2.016031, 2.586749",\
+ "0.466466, 0.653144, 0.843873, 1.141424, 1.712190",\
+ "0.516328, 0.703006, 0.893736, 1.191286, 1.762052",\
+ "0.618195, 0.804874, 0.995604, 1.293154, 1.863920",\
+ "0.856057, 1.042735, 1.233465, 1.531015, 2.101782",\
+ "1.428377, 1.615056, 1.805786, 2.103336, 2.674102",\
+ "0.553983, 0.733479, 0.923900, 1.221452, 1.792222",\
+ "0.603845, 0.783341, 0.973763, 1.271315, 1.842084",\
+ "0.705713, 0.885209, 1.075631, 1.373183, 1.943952",\
+ "0.943574, 1.123071, 1.313492, 1.611044, 2.181813",\
+ "1.515895, 1.695391, 1.885813, 2.183364, 2.754134",\
+ "0.611623, 0.791310, 0.981624, 1.278894, 1.849260",\
+ "0.661485, 0.841172, 1.031486, 1.328757, 1.899123",\
+ "0.763353, 0.943040, 1.133354, 1.430624, 2.000991",\
+ "1.001214, 1.180901, 1.371215, 1.668486, 2.238852",\
+ "1.573535, 1.753222, 1.943536, 2.240806, 2.811173",\
+ "0.913876, 1.096638, 1.285285, 1.582076, 2.151510",\
+ "0.963738, 1.146500, 1.335147, 1.631939, 2.201373",\
+ "1.065606, 1.248368, 1.437015, 1.733807, 2.303241",\
+ "1.303467, 1.486229, 1.674876, 1.971668, 2.541102",\
+ "1.875787, 2.058550, 2.247197, 2.543989, 3.113423");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.039802, 0.039802, 0.039803, 0.039804, 0.039804",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039802, 0.039802, 0.039803, 0.039804, 0.039804",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039802, 0.039802, 0.039803, 0.039804, 0.039804",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039802, 0.039802, 0.039803, 0.039804, 0.039804",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039802, 0.039802, 0.039803, 0.039804, 0.039804",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137192, 2.137192, 2.137192, 2.137192, 2.137192");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.406562, 0.606556, 0.797323, 1.091399, 1.653630",\
+ "0.441336, 0.628906, 0.819673, 1.117199, 1.687917",\
+ "0.482700, 0.670269, 0.861036, 1.158563, 1.729280",\
+ "0.604735, 0.792305, 0.983072, 1.280598, 1.851316",\
+ "0.936348, 1.123917, 1.314685, 1.612211, 2.182929",\
+ "0.494915, 0.693874, 0.884604, 1.178704, 1.740983",\
+ "0.529546, 0.716224, 0.906954, 1.204504, 1.775270",\
+ "0.570909, 0.757588, 0.948317, 1.245868, 1.816634",\
+ "0.692944, 0.879623, 1.070353, 1.367903, 1.938669",\
+ "1.024557, 1.211236, 1.401965, 1.699516, 2.270282",\
+ "0.583845, 0.774209, 0.964631, 1.258732, 1.821015",\
+ "0.617063, 0.796559, 0.986981, 1.284533, 1.855302",\
+ "0.658427, 0.837923, 1.028344, 1.325896, 1.896666",\
+ "0.780462, 0.959958, 1.150380, 1.447932, 2.018701",\
+ "1.112075, 1.291571, 1.481992, 1.779544, 2.350314",\
+ "0.646974, 0.832040, 1.022354, 1.316164, 1.878034",\
+ "0.674703, 0.854390, 1.044704, 1.341975, 1.912341",\
+ "0.716066, 0.895753, 1.086067, 1.383338, 1.953704",\
+ "0.838102, 1.017789, 1.208103, 1.505373, 2.075740",\
+ "1.169714, 1.349402, 1.539716, 1.836986, 2.407352",\
+ "0.954606, 1.137368, 1.326015, 1.619337, 2.180259",\
+ "0.976956, 1.159718, 1.348365, 1.645157, 2.214591",\
+ "1.018319, 1.201081, 1.389728, 1.686520, 2.255954",\
+ "1.140355, 1.323117, 1.511764, 1.808556, 2.377990",\
+ "1.471967, 1.654730, 1.843377, 2.140168, 2.709602");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001808, 0.074806, 0.161858, 0.321909, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2509*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[18]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.377666, 0.597755, 0.775019, 1.063430, 1.623644",\
+ "0.425426, 0.645514, 0.822779, 1.111188, 1.671399",\
+ "0.527520, 0.747609, 0.924873, 1.213283, 1.773495",\
+ "0.765177, 0.985265, 1.162530, 1.450942, 2.011159",\
+ "1.337186, 1.557274, 1.734539, 2.022954, 2.583179",\
+ "0.466063, 0.685073, 0.862300, 1.150735, 1.710998",\
+ "0.513823, 0.732832, 0.910060, 1.198493, 1.758752",\
+ "0.615917, 0.834927, 1.012154, 1.300588, 1.860848",\
+ "0.853574, 1.072584, 1.249811, 1.538247, 2.098513",\
+ "1.425583, 1.644592, 1.821819, 2.110259, 2.670533",\
+ "0.555414, 0.765406, 0.942327, 1.230764, 1.791029",\
+ "0.603174, 0.813165, 0.990086, 1.278522, 1.838784",\
+ "0.705268, 0.915260, 1.092181, 1.380617, 1.940880",\
+ "0.942925, 1.152916, 1.329838, 1.618276, 2.178544",\
+ "1.514933, 1.724925, 1.901846, 2.190288, 2.750564",\
+ "0.619064, 0.823222, 1.000019, 1.288193, 1.848044",\
+ "0.666823, 0.870981, 1.047778, 1.335951, 1.895798",\
+ "0.768918, 0.973076, 1.149873, 1.438046, 1.997895",\
+ "1.006574, 1.210732, 1.387530, 1.675705, 2.235559",\
+ "1.578583, 1.782741, 1.959538, 2.247717, 2.807579",\
+ "0.950146, 1.128438, 1.303674, 1.591364, 2.150265",\
+ "0.997905, 1.176197, 1.351434, 1.639122, 2.198019",\
+ "1.100000, 1.278292, 1.453528, 1.741217, 2.300115",\
+ "1.337656, 1.515949, 1.691185, 1.978876, 2.537780",\
+ "1.909665, 2.087957, 2.263194, 2.550888, 3.109800");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.035377, 0.035377, 0.035377, 0.035399, 0.035455",\
+ "0.147294, 0.147294, 0.147294, 0.147285, 0.147262",\
+ "0.375697, 0.375697, 0.375697, 0.375693, 0.375682",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871174",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035377, 0.035377, 0.035377, 0.035399, 0.035455",\
+ "0.147294, 0.147294, 0.147294, 0.147285, 0.147262",\
+ "0.375697, 0.375697, 0.375697, 0.375693, 0.375682",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871174",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035377, 0.035377, 0.035377, 0.035399, 0.035455",\
+ "0.147294, 0.147294, 0.147294, 0.147285, 0.147262",\
+ "0.375697, 0.375697, 0.375697, 0.375693, 0.375682",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871174",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035377, 0.035377, 0.035377, 0.035399, 0.035455",\
+ "0.147294, 0.147294, 0.147294, 0.147285, 0.147262",\
+ "0.375697, 0.375697, 0.375697, 0.375693, 0.375681",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871174",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035377, 0.035377, 0.035377, 0.035400, 0.035455",\
+ "0.147294, 0.147294, 0.147294, 0.147285, 0.147262",\
+ "0.375697, 0.375697, 0.375697, 0.375693, 0.375681",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871174",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.402575, 0.622525, 0.800017, 1.088497, 1.648804",\
+ "0.437980, 0.658068, 0.835333, 1.123750, 1.683980",\
+ "0.479393, 0.699481, 0.876745, 1.165163, 1.725394",\
+ "0.601610, 0.821698, 0.998963, 1.287380, 1.847608",\
+ "0.933557, 1.153646, 1.330910, 1.619324, 2.179546",\
+ "0.490972, 0.709843, 0.887297, 1.175802, 1.736157",\
+ "0.526376, 0.745386, 0.922613, 1.211055, 1.771333",\
+ "0.567789, 0.786799, 0.964026, 1.252468, 1.812747",\
+ "0.690007, 0.909017, 1.086244, 1.374685, 1.934961",\
+ "1.021954, 1.240964, 1.418191, 1.706629, 2.266899",\
+ "0.580323, 0.790176, 0.967324, 1.255831, 1.816189",\
+ "0.615727, 0.825719, 1.002640, 1.291084, 1.851365",\
+ "0.657140, 0.867132, 1.044053, 1.332497, 1.892779",\
+ "0.779358, 0.989349, 1.166271, 1.454713, 2.014993",\
+ "1.111305, 1.321296, 1.498218, 1.786658, 2.346931",\
+ "0.643973, 0.848003, 1.025017, 1.313260, 1.873204",\
+ "0.679377, 0.883535, 1.060332, 1.348513, 1.908380",\
+ "0.720790, 0.924948, 1.101745, 1.389926, 1.949794",\
+ "0.843007, 1.047165, 1.223963, 1.512143, 2.072008",\
+ "1.174954, 1.379112, 1.555910, 1.844087, 2.403945",\
+ "0.972398, 1.153296, 1.328672, 1.616431, 2.175425",\
+ "1.010459, 1.188751, 1.363988, 1.651684, 2.210601",\
+ "1.051872, 1.230164, 1.405401, 1.693097, 2.252014",\
+ "1.174089, 1.352381, 1.527618, 1.815314, 2.374228",\
+ "1.506037, 1.684329, 1.859565, 2.147258, 2.706166");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.039065, 0.039065, 0.039065, 0.039064, 0.039061",\
+ "0.088924, 0.088924, 0.088924, 0.088923, 0.088920",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185897",\
+ "0.432264, 0.432264, 0.432264, 0.432263, 0.432260",\
+ "1.064285, 1.064285, 1.064285, 1.064278, 1.064261",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039061",\
+ "0.088924, 0.088924, 0.088924, 0.088923, 0.088920",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185897",\
+ "0.432264, 0.432264, 0.432264, 0.432263, 0.432260",\
+ "1.064285, 1.064285, 1.064285, 1.064278, 1.064261",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039061",\
+ "0.088924, 0.088924, 0.088924, 0.088923, 0.088920",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185897",\
+ "0.432264, 0.432264, 0.432264, 0.432263, 0.432260",\
+ "1.064285, 1.064285, 1.064285, 1.064278, 1.064261",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039061",\
+ "0.088924, 0.088924, 0.088924, 0.088923, 0.088920",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185897",\
+ "0.432264, 0.432264, 0.432264, 0.432263, 0.432260",\
+ "1.064285, 1.064285, 1.064285, 1.064278, 1.064261",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039061",\
+ "0.088924, 0.088924, 0.088924, 0.088923, 0.088920",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185897",\
+ "0.432264, 0.432264, 0.432264, 0.432263, 0.432260",\
+ "1.064285, 1.064285, 1.064285, 1.064278, 1.064261");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2574*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[21]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.170596, 0.344816, 0.534412, 0.834679, 1.413369",\
+ "0.220441, 0.410383, 0.608141, 0.926922, 1.543926",\
+ "0.296778, 0.497025, 0.695631, 1.028154, 1.678015",\
+ "0.503693, 0.714118, 0.910633, 1.258044, 1.946084",\
+ "1.056578, 1.269082, 1.463888, 1.813508, 2.508415",\
+ "0.258804, 0.432134, 0.621693, 0.921985, 1.500723",\
+ "0.308666, 0.497701, 0.695422, 1.014227, 1.631279",\
+ "0.385015, 0.584343, 0.782912, 1.115460, 1.765368",\
+ "0.591916, 0.801436, 0.997914, 1.345350, 2.033438",\
+ "1.144755, 1.356400, 1.551169, 1.900813, 2.595769",\
+ "0.340291, 0.512462, 0.701720, 1.002013, 1.580754",\
+ "0.397987, 0.578029, 0.775449, 1.094256, 1.711311",\
+ "0.474366, 0.664671, 0.862939, 1.195488, 1.845400",\
+ "0.681230, 0.881765, 1.077941, 1.425378, 2.113470",\
+ "1.233925, 1.436728, 1.631195, 1.980842, 2.675800",\
+ "0.397929, 0.570271, 0.759443, 1.059465, 1.637816",\
+ "0.461810, 0.635841, 0.833191, 1.151754, 1.768465",\
+ "0.538221, 0.722485, 0.920682, 1.253027, 1.902633",\
+ "0.745047, 0.939586, 1.135680, 1.482963, 2.170795",\
+ "1.297604, 1.494552, 1.688930, 2.038435, 2.733142",\
+ "0.700648, 0.875417, 1.063102, 1.362655, 1.940093",\
+ "0.765372, 0.941013, 1.136853, 1.454984, 2.070854",\
+ "0.851488, 1.027673, 1.224345, 1.556291, 2.205118",\
+ "1.066931, 1.244823, 1.439341, 1.786267, 2.473392",\
+ "1.621222, 1.799810, 1.992591, 2.341746, 3.035759");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.138974, 0.138974, 0.138974, 0.148690, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872440, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139579, 2.140538, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148690, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872464, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139603, 2.140538, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148690, 0.172413",\
+ "0.231167, 0.231167, 0.231167, 0.238024, 0.254767",\
+ "0.397287, 0.397287, 0.397287, 0.400375, 0.407916",\
+ "0.872536, 0.873368, 0.873689, 0.874395, 0.875876",\
+ "2.139678, 2.140538, 2.140572, 2.140672, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148719, 0.172470",\
+ "0.231167, 0.231167, 0.231167, 0.238044, 0.254807",\
+ "0.397287, 0.397287, 0.397287, 0.400384, 0.407935",\
+ "0.872605, 0.873372, 0.873689, 0.874397, 0.875879",\
+ "2.139749, 2.140541, 2.140572, 2.140673, 2.140918",\
+ "0.138974, 0.138974, 0.138974, 0.148743, 0.172540",\
+ "0.231167, 0.231167, 0.231167, 0.238062, 0.254856",\
+ "0.397287, 0.397287, 0.397287, 0.400392, 0.407957",\
+ "0.872560, 0.873396, 0.873689, 0.874398, 0.875884",\
+ "2.139703, 2.140566, 2.140572, 2.140673, 2.140919");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.114526, 0.367093, 0.558483, 0.861637, 1.446138",\
+ "0.150625, 0.396446, 0.587679, 0.892767, 1.482109",\
+ "0.204730, 0.442254, 0.633143, 0.939029, 1.530580",\
+ "0.336119, 0.565619, 0.755974, 1.061799, 1.653613",\
+ "0.673349, 0.896842, 1.086112, 1.390772, 1.980608",\
+ "0.202682, 0.454411, 0.645764, 0.948942, 1.533492",\
+ "0.238886, 0.483764, 0.674960, 0.980073, 1.569463",\
+ "0.292968, 0.529572, 0.720424, 1.026334, 1.617934",\
+ "0.424327, 0.652937, 0.843255, 1.149104, 1.740967",\
+ "0.761530, 0.984159, 1.173393, 1.478077, 2.067961",\
+ "0.291788, 0.534739, 0.725791, 1.028971, 1.613523",\
+ "0.328316, 0.564093, 0.754987, 1.060101, 1.649494",\
+ "0.382328, 0.609901, 0.800451, 1.106363, 1.697965",\
+ "0.513590, 0.733265, 0.923281, 1.229132, 1.820998",\
+ "0.850714, 1.064488, 1.253420, 1.558105, 2.147993",\
+ "0.355407, 0.592582, 0.783517, 1.086430, 1.670599",\
+ "0.392245, 0.621934, 0.812712, 1.117566, 1.706581",\
+ "0.446190, 0.667738, 0.858175, 1.163830, 1.755058",\
+ "0.577359, 0.791098, 0.981005, 1.286600, 1.878091",\
+ "0.914407, 1.122314, 1.311141, 1.615571, 2.205081",\
+ "0.691600, 0.897972, 1.087176, 1.389626, 1.972893",\
+ "0.730424, 0.927308, 1.116372, 1.420767, 2.008889",\
+ "0.783940, 0.973087, 1.161835, 1.467034, 2.057372",\
+ "0.914518, 1.096413, 1.284664, 1.589804, 2.180407",\
+ "1.248497, 1.427586, 1.614800, 1.918772, 2.507391");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003224, 0.076222, 0.162920, 0.322617, 0.642011");
+ values ( "0.055015, 0.067358, 0.073977, 0.088785, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432841, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.055327, 0.067358, 0.073977, 0.088785, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432868, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.056284, 0.067358, 0.073977, 0.088785, 0.119708",\
+ "0.104870, 0.104870, 0.106669, 0.116295, 0.138275",\
+ "0.190674, 0.190674, 0.191255, 0.196129, 0.207539",\
+ "0.432953, 0.433934, 0.434139, 0.435063, 0.437176",\
+ "1.062723, 1.062723, 1.063223, 1.064130, 1.065922",\
+ "0.057202, 0.067404, 0.073991, 0.088823, 0.119782",\
+ "0.104870, 0.104870, 0.106673, 0.116322, 0.138328",\
+ "0.190674, 0.190674, 0.191256, 0.196143, 0.207567",\
+ "0.433035, 0.433938, 0.434140, 0.435065, 0.437181",\
+ "1.062723, 1.062723, 1.063224, 1.064132, 1.065926",\
+ "0.063074, 0.067726, 0.073994, 0.088855, 0.119873",\
+ "0.104870, 0.104870, 0.106674, 0.116345, 0.138392",\
+ "0.190674, 0.190674, 0.191256, 0.196155, 0.207600",\
+ "0.433555, 0.433967, 0.434140, 0.435067, 0.437187",\
+ "1.062723, 1.062723, 1.063224, 1.064134, 1.065932");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2723*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[24]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.357397, 0.601995, 0.794649, 1.097312, 1.679722",\
+ "0.405158, 0.649756, 0.842409, 1.145087, 1.727533",\
+ "0.507252, 0.751850, 0.944504, 1.247180, 1.829623",\
+ "0.744907, 0.989505, 1.182159, 1.483890, 2.064025",\
+ "1.316914, 1.559947, 1.747496, 2.046616, 2.624655",\
+ "0.445689, 0.689313, 0.881930, 1.184617, 1.767075",\
+ "0.493449, 0.737074, 0.929690, 1.232392, 1.814886",\
+ "0.595543, 0.839168, 1.031785, 1.334485, 1.916976",\
+ "0.833198, 1.076823, 1.269440, 1.571195, 2.151379",\
+ "1.405205, 1.647264, 1.834777, 2.133921, 2.712009",\
+ "0.535203, 0.769642, 0.961957, 1.264645, 1.847107",\
+ "0.582964, 0.817402, 1.009717, 1.312421, 1.894918",\
+ "0.685058, 0.919496, 1.111811, 1.414514, 1.997008",\
+ "0.922713, 1.157152, 1.349467, 1.651224, 2.231411",\
+ "1.494720, 1.727593, 1.914804, 2.213950, 2.792040",\
+ "0.599211, 0.827507, 1.019685, 1.322102, 1.904177",\
+ "0.646972, 0.875268, 1.067446, 1.369877, 1.951988",\
+ "0.749066, 0.977362, 1.169540, 1.471970, 2.054078",\
+ "0.986721, 1.215017, 1.407195, 1.708678, 2.288475",\
+ "1.558728, 1.785452, 1.972520, 2.271401, 2.849100",\
+ "0.937895, 1.133051, 1.323345, 1.625296, 2.206465",\
+ "0.985656, 1.180812, 1.371106, 1.673071, 2.254277",\
+ "1.087750, 1.282906, 1.473200, 1.775164, 2.356366",\
+ "1.325405, 1.520561, 1.710855, 2.011869, 2.590756",\
+ "1.897411, 2.090956, 2.276178, 2.574590, 3.151375");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.035362, 0.035362, 0.035362, 0.035420, 0.035563",\
+ "0.147300, 0.147300, 0.147300, 0.147294, 0.147280",\
+ "0.375700, 0.375700, 0.375700, 0.375690, 0.375665",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871175",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035362, 0.035362, 0.035362, 0.035420, 0.035563",\
+ "0.147300, 0.147300, 0.147300, 0.147294, 0.147280",\
+ "0.375700, 0.375700, 0.375700, 0.375690, 0.375665",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871175",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035362, 0.035362, 0.035362, 0.035420, 0.035563",\
+ "0.147300, 0.147300, 0.147300, 0.147294, 0.147280",\
+ "0.375700, 0.375700, 0.375700, 0.375690, 0.375665",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871175",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035362, 0.035362, 0.035362, 0.035421, 0.035564",\
+ "0.147300, 0.147300, 0.147300, 0.147294, 0.147280",\
+ "0.375700, 0.375700, 0.375700, 0.375690, 0.375665",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871175",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600",\
+ "0.035362, 0.035362, 0.035362, 0.035421, 0.035564",\
+ "0.147300, 0.147300, 0.147300, 0.147294, 0.147280",\
+ "0.375700, 0.375700, 0.375700, 0.375690, 0.375665",\
+ "0.871174, 0.871174, 0.871174, 0.871174, 0.871175",\
+ "2.136600, 2.136600, 2.136600, 2.136600, 2.136600");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.382270, 0.607170, 0.794344, 1.093466, 1.671509",\
+ "0.417706, 0.645645, 0.832819, 1.131939, 1.709979",\
+ "0.459119, 0.700449, 0.887937, 1.187057, 1.765097",\
+ "0.581337, 0.825935, 1.018589, 1.319527, 1.897724",\
+ "0.913286, 1.157884, 1.350538, 1.652760, 2.234094",\
+ "0.470573, 0.694488, 0.881625, 1.180771, 1.758862",\
+ "0.505998, 0.732962, 0.920100, 1.219244, 1.797333",\
+ "0.547411, 0.787767, 0.975218, 1.274362, 1.852450",\
+ "0.669629, 0.913253, 1.105870, 1.406832, 1.985077",\
+ "1.001577, 1.245202, 1.437819, 1.740065, 2.321447",\
+ "0.560124, 0.774817, 0.961652, 1.260799, 1.838894",\
+ "0.595513, 0.813291, 1.000127, 1.299273, 1.877364",\
+ "0.636925, 0.868096, 1.055245, 1.354391, 1.932482",\
+ "0.759143, 0.993582, 1.185897, 1.486860, 2.065109",\
+ "1.091092, 1.325531, 1.517846, 1.820093, 2.401479",\
+ "0.624166, 0.832637, 1.019369, 1.318251, 1.895954",\
+ "0.659520, 0.871112, 1.057843, 1.356724, 1.934424",\
+ "0.700933, 0.925949, 1.112961, 1.411842, 1.989542",\
+ "0.823151, 1.051447, 1.243625, 1.544312, 2.122169",\
+ "1.155100, 1.383396, 1.575574, 1.877549, 2.458546",\
+ "0.960128, 1.137870, 1.323027, 1.621440, 2.198229",\
+ "0.998204, 1.176344, 1.361501, 1.659913, 2.236699",\
+ "1.039617, 1.231408, 1.416619, 1.715032, 2.291817",\
+ "1.161835, 1.356991, 1.547285, 1.847501, 2.424445",\
+ "1.493784, 1.688940, 1.879234, 2.180742, 2.760831");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003210, 0.076209, 0.162911, 0.322611, 0.642011");
+ values ( "0.039065, 0.039065, 0.039065, 0.039064, 0.039059",\
+ "0.088925, 0.088925, 0.088925, 0.088923, 0.088919",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185895",\
+ "0.432265, 0.432265, 0.432265, 0.432264, 0.432260",\
+ "1.064290, 1.064290, 1.064290, 1.064282, 1.064264",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039059",\
+ "0.088925, 0.088925, 0.088925, 0.088923, 0.088919",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185895",\
+ "0.432265, 0.432265, 0.432265, 0.432264, 0.432260",\
+ "1.064290, 1.064290, 1.064290, 1.064282, 1.064264",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039059",\
+ "0.088925, 0.088925, 0.088925, 0.088923, 0.088919",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185895",\
+ "0.432265, 0.432265, 0.432265, 0.432264, 0.432260",\
+ "1.064290, 1.064290, 1.064290, 1.064282, 1.064264",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039059",\
+ "0.088925, 0.088925, 0.088925, 0.088923, 0.088919",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185895",\
+ "0.432265, 0.432265, 0.432265, 0.432264, 0.432260",\
+ "1.064290, 1.064290, 1.064290, 1.064282, 1.064264",\
+ "0.039065, 0.039065, 0.039065, 0.039064, 0.039059",\
+ "0.088925, 0.088925, 0.088925, 0.088923, 0.088919",\
+ "0.185901, 0.185901, 0.185901, 0.185900, 0.185895",\
+ "0.432265, 0.432265, 0.432265, 0.432264, 0.432260",\
+ "1.064290, 1.064290, 1.064290, 1.064282, 1.064264");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2363*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[26]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.348095, 0.545075, 0.727042, 1.018426, 1.581852",\
+ "0.397956, 0.594939, 0.776906, 1.068290, 1.631715",\
+ "0.499824, 0.696806, 0.878774, 1.170157, 1.733583",\
+ "0.737685, 0.934668, 1.116635, 1.408019, 1.971444",\
+ "1.310006, 1.506989, 1.688956, 1.980340, 2.543765",\
+ "0.436445, 0.632394, 0.814323, 1.105731, 1.669206",\
+ "0.486307, 0.682257, 0.864187, 1.155595, 1.719068",\
+ "0.588175, 0.784125, 0.966055, 1.257463, 1.820936",\
+ "0.826036, 1.021986, 1.203916, 1.495324, 2.058797",\
+ "1.398357, 1.594307, 1.776237, 2.067645, 2.631118",\
+ "0.525620, 0.712727, 0.894350, 1.185759, 1.749237",\
+ "0.575481, 0.762590, 0.944214, 1.235623, 1.799100",\
+ "0.677349, 0.864458, 1.046082, 1.337491, 1.900968",\
+ "0.915211, 1.102319, 1.283943, 1.575353, 2.138829",\
+ "1.487531, 1.674640, 1.856264, 2.147673, 2.711150",\
+ "0.589087, 0.770548, 0.952053, 1.243192, 1.806260",\
+ "0.638949, 0.820411, 1.001917, 1.293056, 1.856122",\
+ "0.740817, 0.922279, 1.103785, 1.394924, 1.957990",\
+ "0.978678, 1.160140, 1.341646, 1.632786, 2.195851",\
+ "1.550998, 1.732461, 1.913967, 2.205106, 2.768172",\
+ "0.896146, 1.075801, 1.255710, 1.546367, 2.108490",\
+ "0.946008, 1.125664, 1.305574, 1.596231, 2.158352",\
+ "1.047876, 1.227532, 1.407442, 1.698099, 2.260220",\
+ "1.285737, 1.465394, 1.645303, 1.935960, 2.498081",\
+ "1.858057, 2.037714, 2.217624, 2.508281, 3.070402");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.039799, 0.039799, 0.039799, 0.039799, 0.039799",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137191, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039799, 0.039799, 0.039799, 0.039799, 0.039799",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137191, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039799, 0.039799, 0.039799, 0.039799, 0.039799",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137191, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039799, 0.039799, 0.039799, 0.039799, 0.039799",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137191, 2.137192, 2.137192, 2.137192, 2.137192",\
+ "0.039799, 0.039799, 0.039799, 0.039799, 0.039799",\
+ "0.147770, 0.147770, 0.147770, 0.147770, 0.147770",\
+ "0.375009, 0.375009, 0.375009, 0.375009, 0.375009",\
+ "0.869291, 0.869291, 0.869292, 0.869292, 0.869292",\
+ "2.137191, 2.137192, 2.137192, 2.137192, 2.137192");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.386309, 0.585807, 0.767775, 1.059158, 1.622583",\
+ "0.411174, 0.608157, 0.790125, 1.081508, 1.644933",\
+ "0.452537, 0.649520, 0.831488, 1.122872, 1.686296",\
+ "0.574573, 0.771556, 0.953524, 1.244907, 1.808332",\
+ "0.906186, 1.103168, 1.285136, 1.576519, 2.139944",\
+ "0.474546, 0.673125, 0.855056, 1.146463, 1.709936",\
+ "0.499525, 0.695475, 0.877406, 1.168813, 1.732286",\
+ "0.540888, 0.736839, 0.918769, 1.210177, 1.773650",\
+ "0.662924, 0.858874, 1.040805, 1.332212, 1.895685",\
+ "0.994536, 1.190487, 1.372417, 1.663825, 2.227298",\
+ "0.563389, 0.753458, 0.935083, 1.226492, 1.789968",\
+ "0.588699, 0.775808, 0.957433, 1.248842, 1.812318",\
+ "0.630063, 0.817172, 0.998796, 1.290205, 1.853681",\
+ "0.752098, 0.939207, 1.120831, 1.412241, 1.975717",\
+ "1.083711, 1.270820, 1.452444, 1.743853, 2.307329",\
+ "0.626548, 0.811280, 0.992786, 1.283925, 1.846990",\
+ "0.652167, 0.833630, 1.015136, 1.306275, 1.869340",\
+ "0.693530, 0.874993, 1.056499, 1.347638, 1.910704",\
+ "0.815566, 0.997028, 1.178535, 1.469674, 2.032739",\
+ "1.147178, 1.328641, 1.510147, 1.801286, 2.364352",\
+ "0.936876, 1.116533, 1.296443, 1.587100, 2.149220",\
+ "0.959225, 1.138883, 1.318793, 1.609450, 2.171570",\
+ "1.000589, 1.180246, 1.360156, 1.650813, 2.212934",\
+ "1.122624, 1.302282, 1.482192, 1.772848, 2.334969",\
+ "1.454237, 1.633894, 1.813804, 2.104461, 2.666582");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002267, 0.075266, 0.162203, 0.322139, 0.642011");
+ values ( "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247",\
+ "0.045856, 0.045856, 0.045856, 0.045856, 0.045856",\
+ "0.091389, 0.091389, 0.091389, 0.091389, 0.091389",\
+ "0.185814, 0.185814, 0.185814, 0.185814, 0.185814",\
+ "0.432252, 0.432252, 0.432252, 0.432252, 0.432252",\
+ "1.064247, 1.064247, 1.064247, 1.064247, 1.064247");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2685*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[27]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.226427, 0.405869, 0.606598, 0.932774, 1.565599",\
+ "0.282384, 0.460178, 0.659964, 0.990994, 1.636396",\
+ "0.358192, 0.534364, 0.733448, 1.069708, 1.728405",\
+ "0.560390, 0.734140, 0.930018, 1.272669, 1.949568",\
+ "1.105015, 1.276795, 1.468799, 1.815230, 2.504534",\
+ "0.313828, 0.493186, 0.693879, 1.020079, 1.652953",\
+ "0.369785, 0.547496, 0.747245, 1.078299, 1.723750",\
+ "0.445593, 0.621681, 0.820729, 1.157013, 1.815759",\
+ "0.647791, 0.821458, 1.017299, 1.359975, 2.036922",\
+ "1.192415, 1.364112, 1.556080, 1.902535, 2.591887",\
+ "0.394677, 0.573514, 0.773906, 1.100108, 1.732984",\
+ "0.450625, 0.627823, 0.827272, 1.158327, 1.803782",\
+ "0.526423, 0.702008, 0.900756, 1.237042, 1.895791",\
+ "0.728608, 0.901785, 1.097326, 1.440003, 2.116953",\
+ "1.273221, 1.444439, 1.636107, 1.982563, 2.671918",\
+ "0.452415, 0.631348, 0.831654, 1.157626, 1.790177",\
+ "0.508343, 0.685651, 0.885018, 1.215861, 1.861005",\
+ "0.584122, 0.759831, 0.958501, 1.294592, 1.953046",\
+ "0.786278, 0.959598, 1.155063, 1.497575, 2.174253",\
+ "1.330868, 1.502245, 1.693835, 2.040151, 2.729248",\
+ "0.756161, 0.936672, 1.135317, 1.460873, 2.092613",\
+ "0.811907, 0.990932, 1.188681, 1.519120, 2.163478",\
+ "0.887507, 1.065070, 1.262163, 1.597865, 2.255558",\
+ "1.089394, 1.264774, 1.458724, 1.800867, 2.476817",\
+ "1.633766, 1.807370, 1.997495, 2.343456, 3.031849");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.149901, 0.149901, 0.154318, 0.175674, 0.224033",\
+ "0.237266, 0.237266, 0.240233, 0.254222, 0.285839",\
+ "0.400134, 0.400516, 0.400740, 0.407020, 0.422153",\
+ "0.873536, 0.873536, 0.873536, 0.874627, 0.877289",\
+ "2.137014, 2.139136, 2.139203, 2.139990, 2.141907",\
+ "0.149901, 0.149901, 0.154318, 0.175674, 0.224033",\
+ "0.237266, 0.237266, 0.240233, 0.254222, 0.285839",\
+ "0.400134, 0.400516, 0.400740, 0.407020, 0.422153",\
+ "0.873536, 0.873536, 0.873536, 0.874627, 0.877289",\
+ "2.137014, 2.139136, 2.139203, 2.139990, 2.141907",\
+ "0.149901, 0.149901, 0.154318, 0.175674, 0.224033",\
+ "0.237266, 0.237266, 0.240233, 0.254222, 0.285839",\
+ "0.400136, 0.400516, 0.400740, 0.407020, 0.422153",\
+ "0.873536, 0.873536, 0.873536, 0.874627, 0.877289",\
+ "2.137026, 2.139136, 2.139203, 2.139990, 2.141907",\
+ "0.149901, 0.149901, 0.154329, 0.175732, 0.224149",\
+ "0.237266, 0.237266, 0.240240, 0.254260, 0.285916",\
+ "0.400141, 0.400517, 0.400740, 0.407038, 0.422190",\
+ "0.873536, 0.873536, 0.873536, 0.874631, 0.877295",\
+ "2.137051, 2.139143, 2.139203, 2.139992, 2.141911",\
+ "0.149901, 0.149901, 0.154330, 0.175783, 0.224291",\
+ "0.237266, 0.237266, 0.240241, 0.254293, 0.286008",\
+ "0.400183, 0.400527, 0.400740, 0.407054, 0.422234",\
+ "0.873536, 0.873536, 0.873536, 0.874633, 0.877303",\
+ "2.137286, 2.139199, 2.139203, 2.139994, 2.141917");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.152176, 0.424550, 0.621056, 0.937588, 1.550446",\
+ "0.188303, 0.458742, 0.655289, 0.973816, 1.591506",\
+ "0.242989, 0.508512, 0.704797, 1.024208, 1.644274",\
+ "0.376456, 0.636940, 0.832877, 1.152112, 1.772037",\
+ "0.711310, 0.972696, 1.168342, 1.486421, 2.103779",\
+ "0.240546, 0.511867, 0.708337, 1.024893, 1.637799",\
+ "0.276651, 0.546059, 0.742570, 1.061121, 1.678860",\
+ "0.331309, 0.595830, 0.792078, 1.111513, 1.731628",\
+ "0.464761, 0.724258, 0.920158, 1.239417, 1.859390",\
+ "0.799595, 1.060013, 1.255623, 1.573726, 2.191132",\
+ "0.330479, 0.592194, 0.788364, 1.104922, 1.717831",\
+ "0.366514, 0.626386, 0.822597, 1.141150, 1.758891",\
+ "0.421085, 0.676157, 0.872105, 1.191542, 1.811660",\
+ "0.554489, 0.804585, 1.000185, 1.319445, 1.939422",\
+ "0.889264, 1.140340, 1.335650, 1.653755, 2.271164",\
+ "0.394961, 0.650030, 0.846103, 1.162416, 1.774975",\
+ "0.430928, 0.684222, 0.880335, 1.198650, 1.816048",\
+ "0.485415, 0.733993, 0.929843, 1.249045, 1.868822",\
+ "0.618773, 0.862421, 1.057922, 1.376948, 1.996584",\
+ "0.953489, 1.198177, 1.393386, 1.711254, 2.328319",\
+ "0.736666, 0.955361, 1.149764, 1.465641, 2.077353",\
+ "0.772199, 0.989556, 1.183996, 1.501880, 2.118440",\
+ "0.826145, 1.039328, 1.233504, 1.552278, 2.171221",\
+ "0.959204, 1.167753, 1.361583, 1.680181, 2.298982",\
+ "1.293546, 1.503515, 1.697047, 2.014484, 2.630710");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.003525, 0.076523, 0.163147, 0.322768, 0.642011");
+ values ( "0.071550, 0.071795, 0.076447, 0.093063, 0.129680",\
+ "0.104996, 0.104996, 0.106778, 0.118004, 0.143877",\
+ "0.191021, 0.191212, 0.191736, 0.197505, 0.211137",\
+ "0.431517, 0.431517, 0.431517, 0.433292, 0.437617",\
+ "1.063952, 1.065332, 1.065376, 1.065376, 1.065376",\
+ "0.071556, 0.071795, 0.076447, 0.093063, 0.129680",\
+ "0.104996, 0.104996, 0.106778, 0.118004, 0.143877",\
+ "0.191026, 0.191212, 0.191736, 0.197505, 0.211137",\
+ "0.431517, 0.431517, 0.431517, 0.433292, 0.437617",\
+ "1.063986, 1.065332, 1.065376, 1.065376, 1.065376",\
+ "0.071574, 0.071795, 0.076447, 0.093063, 0.129680",\
+ "0.104996, 0.104996, 0.106778, 0.118004, 0.143877",\
+ "0.191041, 0.191212, 0.191736, 0.197505, 0.211137",\
+ "0.431517, 0.431517, 0.431517, 0.433292, 0.437617",\
+ "1.064092, 1.065332, 1.065376, 1.065376, 1.065376",\
+ "0.071593, 0.071796, 0.076458, 0.093108, 0.129768",\
+ "0.104996, 0.104996, 0.106782, 0.118035, 0.143939",\
+ "0.191055, 0.191213, 0.191737, 0.197522, 0.211169",\
+ "0.431517, 0.431517, 0.431517, 0.433297, 0.437628",\
+ "1.064195, 1.065337, 1.065376, 1.065376, 1.065376",\
+ "0.071710, 0.071803, 0.076460, 0.093146, 0.129875",\
+ "0.104996, 0.104996, 0.106783, 0.118062, 0.144015",\
+ "0.191146, 0.191218, 0.191737, 0.197536, 0.211209",\
+ "0.431517, 0.431517, 0.431517, 0.433301, 0.437640",\
+ "1.064855, 1.065373, 1.065376, 1.065376, 1.065376");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2743*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[28]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.511543, 0.732095, 0.909621, 1.198355, 1.759116",\
+ "0.561373, 0.781924, 0.959450, 1.248185, 1.808946",\
+ "0.663244, 0.883796, 1.061322, 1.350056, 1.910817",\
+ "0.901102, 1.121654, 1.299180, 1.587914, 2.148676",\
+ "1.473419, 1.693970, 1.871496, 2.160231, 2.720992",\
+ "0.599955, 0.819413, 0.996902, 1.285660, 1.846469",\
+ "0.649784, 0.869243, 1.046731, 1.335490, 1.896299",\
+ "0.751656, 0.971114, 1.148603, 1.437361, 1.998171",\
+ "0.989514, 1.208973, 1.386461, 1.675220, 2.236029",\
+ "1.561830, 1.781289, 1.958777, 2.247536, 2.808345",\
+ "0.689055, 0.899748, 1.076928, 1.365689, 1.926501",\
+ "0.738884, 0.949578, 1.126758, 1.415518, 1.976331",\
+ "0.840756, 1.051450, 1.228629, 1.517390, 2.078202",\
+ "1.078614, 1.289308, 1.466488, 1.755248, 2.316061",\
+ "1.650930, 1.861624, 2.038804, 2.327564, 2.888377",\
+ "0.752342, 0.957565, 1.134620, 1.423118, 1.983516",\
+ "0.802171, 1.007395, 1.184450, 1.472948, 2.033346",\
+ "0.904043, 1.109266, 1.286322, 1.574819, 2.135217",\
+ "1.141901, 1.347125, 1.524180, 1.812678, 2.373076",\
+ "1.714217, 1.919441, 2.096496, 2.384994, 2.945392",\
+ "1.083355, 1.262794, 1.438277, 1.726290, 2.285737",\
+ "1.133185, 1.312624, 1.488106, 1.776120, 2.335567",\
+ "1.235056, 1.414496, 1.589978, 1.877991, 2.437438",\
+ "1.472914, 1.652354, 1.827836, 2.115849, 2.675297",\
+ "2.045231, 2.224670, 2.400152, 2.688166, 3.247612");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.544225, 0.764777, 0.942302, 1.231037, 1.791798",\
+ "0.574581, 0.795133, 0.972659, 1.261393, 1.822155",\
+ "0.615945, 0.836497, 1.014023, 1.302758, 1.863519",\
+ "0.737984, 0.958535, 1.136061, 1.424796, 1.985557",\
+ "1.069601, 1.290153, 1.467679, 1.756413, 2.317174",\
+ "0.632637, 0.852095, 1.029583, 1.318342, 1.879151",\
+ "0.662993, 0.882452, 1.059940, 1.348698, 1.909508",\
+ "0.704357, 0.923816, 1.101304, 1.390063, 1.950872",\
+ "0.826395, 1.045854, 1.223342, 1.512101, 2.072910",\
+ "1.158013, 1.377472, 1.554960, 1.843718, 2.404528",\
+ "0.721737, 0.932430, 1.109610, 1.398370, 1.959183",\
+ "0.752093, 0.962787, 1.139967, 1.428727, 1.989540",\
+ "0.793457, 1.004151, 1.181331, 1.470091, 2.030904",\
+ "0.915496, 1.126189, 1.303369, 1.592129, 2.152942",\
+ "1.247113, 1.457807, 1.634987, 1.923747, 2.484560",\
+ "0.785023, 0.990247, 1.167302, 1.455800, 2.016198",\
+ "0.815380, 1.020603, 1.197659, 1.486156, 2.046555",\
+ "0.856744, 1.061968, 1.239023, 1.527521, 2.087919",\
+ "0.978782, 1.184006, 1.361061, 1.649559, 2.209957",\
+ "1.310400, 1.515623, 1.692679, 1.981176, 2.541574",\
+ "1.116037, 1.295476, 1.470958, 1.758972, 2.318419",\
+ "1.146393, 1.325833, 1.501315, 1.789329, 2.348775",\
+ "1.187757, 1.367197, 1.542679, 1.830693, 2.390140",\
+ "1.309796, 1.489235, 1.664717, 1.952731, 2.512178",\
+ "1.641413, 1.820853, 1.996335, 2.284348, 2.843795");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001816, 0.074814, 0.161865, 0.321913, 0.642011");
+ values ( "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[29]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.493881, 0.730366, 0.921755, 1.228337, 1.821155",\
+ "0.543711, 0.780195, 0.971585, 1.278167, 1.870984",\
+ "0.645582, 0.882067, 1.073456, 1.380038, 1.972856",\
+ "0.883440, 1.119925, 1.311315, 1.617896, 2.210714",\
+ "1.455756, 1.692241, 1.883631, 2.190213, 2.783030",\
+ "0.582168, 0.817683, 1.009036, 1.315642, 1.908508",\
+ "0.631998, 0.867513, 1.058866, 1.365472, 1.958338",\
+ "0.733870, 0.969384, 1.160737, 1.467343, 2.060209",\
+ "0.971728, 1.207243, 1.398596, 1.705202, 2.298068",\
+ "1.544044, 1.779559, 1.970912, 2.277518, 2.870384",\
+ "0.671482, 0.898014, 1.089063, 1.395671, 1.988540",\
+ "0.721312, 0.947843, 1.138893, 1.445500, 2.038369",\
+ "0.823183, 1.049715, 1.240764, 1.547372, 2.140241",\
+ "1.061042, 1.287573, 1.478623, 1.785230, 2.378099",\
+ "1.633358, 1.859889, 2.050939, 2.357546, 2.950415",\
+ "0.735219, 0.955859, 1.146789, 1.453140, 2.045635",\
+ "0.785049, 1.005688, 1.196618, 1.502970, 2.095464",\
+ "0.886921, 1.107560, 1.298490, 1.604841, 2.197336",\
+ "1.124779, 1.345418, 1.536348, 1.842699, 2.435194",\
+ "1.697095, 1.917734, 2.108664, 2.415015, 3.007510",\
+ "1.072194, 1.261268, 1.450449, 1.756345, 2.347952",\
+ "1.122024, 1.311097, 1.500278, 1.806174, 2.397781",\
+ "1.223895, 1.412969, 1.602150, 1.908046, 2.499653",\
+ "1.461754, 1.650827, 1.840008, 2.145904, 2.737511",\
+ "2.034070, 2.223143, 2.412324, 2.718220, 3.309827");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213",\
+ "0.039738, 0.039738, 0.039738, 0.039738, 0.039738",\
+ "0.147762, 0.147762, 0.147762, 0.147762, 0.147762",\
+ "0.375019, 0.375019, 0.375019, 0.375019, 0.375019",\
+ "0.869329, 0.869329, 0.869329, 0.869329, 0.869329",\
+ "2.137213, 2.137213, 2.137213, 2.137213, 2.137213");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.526563, 0.763047, 0.954437, 1.261019, 1.853837",\
+ "0.556919, 0.793404, 0.984794, 1.291375, 1.884193",\
+ "0.598283, 0.834768, 1.026158, 1.332739, 1.925557",\
+ "0.720322, 0.956806, 1.148196, 1.454778, 2.047596",\
+ "1.051939, 1.288424, 1.479813, 1.786395, 2.379213",\
+ "0.614850, 0.850365, 1.041718, 1.348324, 1.941190",\
+ "0.645207, 0.880722, 1.072075, 1.378680, 1.971546",\
+ "0.686571, 0.922086, 1.113439, 1.420045, 2.012911",\
+ "0.808609, 1.044124, 1.235477, 1.542083, 2.134949",\
+ "1.140227, 1.375741, 1.567094, 1.873700, 2.466566",\
+ "0.704164, 0.930695, 1.121745, 1.428352, 2.021222",\
+ "0.734520, 0.961052, 1.152102, 1.458709, 2.051578",\
+ "0.775885, 1.002416, 1.193466, 1.500073, 2.092942",\
+ "0.897923, 1.124454, 1.315504, 1.622111, 2.214981",\
+ "1.229540, 1.456072, 1.647121, 1.953729, 2.546598",\
+ "0.767901, 0.988540, 1.179470, 1.485822, 2.078316",\
+ "0.798258, 1.018897, 1.209827, 1.516178, 2.108673",\
+ "0.839622, 1.060261, 1.251191, 1.557542, 2.150037",\
+ "0.961660, 1.182299, 1.373229, 1.679581, 2.272075",\
+ "1.293278, 1.513917, 1.704847, 2.011198, 2.603693",\
+ "1.104876, 1.293949, 1.483130, 1.789026, 2.380633",\
+ "1.135232, 1.324306, 1.513487, 1.819383, 2.410990",\
+ "1.176597, 1.365670, 1.554851, 1.860747, 2.452354",\
+ "1.298635, 1.487708, 1.676889, 1.982785, 2.574392",\
+ "1.630252, 1.819326, 2.008507, 2.314403, 2.906010");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045860, 0.045860, 0.045860",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091392",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185815",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2333*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[31]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.470602, 0.685204, 0.866879, 1.157031, 1.717773",\
+ "0.518644, 0.733246, 0.914922, 1.205074, 1.765816",\
+ "0.620710, 0.835312, 1.016988, 1.307140, 1.867882",\
+ "0.851211, 1.065814, 1.247489, 1.537641, 2.098383",\
+ "1.409103, 1.623705, 1.805381, 2.095532, 2.656275",\
+ "0.558998, 0.772522, 0.954160, 1.244336, 1.805127",\
+ "0.607041, 0.820565, 1.002203, 1.292379, 1.853169",\
+ "0.709107, 0.922631, 1.104269, 1.394445, 1.955235",\
+ "0.939608, 1.153132, 1.334770, 1.624946, 2.185737",\
+ "1.497499, 1.711023, 1.892661, 2.182837, 2.743628",\
+ "0.648348, 0.852854, 1.034187, 1.324365, 1.885158",\
+ "0.696391, 0.900897, 1.082230, 1.372408, 1.933201",\
+ "0.798457, 1.002963, 1.184296, 1.474474, 2.035267",\
+ "1.028958, 1.233464, 1.414797, 1.704975, 2.265768",\
+ "1.586850, 1.791356, 1.972688, 2.262866, 2.823659",\
+ "0.711997, 0.910682, 1.091889, 1.381795, 1.942174",\
+ "0.760040, 0.958725, 1.139932, 1.429837, 1.990217",\
+ "0.862106, 1.060791, 1.241998, 1.531904, 2.092283",\
+ "1.092607, 1.291292, 1.472499, 1.762405, 2.322784",\
+ "1.650499, 1.849183, 2.030391, 2.320296, 2.880676",\
+ "1.035012, 1.215977, 1.395546, 1.684966, 2.244397",\
+ "1.083055, 1.264019, 1.443589, 1.733009, 2.292439",\
+ "1.185121, 1.366086, 1.545655, 1.835075, 2.394506",\
+ "1.415622, 1.596586, 1.776156, 2.065576, 2.625007",\
+ "1.973513, 2.154478, 2.334047, 2.623468, 3.182898");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.455792, 0.670394, 0.852070, 1.142222, 1.702964",\
+ "0.494395, 0.708997, 0.890673, 1.180825, 1.741567",\
+ "0.549522, 0.764125, 0.945800, 1.235952, 1.796694",\
+ "0.682338, 0.896940, 1.078616, 1.368768, 1.929510",\
+ "1.022840, 1.237442, 1.419117, 1.709269, 2.270011",\
+ "0.544189, 0.757712, 0.939351, 1.229527, 1.790317",\
+ "0.582792, 0.796315, 0.977954, 1.268130, 1.828920",\
+ "0.637919, 0.851443, 1.033081, 1.323257, 1.884048",\
+ "0.770735, 0.984258, 1.165897, 1.456073, 2.016863",\
+ "1.111236, 1.324760, 1.506398, 1.796574, 2.357365",\
+ "0.633539, 0.838045, 1.019377, 1.309555, 1.870349",\
+ "0.672142, 0.876648, 1.057981, 1.348158, 1.908952",\
+ "0.727269, 0.931775, 1.113108, 1.403286, 1.964079",\
+ "0.860085, 1.064591, 1.245924, 1.536101, 2.096895",\
+ "1.200586, 1.405093, 1.586425, 1.876603, 2.437396",\
+ "0.697188, 0.895872, 1.077080, 1.366985, 1.927365",\
+ "0.735791, 0.934475, 1.115683, 1.405588, 1.965968",\
+ "0.790918, 0.989603, 1.170810, 1.460716, 2.021095",\
+ "0.923734, 1.122418, 1.303626, 1.593531, 2.153911",\
+ "1.264235, 1.462920, 1.644127, 1.934033, 2.494412",\
+ "1.020202, 1.201167, 1.380737, 1.670157, 2.229587",\
+ "1.058805, 1.239770, 1.419340, 1.708760, 2.268190",\
+ "1.113933, 1.294898, 1.474467, 1.763887, 2.323318",\
+ "1.246748, 1.427713, 1.607283, 1.896703, 2.456133",\
+ "1.587250, 1.768215, 1.947784, 2.237205, 2.796635");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002343, 0.075342, 0.162260, 0.322177, 0.642011");
+ values ( "0.039238, 0.039238, 0.039238, 0.039238, 0.039238",\
+ "0.089111, 0.089111, 0.089111, 0.089111, 0.089111",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039238, 0.039238, 0.039238, 0.039238, 0.039238",\
+ "0.089111, 0.089111, 0.089111, 0.089111, 0.089111",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039238, 0.039238, 0.039238, 0.039238, 0.039238",\
+ "0.089111, 0.089111, 0.089111, 0.089111, 0.089111",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039238, 0.039238, 0.039238, 0.039238, 0.039238",\
+ "0.089111, 0.089111, 0.089111, 0.089111, 0.089111",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039238, 0.039238, 0.039238, 0.039238, 0.039238",\
+ "0.089111, 0.089111, 0.089111, 0.089111, 0.089111",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2437*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[33]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.448199, 0.668078, 0.854477, 1.152594, 1.728783",\
+ "0.496242, 0.716121, 0.902520, 1.200637, 1.776826",\
+ "0.598308, 0.818187, 1.004586, 1.302703, 1.878892",\
+ "0.828809, 1.048688, 1.235087, 1.533204, 2.109392",\
+ "1.386700, 1.606579, 1.792978, 2.091095, 2.667284",\
+ "0.536520, 0.755396, 0.941758, 1.239900, 1.816137",\
+ "0.584563, 0.803439, 0.989801, 1.287942, 1.864179",\
+ "0.686629, 0.905505, 1.091867, 1.390008, 1.966245",\
+ "0.917129, 1.136006, 1.322368, 1.620509, 2.196746",\
+ "1.475021, 1.693897, 1.880259, 2.178401, 2.754637",\
+ "0.625932, 0.835726, 1.021785, 1.319928, 1.896168",\
+ "0.673975, 0.883769, 1.069828, 1.367971, 1.944211",\
+ "0.776041, 0.985835, 1.171894, 1.470037, 2.046277",\
+ "1.006542, 1.216336, 1.402395, 1.700537, 2.276778",\
+ "1.564433, 1.774227, 1.960286, 2.258429, 2.834669",\
+ "0.689763, 0.893549, 1.079499, 1.377377, 1.953223",\
+ "0.737806, 0.941592, 1.127542, 1.425420, 2.001266",\
+ "0.839872, 1.043658, 1.229608, 1.527486, 2.103332",\
+ "1.070373, 1.274158, 1.460109, 1.757986, 2.333832",\
+ "1.628264, 1.832049, 2.018000, 2.315878, 2.891724",\
+ "1.020000, 1.198799, 1.383157, 1.680565, 2.255491",\
+ "1.068043, 1.246842, 1.431200, 1.728607, 2.303534",\
+ "1.170109, 1.348908, 1.533266, 1.830673, 2.405600",\
+ "1.400609, 1.579409, 1.763767, 2.061174, 2.636101",\
+ "1.958501, 2.137300, 2.321658, 2.619065, 3.193992");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871151, 0.871151, 0.871151, 0.871151, 0.871151",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.433389, 0.653268, 0.839667, 1.137784, 1.713973",\
+ "0.471993, 0.691871, 0.878270, 1.176387, 1.752576",\
+ "0.527120, 0.746999, 0.933398, 1.231515, 1.807704",\
+ "0.659935, 0.879814, 1.066213, 1.364330, 1.940519",\
+ "1.000437, 1.220316, 1.406715, 1.704832, 2.281021",\
+ "0.521709, 0.740586, 0.926948, 1.225089, 1.801326",\
+ "0.560313, 0.779189, 0.965551, 1.263693, 1.839930",\
+ "0.615440, 0.834317, 1.020679, 1.318820, 1.895057",\
+ "0.748256, 0.967132, 1.153494, 1.451635, 2.027873",\
+ "1.088757, 1.307634, 1.493996, 1.792137, 2.368374",\
+ "0.611122, 0.820916, 1.006975, 1.305118, 1.881358",\
+ "0.649725, 0.859520, 1.045578, 1.343721, 1.919961",\
+ "0.704853, 0.914647, 1.100706, 1.398849, 1.975089",\
+ "0.837668, 1.047462, 1.233521, 1.531664, 2.107904",\
+ "1.178170, 1.387964, 1.574023, 1.872166, 2.448406",\
+ "0.674953, 0.878738, 1.064689, 1.362566, 1.938412",\
+ "0.713556, 0.917342, 1.103292, 1.401170, 1.977016",\
+ "0.768684, 0.972469, 1.158420, 1.456297, 2.032143",\
+ "0.901499, 1.105285, 1.291235, 1.589113, 2.164959",\
+ "1.242001, 1.445786, 1.631737, 1.929615, 2.505460",\
+ "1.005189, 1.183989, 1.368347, 1.665754, 2.240681",\
+ "1.043793, 1.222592, 1.406950, 1.704358, 2.279284",\
+ "1.098920, 1.277719, 1.462078, 1.759485, 2.334412",\
+ "1.231736, 1.410535, 1.594893, 1.892301, 2.467227",\
+ "1.572237, 1.751037, 1.935395, 2.232802, 2.807729");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002863, 0.075861, 0.162650, 0.322437, 0.642011");
+ values ( "0.039239, 0.039239, 0.039239, 0.039239, 0.039239",\
+ "0.089112, 0.089112, 0.089112, 0.089112, 0.089112",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039239, 0.039239, 0.039239, 0.039239, 0.039239",\
+ "0.089112, 0.089112, 0.089112, 0.089112, 0.089112",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039239, 0.039239, 0.039239, 0.039239, 0.039239",\
+ "0.089112, 0.089112, 0.089112, 0.089112, 0.089112",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039239, 0.039239, 0.039239, 0.039239, 0.039239",\
+ "0.089112, 0.089112, 0.089112, 0.089112, 0.089112",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039239, 0.039239, 0.039239, 0.039239, 0.039239",\
+ "0.089112, 0.089112, 0.089112, 0.089112, 0.089112",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2540*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[34]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.361629, 0.625108, 0.820219, 1.137042, 1.751491",\
+ "0.411458, 0.674937, 0.870045, 1.186864, 1.801305",\
+ "0.513330, 0.776809, 0.971917, 1.288736, 1.903178",\
+ "0.751188, 1.014667, 1.209775, 1.526594, 2.141035",\
+ "1.323504, 1.586983, 1.782091, 2.098909, 2.713349",\
+ "0.450018, 0.712426, 0.907500, 1.224347, 1.838845",\
+ "0.499848, 0.762256, 0.957326, 1.274169, 1.888658",\
+ "0.601719, 0.864127, 1.059198, 1.376041, 1.990532",\
+ "0.839577, 1.101985, 1.297056, 1.613899, 2.228389",\
+ "1.411893, 1.674302, 1.869372, 2.186214, 2.800702",\
+ "0.539154, 0.792761, 0.987527, 1.304375, 1.918876",\
+ "0.588984, 0.842590, 1.037353, 1.354197, 1.968690",\
+ "0.690855, 0.944462, 1.139225, 1.456070, 2.070563",\
+ "0.928713, 1.182320, 1.377083, 1.693927, 2.308420",\
+ "1.501029, 1.754636, 1.949399, 2.266243, 2.880734",\
+ "0.602519, 0.850602, 1.045260, 1.361870, 1.976021",\
+ "0.652348, 0.900431, 1.095087, 1.411692, 2.025835",\
+ "0.754220, 1.002303, 1.196958, 1.513565, 2.127708",\
+ "0.992078, 1.240161, 1.434817, 1.751422, 2.365565",\
+ "1.564394, 1.812477, 2.007132, 2.323737, 2.937879",\
+ "0.937147, 1.156000, 1.348922, 1.665098, 2.278399",\
+ "0.986977, 1.205830, 1.398749, 1.714920, 2.328213",\
+ "1.088848, 1.307701, 1.500621, 1.816792, 2.430086",\
+ "1.326707, 1.545559, 1.738479, 2.054650, 2.667943",\
+ "1.899023, 2.117875, 2.310795, 2.626965, 3.240257");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.039738, 0.039738, 0.039733, 0.039724, 0.039707",\
+ "0.147762, 0.147762, 0.147761, 0.147760, 0.147758",\
+ "0.375020, 0.375020, 0.375020, 0.375022, 0.375024",\
+ "0.869330, 0.869330, 0.869330, 0.869331, 0.869332",\
+ "2.137214, 2.137214, 2.137214, 2.137214, 2.137215",\
+ "0.039738, 0.039738, 0.039733, 0.039724, 0.039707",\
+ "0.147762, 0.147762, 0.147761, 0.147760, 0.147758",\
+ "0.375020, 0.375020, 0.375020, 0.375022, 0.375024",\
+ "0.869330, 0.869330, 0.869330, 0.869331, 0.869332",\
+ "2.137214, 2.137214, 2.137214, 2.137214, 2.137215",\
+ "0.039738, 0.039738, 0.039733, 0.039724, 0.039707",\
+ "0.147762, 0.147762, 0.147761, 0.147760, 0.147758",\
+ "0.375020, 0.375020, 0.375020, 0.375022, 0.375024",\
+ "0.869330, 0.869330, 0.869330, 0.869331, 0.869332",\
+ "2.137214, 2.137214, 2.137214, 2.137214, 2.137215",\
+ "0.039738, 0.039738, 0.039733, 0.039724, 0.039706",\
+ "0.147762, 0.147762, 0.147761, 0.147760, 0.147758",\
+ "0.375020, 0.375020, 0.375020, 0.375022, 0.375024",\
+ "0.869330, 0.869330, 0.869330, 0.869331, 0.869332",\
+ "2.137214, 2.137214, 2.137214, 2.137214, 2.137215",\
+ "0.039738, 0.039738, 0.039733, 0.039724, 0.039706",\
+ "0.147762, 0.147762, 0.147761, 0.147760, 0.147758",\
+ "0.375020, 0.375020, 0.375020, 0.375022, 0.375024",\
+ "0.869330, 0.869330, 0.869330, 0.869331, 0.869332",\
+ "2.137214, 2.137214, 2.137214, 2.137215, 2.137215");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.394276, 0.657755, 0.852725, 1.169033, 1.782342",\
+ "0.424667, 0.688146, 0.883253, 1.200070, 1.814509",\
+ "0.466031, 0.729510, 0.924618, 1.241435, 1.855873",\
+ "0.588069, 0.851548, 1.046656, 1.363473, 1.977913",\
+ "0.919687, 1.183166, 1.378274, 1.695092, 2.309533",\
+ "0.482665, 0.745074, 0.940006, 1.256338, 1.869696",\
+ "0.513056, 0.775464, 0.970534, 1.287375, 1.901862",\
+ "0.554420, 0.816828, 1.011898, 1.328740, 1.943227",\
+ "0.676459, 0.938867, 1.133937, 1.450778, 2.065267",\
+ "1.008076, 1.270484, 1.465555, 1.782397, 2.396886",\
+ "0.571801, 0.825408, 1.020033, 1.336366, 1.949727",\
+ "0.602192, 0.855799, 1.050561, 1.367404, 1.981894",\
+ "0.643556, 0.897163, 1.091925, 1.408768, 2.023258",\
+ "0.765595, 1.019201, 1.213964, 1.530807, 2.145298",\
+ "1.097212, 1.350819, 1.545582, 1.862426, 2.476918",\
+ "0.635166, 0.883249, 1.077766, 1.393860, 2.006869",\
+ "0.665557, 0.913640, 1.108294, 1.424899, 2.039039",\
+ "0.706921, 0.955004, 1.149659, 1.466263, 2.080403",\
+ "0.828959, 1.077042, 1.271697, 1.588302, 2.202443",\
+ "1.160577, 1.408660, 1.603315, 1.919921, 2.534063",\
+ "0.969795, 1.188647, 1.381428, 1.697086, 2.309244",\
+ "1.000185, 1.219038, 1.411957, 1.728126, 2.341417",\
+ "1.041550, 1.260402, 1.453321, 1.769491, 2.382781",\
+ "1.163588, 1.382441, 1.575360, 1.891530, 2.504821",\
+ "1.495205, 1.714058, 1.906978, 2.223148, 2.836441");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.001996, 0.074995, 0.162000, 0.322004, 0.642011");
+ values ( "0.045860, 0.045860, 0.045861, 0.045861, 0.045862",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091393",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185816",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045861, 0.045861, 0.045862",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091393",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185816",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045861, 0.045861, 0.045862",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091393",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185816",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045861, 0.045861, 0.045862",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091393",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185816",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045860, 0.045860, 0.045861, 0.045861, 0.045862",\
+ "0.091392, 0.091392, 0.091392, 0.091392, 0.091393",\
+ "0.185815, 0.185815, 0.185815, 0.185815, 0.185816",\
+ "0.432253, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064246, 1.064246, 1.064246, 1.064246, 1.064246");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2607*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[41]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.485123, 0.675497, 0.864625, 1.161795, 1.733234",\
+ "0.533166, 0.723539, 0.912668, 1.209837, 1.781277",\
+ "0.635232, 0.825605, 1.014734, 1.311903, 1.883343",\
+ "0.865729, 1.056102, 1.245231, 1.542400, 2.113840",\
+ "1.423621, 1.613994, 1.803123, 2.100292, 2.671732",\
+ "0.573330, 0.762815, 0.951906, 1.249100, 1.820588",\
+ "0.621373, 0.810857, 0.999949, 1.297143, 1.868630",\
+ "0.723439, 0.912923, 1.102015, 1.399209, 1.970696",\
+ "0.953936, 1.143420, 1.332512, 1.629706, 2.201193",\
+ "1.511828, 1.701312, 1.890404, 2.187598, 2.759085",\
+ "0.662165, 0.843147, 1.031933, 1.329129, 1.900620",\
+ "0.710207, 0.891190, 1.079975, 1.377171, 1.948662",\
+ "0.812273, 0.993256, 1.182042, 1.479237, 2.050728",\
+ "1.042770, 1.223753, 1.412539, 1.709734, 2.281225",\
+ "1.600662, 1.781645, 1.970431, 2.267626, 2.839117",\
+ "0.722821, 0.900974, 1.089653, 1.386572, 1.957662",\
+ "0.770863, 0.949017, 1.137696, 1.434614, 2.005704",\
+ "0.872929, 1.051083, 1.239762, 1.536680, 2.107770",\
+ "1.103426, 1.281580, 1.470258, 1.767177, 2.338267",\
+ "1.661318, 1.839472, 2.028151, 2.325069, 2.896159",\
+ "1.025458, 1.206267, 1.393313, 1.689754, 2.259915",\
+ "1.073501, 1.254310, 1.441355, 1.737797, 2.307958",\
+ "1.175567, 1.356376, 1.543421, 1.839863, 2.410024",\
+ "1.406064, 1.586873, 1.773918, 2.070360, 2.640521",\
+ "1.963956, 2.144765, 2.331810, 2.628252, 3.198413");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.470306, 0.660679, 0.849808, 1.146978, 1.718417",\
+ "0.508912, 0.699286, 0.888414, 1.185584, 1.757023",\
+ "0.564040, 0.754413, 0.943542, 1.240712, 1.812151",\
+ "0.696855, 0.887228, 1.076357, 1.373527, 1.944966",\
+ "1.037356, 1.227730, 1.416858, 1.714028, 2.285468",\
+ "0.558513, 0.747998, 0.937089, 1.234283, 1.805771",\
+ "0.597120, 0.786604, 0.975695, 1.272889, 1.844377",\
+ "0.652247, 0.841732, 1.030823, 1.328017, 1.899504",\
+ "0.785062, 0.974547, 1.163638, 1.460832, 2.032320",\
+ "1.125564, 1.315048, 1.504139, 1.801333, 2.372821",\
+ "0.647348, 0.828330, 1.017116, 1.314311, 1.885802",\
+ "0.685954, 0.866936, 1.055722, 1.352918, 1.924409",\
+ "0.741081, 0.922064, 1.110850, 1.408045, 1.979536",\
+ "0.873897, 1.054879, 1.243665, 1.540860, 2.112351",\
+ "1.214398, 1.395380, 1.584166, 1.881362, 2.452853",\
+ "0.708003, 0.886157, 1.074836, 1.371754, 1.942844",\
+ "0.746610, 0.924764, 1.113442, 1.410361, 1.981451",\
+ "0.801737, 0.979891, 1.168570, 1.465488, 2.036578",\
+ "0.934552, 1.112706, 1.301385, 1.598303, 2.169393",\
+ "1.275054, 1.453207, 1.641886, 1.938805, 2.509895",\
+ "1.010641, 1.191450, 1.378495, 1.674937, 2.245098",\
+ "1.049248, 1.230056, 1.417102, 1.713544, 2.283704",\
+ "1.104375, 1.285184, 1.472229, 1.768671, 2.338832",\
+ "1.237190, 1.417999, 1.605044, 1.901486, 2.471647",\
+ "1.577692, 1.758500, 1.945546, 2.241987, 2.812148");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002414, 0.075412, 0.162313, 0.322212, 0.642011");
+ values ( "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2372*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[42]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.459771, 0.648282, 0.825192, 1.109164, 1.658848",\
+ "0.507814, 0.696324, 0.873234, 1.157206, 1.706890",\
+ "0.609880, 0.798391, 0.975300, 1.259272, 1.808956",\
+ "0.840377, 1.028888, 1.205797, 1.489769, 2.039453",\
+ "1.398269, 1.586780, 1.763690, 2.047661, 2.597345",\
+ "0.548200, 0.735600, 0.912473, 1.196469, 1.746201",\
+ "0.596242, 0.783643, 0.960515, 1.244511, 1.794243",\
+ "0.698308, 0.885709, 1.062581, 1.346577, 1.896309",\
+ "0.928805, 1.116206, 1.293078, 1.577074, 2.126806",\
+ "1.486698, 1.674098, 1.850971, 2.134966, 2.684699",\
+ "0.637701, 0.815933, 0.992500, 1.276497, 1.826233",\
+ "0.685743, 0.863975, 1.040542, 1.324540, 1.874275",\
+ "0.787809, 0.966041, 1.142608, 1.426606, 1.976341",\
+ "1.018306, 1.196538, 1.373105, 1.657103, 2.206838",\
+ "1.576198, 1.754430, 1.930997, 2.214995, 2.764730",\
+ "0.697261, 0.873753, 1.050191, 1.333914, 1.883222",\
+ "0.745304, 0.921796, 1.098233, 1.381956, 1.931265",\
+ "0.847370, 1.023862, 1.200299, 1.484022, 2.033331",\
+ "1.077867, 1.254359, 1.430796, 1.714519, 2.263828",\
+ "1.635759, 1.812251, 1.988688, 2.272411, 2.821720",\
+ "0.999714, 1.179002, 1.353846, 1.637074, 2.185413",\
+ "1.047756, 1.227044, 1.401888, 1.685117, 2.233455",\
+ "1.149822, 1.329110, 1.503954, 1.787183, 2.335521",\
+ "1.380320, 1.559607, 1.734451, 2.017680, 2.566018",\
+ "1.938212, 2.117499, 2.292344, 2.575572, 3.123910");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611",\
+ "0.036124, 0.036124, 0.036124, 0.036124, 0.036124",\
+ "0.147307, 0.147307, 0.147307, 0.147307, 0.147307",\
+ "0.375576, 0.375576, 0.375576, 0.375576, 0.375576",\
+ "0.871150, 0.871150, 0.871150, 0.871150, 0.871150",\
+ "2.136611, 2.136611, 2.136611, 2.136611, 2.136611");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.444954, 0.633465, 0.810375, 1.094347, 1.644030",\
+ "0.483561, 0.672071, 0.848981, 1.132953, 1.682637",\
+ "0.538688, 0.727199, 0.904109, 1.188081, 1.737764",\
+ "0.671503, 0.860014, 1.036924, 1.320896, 1.870579",\
+ "1.012004, 1.200515, 1.377425, 1.661397, 2.211081",\
+ "0.533383, 0.720783, 0.897656, 1.181652, 1.731384",\
+ "0.571989, 0.759389, 0.936262, 1.220258, 1.769990",\
+ "0.627117, 0.814517, 0.991390, 1.275386, 1.825118",\
+ "0.759932, 0.947332, 1.124205, 1.408201, 1.957933",\
+ "1.100433, 1.287833, 1.464706, 1.748702, 2.298434",\
+ "0.622883, 0.801115, 0.977683, 1.261680, 1.811415",\
+ "0.661490, 0.839722, 1.016289, 1.300287, 1.850022",\
+ "0.716617, 0.894849, 1.071416, 1.355414, 1.905149",\
+ "0.849432, 1.027664, 1.204232, 1.488229, 2.037964",\
+ "1.189934, 1.368166, 1.544733, 1.828730, 2.378466",\
+ "0.682444, 0.858936, 1.035374, 1.319097, 1.868405",\
+ "0.721051, 0.897543, 1.073980, 1.357703, 1.907012",\
+ "0.776178, 0.952670, 1.129108, 1.412831, 1.962139",\
+ "0.908993, 1.085485, 1.261923, 1.545646, 2.094954",\
+ "1.249495, 1.425987, 1.602424, 1.886147, 2.435456",\
+ "0.984897, 1.164185, 1.339029, 1.622257, 2.170596",\
+ "1.023503, 1.202791, 1.377635, 1.660863, 2.209202",\
+ "1.078631, 1.257918, 1.432763, 1.715991, 2.264329",\
+ "1.211446, 1.390733, 1.565578, 1.848806, 2.397144",\
+ "1.551947, 1.731235, 1.906079, 2.189307, 2.737646");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002445, 0.075444, 0.162337, 0.322228, 0.642011");
+ values ( "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240",\
+ "0.039243, 0.039243, 0.039243, 0.039243, 0.039243",\
+ "0.089116, 0.089116, 0.089116, 0.089116, 0.089116",\
+ "0.185883, 0.185883, 0.185883, 0.185883, 0.185883",\
+ "0.432255, 0.432255, 0.432255, 0.432255, 0.432255",\
+ "1.064240, 1.064240, 1.064240, 1.064240, 1.064240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2329*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[45]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.301772, 0.506117, 0.689126, 0.977165, 1.531523",\
+ "0.351626, 0.555943, 0.738945, 1.026979, 1.581328",\
+ "0.453495, 0.657815, 0.840818, 1.128852, 1.683202",\
+ "0.691355, 0.895673, 1.078675, 1.366709, 1.921058",\
+ "1.263674, 1.467989, 1.650990, 1.939023, 2.493371",\
+ "0.390122, 0.593435, 0.776407, 1.064470, 1.618876",\
+ "0.439975, 0.643261, 0.826226, 1.114284, 1.668681",\
+ "0.541844, 0.745133, 0.928099, 1.216157, 1.770555",\
+ "0.779704, 0.982991, 1.165956, 1.454014, 2.008411",\
+ "1.352023, 1.555307, 1.738271, 2.026328, 2.580724",\
+ "0.479549, 0.673766, 0.856434, 1.144499, 1.698908",\
+ "0.529399, 0.723592, 0.906253, 1.194312, 1.748713",\
+ "0.631269, 0.825464, 1.008125, 1.296185, 1.850587",\
+ "0.869129, 1.063322, 1.245983, 1.534042, 2.088443",\
+ "1.441448, 1.635638, 1.818298, 2.106356, 2.660756",\
+ "0.543362, 0.731582, 0.914140, 1.201921, 1.755909",\
+ "0.593211, 0.781408, 0.963959, 1.251735, 1.805714",\
+ "0.695080, 0.883280, 1.065832, 1.353608, 1.907588",\
+ "0.932940, 1.121138, 1.303689, 1.591465, 2.145445",\
+ "1.505259, 1.693454, 1.876004, 2.163779, 2.717757",\
+ "0.859181, 1.036793, 1.217797, 1.505086, 2.058114",\
+ "0.909031, 1.086618, 1.267616, 1.554900, 2.107919",\
+ "1.010900, 1.188490, 1.369488, 1.656773, 2.209793",\
+ "1.248760, 1.426348, 1.607346, 1.894630, 2.447649",\
+ "1.821079, 1.998664, 2.179661, 2.466944, 3.019962");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.039786, 0.039731, 0.039718, 0.039707, 0.039690",\
+ "0.147768, 0.147761, 0.147759, 0.147758, 0.147756",\
+ "0.375012, 0.375021, 0.375023, 0.375024, 0.375027",\
+ "0.869318, 0.869319, 0.869321, 0.869323, 0.869326",\
+ "2.137207, 2.137208, 2.137209, 2.137210, 2.137212",\
+ "0.039784, 0.039731, 0.039718, 0.039707, 0.039690",\
+ "0.147768, 0.147761, 0.147759, 0.147758, 0.147756",\
+ "0.375012, 0.375021, 0.375023, 0.375024, 0.375027",\
+ "0.869318, 0.869319, 0.869321, 0.869323, 0.869326",\
+ "2.137207, 2.137208, 2.137209, 2.137210, 2.137212",\
+ "0.039780, 0.039731, 0.039718, 0.039707, 0.039690",\
+ "0.147767, 0.147761, 0.147759, 0.147758, 0.147756",\
+ "0.375013, 0.375021, 0.375023, 0.375024, 0.375027",\
+ "0.869318, 0.869319, 0.869321, 0.869323, 0.869326",\
+ "2.137207, 2.137208, 2.137209, 2.137210, 2.137212",\
+ "0.039776, 0.039731, 0.039718, 0.039707, 0.039690",\
+ "0.147767, 0.147761, 0.147759, 0.147758, 0.147756",\
+ "0.375014, 0.375021, 0.375023, 0.375024, 0.375027",\
+ "0.869318, 0.869319, 0.869321, 0.869323, 0.869326",\
+ "2.137207, 2.137208, 2.137209, 2.137210, 2.137212",\
+ "0.039779, 0.039730, 0.039718, 0.039707, 0.039690",\
+ "0.147767, 0.147761, 0.147759, 0.147758, 0.147756",\
+ "0.375013, 0.375021, 0.375023, 0.375024, 0.375027",\
+ "0.869318, 0.869319, 0.869321, 0.869323, 0.869326",\
+ "2.137207, 2.137208, 2.137209, 2.137210, 2.137212");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.335876, 0.546804, 0.729804, 1.017837, 1.572184",\
+ "0.364841, 0.569151, 0.752151, 1.040183, 1.594529",\
+ "0.406205, 0.610515, 0.793515, 1.081547, 1.635894",\
+ "0.528241, 0.732554, 0.915554, 1.203587, 1.757934",\
+ "0.859855, 1.064172, 1.247173, 1.535207, 2.089556",\
+ "0.424190, 0.634122, 0.817085, 1.105142, 1.659538",\
+ "0.453190, 0.656469, 0.839432, 1.127488, 1.681883",\
+ "0.494554, 0.697833, 0.880796, 1.168852, 1.723248",\
+ "0.616590, 0.819872, 1.002835, 1.290892, 1.845288",\
+ "0.948204, 1.151490, 1.334454, 1.622512, 2.176909",\
+ "0.513507, 0.714453, 0.897112, 1.185170, 1.739569",\
+ "0.542614, 0.736800, 0.919459, 1.207516, 1.761914",\
+ "0.583978, 0.778164, 0.960823, 1.248881, 1.803279",\
+ "0.706014, 0.900203, 1.082862, 1.370920, 1.925319",\
+ "1.037629, 1.231821, 1.414481, 1.702540, 2.256941",\
+ "0.577218, 0.772269, 0.954818, 1.242593, 1.796571",\
+ "0.606425, 0.794616, 0.977165, 1.264939, 1.818916",\
+ "0.647789, 0.835980, 1.018529, 1.306303, 1.860281",\
+ "0.769825, 0.958019, 1.140568, 1.428343, 1.982321",\
+ "1.101440, 1.289637, 1.472187, 1.759963, 2.313942",\
+ "0.899896, 1.077479, 1.258475, 1.545758, 2.098775",\
+ "0.922245, 1.099826, 1.280822, 1.568104, 2.121120",\
+ "0.963609, 1.141190, 1.322186, 1.609468, 2.162485",\
+ "1.085645, 1.263229, 1.444225, 1.731508, 2.284525",\
+ "1.417260, 1.594847, 1.775844, 2.063128, 2.616147");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001159, 0.003003, 0.007781, 0.020161");
+ index_3 ( "0.002729, 0.075727, 0.162549, 0.322370, 0.642011");
+ values ( "0.045857, 0.045861, 0.045862, 0.045862, 0.045864",\
+ "0.091390, 0.091392, 0.091392, 0.091393, 0.091393",\
+ "0.185814, 0.185815, 0.185815, 0.185816, 0.185816",\
+ "0.432252, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064247, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045857, 0.045861, 0.045862, 0.045862, 0.045864",\
+ "0.091390, 0.091392, 0.091392, 0.091393, 0.091393",\
+ "0.185814, 0.185815, 0.185815, 0.185816, 0.185816",\
+ "0.432252, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064247, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045857, 0.045861, 0.045862, 0.045862, 0.045864",\
+ "0.091390, 0.091392, 0.091392, 0.091393, 0.091393",\
+ "0.185814, 0.185815, 0.185815, 0.185816, 0.185816",\
+ "0.432252, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064247, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045857, 0.045861, 0.045862, 0.045862, 0.045864",\
+ "0.091390, 0.091392, 0.091392, 0.091393, 0.091393",\
+ "0.185814, 0.185815, 0.185815, 0.185816, 0.185816",\
+ "0.432252, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064247, 1.064246, 1.064246, 1.064246, 1.064246",\
+ "0.045857, 0.045861, 0.045862, 0.045862, 0.045864",\
+ "0.091390, 0.091392, 0.091392, 0.091393, 0.091393",\
+ "0.185814, 0.185815, 0.185815, 0.185816, 0.185816",\
+ "0.432252, 0.432253, 0.432253, 0.432253, 0.432253",\
+ "1.064247, 1.064246, 1.064246, 1.064246, 1.064246");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[2]_redg_min_2545*/
+
+} /* end of pin tl_o[2] */
+
+pin("tl_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001509 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.046822, 0.200204, 0.375821, 0.698828, 1.344843",\
+ "0.133063, 0.287379, 0.462927, 0.785543, 1.430777",\
+ "0.215932, 0.375508, 0.550883, 0.873166, 1.517732",\
+ "0.273510, 0.439904, 0.614999, 0.937080, 1.581241",\
+ "0.571476, 0.789768, 0.965387, 1.285824, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.022274, 0.297864, 0.631591, 1.248582, 2.482564",\
+ "0.026983, 0.298841, 0.633546, 1.248582, 2.482564",\
+ "0.040131, 0.301114, 0.633582, 1.248582, 2.482564",\
+ "0.052012, 0.304418, 0.633682, 1.248582, 2.482564",\
+ "0.127272, 0.343015, 0.639946, 1.251147, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.066617, 0.172302, 0.283906, 0.488180, 0.896728",\
+ "0.154032, 0.259620, 0.371187, 0.575485, 0.984081",\
+ "0.234373, 0.339957, 0.451214, 0.655513, 1.064113",\
+ "0.291019, 0.397505, 0.508757, 0.712758, 1.120761",\
+ "0.584343, 0.700840, 0.812391, 1.015773, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.023322, 0.186287, 0.386928, 0.759411, 1.504378",\
+ "0.023322, 0.186429, 0.387433, 0.759411, 1.504378",\
+ "0.024460, 0.186429, 0.387433, 0.759411, 1.504378",\
+ "0.026582, 0.186429, 0.387433, 0.759411, 1.504378",\
+ "0.045430, 0.190441, 0.387433, 0.759411, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.046822, 0.200204, 0.375821, 0.698828, 1.344843",\
+ "0.133063, 0.287379, 0.462927, 0.785543, 1.430777",\
+ "0.215932, 0.375508, 0.550883, 0.873166, 1.517732",\
+ "0.273510, 0.439904, 0.614999, 0.937080, 1.581241",\
+ "0.571476, 0.789768, 0.965387, 1.285824, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.022274, 0.297864, 0.631591, 1.247358, 2.473548",\
+ "0.026983, 0.298841, 0.633546, 1.247358, 2.473548",\
+ "0.040131, 0.301114, 0.633582, 1.247433, 2.473548",\
+ "0.052012, 0.304418, 0.633682, 1.248176, 2.473548",\
+ "0.127272, 0.343015, 0.639946, 1.251147, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.066617, 0.172302, 0.283906, 0.488180, 0.896728",\
+ "0.154032, 0.259620, 0.371187, 0.575485, 0.984081",\
+ "0.234373, 0.339957, 0.451214, 0.655513, 1.064113",\
+ "0.291019, 0.397505, 0.508757, 0.712758, 1.120761",\
+ "0.584343, 0.700840, 0.812391, 1.015773, 1.422537");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001509, 0.074507, 0.161634, 0.321760, 0.642011");
+ values ( "0.023322, 0.185492, 0.385423, 0.757182, 1.500701",\
+ "0.023322, 0.185492, 0.385423, 0.757182, 1.500701",\
+ "0.024460, 0.185492, 0.385423, 0.757182, 1.500701",\
+ "0.026582, 0.186104, 0.385879, 0.758083, 1.502492",\
+ "0.045430, 0.190441, 0.385949, 0.758852, 1.504658");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022274, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215141, 0.169212, 0.139013, 0.127669, 0.141354",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023322, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250035, 0.174713, 0.106554, 0.083587, 0.146501",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022274, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147068, -0.104651, -0.070164, -0.030741, 0.275306",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023322, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163191, -0.097276, -0.039617, 0.002344, 0.222952",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[1]_hldr*/
+
+} /* end of pin tl_o[1] */
+
+pin("tl_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044859 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : tl_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[65]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.097208, 0.256769, 0.409091, 0.656426, 1.137408",\
+ "0.115461, 0.284095, 0.450445, 0.715246, 1.227124",\
+ "0.150308, 0.323698, 0.505958, 0.792733, 1.344666",\
+ "0.555435, 0.728531, 0.927338, 1.279607, 1.977668",\
+ "1.416767, 1.591727, 1.785882, 2.145544, 2.866017",\
+ "0.184700, 0.344133, 0.496471, 0.743731, 1.224761",\
+ "0.202953, 0.371467, 0.537861, 0.802551, 1.314477",\
+ "0.237800, 0.411073, 0.593415, 0.880038, 1.432020",\
+ "0.642927, 0.815906, 1.014839, 1.366912, 2.065021",\
+ "1.504259, 1.679104, 1.873371, 2.232849, 2.953371",\
+ "0.265280, 0.424472, 0.576498, 0.823760, 1.304793",\
+ "0.283590, 0.451806, 0.617887, 0.882580, 1.394509",\
+ "0.318468, 0.491412, 0.673442, 0.960067, 1.512051",\
+ "0.723592, 0.896245, 1.094866, 1.446940, 2.145053",\
+ "1.584936, 1.759443, 1.953398, 2.312878, 3.033402",\
+ "0.322520, 0.482020, 0.634043, 0.881006, 1.361440",\
+ "0.340954, 0.509354, 0.675432, 0.939825, 1.451157",\
+ "0.375896, 0.548960, 0.730986, 1.017312, 1.568699",\
+ "0.781016, 0.953793, 1.152410, 1.504186, 2.201700",\
+ "1.642386, 1.816991, 2.010942, 2.370123, 3.090050",\
+ "0.620809, 0.786662, 0.937678, 1.184021, 1.663244",\
+ "0.640290, 0.814221, 0.979067, 1.242841, 1.752972",\
+ "0.675782, 0.853946, 1.034621, 1.320328, 1.870529",\
+ "1.080868, 1.258772, 1.456046, 1.807201, 2.503586",\
+ "1.942453, 2.122015, 2.314578, 2.673139, 3.391944");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.031051, 0.064939, 0.106507, 0.168112, 0.284243",\
+ "0.062823, 0.089481, 0.136238, 0.207829, 0.343471",\
+ "0.126154, 0.132352, 0.184740, 0.267437, 0.424225",\
+ "0.854886, 0.854886, 0.855036, 0.913502, 1.057002",\
+ "2.399794, 2.399794, 2.399794, 2.406500, 2.422973",\
+ "0.031051, 0.064968, 0.106612, 0.168112, 0.284243",\
+ "0.062823, 0.089504, 0.136357, 0.207829, 0.343471",\
+ "0.126154, 0.132357, 0.184878, 0.267437, 0.424225",\
+ "0.854886, 0.854886, 0.855037, 0.913502, 1.057002",\
+ "2.399794, 2.399794, 2.399794, 2.406500, 2.422973",\
+ "0.031266, 0.064968, 0.106612, 0.168112, 0.284243",\
+ "0.062992, 0.089504, 0.136357, 0.207829, 0.343471",\
+ "0.126193, 0.132357, 0.184878, 0.267437, 0.424225",\
+ "0.854886, 0.854886, 0.855037, 0.913502, 1.057002",\
+ "2.399794, 2.399794, 2.399794, 2.406500, 2.422973",\
+ "0.031727, 0.064968, 0.106612, 0.168112, 0.284243",\
+ "0.063355, 0.089504, 0.136357, 0.207829, 0.343471",\
+ "0.126277, 0.132357, 0.184878, 0.267437, 0.424225",\
+ "0.854886, 0.854886, 0.855037, 0.913502, 1.057002",\
+ "2.399794, 2.399794, 2.399794, 2.406500, 2.422973",\
+ "0.035640, 0.065810, 0.106612, 0.168112, 0.284287",\
+ "0.066433, 0.090167, 0.136357, 0.207829, 0.343522",\
+ "0.126993, 0.132511, 0.184878, 0.267437, 0.424284",\
+ "0.854886, 0.854886, 0.855037, 0.913502, 1.057056",\
+ "2.399794, 2.399794, 2.399794, 2.406500, 2.422979");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.062809, 0.283388, 0.498683, 0.866951, 1.603486",\
+ "0.068905, 0.306781, 0.537627, 0.930389, 1.715913",\
+ "0.080269, 0.336426, 0.586045, 1.007586, 1.850669",\
+ "0.212849, 0.497229, 0.809203, 1.343143, 2.411022",\
+ "0.495174, 0.777787, 1.106916, 1.706802, 2.906575",\
+ "0.150255, 0.370725, 0.585933, 0.953667, 1.689420",\
+ "0.156684, 0.394170, 0.624955, 1.017105, 1.801846",\
+ "0.168373, 0.423879, 0.673464, 1.094302, 1.936603",\
+ "0.301203, 0.584867, 0.896980, 1.429859, 2.496955",\
+ "0.583505, 0.865416, 1.194902, 1.793518, 2.992509",\
+ "0.236169, 0.459238, 0.673893, 1.041290, 1.776375",\
+ "0.243498, 0.482807, 0.712916, 1.104728, 1.888801",\
+ "0.256066, 0.512668, 0.761427, 1.181925, 2.023558",\
+ "0.389574, 0.674096, 0.984949, 1.517482, 2.583910",\
+ "0.671814, 0.954623, 1.282876, 1.881141, 3.079464",\
+ "0.296494, 0.524194, 0.738017, 1.105204, 1.839884",\
+ "0.304623, 0.547943, 0.777044, 1.168642, 1.952310",\
+ "0.317970, 0.578026, 0.825559, 1.245839, 2.087067",\
+ "0.452080, 0.740091, 1.049099, 1.581396, 2.647419",\
+ "0.734265, 1.020587, 1.347036, 1.945055, 3.142973",\
+ "0.612030, 0.880553, 1.088866, 1.454138, 2.185340",\
+ "0.625211, 0.906402, 1.128142, 1.517678, 2.297766",\
+ "0.643489, 0.939075, 1.176949, 1.594995, 2.432523",\
+ "0.781402, 1.108582, 1.401631, 1.931020, 2.992876",\
+ "1.063240, 1.388711, 1.700238, 2.294955, 3.488429");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.011160, 0.064436, 0.116932, 0.202254, 0.372899",\
+ "0.020800, 0.078264, 0.137685, 0.234686, 0.428687",\
+ "0.041454, 0.098634, 0.166400, 0.277542, 0.499826",\
+ "0.284826, 0.291930, 0.346150, 0.498019, 0.801757",\
+ "0.801745, 0.802553, 0.834131, 0.941202, 1.155343",\
+ "0.012155, 0.064608, 0.117203, 0.202254, 0.372899",\
+ "0.021847, 0.078458, 0.137993, 0.234686, 0.428687",\
+ "0.042416, 0.098854, 0.166753, 0.277542, 0.499826",\
+ "0.284826, 0.291998, 0.346632, 0.498019, 0.801757",\
+ "0.801745, 0.802560, 0.834471, 0.941202, 1.155343",\
+ "0.014841, 0.065015, 0.117208, 0.202254, 0.372899",\
+ "0.024678, 0.078917, 0.137999, 0.234686, 0.428687",\
+ "0.045017, 0.099375, 0.166760, 0.277542, 0.499826",\
+ "0.284826, 0.292159, 0.346641, 0.498019, 0.801757",\
+ "0.801745, 0.802579, 0.834477, 0.941202, 1.155343",\
+ "0.017226, 0.065607, 0.117221, 0.202254, 0.372899",\
+ "0.027191, 0.079585, 0.138014, 0.234686, 0.428687",\
+ "0.047325, 0.100134, 0.166777, 0.277542, 0.499826",\
+ "0.284826, 0.292394, 0.346665, 0.498019, 0.801757",\
+ "0.801745, 0.802605, 0.834494, 0.941202, 1.155343",\
+ "0.032302, 0.072514, 0.118088, 0.202610, 0.372899",\
+ "0.043078, 0.087374, 0.139000, 0.235090, 0.428687",\
+ "0.061921, 0.108981, 0.167906, 0.278005, 0.499826",\
+ "0.284826, 0.295133, 0.348208, 0.498652, 0.801757",\
+ "0.801745, 0.802917, 0.835582, 0.941648, 1.155343");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "tl_o[65]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.091649, 0.250131, 0.402296, 0.649078, 1.128418",\
+ "0.104662, 0.273549, 0.438178, 0.701696, 1.211503",\
+ "0.129595, 0.307072, 0.486657, 0.770890, 1.318582",\
+ "0.419859, 0.596841, 0.797852, 1.150232, 1.846445",\
+ "1.036012, 1.213814, 1.416984, 1.786820, 2.524206",\
+ "0.179141, 0.337450, 0.489577, 0.736383, 1.215771",\
+ "0.192154, 0.360868, 0.525459, 0.789001, 1.298857",\
+ "0.217087, 0.394391, 0.573938, 0.858195, 1.405936",\
+ "0.507351, 0.684160, 0.885133, 1.237537, 1.933798",\
+ "1.123504, 1.301133, 1.504265, 1.874125, 2.611559",\
+ "0.259715, 0.417789, 0.569604, 0.816412, 1.295803",\
+ "0.272795, 0.441207, 0.605486, 0.869029, 1.378888",\
+ "0.297783, 0.474730, 0.653965, 0.938223, 1.485967",\
+ "0.588044, 0.764499, 0.965159, 1.317566, 2.013830",\
+ "1.204202, 1.381472, 1.584292, 1.954154, 2.691591",\
+ "0.316944, 0.475532, 0.627237, 0.873742, 1.352620",\
+ "0.330166, 0.498989, 0.663147, 0.926397, 1.435779",\
+ "0.355271, 0.532545, 0.711661, 0.995637, 1.542949",\
+ "0.645525, 0.822313, 1.022907, 1.375159, 2.071169",\
+ "1.261694, 1.439288, 1.642045, 2.011797, 2.749029",\
+ "0.615137, 0.780253, 0.930886, 1.176831, 1.654602",\
+ "0.629566, 0.803991, 0.966800, 1.229517, 1.737849",\
+ "0.655668, 0.837777, 1.015319, 1.298796, 1.845130",\
+ "0.945865, 1.127532, 1.326573, 1.678471, 2.373782",\
+ "1.562129, 1.744529, 1.945711, 2.315152, 3.051762");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.022568, 0.058250, 0.097501, 0.158155, 0.273924",\
+ "0.045222, 0.077904, 0.123497, 0.193808, 0.327390",\
+ "0.090348, 0.107489, 0.163971, 0.245678, 0.396404",\
+ "0.621445, 0.621445, 0.621445, 0.691541, 0.864683",\
+ "1.751287, 1.751287, 1.752785, 1.770247, 1.811996",\
+ "0.022568, 0.058250, 0.097501, 0.158155, 0.273924",\
+ "0.045222, 0.077904, 0.123497, 0.193808, 0.327390",\
+ "0.090348, 0.107489, 0.163971, 0.245678, 0.396404",\
+ "0.621445, 0.621445, 0.621445, 0.691541, 0.864683",\
+ "1.751287, 1.751287, 1.752785, 1.770247, 1.811996",\
+ "0.022795, 0.058250, 0.097501, 0.158155, 0.273924",\
+ "0.045430, 0.077904, 0.123497, 0.193808, 0.327390",\
+ "0.090457, 0.107489, 0.163971, 0.245678, 0.396404",\
+ "0.621445, 0.621445, 0.621445, 0.691541, 0.864683",\
+ "1.751287, 1.751287, 1.752785, 1.770247, 1.811996",\
+ "0.023283, 0.058385, 0.097589, 0.158295, 0.274203",\
+ "0.045877, 0.078027, 0.123601, 0.193969, 0.327712",\
+ "0.090692, 0.107553, 0.164104, 0.245861, 0.396767",\
+ "0.621445, 0.621445, 0.621445, 0.691750, 0.865100",\
+ "1.751287, 1.751287, 1.752788, 1.770297, 1.812096",\
+ "0.027423, 0.059345, 0.097603, 0.158415, 0.274540",\
+ "0.049669, 0.078907, 0.123617, 0.194107, 0.328101",\
+ "0.092680, 0.108015, 0.164124, 0.246016, 0.397205",\
+ "0.621445, 0.621445, 0.621445, 0.691929, 0.865604",\
+ "1.751287, 1.751287, 1.752789, 1.770340, 1.812218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.062799, 0.282922, 0.497986, 0.866154, 1.602100",\
+ "0.068878, 0.306290, 0.537336, 0.930038, 1.714836",\
+ "0.080236, 0.335964, 0.585498, 1.006969, 1.849055",\
+ "0.212818, 0.496736, 0.807979, 1.341514, 2.406755",\
+ "0.493894, 0.777156, 1.106499, 1.705590, 2.901373",\
+ "0.150236, 0.370257, 0.585236, 0.952870, 1.688034",\
+ "0.156640, 0.393680, 0.624665, 1.016754, 1.800770",\
+ "0.168330, 0.423416, 0.672918, 1.093685, 1.934989",\
+ "0.301173, 0.584370, 0.895755, 1.428230, 2.492689",\
+ "0.582238, 0.864786, 1.194485, 1.792306, 2.987307",\
+ "0.236126, 0.458767, 0.673196, 1.040499, 1.774989",\
+ "0.243411, 0.482319, 0.712626, 1.104385, 1.887725",\
+ "0.255996, 0.512204, 0.760881, 1.181320, 2.021944",\
+ "0.389544, 0.673587, 0.983724, 1.515878, 2.579644",\
+ "0.670583, 0.953997, 1.282458, 1.879963, 3.074262",\
+ "0.296431, 0.523718, 0.737319, 1.104467, 1.838498",\
+ "0.304497, 0.547459, 0.776753, 1.168383, 1.951234",\
+ "0.317876, 0.577559, 0.825013, 1.245352, 2.085453",\
+ "0.452050, 0.739568, 1.047875, 1.580045, 2.643153",\
+ "0.733066, 1.019967, 1.346619, 1.944209, 3.137771",\
+ "0.611833, 0.880022, 1.088168, 1.453430, 2.183954",\
+ "0.624839, 0.905962, 1.127852, 1.517465, 2.296690",\
+ "0.643244, 0.938579, 1.176404, 1.594573, 2.430909",\
+ "0.781372, 1.107880, 1.400406, 1.929807, 2.988609",\
+ "1.062240, 1.388161, 1.699817, 2.294288, 3.483227");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000590, 0.001754, 0.015524, 0.044859");
+ index_3 ( "0.000991, 0.073990, 0.161246, 0.321501, 0.642011");
+ values ( "0.011131, 0.063936, 0.115966, 0.201201, 0.370930",\
+ "0.020777, 0.078242, 0.137616, 0.234279, 0.426765",\
+ "0.041132, 0.097162, 0.164744, 0.275022, 0.494619",\
+ "0.282873, 0.290343, 0.344847, 0.495374, 0.795117",\
+ "0.794988, 0.797692, 0.832143, 0.938552, 1.150445",\
+ "0.012121, 0.064104, 0.116237, 0.201201, 0.370930",\
+ "0.021825, 0.078435, 0.137924, 0.234279, 0.426765",\
+ "0.042062, 0.097382, 0.165095, 0.275022, 0.494619",\
+ "0.282873, 0.290415, 0.345327, 0.495374, 0.795117",\
+ "0.794988, 0.797718, 0.832482, 0.938552, 1.150445",\
+ "0.014795, 0.064505, 0.116242, 0.201211, 0.370930",\
+ "0.024656, 0.078894, 0.137930, 0.234291, 0.426765",\
+ "0.044575, 0.097903, 0.165102, 0.275036, 0.494619",\
+ "0.282873, 0.290585, 0.345336, 0.495392, 0.795117",\
+ "0.794988, 0.797779, 0.832488, 0.938565, 1.150445",\
+ "0.017168, 0.065086, 0.116256, 0.201314, 0.370930",\
+ "0.027169, 0.079562, 0.137945, 0.234407, 0.426765",\
+ "0.046806, 0.098662, 0.165119, 0.275169, 0.494619",\
+ "0.282873, 0.290832, 0.345360, 0.495573, 0.795117",\
+ "0.794988, 0.797869, 0.832505, 0.938693, 1.150445",\
+ "0.032175, 0.071874, 0.117123, 0.201725, 0.370930",\
+ "0.043057, 0.087350, 0.138929, 0.234874, 0.426765",\
+ "0.060912, 0.107509, 0.166242, 0.275701, 0.494619",\
+ "0.282873, 0.293712, 0.346892, 0.496300, 0.795117",\
+ "0.794988, 0.798911, 0.833588, 0.939207, 1.150445");
+ }
+
+ } /* end of arc clk_ast_tlul_i_tl_o[0]_redg_min*/
+
+} /* end of pin tl_o[0] */
+} /* end of bus tl_o */
+
+pin("ast_init_done_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000556 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_init_done_o;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.043384, 0.198284, 0.374379, 0.697867, 1.344843",\
+ "0.129257, 0.285459, 0.461486, 0.784583, 1.430777",\
+ "0.210733, 0.373589, 0.549444, 0.872207, 1.517732",\
+ "0.267175, 0.437989, 0.613561, 0.936121, 1.581241",\
+ "0.558327, 0.787842, 0.963956, 1.284870, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.018706, 0.294221, 0.628837, 1.246746, 2.482563",\
+ "0.023795, 0.295177, 0.630806, 1.246746, 2.482563",\
+ "0.037168, 0.297482, 0.630842, 1.246746, 2.482563",\
+ "0.048861, 0.300835, 0.630939, 1.246746, 2.482563",\
+ "0.122687, 0.339900, 0.637218, 1.249328, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.063197, 0.171101, 0.283015, 0.487593, 0.896749",\
+ "0.150760, 0.258420, 0.370296, 0.574898, 0.984103",\
+ "0.230918, 0.338761, 0.450323, 0.654927, 1.064134",\
+ "0.287331, 0.396309, 0.507868, 0.712173, 1.120782",\
+ "0.578538, 0.699638, 0.811505, 1.015189, 1.422559");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.020743, 0.184138, 0.385305, 0.758342, 1.504417",\
+ "0.020743, 0.184274, 0.385812, 0.758342, 1.504417",\
+ "0.021682, 0.184274, 0.385812, 0.758342, 1.504417",\
+ "0.023987, 0.184274, 0.385812, 0.758342, 1.504417",\
+ "0.042807, 0.188367, 0.385812, 0.758342, 1.504697");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_init_done_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.043384, 0.198284, 0.374379, 0.697867, 1.344843",\
+ "0.129257, 0.285459, 0.461486, 0.784583, 1.430777",\
+ "0.210733, 0.373589, 0.549444, 0.872207, 1.517732",\
+ "0.267175, 0.437989, 0.613561, 0.936121, 1.581241",\
+ "0.558327, 0.787842, 0.963956, 1.284870, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.018706, 0.294221, 0.628837, 1.245531, 2.473548",\
+ "0.023795, 0.295177, 0.630806, 1.245531, 2.473548",\
+ "0.037168, 0.297482, 0.630842, 1.245606, 2.473548",\
+ "0.048861, 0.300835, 0.630939, 1.246347, 2.473548",\
+ "0.122687, 0.339900, 0.637218, 1.249328, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.063197, 0.171101, 0.283015, 0.487593, 0.896749",\
+ "0.150760, 0.258420, 0.370296, 0.574898, 0.984103",\
+ "0.230918, 0.338761, 0.450323, 0.654927, 1.064134",\
+ "0.287331, 0.396309, 0.507868, 0.712173, 1.120782",\
+ "0.578538, 0.699638, 0.811505, 1.015189, 1.422559");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000556, 0.073554, 0.160919, 0.321283, 0.642011");
+ values ( "0.020743, 0.183352, 0.383802, 0.756115, 1.500740",\
+ "0.020743, 0.183352, 0.383802, 0.756115, 1.500740",\
+ "0.021682, 0.183352, 0.383802, 0.756115, 1.500740",\
+ "0.023987, 0.183968, 0.384256, 0.757015, 1.502532",\
+ "0.042807, 0.188367, 0.384324, 0.757782, 1.504697");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_init_done_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018706, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.166278, 0.120559, 0.090376, 0.079044, 0.092801",\
+ "0.171862, 0.126143, 0.095959, 0.084628, 0.098385",\
+ "0.245234, 0.199449, 0.169261, 0.157926, 0.171660",\
+ "0.322551, 0.276573, 0.246370, 0.235023, 0.248691",\
+ "0.666536, 0.618843, 0.588507, 0.577057, 0.590140");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020743, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.195653, 0.120302, 0.052066, 0.028959, 0.090570",\
+ "0.201000, 0.125650, 0.057413, 0.034307, 0.095918",\
+ "0.271909, 0.196575, 0.128353, 0.105282, 0.167257",\
+ "0.351861, 0.276541, 0.208391, 0.185439, 0.248491",\
+ "0.700887, 0.625677, 0.558111, 0.536111, 0.607801");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_init_done_o_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018706, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.098385, -0.055930, -0.021532, 0.019602, 0.346880",\
+ "-0.103969, -0.061514, -0.027115, 0.014019, 0.341296",\
+ "-0.177290, -0.134846, -0.100420, -0.059816, 0.260884",\
+ "-0.254454, -0.212046, -0.177538, -0.138520, 0.162505",\
+ "-0.597087, -0.554990, -0.519760, -0.494735, -0.367407");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020743, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.108800, -0.043157, 0.014117, 0.055975, 0.277251",\
+ "-0.114148, -0.048505, 0.008770, 0.050627, 0.271903",\
+ "-0.185082, -0.119364, -0.061987, -0.020103, 0.200995",\
+ "-0.265110, -0.199164, -0.141461, -0.099488, 0.121043",\
+ "-0.614747, -0.546974, -0.486651, -0.443970, -0.227977");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_init_done_o_hldr*/
+
+} /* end of pin ast_init_done_o */
+
+pin("clk_ast_adc_i") {
+ direction : input ;
+ clock : true ;
+ max_transition : 2.480000 ;
+ capacitance : 0.009042 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_adc_i;
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.151080");
+ }
+
+ } /* end of arc clk_ast_adc_i_clk_ast_adc_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.077628");
+ }
+
+ } /* end of arc clk_ast_adc_i_clk_ast_adc_i_pwh*/
+
+} /* end of pin clk_ast_adc_i */
+
+pin("rst_ast_adc_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.009042 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_adc_ni;
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.274432, 0.227738, 0.193623, 0.189926, 0.219386",\
+ "0.355422, 0.308727, 0.274612, 0.270915, 0.300375",\
+ "0.429898, 0.383203, 0.349088, 0.345391, 0.374851",\
+ "0.553172, 0.506477, 0.472362, 0.468665, 0.498125",\
+ "0.739732, 0.693038, 0.658922, 0.655226, 0.684685");
+ }
+
+ } /* end of arc clk_ast_adc_i_rst_ast_adc_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.027752, 0.053659, 0.141339, 0.280082, 0.570819",\
+ "-0.108741, -0.027330, 0.060350, 0.199093, 0.489830",\
+ "-0.183217, -0.101806, -0.014126, 0.124617, 0.415354",\
+ "-0.306491, -0.225081, -0.137400, 0.001342, 0.292080",\
+ "-0.493052, -0.411641, -0.323961, -0.185218, 0.105519");
+ }
+
+ } /* end of arc clk_ast_adc_i_rst_ast_adc_ni_remrr*/
+
+} /* end of pin rst_ast_adc_ni */
+
+pin("clk_ast_alert_i") {
+ direction : input ;
+ clock : true ;
+ max_transition : 2.480000 ;
+ capacitance : 0.111907 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_alert_i;
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.131491");
+ }
+
+ } /* end of arc clk_ast_alert_i_clk_ast_alert_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.073311");
+ }
+
+ } /* end of arc clk_ast_alert_i_clk_ast_alert_i_pwh*/
+
+} /* end of pin clk_ast_alert_i */
+
+pin("rst_ast_alert_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.063611 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_alert_ni;
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.113563, 0.076989, 0.018933, 0.022110, 0.146261",\
+ "0.193721, 0.155461, 0.100982, 0.103788, 0.220372",\
+ "0.282614, 0.243810, 0.191411, 0.194005, 0.308054",\
+ "0.566671, 0.464344, 0.331922, 0.334358, 0.433019",\
+ "1.363218, 1.178999, 0.828491, 0.816184, 0.684690");
+ }
+
+ } /* end of arc clk_ast_alert_i_rst_ast_alert_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.092068, 0.057718, -0.003401, -0.002983, 0.002097",\
+ "0.189535, 0.154850, 0.093649, 0.094132, 0.100007",\
+ "0.301664, 0.264351, 0.202415, 0.202944, 0.209366",\
+ "0.503950, 0.455349, 0.390148, 0.390390, 0.393333",\
+ "0.857313, 0.785929, 0.714140, 0.713804, 0.709723");
+ }
+
+ } /* end of arc clk_ast_alert_i_rst_ast_alert_ni_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.123357, 0.181341, 0.319709, 0.347503, 0.685278",\
+ "0.102353, 0.159959, 0.295858, 0.323234, 0.655939",\
+ "0.092806, 0.153066, 0.290747, 0.317698, 0.645224",\
+ "0.064479, 0.123792, 0.266686, 0.294183, 0.628352",\
+ "-0.004662, 0.048858, 0.204447, 0.233992, 0.593057");
+ }
+
+ } /* end of arc clk_ast_alert_i_rst_ast_alert_ni_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.074257, 0.131115, 0.268439, 0.296209, 0.633696",\
+ "-0.014192, 0.042690, 0.179264, 0.206921, 0.543039",\
+ "-0.102387, -0.045223, 0.090380, 0.117827, 0.451393",\
+ "-0.249899, -0.191425, -0.054943, -0.027706, 0.303305",\
+ "-0.492713, -0.431597, -0.293340, -0.266527, 0.059328");
+ }
+
+ } /* end of arc clk_ast_alert_i_rst_ast_alert_ni_remfr*/
+
+} /* end of pin rst_ast_alert_ni */
+
+pin("clk_ast_es_i") {
+ direction : input ;
+ clock : true ;
+ max_transition : 2.480000 ;
+ capacitance : 0.142021 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_es_i;
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.131491");
+ }
+
+ } /* end of arc clk_ast_es_i_clk_ast_es_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.073311");
+ }
+
+ } /* end of arc clk_ast_es_i_clk_ast_es_i_pwh*/
+
+} /* end of pin clk_ast_es_i */
+
+pin("rst_ast_es_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.184622 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_es_ni;
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.210479, 0.169372, 0.114546, 0.118621, 0.168150",\
+ "0.293165, 0.250654, 0.192180, 0.195438, 0.235030",\
+ "0.391384, 0.349291, 0.288209, 0.290833, 0.322724",\
+ "0.566327, 0.524466, 0.460601, 0.462751, 0.488884",\
+ "0.947368, 0.905673, 0.836972, 0.838520, 0.857344");
+ }
+
+ } /* end of arc clk_ast_es_i_rst_ast_es_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.051490, -0.010118, 0.054432, 0.065559, 0.200781",\
+ "-0.130202, -0.094826, -0.027856, -0.016996, 0.114987",\
+ "-0.215839, -0.180431, -0.119977, -0.109196, 0.021823",\
+ "-0.347231, -0.311623, -0.255002, -0.244742, -0.120048",\
+ "-0.619519, -0.583379, -0.529999, -0.521121, -0.413232");
+ }
+
+ } /* end of arc clk_ast_es_i_rst_ast_es_ni_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.330641, 0.279192, 0.245179, 0.243672, 0.279220",\
+ "0.409639, 0.358190, 0.324177, 0.322670, 0.358218",\
+ "0.487644, 0.436183, 0.402110, 0.400492, 0.435798",\
+ "0.623048, 0.571541, 0.537264, 0.535269, 0.569741",\
+ "0.842293, 0.790722, 0.756013, 0.753223, 0.785948");
+ }
+
+ } /* end of arc clk_ast_ext_i_rst_ast_es_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.138360, -0.088735, -0.049180, 0.004893, 0.111904",\
+ "-0.218903, -0.169277, -0.129723, -0.075649, 0.031362",\
+ "-0.301318, -0.252007, -0.212321, -0.158231, -0.051325",\
+ "-0.443423, -0.394857, -0.354861, -0.300729, -0.194073",\
+ "-0.673239, -0.626523, -0.585755, -0.531523, -0.425485");
+ }
+
+ } /* end of arc clk_ast_ext_i_rst_ast_es_ni_remrr*/
+
+} /* end of pin rst_ast_es_ni */
+
+pin("clk_ast_rng_i") {
+ direction : input ;
+ clock : true ;
+ max_transition : 2.480000 ;
+ capacitance : 0.016298 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_rng_i;
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.131491");
+ }
+
+ } /* end of arc clk_ast_rng_i_clk_ast_rng_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.073311");
+ }
+
+ } /* end of arc clk_ast_rng_i_clk_ast_rng_i_pwh*/
+
+} /* end of pin clk_ast_rng_i */
+
+pin("rst_ast_rng_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.019282 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_rng_ni;
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.397809, 0.355150, 0.299205, 0.303092, 0.350337",\
+ "0.476858, 0.434199, 0.378254, 0.382142, 0.429386",\
+ "0.555484, 0.512828, 0.456739, 0.460590, 0.507394",\
+ "0.694132, 0.651484, 0.595040, 0.598802, 0.644521",\
+ "0.924501, 0.881869, 0.824615, 0.828174, 0.871421");
+ }
+
+ } /* end of arc clk_ast_rng_i_rst_ast_rng_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.051490, -0.010118, 0.054432, 0.065559, 0.200781",\
+ "-0.130202, -0.094826, -0.027856, -0.016996, 0.114987",\
+ "-0.215839, -0.180431, -0.119977, -0.109196, 0.021823",\
+ "-0.347231, -0.311623, -0.255002, -0.244742, -0.120048",\
+ "-0.619519, -0.580113, -0.514458, -0.503429, -0.369398");
+ }
+
+ } /* end of arc clk_ast_rng_i_rst_ast_rng_ni_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.210479, 0.160879, 0.128086, 0.118621, 0.168150",\
+ "0.293165, 0.241596, 0.206622, 0.195438, 0.235030",\
+ "0.391384, 0.339830, 0.303295, 0.290833, 0.322724",\
+ "0.566327, 0.514573, 0.476374, 0.462751, 0.488884",\
+ "0.947368, 0.895031, 0.853939, 0.838520, 0.857344");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rst_ast_rng_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.124168, -0.077180, -0.040446, -0.015137, 0.108101",\
+ "-0.205037, -0.158304, -0.123014, -0.098281, 0.025219",\
+ "-0.301967, -0.254997, -0.221149, -0.197116, -0.074898",\
+ "-0.470369, -0.422280, -0.389838, -0.366778, -0.249319",\
+ "-0.834370, -0.783388, -0.753247, -0.732123, -0.626660");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rst_ast_rng_ni_remrr*/
+
+} /* end of pin rst_ast_rng_ni */
+
+pin("clk_ast_tlul_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.070969 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_tlul_i;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.149001");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_ast_tlul_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.073311");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_ast_tlul_i_pwh*/
+
+} /* end of pin clk_ast_tlul_i */
+
+pin("rst_ast_tlul_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 2.103311 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_tlul_ni;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.716936, 0.665384, 0.628579, 0.622004, 0.646451",\
+ "0.794990, 0.743439, 0.706634, 0.700058, 0.724506",\
+ "0.863378, 0.811826, 0.775021, 0.768446, 0.792893",\
+ "0.983598, 0.932046, 0.895241, 0.888666, 0.913113",\
+ "1.184568, 1.133018, 1.096165, 1.089503, 1.113762");
+ }
+
+ } /* end of arc clk_ast_ext_i_rst_ast_tlul_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.208883, -0.162400, -0.121535, -0.067290, 0.038670",\
+ "-0.289818, -0.243335, -0.202470, -0.148225, -0.042265",\
+ "-0.371428, -0.325048, -0.284140, -0.229890, -0.123964",\
+ "-0.514608, -0.468588, -0.427530, -0.373260, -0.267455",\
+ "-0.754762, -0.708893, -0.668362, -0.614349, -0.508655");
+ }
+
+ } /* end of arc clk_ast_ext_i_rst_ast_tlul_ni_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.210479, 0.169372, 0.114546, 0.118621, 0.168150",\
+ "0.293165, 0.250654, 0.192180, 0.195438, 0.235030",\
+ "0.391384, 0.349291, 0.288209, 0.290833, 0.322724",\
+ "0.566327, 0.524466, 0.460601, 0.462751, 0.488884",\
+ "0.947368, 0.905673, 0.836972, 0.838520, 0.857344");
+ }
+
+ } /* end of arc clk_ast_rng_i_rst_ast_tlul_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.124168, -0.086693, -0.025277, -0.015137, 0.108101",\
+ "-0.205037, -0.167443, -0.108443, -0.098281, 0.025219",\
+ "-0.301967, -0.263763, -0.207172, -0.197116, -0.074898",\
+ "-0.470369, -0.430682, -0.376443, -0.366778, -0.249319",\
+ "-0.834370, -0.791194, -0.740802, -0.732123, -0.626660");
+ }
+
+ } /* end of arc clk_ast_rng_i_rst_ast_tlul_ni_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "1.869923, 1.822277, 1.788958, 1.777550, 1.806108",\
+ "1.951337, 1.903690, 1.870372, 1.858964, 1.887521",\
+ "2.032032, 1.984385, 1.951067, 1.939659, 1.968216",\
+ "2.170088, 2.122442, 2.089123, 2.077716, 2.106273",\
+ "2.387489, 2.339843, 2.306524, 2.295116, 2.323674");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rst_ast_tlul_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.059314, 0.134642, 0.207217, 0.259023, 0.524416",\
+ "-0.004435, 0.071727, 0.144173, 0.196109, 0.463735",\
+ "-0.061661, 0.013696, 0.087717, 0.140099, 0.405234",\
+ "-0.144853, -0.069971, 0.004287, 0.056772, 0.321975",\
+ "-0.313738, -0.239256, -0.166173, -0.113918, 0.154394");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rst_ast_tlul_ni_remrr*/
+
+} /* end of pin rst_ast_tlul_ni */
+
+pin("clk_ast_usb_i") {
+ direction : input ;
+ clock : true ;
+ max_transition : 2.480000 ;
+ capacitance : 0.008679 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_usb_i;
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.131491");
+ }
+
+ } /* end of arc clk_ast_usb_i_clk_ast_usb_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.073311");
+ }
+
+ } /* end of arc clk_ast_usb_i_clk_ast_usb_i_pwh*/
+
+} /* end of pin clk_ast_usb_i */
+
+pin("rst_ast_usb_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.013220 ;
+
+ /* Other user defined attributes. */
+ original_pin : rst_ast_usb_ni;
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.400327, 0.357670, 0.301625, 0.305488, 0.352426",\
+ "0.476049, 0.433392, 0.377347, 0.381210, 0.428148",\
+ "0.548090, 0.505436, 0.449256, 0.453084, 0.499610",\
+ "0.675976, 0.633329, 0.576799, 0.580539, 0.625997",\
+ "0.887381, 0.844752, 0.787402, 0.790936, 0.833890");
+ }
+
+ } /* end of arc clk_ast_usb_i_rst_ast_usb_ni_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.128239, -0.088359, -0.022542, -0.011521, 0.122413",\
+ "-0.208722, -0.168842, -0.103025, -0.092004, 0.041930",\
+ "-0.287884, -0.248004, -0.182187, -0.171166, -0.037232",\
+ "-0.421984, -0.382104, -0.316287, -0.305266, -0.171332",\
+ "-0.631259, -0.591379, -0.525562, -0.514541, -0.380607");
+ }
+
+ } /* end of arc clk_ast_usb_i_rst_ast_usb_ni_remrr*/
+
+} /* end of pin rst_ast_usb_ni */
+
+pin("clk_ast_ext_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.005952 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_ast_ext_i;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : min_pulse_width ;
+ fall_constraint( scalar ){
+ values ( "0.300783");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_ast_ext_i_pwl*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : min_pulse_width ;
+ rise_constraint( scalar ){
+ values ( "0.123380");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_ast_ext_i_pwh*/
+
+} /* end of pin clk_ast_ext_i */
+
+pin("por_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000461 ;
+
+ /* Other user defined attributes. */
+ original_pin : por_ni;
+} /* end of pin por_ni */
+bus ( sns_clks_i ) {
+
+ bus_type : BUS27_type2 ;
+ direction : input ;
+
+pin("sns_clks_i[26]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[26];
+} /* end of pin sns_clks_i[26] */
+
+pin("sns_clks_i[25]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[25];
+} /* end of pin sns_clks_i[25] */
+
+pin("sns_clks_i[24]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[24];
+} /* end of pin sns_clks_i[24] */
+
+pin("sns_clks_i[23]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[23];
+} /* end of pin sns_clks_i[23] */
+
+pin("sns_clks_i[22]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[22];
+} /* end of pin sns_clks_i[22] */
+
+pin("sns_clks_i[21]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[21];
+} /* end of pin sns_clks_i[21] */
+
+pin("sns_clks_i[20]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[20];
+} /* end of pin sns_clks_i[20] */
+
+pin("sns_clks_i[19]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[19];
+} /* end of pin sns_clks_i[19] */
+
+pin("sns_clks_i[18]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[18];
+} /* end of pin sns_clks_i[18] */
+
+pin("sns_clks_i[17]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[17];
+} /* end of pin sns_clks_i[17] */
+
+pin("sns_clks_i[16]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[16];
+} /* end of pin sns_clks_i[16] */
+
+pin("sns_clks_i[15]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[15];
+} /* end of pin sns_clks_i[15] */
+
+pin("sns_clks_i[14]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[14];
+} /* end of pin sns_clks_i[14] */
+
+pin("sns_clks_i[13]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[13];
+} /* end of pin sns_clks_i[13] */
+
+pin("sns_clks_i[12]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[12];
+} /* end of pin sns_clks_i[12] */
+
+pin("sns_clks_i[11]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[11];
+} /* end of pin sns_clks_i[11] */
+
+pin("sns_clks_i[10]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[10];
+} /* end of pin sns_clks_i[10] */
+
+pin("sns_clks_i[9]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[9];
+} /* end of pin sns_clks_i[9] */
+
+pin("sns_clks_i[8]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[8];
+} /* end of pin sns_clks_i[8] */
+
+pin("sns_clks_i[7]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[7];
+} /* end of pin sns_clks_i[7] */
+
+pin("sns_clks_i[6]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[6];
+} /* end of pin sns_clks_i[6] */
+
+pin("sns_clks_i[5]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[5];
+} /* end of pin sns_clks_i[5] */
+
+pin("sns_clks_i[4]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[4];
+} /* end of pin sns_clks_i[4] */
+
+pin("sns_clks_i[3]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[3];
+} /* end of pin sns_clks_i[3] */
+
+pin("sns_clks_i[2]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[2];
+} /* end of pin sns_clks_i[2] */
+
+pin("sns_clks_i[1]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[1];
+} /* end of pin sns_clks_i[1] */
+
+pin("sns_clks_i[0]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_clks_i[0];
+} /* end of pin sns_clks_i[0] */
+} /* end of bus sns_clks_i */
+bus ( sns_rsts_i ) {
+
+ bus_type : BUS56_type3 ;
+ direction : input ;
+
+pin("sns_rsts_i[55]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[55];
+} /* end of pin sns_rsts_i[55] */
+
+pin("sns_rsts_i[54]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[54];
+} /* end of pin sns_rsts_i[54] */
+
+pin("sns_rsts_i[53]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[53];
+} /* end of pin sns_rsts_i[53] */
+
+pin("sns_rsts_i[52]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[52];
+} /* end of pin sns_rsts_i[52] */
+
+pin("sns_rsts_i[51]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[51];
+} /* end of pin sns_rsts_i[51] */
+
+pin("sns_rsts_i[50]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[50];
+} /* end of pin sns_rsts_i[50] */
+
+pin("sns_rsts_i[49]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[49];
+} /* end of pin sns_rsts_i[49] */
+
+pin("sns_rsts_i[48]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[48];
+} /* end of pin sns_rsts_i[48] */
+
+pin("sns_rsts_i[47]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[47];
+} /* end of pin sns_rsts_i[47] */
+
+pin("sns_rsts_i[46]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[46];
+} /* end of pin sns_rsts_i[46] */
+
+pin("sns_rsts_i[45]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[45];
+} /* end of pin sns_rsts_i[45] */
+
+pin("sns_rsts_i[44]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[44];
+} /* end of pin sns_rsts_i[44] */
+
+pin("sns_rsts_i[43]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[43];
+} /* end of pin sns_rsts_i[43] */
+
+pin("sns_rsts_i[42]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[42];
+} /* end of pin sns_rsts_i[42] */
+
+pin("sns_rsts_i[41]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[41];
+} /* end of pin sns_rsts_i[41] */
+
+pin("sns_rsts_i[40]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[40];
+} /* end of pin sns_rsts_i[40] */
+
+pin("sns_rsts_i[39]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[39];
+} /* end of pin sns_rsts_i[39] */
+
+pin("sns_rsts_i[38]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[38];
+} /* end of pin sns_rsts_i[38] */
+
+pin("sns_rsts_i[37]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[37];
+} /* end of pin sns_rsts_i[37] */
+
+pin("sns_rsts_i[36]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[36];
+} /* end of pin sns_rsts_i[36] */
+
+pin("sns_rsts_i[35]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[35];
+} /* end of pin sns_rsts_i[35] */
+
+pin("sns_rsts_i[34]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[34];
+} /* end of pin sns_rsts_i[34] */
+
+pin("sns_rsts_i[33]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[33];
+} /* end of pin sns_rsts_i[33] */
+
+pin("sns_rsts_i[32]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[32];
+} /* end of pin sns_rsts_i[32] */
+
+pin("sns_rsts_i[31]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[31];
+} /* end of pin sns_rsts_i[31] */
+
+pin("sns_rsts_i[30]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[30];
+} /* end of pin sns_rsts_i[30] */
+
+pin("sns_rsts_i[29]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[29];
+} /* end of pin sns_rsts_i[29] */
+
+pin("sns_rsts_i[28]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[28];
+} /* end of pin sns_rsts_i[28] */
+
+pin("sns_rsts_i[27]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[27];
+} /* end of pin sns_rsts_i[27] */
+
+pin("sns_rsts_i[26]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[26];
+} /* end of pin sns_rsts_i[26] */
+
+pin("sns_rsts_i[25]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[25];
+} /* end of pin sns_rsts_i[25] */
+
+pin("sns_rsts_i[24]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[24];
+} /* end of pin sns_rsts_i[24] */
+
+pin("sns_rsts_i[23]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[23];
+} /* end of pin sns_rsts_i[23] */
+
+pin("sns_rsts_i[22]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[22];
+} /* end of pin sns_rsts_i[22] */
+
+pin("sns_rsts_i[21]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[21];
+} /* end of pin sns_rsts_i[21] */
+
+pin("sns_rsts_i[20]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[20];
+} /* end of pin sns_rsts_i[20] */
+
+pin("sns_rsts_i[19]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[19];
+} /* end of pin sns_rsts_i[19] */
+
+pin("sns_rsts_i[18]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[18];
+} /* end of pin sns_rsts_i[18] */
+
+pin("sns_rsts_i[17]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[17];
+} /* end of pin sns_rsts_i[17] */
+
+pin("sns_rsts_i[16]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[16];
+} /* end of pin sns_rsts_i[16] */
+
+pin("sns_rsts_i[15]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[15];
+} /* end of pin sns_rsts_i[15] */
+
+pin("sns_rsts_i[14]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[14];
+} /* end of pin sns_rsts_i[14] */
+
+pin("sns_rsts_i[13]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[13];
+} /* end of pin sns_rsts_i[13] */
+
+pin("sns_rsts_i[12]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[12];
+} /* end of pin sns_rsts_i[12] */
+
+pin("sns_rsts_i[11]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[11];
+} /* end of pin sns_rsts_i[11] */
+
+pin("sns_rsts_i[10]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[10];
+} /* end of pin sns_rsts_i[10] */
+
+pin("sns_rsts_i[9]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[9];
+} /* end of pin sns_rsts_i[9] */
+
+pin("sns_rsts_i[8]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[8];
+} /* end of pin sns_rsts_i[8] */
+
+pin("sns_rsts_i[7]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[7];
+} /* end of pin sns_rsts_i[7] */
+
+pin("sns_rsts_i[6]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[6];
+} /* end of pin sns_rsts_i[6] */
+
+pin("sns_rsts_i[5]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[5];
+} /* end of pin sns_rsts_i[5] */
+
+pin("sns_rsts_i[4]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[4];
+} /* end of pin sns_rsts_i[4] */
+
+pin("sns_rsts_i[3]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[3];
+} /* end of pin sns_rsts_i[3] */
+
+pin("sns_rsts_i[2]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[2];
+} /* end of pin sns_rsts_i[2] */
+
+pin("sns_rsts_i[1]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[1];
+} /* end of pin sns_rsts_i[1] */
+
+pin("sns_rsts_i[0]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_rsts_i[0];
+} /* end of pin sns_rsts_i[0] */
+} /* end of bus sns_rsts_i */
+
+pin("sns_spi_ext_clk_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : sns_spi_ext_clk_i;
+} /* end of pin sns_spi_ext_clk_i */
+
+pin("vcc_supp_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : vcc_supp_i;
+} /* end of pin vcc_supp_i */
+
+pin("vcaon_supp_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : vcaon_supp_i;
+} /* end of pin vcaon_supp_i */
+
+pin("vcmain_supp_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : vcmain_supp_i;
+} /* end of pin vcmain_supp_i */
+
+pin("vioa_supp_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : vioa_supp_i;
+} /* end of pin vioa_supp_i */
+
+pin("viob_supp_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : viob_supp_i;
+} /* end of pin viob_supp_i */
+bus ( ast_pwst_o ) {
+
+ bus_type : BUS5_type4 ;
+ direction : output ;
+
+pin("ast_pwst_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.652273 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000495 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_o[4];
+} /* end of pin ast_pwst_o[4] */
+
+pin("ast_pwst_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.007560 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_o[3];
+} /* end of pin ast_pwst_o[3] */
+
+pin("ast_pwst_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.029213 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000584 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_o[2];
+ timing () {
+ related_pin : "ast_pwst_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.018088, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120368, 0.186170, 0.300859, 0.616258, 1.455810",\
+ "0.125647, 0.191441, 0.306120, 0.621529, 1.461089",\
+ "0.207819, 0.273839, 0.388973, 0.704719, 1.544218",\
+ "0.296772, 0.362735, 0.477872, 0.794339, 1.635091",\
+ "0.704776, 0.781389, 0.901027, 1.217412, 2.063059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.018088, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118650, 0.232640, 0.431328, 0.981607, 2.441227",\
+ "0.118668, 0.232640, 0.431330, 0.981682, 2.441227",\
+ "0.118668, 0.233537, 0.432463, 0.981682, 2.441227",\
+ "0.120002, 0.233537, 0.433774, 0.981682, 2.441227",\
+ "0.161250, 0.255527, 0.435044, 0.981682, 2.441227");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.021349, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.061996, 0.075776, 0.099734, 0.165532, 0.340715",\
+ "0.068682, 0.082462, 0.106420, 0.172219, 0.347402",\
+ "0.154377, 0.169144, 0.193145, 0.258865, 0.434247",\
+ "0.245754, 0.264276, 0.291081, 0.357185, 0.532518",\
+ "0.645975, 0.686648, 0.737659, 0.832084, 1.014107");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.021349, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026953, 0.051423, 0.094862, 0.215093, 0.534102",\
+ "0.026955, 0.051424, 0.094862, 0.215093, 0.534102",\
+ "0.033450, 0.053875, 0.094993, 0.215093, 0.534241",\
+ "0.046741, 0.065795, 0.101823, 0.215093, 0.534701",\
+ "0.120319, 0.148529, 0.186126, 0.267902, 0.543427");
+ }
+
+ } /* end of arc ast_pwst_o[4]_ast_pwst_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "ast_pwst_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.017926, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120368, 0.186170, 0.300859, 0.616258, 1.455810",\
+ "0.125568, 0.191362, 0.306040, 0.621450, 1.461010",\
+ "0.207819, 0.273839, 0.388973, 0.704719, 1.544218",\
+ "0.296772, 0.362735, 0.477872, 0.794339, 1.635091",\
+ "0.704776, 0.781389, 0.901027, 1.217412, 2.063059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.017926, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118650, 0.232611, 0.431328, 0.977612, 2.431972",\
+ "0.118650, 0.232611, 0.431330, 0.977612, 2.431972",\
+ "0.118650, 0.233259, 0.432463, 0.977612, 2.431972",\
+ "0.120002, 0.233259, 0.433774, 0.977612, 2.431972",\
+ "0.161250, 0.255527, 0.435044, 0.981481, 2.431972");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.020771, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.061996, 0.075776, 0.099734, 0.165532, 0.340715",\
+ "0.068410, 0.082189, 0.106148, 0.171946, 0.347129",\
+ "0.154377, 0.169144, 0.193145, 0.258865, 0.434247",\
+ "0.245754, 0.264276, 0.291081, 0.357185, 0.532518",\
+ "0.645975, 0.686648, 0.737659, 0.832084, 1.014107");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.020771, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026953, 0.051423, 0.094862, 0.214557, 0.534102",\
+ "0.026954, 0.051424, 0.094862, 0.214557, 0.534102",\
+ "0.033450, 0.053875, 0.094993, 0.214557, 0.534241",\
+ "0.046741, 0.065795, 0.101823, 0.215088, 0.534701",\
+ "0.120319, 0.148529, 0.186126, 0.267902, 0.543427");
+ }
+
+ } /* end of arc ast_pwst_o[4]_ast_pwst_o[2]_una_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.120145, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.404676, 0.353105, 0.318351, 0.315478, 0.348023",\
+ "0.454532, 0.402961, 0.368207, 0.365334, 0.397879",\
+ "0.484555, 0.432984, 0.398230, 0.395357, 0.427902",\
+ "0.566329, 0.514758, 0.480004, 0.477131, 0.509676",\
+ "0.956464, 0.904894, 0.869963, 0.866772, 0.898621");
+ }
+
+ } /* end of arc clk_ast_ext_i_ast_pwst_o[2]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.118140, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.316729, -0.270030, -0.234537, -0.184982, -0.086025",\
+ "-0.365783, -0.319083, -0.283591, -0.234035, -0.135079",\
+ "-0.396608, -0.349909, -0.314416, -0.264861, -0.165904",\
+ "-0.478382, -0.431683, -0.396190, -0.346635, -0.247678",\
+ "-0.868371, -0.821645, -0.786315, -0.736867, -0.638027");
+ }
+
+ } /* end of arc clk_ast_ext_i_ast_pwst_o[2]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380000.531250, 380000.593750, 380000.718750, 380001.031250, 380001.875000",\
+ "380000.625000, 380000.687500, 380000.812500, 380001.125000, 380001.968750",\
+ "380000.687500, 380000.750000, 380000.875000, 380001.187500, 380002.031250",\
+ "380000.750000, 380000.812500, 380000.937500, 380001.250000, 380002.093750",\
+ "380001.062500, 380001.125000, 380001.250000, 380001.562500, 380002.406250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.875000, 380001.875000, 380001.906250, 380001.968750, 380002.156250",\
+ "380001.968750, 380001.968750, 380002.000000, 380002.062500, 380002.250000",\
+ "380002.062500, 380002.062500, 380002.093750, 380002.156250, 380002.343750",\
+ "380002.125000, 380002.125000, 380002.156250, 380002.218750, 380002.406250",\
+ "380002.468750, 380002.468750, 380002.500000, 380002.562500, 380002.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.396377, 0.462195, 0.577090, 0.892530, 1.731965",\
+ "0.483687, 0.549505, 0.664400, 0.979841, 1.819276",\
+ "0.581466, 0.647284, 0.762179, 1.077619, 1.917054",\
+ "0.654025, 0.719843, 0.834738, 1.150178, 1.989613",\
+ "1.042482, 1.108301, 1.223195, 1.538636, 2.378071");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.326727, 0.341464, 0.366815, 0.435950, 0.619738",\
+ "0.414576, 0.429313, 0.454664, 0.523799, 0.707587",\
+ "0.495656, 0.510394, 0.535744, 0.604879, 0.788667",\
+ "0.553927, 0.568665, 0.594015, 0.663150, 0.846938",\
+ "0.864022, 0.878760, 0.904110, 0.973245, 1.157033");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380000.406250, 380000.468750, 380000.593750, 380000.906250, 380001.750000",\
+ "380000.500000, 380000.562500, 380000.687500, 380001.000000, 380001.843750",\
+ "380000.593750, 380000.656250, 380000.781250, 380001.093750, 380001.937500",\
+ "380000.750000, 380000.812500, 380000.937500, 380001.250000, 380002.093750",\
+ "380001.000000, 380001.062500, 380001.187500, 380001.500000, 380002.343750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.781250, 380001.781250, 380001.812500, 380001.875000, 380002.062500",\
+ "380001.875000, 380001.875000, 380001.906250, 380001.968750, 380002.156250",\
+ "380002.000000, 380002.000000, 380002.031250, 380002.093750, 380002.281250",\
+ "380002.187500, 380002.187500, 380002.218750, 380002.281250, 380002.468750",\
+ "380002.500000, 380002.500000, 380002.531250, 380002.593750, 380002.781250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "379999.937500, 380000.000000, 380000.093750, 380000.406250, 380001.250000",\
+ "380000.031250, 380000.093750, 380000.187500, 380000.500000, 380001.343750",\
+ "380000.093750, 380000.156250, 380000.250000, 380000.562500, 380001.406250",\
+ "380000.250000, 380000.312500, 380000.406250, 380000.718750, 380001.562500",\
+ "380000.468750, 380000.531250, 380000.625000, 380000.937500, 380001.781250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.375000, 380001.406250, 380001.437500, 380001.500000, 380001.687500",\
+ "380001.468750, 380001.500000, 380001.531250, 380001.593750, 380001.781250",\
+ "380001.562500, 380001.593750, 380001.625000, 380001.687500, 380001.875000",\
+ "380001.750000, 380001.781250, 380001.812500, 380001.875000, 380002.062500",\
+ "380002.000000, 380002.031250, 380002.062500, 380002.125000, 380002.312500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[2]_una_min*/
+
+} /* end of pin ast_pwst_o[2] */
+
+pin("ast_pwst_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.101136 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "7.046945, 7.238483, 7.357924, 7.616586, 8.489688",\
+ "7.134256, 7.325794, 7.445234, 7.703897, 8.576999",\
+ "7.232034, 7.423573, 7.543013, 7.801675, 8.674777",\
+ "7.304593, 7.496131, 7.615571, 7.874234, 8.747335",\
+ "7.693051, 7.884589, 8.004029, 8.262691, 9.135794");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "5.236063, 5.393305, 5.518865, 5.706539, 6.296398",\
+ "5.323912, 5.481154, 5.606714, 5.794387, 6.384247",\
+ "5.404993, 5.562235, 5.687795, 5.875468, 6.465328",\
+ "5.463264, 5.620506, 5.746066, 5.933739, 6.523599",\
+ "5.773359, 5.930601, 6.056160, 6.243834, 6.833694");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.781250, 380006.968750, 380007.093750, 380007.343750, 380008.218750",\
+ "380006.937500, 380007.125000, 380007.250000, 380007.500000, 380008.375000",\
+ "380007.187500, 380007.375000, 380007.500000, 380007.750000, 380008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.500000, 380006.656250, 380006.781250, 380006.968750, 380007.562500",\
+ "380006.687500, 380006.843750, 380006.968750, 380007.156250, 380007.750000",\
+ "380007.000000, 380007.156250, 380007.281250, 380007.468750, 380008.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.750000, 380006.937500, 380007.062500, 380007.312500, 380008.187500",\
+ "380006.906250, 380007.093750, 380007.218750, 380007.468750, 380008.343750",\
+ "380007.125000, 380007.312500, 380007.437500, 380007.687500, 380008.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.468750, 380006.625000, 380006.750000, 380006.937500, 380007.531250",\
+ "380006.656250, 380006.812500, 380006.937500, 380007.125000, 380007.718750",\
+ "380006.906250, 380007.062500, 380007.187500, 380007.375000, 380007.968750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.812500, 970009.000000, 970009.125000, 970009.375000, 970010.250000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.312500, 970006.437500, 970006.562500, 970006.750000, 970007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.937500, 970009.125000, 970009.250000, 970009.500000, 970010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.312500, 590006.437500, 590006.562500, 590006.750000, 590007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.187500, 590006.312500, 590006.437500, 590006.625000, 590007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[1]_una_min*/
+
+} /* end of pin ast_pwst_o[1] */
+
+pin("ast_pwst_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.101136 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "7.046945, 7.238483, 7.357924, 7.616586, 8.489688",\
+ "7.134256, 7.325794, 7.445234, 7.703897, 8.576999",\
+ "7.232034, 7.423573, 7.543013, 7.801675, 8.674777",\
+ "7.304593, 7.496131, 7.615571, 7.874234, 8.747335",\
+ "7.693051, 7.884589, 8.004029, 8.262691, 9.135794");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "5.236063, 5.393305, 5.518865, 5.706539, 6.296398",\
+ "5.323912, 5.481154, 5.606714, 5.794387, 6.384247",\
+ "5.404993, 5.562235, 5.687795, 5.875468, 6.465328",\
+ "5.463264, 5.620506, 5.746066, 5.933739, 6.523599",\
+ "5.773359, 5.930601, 6.056160, 6.243834, 6.833694");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.781250, 380006.968750, 380007.093750, 380007.343750, 380008.218750",\
+ "380006.937500, 380007.125000, 380007.250000, 380007.500000, 380008.375000",\
+ "380007.187500, 380007.375000, 380007.500000, 380007.750000, 380008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.500000, 380006.656250, 380006.781250, 380006.968750, 380007.562500",\
+ "380006.687500, 380006.843750, 380006.968750, 380007.156250, 380007.750000",\
+ "380007.000000, 380007.156250, 380007.281250, 380007.468750, 380008.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.750000, 380006.937500, 380007.062500, 380007.312500, 380008.187500",\
+ "380006.906250, 380007.093750, 380007.218750, 380007.468750, 380008.343750",\
+ "380007.125000, 380007.312500, 380007.437500, 380007.687500, 380008.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.468750, 380006.625000, 380006.750000, 380006.937500, 380007.531250",\
+ "380006.656250, 380006.812500, 380006.937500, 380007.125000, 380007.718750",\
+ "380006.906250, 380007.062500, 380007.187500, 380007.375000, 380007.968750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.812500, 970009.000000, 970009.125000, 970009.375000, 970010.250000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.312500, 970006.437500, 970006.562500, 970006.750000, 970007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.937500, 970009.125000, 970009.250000, 970009.500000, 970010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.312500, 590006.437500, 590006.562500, 590006.750000, 590007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.187500, 590006.312500, 590006.437500, 590006.625000, 590007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[0]_una_min*/
+
+} /* end of pin ast_pwst_o[0] */
+} /* end of bus ast_pwst_o */
+bus ( ast_pwst_h_o ) {
+
+ bus_type : BUS5_type4 ;
+ direction : output ;
+
+pin("ast_pwst_h_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003358 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_h_o[4];
+} /* end of pin ast_pwst_h_o[4] */
+
+pin("ast_pwst_h_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.007560 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_h_o[3];
+} /* end of pin ast_pwst_h_o[3] */
+
+pin("ast_pwst_h_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.029213 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000584 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_h_o[2];
+ timing () {
+ related_pin : "ast_pwst_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.018088, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120368, 0.186170, 0.300859, 0.616258, 1.455810",\
+ "0.125647, 0.191441, 0.306120, 0.621529, 1.461089",\
+ "0.207819, 0.273839, 0.388973, 0.704719, 1.544218",\
+ "0.296772, 0.362735, 0.477872, 0.794339, 1.635091",\
+ "0.704776, 0.781389, 0.901027, 1.217412, 2.063059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.018088, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118650, 0.232640, 0.431328, 0.981607, 2.441227",\
+ "0.118668, 0.232640, 0.431330, 0.981682, 2.441227",\
+ "0.118668, 0.233537, 0.432463, 0.981682, 2.441227",\
+ "0.120002, 0.233537, 0.433774, 0.981682, 2.441227",\
+ "0.161250, 0.255527, 0.435044, 0.981682, 2.441227");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.021349, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.061996, 0.075776, 0.099734, 0.165532, 0.340715",\
+ "0.068682, 0.082462, 0.106420, 0.172219, 0.347402",\
+ "0.154377, 0.169144, 0.193145, 0.258865, 0.434247",\
+ "0.245754, 0.264276, 0.291081, 0.357185, 0.532518",\
+ "0.645975, 0.686648, 0.737659, 0.832084, 1.014107");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.021349, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026953, 0.051423, 0.094862, 0.215093, 0.534102",\
+ "0.026955, 0.051424, 0.094862, 0.215093, 0.534102",\
+ "0.033450, 0.053875, 0.094993, 0.215093, 0.534241",\
+ "0.046741, 0.065795, 0.101823, 0.215093, 0.534701",\
+ "0.120319, 0.148529, 0.186126, 0.267902, 0.543427");
+ }
+
+ } /* end of arc ast_pwst_o[4]_ast_pwst_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "ast_pwst_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.017926, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120368, 0.186170, 0.300859, 0.616258, 1.455810",\
+ "0.125568, 0.191362, 0.306040, 0.621450, 1.461010",\
+ "0.207819, 0.273839, 0.388973, 0.704719, 1.544218",\
+ "0.296772, 0.362735, 0.477872, 0.794339, 1.635091",\
+ "0.704776, 0.781389, 0.901027, 1.217412, 2.063059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.017926, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118650, 0.232611, 0.431328, 0.977612, 2.431972",\
+ "0.118650, 0.232611, 0.431330, 0.977612, 2.431972",\
+ "0.118650, 0.233259, 0.432463, 0.977612, 2.431972",\
+ "0.120002, 0.233259, 0.433774, 0.977612, 2.431972",\
+ "0.161250, 0.255527, 0.435044, 0.981481, 2.431972");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.020771, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.061996, 0.075776, 0.099734, 0.165532, 0.340715",\
+ "0.068410, 0.082189, 0.106148, 0.171946, 0.347129",\
+ "0.154377, 0.169144, 0.193145, 0.258865, 0.434247",\
+ "0.245754, 0.264276, 0.291081, 0.357185, 0.532518",\
+ "0.645975, 0.686648, 0.737659, 0.832084, 1.014107");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.020771, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026953, 0.051423, 0.094862, 0.214557, 0.534102",\
+ "0.026954, 0.051424, 0.094862, 0.214557, 0.534102",\
+ "0.033450, 0.053875, 0.094993, 0.214557, 0.534241",\
+ "0.046741, 0.065795, 0.101823, 0.215088, 0.534701",\
+ "0.120319, 0.148529, 0.186126, 0.267902, 0.543427");
+ }
+
+ } /* end of arc ast_pwst_o[4]_ast_pwst_o[2]_una_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.120145, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.404676, 0.353105, 0.318351, 0.315478, 0.348023",\
+ "0.454532, 0.402961, 0.368207, 0.365334, 0.397879",\
+ "0.484555, 0.432984, 0.398230, 0.395357, 0.427902",\
+ "0.566329, 0.514758, 0.480004, 0.477131, 0.509676",\
+ "0.956464, 0.904894, 0.869963, 0.866772, 0.898621");
+ }
+
+ } /* end of arc clk_ast_ext_i_ast_pwst_o[2]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.118140, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.316729, -0.270030, -0.234537, -0.184982, -0.086025",\
+ "-0.365783, -0.319083, -0.283591, -0.234035, -0.135079",\
+ "-0.396608, -0.349909, -0.314416, -0.264861, -0.165904",\
+ "-0.478382, -0.431683, -0.396190, -0.346635, -0.247678",\
+ "-0.868371, -0.821645, -0.786315, -0.736867, -0.638027");
+ }
+
+ } /* end of arc clk_ast_ext_i_ast_pwst_o[2]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380000.531250, 380000.593750, 380000.718750, 380001.031250, 380001.875000",\
+ "380000.625000, 380000.687500, 380000.812500, 380001.125000, 380001.968750",\
+ "380000.687500, 380000.750000, 380000.875000, 380001.187500, 380002.031250",\
+ "380000.750000, 380000.812500, 380000.937500, 380001.250000, 380002.093750",\
+ "380001.062500, 380001.125000, 380001.250000, 380001.562500, 380002.406250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.875000, 380001.875000, 380001.906250, 380001.968750, 380002.156250",\
+ "380001.968750, 380001.968750, 380002.000000, 380002.062500, 380002.250000",\
+ "380002.062500, 380002.062500, 380002.093750, 380002.156250, 380002.343750",\
+ "380002.125000, 380002.125000, 380002.156250, 380002.218750, 380002.406250",\
+ "380002.468750, 380002.468750, 380002.500000, 380002.562500, 380002.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875",\
+ "0.031251, 0.056161, 0.101276, 0.226771, 0.561875");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.396377, 0.462195, 0.577090, 0.892530, 1.731965",\
+ "0.483687, 0.549505, 0.664400, 0.979841, 1.819276",\
+ "0.581466, 0.647284, 0.762179, 1.077619, 1.917054",\
+ "0.654025, 0.719843, 0.834738, 1.150178, 1.989613",\
+ "1.042482, 1.108301, 1.223195, 1.538636, 2.378071");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812",\
+ "0.118140, 0.231881, 0.431660, 0.979741, 2.437812");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.326727, 0.341464, 0.366815, 0.435950, 0.619738",\
+ "0.414576, 0.429313, 0.454664, 0.523799, 0.707587",\
+ "0.495656, 0.510394, 0.535744, 0.604879, 0.788667",\
+ "0.553927, 0.568665, 0.594015, 0.663150, 0.846938",\
+ "0.864022, 0.878760, 0.904110, 0.973245, 1.157033");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380000.406250, 380000.468750, 380000.593750, 380000.906250, 380001.750000",\
+ "380000.500000, 380000.562500, 380000.687500, 380001.000000, 380001.843750",\
+ "380000.593750, 380000.656250, 380000.781250, 380001.093750, 380001.937500",\
+ "380000.750000, 380000.812500, 380000.937500, 380001.250000, 380002.093750",\
+ "380001.000000, 380001.062500, 380001.187500, 380001.500000, 380002.343750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448",\
+ "0.120145, 0.234100, 0.432069, 0.982878, 2.445448");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.781250, 380001.781250, 380001.812500, 380001.875000, 380002.062500",\
+ "380001.875000, 380001.875000, 380001.906250, 380001.968750, 380002.156250",\
+ "380002.000000, 380002.000000, 380002.031250, 380002.093750, 380002.281250",\
+ "380002.187500, 380002.187500, 380002.218750, 380002.281250, 380002.468750",\
+ "380002.500000, 380002.500000, 380002.531250, 380002.593750, 380002.781250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877",\
+ "0.031236, 0.056156, 0.101275, 0.226769, 0.561877");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "379999.937500, 380000.000000, 380000.093750, 380000.406250, 380001.250000",\
+ "380000.031250, 380000.093750, 380000.187500, 380000.500000, 380001.343750",\
+ "380000.093750, 380000.156250, 380000.250000, 380000.562500, 380001.406250",\
+ "380000.250000, 380000.312500, 380000.406250, 380000.718750, 380001.562500",\
+ "380000.468750, 380000.531250, 380000.625000, 380000.937500, 380001.781250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852",\
+ "0.118145, 0.231881, 0.431660, 0.979741, 2.437852");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "380001.375000, 380001.406250, 380001.437500, 380001.500000, 380001.687500",\
+ "380001.468750, 380001.500000, 380001.531250, 380001.593750, 380001.781250",\
+ "380001.562500, 380001.593750, 380001.625000, 380001.687500, 380001.875000",\
+ "380001.750000, 380001.781250, 380001.812500, 380001.875000, 380002.062500",\
+ "380002.000000, 380002.031250, 380002.062500, 380002.125000, 380002.312500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000584, 0.001979, 0.004430, 0.011183, 0.029213");
+ values ( "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206",\
+ "0.026020, 0.051544, 0.096671, 0.220662, 0.551206");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[2]_una_min*/
+
+} /* end of pin ast_pwst_h_o[2] */
+
+pin("ast_pwst_h_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.101136 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_h_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "7.046945, 7.238483, 7.357924, 7.616586, 8.489688",\
+ "7.134256, 7.325794, 7.445234, 7.703897, 8.576999",\
+ "7.232034, 7.423573, 7.543013, 7.801675, 8.674777",\
+ "7.304593, 7.496131, 7.615571, 7.874234, 8.747335",\
+ "7.693051, 7.884589, 8.004029, 8.262691, 9.135794");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "5.236063, 5.393305, 5.518865, 5.706539, 6.296398",\
+ "5.323912, 5.481154, 5.606714, 5.794387, 6.384247",\
+ "5.404993, 5.562235, 5.687795, 5.875468, 6.465328",\
+ "5.463264, 5.620506, 5.746066, 5.933739, 6.523599",\
+ "5.773359, 5.930601, 6.056160, 6.243834, 6.833694");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.781250, 380006.968750, 380007.093750, 380007.343750, 380008.218750",\
+ "380006.937500, 380007.125000, 380007.250000, 380007.500000, 380008.375000",\
+ "380007.187500, 380007.375000, 380007.500000, 380007.750000, 380008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.500000, 380006.656250, 380006.781250, 380006.968750, 380007.562500",\
+ "380006.687500, 380006.843750, 380006.968750, 380007.156250, 380007.750000",\
+ "380007.000000, 380007.156250, 380007.281250, 380007.468750, 380008.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.750000, 380006.937500, 380007.062500, 380007.312500, 380008.187500",\
+ "380006.906250, 380007.093750, 380007.218750, 380007.468750, 380008.343750",\
+ "380007.125000, 380007.312500, 380007.437500, 380007.687500, 380008.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.468750, 380006.625000, 380006.750000, 380006.937500, 380007.531250",\
+ "380006.656250, 380006.812500, 380006.937500, 380007.125000, 380007.718750",\
+ "380006.906250, 380007.062500, 380007.187500, 380007.375000, 380007.968750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.812500, 970009.000000, 970009.125000, 970009.375000, 970010.250000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.312500, 970006.437500, 970006.562500, 970006.750000, 970007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.937500, 970009.125000, 970009.250000, 970009.500000, 970010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.312500, 590006.437500, 590006.562500, 590006.750000, 590007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.187500, 590006.312500, 590006.437500, 590006.625000, 590007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[1]_una_min*/
+
+} /* end of pin ast_pwst_h_o[1] */
+
+pin("ast_pwst_h_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.101136 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast_pwst_h_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "7.046945, 7.238483, 7.357924, 7.616586, 8.489688",\
+ "7.134256, 7.325794, 7.445234, 7.703897, 8.576999",\
+ "7.232034, 7.423573, 7.543013, 7.801675, 8.674777",\
+ "7.304593, 7.496131, 7.615571, 7.874234, 8.747335",\
+ "7.693051, 7.884589, 8.004029, 8.262691, 9.135794");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "5.236063, 5.393305, 5.518865, 5.706539, 6.296398",\
+ "5.323912, 5.481154, 5.606714, 5.794387, 6.384247",\
+ "5.404993, 5.562235, 5.687795, 5.875468, 6.465328",\
+ "5.463264, 5.620506, 5.746066, 5.933739, 6.523599",\
+ "5.773359, 5.930601, 6.056160, 6.243834, 6.833694");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133",\
+ "0.242588, 0.288084, 0.303651, 0.497673, 1.551133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast_pwst_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.781250, 380006.968750, 380007.093750, 380007.343750, 380008.218750",\
+ "380006.937500, 380007.125000, 380007.250000, 380007.500000, 380008.375000",\
+ "380007.187500, 380007.375000, 380007.500000, 380007.750000, 380008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.500000, 380006.656250, 380006.781250, 380006.968750, 380007.562500",\
+ "380006.687500, 380006.843750, 380006.968750, 380007.156250, 380007.750000",\
+ "380007.000000, 380007.156250, 380007.281250, 380007.468750, 380008.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.593750, 380006.781250, 380006.906250, 380007.156250, 380008.031250",\
+ "380006.687500, 380006.875000, 380007.000000, 380007.250000, 380008.125000",\
+ "380006.750000, 380006.937500, 380007.062500, 380007.312500, 380008.187500",\
+ "380006.906250, 380007.093750, 380007.218750, 380007.468750, 380008.343750",\
+ "380007.125000, 380007.312500, 380007.437500, 380007.687500, 380008.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "380006.281250, 380006.437500, 380006.562500, 380006.750000, 380007.343750",\
+ "380006.375000, 380006.531250, 380006.656250, 380006.843750, 380007.437500",\
+ "380006.468750, 380006.625000, 380006.750000, 380006.937500, 380007.531250",\
+ "380006.656250, 380006.812500, 380006.937500, 380007.125000, 380007.718750",\
+ "380006.906250, 380007.062500, 380007.187500, 380007.375000, 380007.968750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.187500, 970006.312500, 970006.437500, 970006.625000, 970007.250000",\
+ "970006.437500, 970006.562500, 970006.687500, 970006.875000, 970007.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.812500, 970009.000000, 970009.125000, 970009.375000, 970010.250000",\
+ "970009.062500, 970009.250000, 970009.375000, 970009.625000, 970010.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832",\
+ "0.256850, 0.317997, 0.317997, 0.797663, 2.394832");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970005.812500, 970005.937500, 970006.062500, 970006.250000, 970006.875000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970005.937500, 970006.062500, 970006.187500, 970006.375000, 970007.000000",\
+ "970006.062500, 970006.187500, 970006.312500, 970006.500000, 970007.125000",\
+ "970006.312500, 970006.437500, 970006.562500, 970006.750000, 970007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132",\
+ "0.242595, 0.288092, 0.303657, 0.497674, 1.551132");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "970008.312500, 970008.500000, 970008.625000, 970008.875000, 970009.750000",\
+ "970008.437500, 970008.625000, 970008.750000, 970009.000000, 970009.875000",\
+ "970008.562500, 970008.750000, 970008.875000, 970009.125000, 970010.000000",\
+ "970008.687500, 970008.875000, 970009.000000, 970009.250000, 970010.125000",\
+ "970008.937500, 970009.125000, 970009.250000, 970009.500000, 970010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast_pwst_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127",\
+ "0.256090, 0.317188, 0.317188, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.312500, 590006.437500, 590006.562500, 590006.750000, 590007.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.687500, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590006.812500, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590006.937500, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.187500, 590007.375000, 590007.500000, 590007.750000, 590008.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127",\
+ "0.256090, 0.291712, 0.291712, 0.797460, 2.395127");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "590005.562500, 590005.687500, 590005.812500, 590006.000000, 590006.625000",\
+ "590005.687500, 590005.812500, 590005.937500, 590006.125000, 590006.750000",\
+ "590005.812500, 590005.937500, 590006.062500, 590006.250000, 590006.875000",\
+ "590005.937500, 590006.062500, 590006.187500, 590006.375000, 590007.000000",\
+ "590006.187500, 590006.312500, 590006.437500, 590006.625000, 590007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002606, 0.008844, 0.030015, 0.101136");
+ values ( "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101",\
+ "0.242962, 0.288493, 0.303943, 0.497719, 1.551101");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast_pwst_o[0]_una_min*/
+
+} /* end of pin ast_pwst_h_o[0] */
+} /* end of bus ast_pwst_h_o */
+
+pin("main_pd_ni") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001140 ;
+
+ /* Other user defined attributes. */
+ original_pin : main_pd_ni;
+} /* end of pin main_pd_ni */
+
+pin("main_env_iso_en_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000488 ;
+
+ /* Other user defined attributes. */
+ original_pin : main_env_iso_en_i;
+} /* end of pin main_env_iso_en_i */
+
+pin("flash_power_down_h_o") {
+ direction : output ;
+ max_transition : 3.720000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.350585 ;
+ min_capacitance : 0.000387 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004062 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_power_down_h_o;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.718750, 380000.781250, 380000.937500, 380001.375000, 380002.718750",\
+ "380000.812500, 380000.875000, 380001.031250, 380001.468750, 380002.812500",\
+ "380000.875000, 380000.937500, 380001.093750, 380001.531250, 380002.875000",\
+ "380000.937500, 380001.000000, 380001.156250, 380001.593750, 380002.937500",\
+ "380001.250000, 380001.312500, 380001.468750, 380001.906250, 380003.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074057, 0.193193, 0.452097, 1.259663, 3.712074",\
+ "0.074058, 0.193193, 0.452097, 1.259663, 3.712070",\
+ "0.074060, 0.193194, 0.452097, 1.259660, 3.712049",\
+ "0.074063, 0.193195, 0.452097, 1.259657, 3.712028",\
+ "0.074111, 0.193204, 0.452092, 1.259600, 3.711658");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.000000, 380002.031250, 380002.093750, 380002.312500, 380002.843750",\
+ "380002.093750, 380002.125000, 380002.187500, 380002.406250, 380002.937500",\
+ "380002.187500, 380002.218750, 380002.281250, 380002.500000, 380003.031250",\
+ "380002.250000, 380002.281250, 380002.343750, 380002.562500, 380003.093750",\
+ "380002.593750, 380002.625000, 380002.687500, 380002.906250, 380003.437500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_power_down_h_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.352648, 0.424230, 0.570187, 1.017271, 2.367661",\
+ "0.440969, 0.512551, 0.658508, 1.105592, 2.455982",\
+ "0.531538, 0.603120, 0.749077, 1.196161, 2.546552",\
+ "0.596976, 0.668558, 0.814515, 1.261599, 2.611990",\
+ "0.939689, 1.011271, 1.157229, 1.604312, 2.954703");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.254546, 0.300198, 0.374019, 0.564384, 1.125543",\
+ "0.341890, 0.387542, 0.461363, 0.651728, 1.212887",\
+ "0.422786, 0.468439, 0.542260, 0.732625, 1.293784",\
+ "0.480635, 0.526288, 0.600109, 0.790475, 1.351633",\
+ "0.785321, 0.830974, 0.904795, 1.095161, 1.656318");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054514, 0.105890, 0.199332, 0.496290, 1.444361",\
+ "0.054514, 0.105890, 0.199332, 0.496290, 1.444361",\
+ "0.054513, 0.105889, 0.199332, 0.496290, 1.444360",\
+ "0.054513, 0.105887, 0.199332, 0.496290, 1.444359",\
+ "0.054513, 0.105887, 0.199332, 0.496290, 1.444358");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_power_down_h_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.593750, 380000.656250, 380000.812500, 380001.250000, 380002.593750",\
+ "380000.687500, 380000.750000, 380000.906250, 380001.343750, 380002.687500",\
+ "380000.781250, 380000.843750, 380001.000000, 380001.437500, 380002.781250",\
+ "380000.937500, 380001.000000, 380001.156250, 380001.593750, 380002.937500",\
+ "380001.187500, 380001.250000, 380001.406250, 380001.843750, 380003.187500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380001.906250, 380001.937500, 380002.000000, 380002.218750, 380002.750000",\
+ "380002.000000, 380002.031250, 380002.093750, 380002.312500, 380002.843750",\
+ "380002.125000, 380002.156250, 380002.218750, 380002.437500, 380002.968750",\
+ "380002.312500, 380002.343750, 380002.406250, 380002.625000, 380003.156250",\
+ "380002.625000, 380002.656250, 380002.718750, 380002.937500, 380003.468750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364");
+ }
+
+ } /* end of arc padmux2ast_i[4]_flash_power_down_h_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.593750, 380000.656250, 380000.812500, 380001.250000, 380002.593750",\
+ "380000.687500, 380000.750000, 380000.906250, 380001.343750, 380002.687500",\
+ "380000.750000, 380000.812500, 380000.968750, 380001.406250, 380002.750000",\
+ "380000.906250, 380000.968750, 380001.125000, 380001.562500, 380002.906250",\
+ "380001.125000, 380001.187500, 380001.343750, 380001.781250, 380003.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141",\
+ "0.074048, 0.193192, 0.452098, 1.259674, 3.712141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380001.906250, 380001.937500, 380002.000000, 380002.218750, 380002.750000",\
+ "380002.000000, 380002.031250, 380002.093750, 380002.312500, 380002.843750",\
+ "380002.093750, 380002.125000, 380002.187500, 380002.406250, 380002.937500",\
+ "380002.281250, 380002.312500, 380002.375000, 380002.593750, 380003.125000",\
+ "380002.531250, 380002.562500, 380002.625000, 380002.843750, 380003.375000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364",\
+ "0.054518, 0.105901, 0.199326, 0.496289, 1.444364");
+ }
+
+ } /* end of arc padmux2ast_i[4]_flash_power_down_h_o_una_min*/
+
+} /* end of pin flash_power_down_h_o */
+
+pin("flash_power_ready_h_o") {
+ direction : output ;
+ max_transition : 3.720000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.350585 ;
+ min_capacitance : 0.000387 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004062 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_power_ready_h_o;
+} /* end of pin flash_power_ready_h_o */
+bus ( otp_power_seq_i ) {
+
+ bus_type : BUS2_type5 ;
+ direction : input ;
+
+pin("otp_power_seq_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002066 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_power_seq_i[1];
+} /* end of pin otp_power_seq_i[1] */
+
+pin("otp_power_seq_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002439 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_power_seq_i[0];
+} /* end of pin otp_power_seq_i[0] */
+} /* end of bus otp_power_seq_i */
+bus ( otp_power_seq_h_o ) {
+
+ bus_type : BUS2_type5 ;
+ direction : output ;
+
+pin("otp_power_seq_h_o[1]") {
+ direction : output ;
+ max_transition : 3.720000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.350585 ;
+ min_capacitance : 0.000387 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004062 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_power_seq_h_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.812500, 380000.875000, 380001.031250, 380001.468750, 380002.812500",\
+ "380000.906250, 380000.968750, 380001.125000, 380001.562500, 380002.906250",\
+ "380000.968750, 380001.031250, 380001.187500, 380001.625000, 380002.968750",\
+ "380001.031250, 380001.093750, 380001.250000, 380001.687500, 380003.031250",\
+ "380001.343750, 380001.406250, 380001.562500, 380002.000000, 380003.343750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.312500, 380002.343750, 380002.406250, 380002.625000, 380003.156250",\
+ "380002.406250, 380002.437500, 380002.500000, 380002.718750, 380003.250000",\
+ "380002.500000, 380002.531250, 380002.593750, 380002.812500, 380003.343750",\
+ "380002.562500, 380002.593750, 380002.656250, 380002.875000, 380003.406250",\
+ "380002.906250, 380002.937500, 380003.000000, 380003.218750, 380003.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343");
+ }
+
+ } /* end of arc clk_ast_tlul_i_otp_power_seq_h_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.448711, 0.520292, 0.666247, 1.113340, 2.463725",\
+ "0.537164, 0.608745, 0.754701, 1.201793, 2.552178",\
+ "0.627117, 0.698698, 0.844654, 1.291746, 2.642131",\
+ "0.691522, 0.763103, 0.909059, 1.356151, 2.706536",\
+ "1.028584, 1.100166, 1.246121, 1.693213, 3.043598");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.535143, 0.580795, 0.654612, 0.844979, 1.406126",\
+ "0.622520, 0.668171, 0.741989, 0.932356, 1.493503",\
+ "0.703389, 0.749041, 0.822858, 1.013225, 1.574372",\
+ "0.761087, 0.806739, 0.880556, 1.070923, 1.632070",\
+ "1.064074, 1.109726, 1.183543, 1.373910, 1.935057");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343");
+ }
+
+ } /* end of arc clk_ast_tlul_i_otp_power_seq_h_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "otp_power_seq_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.280735, 0.352314, 0.498262, 0.945381, 2.295748",\
+ "0.365932, 0.437494, 0.583395, 1.030705, 2.380943",\
+ "0.458471, 0.529972, 0.675698, 1.123714, 2.473475",\
+ "0.634070, 0.705499, 0.850886, 1.299582, 2.649080",\
+ "0.942777, 1.014243, 1.159029, 1.607148, 2.957408");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074065, 0.193195, 0.452096, 1.259655, 3.712015",\
+ "0.074153, 0.193212, 0.452096, 1.259655, 3.712015",\
+ "0.074479, 0.193278, 0.452096, 1.259655, 3.712015",\
+ "0.075512, 0.193773, 0.452096, 1.259655, 3.712015",\
+ "0.077859, 0.195201, 0.452096, 1.259655, 3.712015");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.164110, 0.209762, 0.283580, 0.473944, 1.035104",\
+ "0.247135, 0.292784, 0.366597, 0.556994, 1.118023",\
+ "0.324377, 0.370013, 0.443807, 0.634329, 1.194869",\
+ "0.452551, 0.498155, 0.571901, 0.762742, 1.322028",\
+ "0.650770, 0.696491, 0.770670, 0.961172, 1.520128");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054518, 0.105900, 0.199326, 0.496289, 1.444363",\
+ "0.054583, 0.105900, 0.199350, 0.496296, 1.444363",\
+ "0.054828, 0.105900, 0.199442, 0.496321, 1.444363",\
+ "0.055455, 0.105900, 0.199678, 0.496387, 1.444363",\
+ "0.057468, 0.107107, 0.200875, 0.496387, 1.444363");
+ }
+
+ } /* end of arc otp_power_seq_i[1]_otp_power_seq_h_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_power_seq_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.280735, 0.352314, 0.498262, 0.945381, 2.295748",\
+ "0.365932, 0.437494, 0.583395, 1.030705, 2.380943",\
+ "0.458471, 0.529972, 0.675698, 1.123714, 2.473475",\
+ "0.634070, 0.705499, 0.850886, 1.299582, 2.649080",\
+ "0.942777, 1.014243, 1.159029, 1.607148, 2.957408");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074065, 0.193195, 0.451499, 1.259037, 3.706044",\
+ "0.074153, 0.193212, 0.451499, 1.259037, 3.706044",\
+ "0.074479, 0.193278, 0.451499, 1.259037, 3.706044",\
+ "0.075512, 0.193773, 0.451499, 1.259037, 3.706044",\
+ "0.077859, 0.195201, 0.451499, 1.259378, 3.706689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.164110, 0.209762, 0.283580, 0.473944, 1.035104",\
+ "0.247135, 0.292784, 0.366597, 0.556994, 1.118023",\
+ "0.324377, 0.370013, 0.443807, 0.634329, 1.194869",\
+ "0.452551, 0.498155, 0.571901, 0.762742, 1.322028",\
+ "0.650770, 0.696491, 0.770670, 0.961172, 1.520128");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054518, 0.104862, 0.199326, 0.496289, 1.441414",\
+ "0.054583, 0.104862, 0.199350, 0.496296, 1.441414",\
+ "0.054828, 0.104862, 0.199442, 0.496321, 1.441414",\
+ "0.055455, 0.104862, 0.199678, 0.496356, 1.441414",\
+ "0.057468, 0.107107, 0.200875, 0.496356, 1.442153");
+ }
+
+ } /* end of arc otp_power_seq_i[1]_otp_power_seq_h_o[1]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.687500, 380000.750000, 380000.906250, 380001.343750, 380002.687500",\
+ "380000.781250, 380000.843750, 380001.000000, 380001.437500, 380002.781250",\
+ "380000.875000, 380000.937500, 380001.093750, 380001.531250, 380002.875000",\
+ "380001.031250, 380001.093750, 380001.250000, 380001.687500, 380003.031250",\
+ "380001.281250, 380001.343750, 380001.500000, 380001.937500, 380003.281250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.218750, 380002.250000, 380002.312500, 380002.531250, 380003.062500",\
+ "380002.312500, 380002.343750, 380002.406250, 380002.625000, 380003.156250",\
+ "380002.437500, 380002.468750, 380002.531250, 380002.750000, 380003.281250",\
+ "380002.625000, 380002.656250, 380002.718750, 380002.937500, 380003.468750",\
+ "380002.937500, 380002.968750, 380003.031250, 380003.250000, 380003.781250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343");
+ }
+
+ } /* end of arc padmux2ast_i[4]_otp_power_seq_h_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.687500, 380000.750000, 380000.906250, 380001.343750, 380002.687500",\
+ "380000.781250, 380000.843750, 380001.000000, 380001.437500, 380002.781250",\
+ "380000.843750, 380000.906250, 380001.062500, 380001.500000, 380002.843750",\
+ "380001.000000, 380001.062500, 380001.218750, 380001.656250, 380003.000000",\
+ "380001.218750, 380001.281250, 380001.437500, 380001.875000, 380003.218750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109",\
+ "0.074053, 0.193192, 0.452098, 1.259669, 3.712109");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.218750, 380002.250000, 380002.312500, 380002.531250, 380003.062500",\
+ "380002.312500, 380002.343750, 380002.406250, 380002.625000, 380003.156250",\
+ "380002.406250, 380002.437500, 380002.500000, 380002.718750, 380003.250000",\
+ "380002.593750, 380002.625000, 380002.687500, 380002.906250, 380003.437500",\
+ "380002.843750, 380002.875000, 380002.937500, 380003.156250, 380003.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343",\
+ "0.054525, 0.105893, 0.199328, 0.496289, 1.444343");
+ }
+
+ } /* end of arc padmux2ast_i[4]_otp_power_seq_h_o[1]_una_min*/
+
+} /* end of pin otp_power_seq_h_o[1] */
+
+pin("otp_power_seq_h_o[0]") {
+ direction : output ;
+ max_transition : 3.720000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.350585 ;
+ min_capacitance : 0.000387 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004062 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_power_seq_h_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.312500, 380002.406250, 380002.531250, 380003.000000, 380004.343750",\
+ "380002.406250, 380002.500000, 380002.625000, 380003.093750, 380004.437500",\
+ "380002.500000, 380002.593750, 380002.718750, 380003.187500, 380004.531250",\
+ "380002.562500, 380002.656250, 380002.781250, 380003.250000, 380004.593750",\
+ "380002.906250, 380003.000000, 380003.125000, 380003.593750, 380004.937500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073833, 0.193149, 0.452120, 1.259926, 3.713809",\
+ "0.073833, 0.193149, 0.452120, 1.259926, 3.713809",\
+ "0.073833, 0.193149, 0.452120, 1.259926, 3.713809",\
+ "0.073834, 0.193149, 0.452120, 1.259926, 3.713806",\
+ "0.073834, 0.193149, 0.452120, 1.259926, 3.713804");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.593750, 380000.656250, 380000.718750, 380000.906250, 380001.468750",\
+ "380000.687500, 380000.750000, 380000.812500, 380001.000000, 380001.562500",\
+ "380000.750000, 380000.812500, 380000.875000, 380001.062500, 380001.625000",\
+ "380000.812500, 380000.875000, 380000.937500, 380001.125000, 380001.687500",\
+ "380001.125000, 380001.187500, 380001.250000, 380001.437500, 380002.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054415, 0.105307, 0.199650, 0.496371, 1.443909",\
+ "0.054415, 0.105307, 0.199650, 0.496371, 1.443909",\
+ "0.054415, 0.105307, 0.199650, 0.496371, 1.443909",\
+ "0.054415, 0.105309, 0.199649, 0.496371, 1.443911",\
+ "0.054417, 0.105319, 0.199643, 0.496370, 1.443919");
+ }
+
+ } /* end of arc clk_ast_tlul_i_otp_power_seq_h_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.573426, 0.645049, 0.791123, 1.237737, 2.588445",\
+ "0.660803, 0.732425, 0.878500, 1.325114, 2.675822",\
+ "0.741672, 0.813295, 0.959369, 1.405983, 2.756691",\
+ "0.799370, 0.870993, 1.017067, 1.463682, 2.814389",\
+ "1.102357, 1.173980, 1.320054, 1.766668, 3.117376");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.260939, 0.306616, 0.380550, 0.571046, 1.131945",\
+ "0.349392, 0.395070, 0.469004, 0.659499, 1.220399",\
+ "0.439345, 0.485023, 0.558957, 0.749452, 1.310352",\
+ "0.503750, 0.549428, 0.623362, 0.813857, 1.374757",\
+ "0.840813, 0.886490, 0.960424, 1.150919, 1.711819");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908");
+ }
+
+ } /* end of arc clk_ast_tlul_i_otp_power_seq_h_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "otp_power_seq_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.258742, 0.330399, 0.476573, 0.922786, 2.273765",\
+ "0.342268, 0.413906, 0.560027, 1.006455, 2.357289",\
+ "0.432373, 0.503959, 0.649927, 1.096969, 2.447388",\
+ "0.604916, 0.676353, 0.821884, 1.270636, 2.619913",\
+ "0.890695, 0.962107, 1.107175, 1.555746, 2.905733");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073647, 0.193112, 0.452140, 1.260145, 3.715251",\
+ "0.073746, 0.193131, 0.452140, 1.260145, 3.715251",\
+ "0.074030, 0.193188, 0.452140, 1.260145, 3.715251",\
+ "0.074867, 0.193375, 0.452140, 1.260145, 3.715251",\
+ "0.076941, 0.194654, 0.452140, 1.260145, 3.715251");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.158895, 0.204571, 0.278502, 0.468994, 1.029901",\
+ "0.236396, 0.282061, 0.355936, 0.546363, 1.107398",\
+ "0.299798, 0.345438, 0.419238, 0.609722, 1.170409",\
+ "0.399856, 0.445471, 0.519267, 0.710096, 1.269222",\
+ "0.539370, 0.585337, 0.659872, 0.850367, 1.409363");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054417, 0.105322, 0.199642, 0.496369, 1.443922",\
+ "0.054466, 0.105609, 0.199642, 0.496369, 1.443922",\
+ "0.054754, 0.105639, 0.199642, 0.496369, 1.443922",\
+ "0.055765, 0.105639, 0.199849, 0.496390, 1.443922",\
+ "0.058856, 0.108680, 0.201816, 0.496464, 1.443922");
+ }
+
+ } /* end of arc otp_power_seq_i[0]_otp_power_seq_h_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_power_seq_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.258742, 0.330399, 0.476573, 0.922786, 2.273765",\
+ "0.342268, 0.413906, 0.560027, 1.006455, 2.357289",\
+ "0.432373, 0.503959, 0.649927, 1.096969, 2.447388",\
+ "0.604916, 0.676353, 0.821884, 1.270636, 2.619913",\
+ "0.890695, 0.962107, 1.107175, 1.555746, 2.905733");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073647, 0.193112, 0.451380, 1.258785, 3.705802",\
+ "0.073746, 0.193131, 0.451380, 1.258785, 3.705802",\
+ "0.074030, 0.193188, 0.451380, 1.258785, 3.705802",\
+ "0.074867, 0.193375, 0.451380, 1.258785, 3.705802",\
+ "0.076941, 0.194654, 0.451380, 1.259595, 3.705802");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.158895, 0.204571, 0.278502, 0.468994, 1.029901",\
+ "0.236396, 0.282061, 0.355936, 0.546363, 1.107398",\
+ "0.299798, 0.345438, 0.419238, 0.609722, 1.170409",\
+ "0.399856, 0.445471, 0.519267, 0.710096, 1.269222",\
+ "0.539370, 0.585337, 0.659872, 0.850367, 1.409363");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054417, 0.105076, 0.199414, 0.496314, 1.441319",\
+ "0.054466, 0.105076, 0.199414, 0.496314, 1.441319",\
+ "0.054754, 0.105076, 0.199414, 0.496314, 1.441319",\
+ "0.055765, 0.105076, 0.199849, 0.496390, 1.441319",\
+ "0.058856, 0.108680, 0.201816, 0.496464, 1.442721");
+ }
+
+ } /* end of arc otp_power_seq_i[0]_otp_power_seq_h_o[0]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.468750, 380000.531250, 380000.593750, 380000.781250, 380001.343750",\
+ "380000.562500, 380000.625000, 380000.687500, 380000.875000, 380001.437500",\
+ "380000.656250, 380000.718750, 380000.781250, 380000.968750, 380001.531250",\
+ "380000.812500, 380000.875000, 380000.937500, 380001.125000, 380001.687500",\
+ "380001.062500, 380001.125000, 380001.187500, 380001.375000, 380001.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.218750, 380002.312500, 380002.437500, 380002.906250, 380004.250000",\
+ "380002.312500, 380002.406250, 380002.531250, 380003.000000, 380004.343750",\
+ "380002.437500, 380002.531250, 380002.656250, 380003.125000, 380004.468750",\
+ "380002.625000, 380002.718750, 380002.843750, 380003.312500, 380004.656250",\
+ "380002.937500, 380003.031250, 380003.156250, 380003.625000, 380004.968750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817");
+ }
+
+ } /* end of arc padmux2ast_i[4]_otp_power_seq_h_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380000.468750, 380000.531250, 380000.593750, 380000.781250, 380001.343750",\
+ "380000.562500, 380000.625000, 380000.687500, 380000.875000, 380001.437500",\
+ "380000.625000, 380000.687500, 380000.750000, 380000.937500, 380001.500000",\
+ "380000.781250, 380000.843750, 380000.906250, 380001.093750, 380001.656250",\
+ "380001.000000, 380001.062500, 380001.125000, 380001.312500, 380001.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908",\
+ "0.054414, 0.105305, 0.199651, 0.496372, 1.443908");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "380002.218750, 380002.312500, 380002.437500, 380002.906250, 380004.250000",\
+ "380002.312500, 380002.406250, 380002.531250, 380003.000000, 380004.343750",\
+ "380002.406250, 380002.500000, 380002.625000, 380003.093750, 380004.437500",\
+ "380002.593750, 380002.687500, 380002.812500, 380003.281250, 380004.625000",\
+ "380002.843750, 380002.937500, 380003.062500, 380003.531250, 380004.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.004062, 0.015733, 0.040393, 0.117156, 0.350585");
+ values ( "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817",\
+ "0.073832, 0.193148, 0.452121, 1.259928, 3.713817");
+ }
+
+ } /* end of arc padmux2ast_i[4]_otp_power_seq_h_o[0]_inv_min*/
+
+} /* end of pin otp_power_seq_h_o[0] */
+} /* end of bus otp_power_seq_h_o */
+
+pin("clk_src_sys_en_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002156 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_en_i;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.090457, 0.087585",\
+ "0.271588, 0.219415, 0.179927, 0.162045, 0.157577",\
+ "0.363033, 0.310027, 0.270334, 0.252385, 0.247965",\
+ "0.507780, 0.454308, 0.413646, 0.395357, 0.391106",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.049669, 0.020498",\
+ "0.324602, 0.241857, 0.166855, 0.126539, 0.100040",\
+ "0.429418, 0.345854, 0.270221, 0.227986, 0.196782",\
+ "0.605833, 0.521783, 0.445878, 0.397956, 0.350944",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.674795");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_en_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.032751, 0.135173",\
+ "-0.166367, -0.123600, -0.088245, -0.037477, 0.065076",\
+ "-0.251291, -0.208679, -0.174484, -0.124115, -0.021332",\
+ "-0.373429, -0.330963, -0.299719, -0.251733, -0.152256",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.102409, 0.285045",\
+ "-0.205839, -0.131127, -0.064641, 0.027653, 0.211502",\
+ "-0.308157, -0.233980, -0.166224, -0.072248, 0.114884",\
+ "-0.470591, -0.397956, -0.329423, -0.234665, -0.046227",\
+ "-0.811364, -0.742478, -0.673228, -0.578223, -0.389923");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_en_i_hldr*/
+
+} /* end of pin clk_src_sys_en_i */
+bus ( clk_src_sys_jen_i ) {
+
+ bus_type : BUS4_type6 ;
+ direction : input ;
+
+pin("clk_src_sys_jen_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_jen_i[3];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.116868, 0.046289, 0.009123, -0.023399, -0.072101",\
+ "0.130035, 0.060315, 0.022495, -0.010308, -0.059037",\
+ "0.171476, 0.101933, 0.064692, 0.030941, -0.021156",\
+ "0.330098, 0.263569, 0.222296, 0.181197, 0.112987",\
+ "0.772581, 0.713134, 0.646673, 0.587289, 0.496722");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.164832, 0.206226, 0.283518, 0.436969, 0.781571",\
+ "0.176771, 0.218346, 0.296254, 0.450000, 0.794722",\
+ "0.219963, 0.260510, 0.337961, 0.490822, 0.833567",\
+ "0.396019, 0.435268, 0.507744, 0.654408, 0.985407",\
+ "0.931350, 0.951153, 1.007354, 1.144760, 1.468564");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.015255, 0.029491, 0.060650, 0.100375, 0.176530",\
+ "-0.028040, 0.015174, 0.046352, 0.086407, 0.163478",\
+ "-0.067695, -0.029062, 0.006032, 0.048125, 0.126390",\
+ "-0.170614, -0.143005, -0.113142, -0.070129, 0.016864",\
+ "-0.388675, -0.412783, -0.403332, -0.363654, -0.262218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.058687, -0.133819, -0.215174, -0.342668, -0.608913",\
+ "-0.070579, -0.145649, -0.226804, -0.353700, -0.618487",\
+ "-0.113780, -0.187774, -0.267897, -0.394083, -0.658063",\
+ "-0.257059, -0.339271, -0.416614, -0.539608, -0.797794",\
+ "-0.613549, -0.743897, -0.832843, -0.961101, -1.220625");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[3]_hldr*/
+
+} /* end of pin clk_src_sys_jen_i[3] */
+
+pin("clk_src_sys_jen_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_jen_i[2];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.090457, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.100962, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.138649, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.289688, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.049669, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.060195, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.100267, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.269875, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.674795");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.032751, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, 0.021950, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.015040, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.159889, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.102409, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.091894, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.053525, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.113499, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.578223, -0.389923");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[2]_hldr*/
+
+} /* end of pin clk_src_sys_jen_i[2] */
+
+pin("clk_src_sys_jen_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_jen_i[1];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.090457, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.100962, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.138649, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.289688, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.049669, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.060195, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.100267, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.269875, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.674795");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.032751, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, 0.021950, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.015040, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.159889, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.102409, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.091894, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.053525, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.113499, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.578223, -0.389923");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[1]_hldr*/
+
+} /* end of pin clk_src_sys_jen_i[1] */
+
+pin("clk_src_sys_jen_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_jen_i[0];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.116868, 0.046289, 0.009123, -0.023399, -0.072101",\
+ "0.130035, 0.060315, 0.022495, -0.010308, -0.059037",\
+ "0.171476, 0.101933, 0.064692, 0.030941, -0.021156",\
+ "0.330098, 0.263569, 0.222296, 0.181197, 0.112987",\
+ "0.772581, 0.713134, 0.646673, 0.587289, 0.496722");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.164832, 0.206226, 0.283518, 0.436969, 0.781571",\
+ "0.176771, 0.218346, 0.296254, 0.450000, 0.794722",\
+ "0.219963, 0.260510, 0.337961, 0.490822, 0.833567",\
+ "0.396019, 0.435268, 0.507744, 0.654408, 0.985407",\
+ "0.931350, 0.951153, 1.007354, 1.144760, 1.468564");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.015255, 0.029491, 0.060650, 0.100375, 0.176530",\
+ "-0.028040, 0.015174, 0.046352, 0.086407, 0.163478",\
+ "-0.067695, -0.029062, 0.006032, 0.048125, 0.126390",\
+ "-0.170614, -0.143005, -0.113142, -0.070129, 0.016864",\
+ "-0.388675, -0.412783, -0.403332, -0.363654, -0.262218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.058687, -0.133819, -0.215174, -0.342668, -0.608913",\
+ "-0.070579, -0.145649, -0.226804, -0.353700, -0.618487",\
+ "-0.113780, -0.187774, -0.267897, -0.394083, -0.658063",\
+ "-0.257059, -0.339271, -0.416614, -0.539608, -0.797794",\
+ "-0.613549, -0.743897, -0.832843, -0.961101, -1.220625");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_jen_i[0]_hldr*/
+
+} /* end of pin clk_src_sys_jen_i[0] */
+} /* end of bus clk_src_sys_jen_i */
+
+pin("clk_src_sys_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.069236 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.009042 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.261778, 1.293108, 1.361483, 1.578982, 2.139170",\
+ "1.261778, 1.293108, 1.361483, 1.578982, 2.139170",\
+ "1.261778, 1.293108, 1.361483, 1.578982, 2.139170",\
+ "1.261778, 1.293108, 1.361483, 1.578982, 2.139170",\
+ "1.261778, 1.293108, 1.361483, 1.578982, 2.139170");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.205621, 1.248652, 1.342563, 1.639882, 2.402873",\
+ "1.205621, 1.248652, 1.342563, 1.639882, 2.402873",\
+ "1.205621, 1.248652, 1.342563, 1.639882, 2.402873",\
+ "1.205621, 1.248652, 1.342563, 1.639882, 2.402873",\
+ "1.205621, 1.248652, 1.342563, 1.639882, 2.402873");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_o_fedg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.260982, 1.292312, 1.360687, 1.578186, 2.138375",\
+ "1.260982, 1.292312, 1.360687, 1.578186, 2.138375",\
+ "1.260982, 1.292312, 1.360687, 1.578186, 2.138375",\
+ "1.260982, 1.292312, 1.360687, 1.578186, 2.138375",\
+ "1.260982, 1.292312, 1.360687, 1.578186, 2.138375");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.203406, 1.246437, 1.340349, 1.637667, 2.400659",\
+ "1.203406, 1.246437, 1.340349, 1.637667, 2.400659",\
+ "1.203406, 1.246437, 1.340349, 1.637667, 2.400659",\
+ "1.203406, 1.246437, 1.340349, 1.637667, 2.400659",\
+ "1.203406, 1.246437, 1.340349, 1.637667, 2.400659");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_o_fedg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.165332, 1.196662, 1.265037, 1.482536, 2.042725",\
+ "1.244902, 1.276232, 1.344607, 1.562106, 2.122294",\
+ "1.324816, 1.356146, 1.424521, 1.642020, 2.202208",\
+ "1.454541, 1.485872, 1.554247, 1.771746, 2.331934",\
+ "1.654547, 1.685877, 1.754252, 1.971751, 2.531940");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.060530, 1.103561, 1.197473, 1.494792, 2.257783",\
+ "1.149702, 1.192733, 1.286645, 1.583964, 2.346955",\
+ "1.240645, 1.283676, 1.377588, 1.674906, 2.437898",\
+ "1.395684, 1.438715, 1.532626, 1.829945, 2.592937",\
+ "1.648565, 1.691596, 1.785508, 2.082827, 2.845818");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.149655, 1.180985, 1.249360, 1.466859, 2.027048",\
+ "1.229405, 1.260735, 1.329110, 1.546609, 2.106797",\
+ "1.304807, 1.336138, 1.404513, 1.622012, 2.182200",\
+ "1.424932, 1.456262, 1.524637, 1.742136, 2.302324",\
+ "1.608101, 1.639431, 1.707806, 1.925305, 2.485494");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "1.052743, 1.095775, 1.189686, 1.487005, 2.249996",\
+ "1.140331, 1.183362, 1.277273, 1.574592, 2.337583",\
+ "1.227129, 1.270160, 1.364072, 1.661390, 2.424382",\
+ "1.376376, 1.419407, 1.513318, 1.810637, 2.573628",\
+ "1.620792, 1.663824, 1.757735, 2.055053, 2.818045");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166",\
+ "0.321380, 0.396761, 0.561274, 1.083463, 2.426166");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_o_una_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970011.625000, 970011.687500, 970011.750000, 970011.937500, 970012.500000",\
+ "970011.750000, 970011.812500, 970011.875000, 970012.062500, 970012.625000",\
+ "970011.875000, 970011.937500, 970012.000000, 970012.187500, 970012.750000",\
+ "970011.875000, 970011.937500, 970012.000000, 970012.187500, 970012.750000",\
+ "970012.250000, 970012.312500, 970012.375000, 970012.562500, 970013.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970010.187500, 970010.250000, 970010.375000, 970010.625000, 970011.437500",\
+ "970010.312500, 970010.375000, 970010.500000, 970010.750000, 970011.562500",\
+ "970010.437500, 970010.500000, 970010.625000, 970010.875000, 970011.687500",\
+ "970010.437500, 970010.500000, 970010.625000, 970010.875000, 970011.687500",\
+ "970010.812500, 970010.875000, 970011.000000, 970011.250000, 970012.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_sys_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.692745, 0.724133, 0.792634, 1.010340, 1.570735",\
+ "0.780545, 0.811933, 0.880435, 1.098141, 1.658535",\
+ "0.861845, 0.893233, 0.961734, 1.179440, 1.739835",\
+ "0.919998, 0.951386, 1.019887, 1.237593, 1.797988",\
+ "1.228719, 1.260107, 1.328608, 1.546314, 2.106709");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.771503, 0.814271, 0.907608, 1.204488, 1.969053",\
+ "0.859377, 0.902145, 0.995481, 1.292362, 2.056926",\
+ "0.953713, 0.996481, 1.089818, 1.386698, 2.151263",\
+ "1.021471, 1.064239, 1.157575, 1.454456, 2.219020",\
+ "1.382169, 1.424937, 1.518274, 1.815154, 2.579719");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_sys_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970007.000000, 970007.000000, 970007.062500, 970007.312500, 970007.875000",\
+ "970007.125000, 970007.125000, 970007.187500, 970007.437500, 970008.000000",\
+ "970007.125000, 970007.125000, 970007.187500, 970007.437500, 970008.000000",\
+ "970007.375000, 970007.375000, 970007.437500, 970007.687500, 970008.250000",\
+ "970007.625000, 970007.625000, 970007.687500, 970007.937500, 970008.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970010.062500, 970010.125000, 970010.250000, 970010.500000, 970011.312500",\
+ "970010.187500, 970010.250000, 970010.375000, 970010.625000, 970011.437500",\
+ "970010.312500, 970010.375000, 970010.500000, 970010.750000, 970011.562500",\
+ "970010.562500, 970010.625000, 970010.750000, 970011.000000, 970011.812500",\
+ "970010.812500, 970010.875000, 970011.000000, 970011.250000, 970012.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "380001.281250, 380001.312500, 380001.375000, 380001.593750, 380002.156250",\
+ "380001.375000, 380001.406250, 380001.468750, 380001.687500, 380002.250000",\
+ "380001.437500, 380001.468750, 380001.531250, 380001.750000, 380002.312500",\
+ "380001.593750, 380001.625000, 380001.687500, 380001.906250, 380002.468750",\
+ "380001.812500, 380001.843750, 380001.906250, 380002.125000, 380002.687500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "380002.656250, 380002.718750, 380002.812500, 380003.093750, 380003.875000",\
+ "380002.750000, 380002.812500, 380002.906250, 380003.187500, 380003.968750",\
+ "380002.843750, 380002.906250, 380003.000000, 380003.281250, 380004.062500",\
+ "380003.031250, 380003.093750, 380003.187500, 380003.468750, 380004.250000",\
+ "380003.281250, 380003.343750, 380003.437500, 380003.718750, 380004.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970008.250000, 970008.250000, 970008.375000, 970008.687500, 970009.437500",\
+ "970008.375000, 970008.375000, 970008.500000, 970008.812500, 970009.562500",\
+ "970008.375000, 970008.375000, 970008.500000, 970008.812500, 970009.562500",\
+ "970008.625000, 970008.625000, 970008.750000, 970009.062500, 970009.812500",\
+ "970008.875000, 970008.875000, 970009.000000, 970009.312500, 970010.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504",\
+ "0.319241, 0.394420, 0.558621, 1.081391, 2.429504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "970011.500000, 970011.562500, 970011.625000, 970011.812500, 970012.375000",\
+ "970011.625000, 970011.687500, 970011.750000, 970011.937500, 970012.500000",\
+ "970011.750000, 970011.812500, 970011.875000, 970012.062500, 970012.625000",\
+ "970012.000000, 970012.062500, 970012.125000, 970012.312500, 970012.875000",\
+ "970012.250000, 970012.312500, 970012.375000, 970012.562500, 970013.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "380000.531250, 380000.562500, 380000.656250, 380000.937500, 380001.718750",\
+ "380000.625000, 380000.656250, 380000.750000, 380001.031250, 380001.812500",\
+ "380000.687500, 380000.718750, 380000.812500, 380001.093750, 380001.875000",\
+ "380000.843750, 380000.875000, 380000.968750, 380001.250000, 380002.031250",\
+ "380001.062500, 380001.093750, 380001.187500, 380001.468750, 380002.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166",\
+ "0.317826, 0.392935, 0.556854, 1.079626, 2.426166");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "380001.875000, 380001.906250, 380001.968750, 380002.187500, 380002.750000",\
+ "380001.968750, 380002.000000, 380002.062500, 380002.281250, 380002.843750",\
+ "380002.062500, 380002.093750, 380002.156250, 380002.375000, 380002.937500",\
+ "380002.250000, 380002.281250, 380002.343750, 380002.562500, 380003.125000",\
+ "380002.500000, 380002.531250, 380002.593750, 380002.812500, 380003.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590009.875000, 590009.937500, 590010.000000, 590010.187500, 590010.750000",\
+ "590010.000000, 590010.062500, 590010.125000, 590010.312500, 590010.875000",\
+ "590010.000000, 590010.062500, 590010.125000, 590010.312500, 590010.875000",\
+ "590010.125000, 590010.187500, 590010.250000, 590010.437500, 590011.000000",\
+ "590010.375000, 590010.437500, 590010.500000, 590010.687500, 590011.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590008.000000, 590008.000000, 590008.125000, 590008.437500, 590009.187500",\
+ "590008.125000, 590008.125000, 590008.250000, 590008.562500, 590009.312500",\
+ "590008.250000, 590008.250000, 590008.375000, 590008.687500, 590009.437500",\
+ "590008.375000, 590008.375000, 590008.500000, 590008.812500, 590009.562500",\
+ "590008.750000, 590008.750000, 590008.875000, 590009.187500, 590009.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590008.625000, 590008.625000, 590008.687500, 590008.937500, 590009.500000",\
+ "590008.625000, 590008.625000, 590008.687500, 590008.937500, 590009.500000",\
+ "590008.750000, 590008.750000, 590008.812500, 590009.062500, 590009.625000",\
+ "590008.875000, 590008.875000, 590008.937500, 590009.187500, 590009.750000",\
+ "590009.125000, 590009.125000, 590009.187500, 590009.437500, 590010.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590006.875000, 590006.937500, 590007.000000, 590007.312500, 590008.062500",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.437500, 590008.187500",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.562500, 590008.312500",\
+ "590007.250000, 590007.312500, 590007.375000, 590007.687500, 590008.437500",\
+ "590007.500000, 590007.562500, 590007.625000, 590007.937500, 590008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590008.437500, 590008.500000, 590008.625000, 590008.875000, 590009.687500",\
+ "590008.562500, 590008.625000, 590008.750000, 590009.000000, 590009.812500",\
+ "590008.562500, 590008.625000, 590008.750000, 590009.000000, 590009.812500",\
+ "590008.687500, 590008.750000, 590008.875000, 590009.125000, 590009.937500",\
+ "590008.937500, 590009.000000, 590009.125000, 590009.375000, 590010.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503",\
+ "0.319235, 0.394420, 0.558621, 1.081391, 2.429503");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590006.750000, 590006.750000, 590006.812500, 590007.062500, 590007.625000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.187500, 590007.750000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.312500, 590007.875000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.437500, 590008.000000",\
+ "590007.500000, 590007.500000, 590007.562500, 590007.812500, 590008.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878",\
+ "0.268551, 0.328271, 0.458604, 0.872597, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590008.437500, 590008.500000, 590008.625000, 590008.875000, 590009.687500",\
+ "590008.437500, 590008.500000, 590008.625000, 590008.875000, 590009.687500",\
+ "590008.562500, 590008.625000, 590008.750000, 590009.000000, 590009.812500",\
+ "590008.687500, 590008.750000, 590008.875000, 590009.125000, 590009.937500",\
+ "590008.937500, 590009.000000, 590009.125000, 590009.375000, 590010.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166",\
+ "0.319235, 0.394241, 0.557935, 1.080416, 2.426166");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "590006.750000, 590006.750000, 590006.812500, 590007.062500, 590007.625000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.187500, 590007.750000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.312500, 590007.875000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.437500, 590008.000000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.687500, 590008.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.009042, 0.011190, 0.015878, 0.030798, 0.069236");
+ values ( "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571",\
+ "0.266320, 0.325777, 0.455536, 0.867948, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_o_inv_min*/
+
+} /* end of pin clk_src_sys_o */
+
+pin("clk_src_sys_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.090214 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002720 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_sys_val_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.393375, 0.428628, 0.510890, 0.784879, 1.641015",\
+ "0.480773, 0.516025, 0.598287, 0.872277, 1.728413",\
+ "0.561620, 0.596872, 0.679134, 0.953123, 1.809259",\
+ "0.699752, 0.735005, 0.817267, 1.091256, 1.947392",\
+ "0.940296, 0.975559, 1.057603, 1.330256, 2.187617");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090897, 0.157759, 0.313710, 0.838441, 2.477149",\
+ "0.090897, 0.157759, 0.313710, 0.838441, 2.477149",\
+ "0.090897, 0.157759, 0.313710, 0.838441, 2.477149",\
+ "0.090897, 0.157759, 0.313710, 0.838441, 2.477149",\
+ "0.090897, 0.157759, 0.313710, 0.838442, 2.477149");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.432455, 0.458343, 0.517176, 0.707295, 1.304954",\
+ "0.519853, 0.545740, 0.604574, 0.794693, 1.392351",\
+ "0.600665, 0.626553, 0.685387, 0.875506, 1.473164",\
+ "0.738675, 0.764563, 0.823397, 1.013516, 1.611174",\
+ "0.958865, 0.984753, 1.043586, 1.233705, 1.831364");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074157, 0.115650, 0.215819, 0.564523, 1.651598",\
+ "0.074157, 0.115650, 0.215819, 0.564523, 1.651598",\
+ "0.074157, 0.115650, 0.215819, 0.564523, 1.651598",\
+ "0.074157, 0.115650, 0.215819, 0.564523, 1.651598",\
+ "0.074157, 0.115650, 0.215819, 0.564523, 1.651598");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.266769, 0.302004, 0.384050, 0.657034, 1.516706",\
+ "0.354958, 0.390193, 0.472239, 0.745222, 1.604895",\
+ "0.442595, 0.477830, 0.559876, 0.832859, 1.692532",\
+ "0.590863, 0.626097, 0.708144, 0.981127, 1.840799",\
+ "0.826177, 0.861412, 0.943458, 1.216442, 2.076114");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157284, 0.313129, 0.831079, 2.456895",\
+ "0.090757, 0.157284, 0.313129, 0.831079, 2.456895",\
+ "0.090757, 0.157284, 0.313129, 0.831079, 2.456895",\
+ "0.090757, 0.157284, 0.313129, 0.831079, 2.456895",\
+ "0.090757, 0.157284, 0.313129, 0.831079, 2.456895");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.303512, 0.329439, 0.388317, 0.578409, 1.176194",\
+ "0.391701, 0.417628, 0.476506, 0.666598, 1.264383",\
+ "0.479338, 0.505265, 0.564143, 0.754235, 1.352020",\
+ "0.627605, 0.653533, 0.712411, 0.902503, 1.500287",\
+ "0.853156, 0.879043, 0.937890, 1.128062, 1.724915");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072021, 0.113734, 0.214400, 0.561002, 1.650535",\
+ "0.072021, 0.113734, 0.214400, 0.561002, 1.650535",\
+ "0.072021, 0.113734, 0.214400, 0.561002, 1.650535",\
+ "0.072021, 0.113734, 0.214400, 0.561002, 1.650535",\
+ "0.072021, 0.113734, 0.214400, 0.561002, 1.650535");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.091331, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.274613, 0.222555, 0.182645, 0.164813, 0.160978",\
+ "0.311604, 0.259547, 0.219637, 0.201805, 0.197970",\
+ "0.350063, 0.298005, 0.258095, 0.240263, 0.236428",\
+ "0.426515, 0.374464, 0.334588, 0.316753, 0.312873",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.074152, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.319192, 0.236521, 0.161241, 0.120791, 0.094238",\
+ "0.350005, 0.267334, 0.192054, 0.151604, 0.125051",\
+ "0.404336, 0.321669, 0.246404, 0.205976, 0.179465",\
+ "0.493898, 0.411245, 0.336023, 0.295656, 0.269270",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.683170");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.090757, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.098980, -0.056266, -0.020568, 0.030300, 0.132735",\
+ "-0.130504, -0.087736, -0.052066, -0.001191, 0.101296",\
+ "-0.166367, -0.123600, -0.088245, -0.037477, 0.065076",\
+ "-0.251291, -0.208679, -0.174484, -0.124115, -0.021332",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.072021, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.133098, -0.057590, 0.008390, 0.100023, 0.282590",\
+ "-0.157464, -0.082691, -0.016549, 0.075171, 0.257794",\
+ "-0.205839, -0.131127, -0.064641, 0.027653, 0.211502",\
+ "-0.308157, -0.233980, -0.166224, -0.072248, 0.114884",\
+ "-0.787774, -0.712937, -0.646782, -0.554947, -0.372013");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.091331, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.404032, 0.352558, 0.318430, 0.316711, 0.351792",\
+ "0.438477, 0.387003, 0.352875, 0.351156, 0.386237",\
+ "0.480582, 0.429108, 0.394981, 0.393261, 0.428342",\
+ "0.577835, 0.526352, 0.492184, 0.490390, 0.525306",\
+ "1.061708, 1.010135, 0.975535, 0.972941, 1.006095");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.090757, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.316209, -0.269420, -0.233349, -0.183696, -0.085143",\
+ "-0.350428, -0.303639, -0.267567, -0.217915, -0.119361",\
+ "-0.392769, -0.345980, -0.309909, -0.260256, -0.161702",\
+ "-0.490012, -0.443234, -0.407200, -0.357545, -0.258944",\
+ "-0.973610, -0.926934, -0.891298, -0.841646, -0.742588");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_sys_val_o_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970010.375000, 970010.437500, 970010.500000, 970010.750000, 970011.625000",\
+ "970010.500000, 970010.562500, 970010.625000, 970010.875000, 970011.750000",\
+ "970010.625000, 970010.687500, 970010.750000, 970011.000000, 970011.875000",\
+ "970010.625000, 970010.687500, 970010.750000, 970011.000000, 970011.875000",\
+ "970011.000000, 970011.062500, 970011.125000, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970010.375000, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.500000, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.625000, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.625000, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970011.000000, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_sys_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.735494, 0.770750, 0.853002, 1.126914, 1.983374",\
+ "0.823294, 0.858551, 0.940802, 1.214714, 2.071174",\
+ "0.904594, 0.939850, 1.022102, 1.296013, 2.152474",\
+ "0.962747, 0.998003, 1.080255, 1.354167, 2.210627",\
+ "1.271467, 1.306724, 1.388975, 1.662887, 2.519347");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.709749, 0.735637, 0.794488, 0.984673, 1.581583",\
+ "0.797549, 0.823438, 0.882288, 1.072473, 1.669383",\
+ "0.878849, 0.904737, 0.963588, 1.153773, 1.750682",\
+ "0.937002, 0.962891, 1.021741, 1.211926, 1.808836",\
+ "1.245723, 1.271611, 1.330462, 1.520647, 2.117556");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_sys_val_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970007.125000, 970007.187500, 970007.250000, 970007.562500, 970008.375000",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.687500, 970008.500000",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.687500, 970008.500000",\
+ "970007.500000, 970007.562500, 970007.625000, 970007.937500, 970008.750000",\
+ "970007.750000, 970007.812500, 970007.875000, 970008.187500, 970009.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970010.250000, 970010.250000, 970010.312500, 970010.500000, 970011.125000",\
+ "970010.375000, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.500000, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.750000, 970010.750000, 970010.812500, 970011.000000, 970011.625000",\
+ "970011.000000, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "380000.500000, 380000.531250, 380000.593750, 380000.875000, 380001.750000",\
+ "380000.593750, 380000.625000, 380000.687500, 380000.968750, 380001.843750",\
+ "380000.656250, 380000.687500, 380000.750000, 380001.031250, 380001.906250",\
+ "380000.812500, 380000.843750, 380000.906250, 380001.187500, 380002.062500",\
+ "380001.031250, 380001.062500, 380001.125000, 380001.406250, 380002.281250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "380001.906250, 380001.937500, 380002.000000, 380002.187500, 380002.781250",\
+ "380002.000000, 380002.031250, 380002.093750, 380002.281250, 380002.875000",\
+ "380002.093750, 380002.125000, 380002.187500, 380002.375000, 380002.968750",\
+ "380002.281250, 380002.312500, 380002.375000, 380002.562500, 380003.156250",\
+ "380002.531250, 380002.562500, 380002.625000, 380002.812500, 380003.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970007.187500, 970007.187500, 970007.250000, 970007.437500, 970008.062500",\
+ "970007.312500, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.312500, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.562500, 970007.562500, 970007.625000, 970007.812500, 970008.437500",\
+ "970007.812500, 970007.812500, 970007.875000, 970008.062500, 970008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563923, 1.651340");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "970010.250000, 970010.312500, 970010.375000, 970010.625000, 970011.500000",\
+ "970010.375000, 970010.437500, 970010.500000, 970010.750000, 970011.625000",\
+ "970010.500000, 970010.562500, 970010.625000, 970010.875000, 970011.750000",\
+ "970010.750000, 970010.812500, 970010.875000, 970011.125000, 970012.000000",\
+ "970011.000000, 970011.062500, 970011.125000, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430",\
+ "0.091331, 0.157635, 0.313856, 0.840284, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "380000.531250, 380000.562500, 380000.625000, 380000.812500, 380001.406250",\
+ "380000.625000, 380000.656250, 380000.718750, 380000.906250, 380001.500000",\
+ "380000.687500, 380000.718750, 380000.781250, 380000.968750, 380001.562500",\
+ "380000.843750, 380000.875000, 380000.937500, 380001.125000, 380001.718750",\
+ "380001.062500, 380001.093750, 380001.156250, 380001.343750, 380001.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196",\
+ "0.072027, 0.113736, 0.214396, 0.560990, 1.651196");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "380001.937500, 380001.968750, 380002.062500, 380002.343750, 380003.187500",\
+ "380002.031250, 380002.062500, 380002.156250, 380002.437500, 380003.281250",\
+ "380002.125000, 380002.156250, 380002.250000, 380002.531250, 380003.375000",\
+ "380002.312500, 380002.343750, 380002.437500, 380002.718750, 380003.562500",\
+ "380002.562500, 380002.593750, 380002.687500, 380002.968750, 380003.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156",\
+ "0.090757, 0.157284, 0.313155, 0.830725, 2.460156");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_sys_val_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590008.625000, 590008.687500, 590008.750000, 590009.000000, 590009.875000",\
+ "590008.750000, 590008.812500, 590008.875000, 590009.125000, 590010.000000",\
+ "590008.750000, 590008.812500, 590008.875000, 590009.125000, 590010.000000",\
+ "590008.875000, 590008.937500, 590009.000000, 590009.250000, 590010.125000",\
+ "590009.125000, 590009.187500, 590009.250000, 590009.500000, 590010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590006.937500, 590006.937500, 590007.000000, 590007.187500, 590007.812500",\
+ "590007.062500, 590007.062500, 590007.125000, 590007.312500, 590007.937500",\
+ "590007.187500, 590007.187500, 590007.250000, 590007.437500, 590008.062500",\
+ "590007.312500, 590007.312500, 590007.375000, 590007.562500, 590008.187500",\
+ "590007.687500, 590007.687500, 590007.750000, 590007.937500, 590008.562500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590008.437500, 590008.437500, 590008.562500, 590008.812500, 590009.687500",\
+ "590008.437500, 590008.437500, 590008.562500, 590008.812500, 590009.687500",\
+ "590008.562500, 590008.562500, 590008.687500, 590008.937500, 590009.812500",\
+ "590008.687500, 590008.687500, 590008.812500, 590009.062500, 590009.937500",\
+ "590008.937500, 590008.937500, 590009.062500, 590009.312500, 590010.187500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590006.750000, 590006.812500, 590006.875000, 590007.062500, 590007.625000",\
+ "590006.875000, 590006.937500, 590007.000000, 590007.187500, 590007.750000",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.312500, 590007.875000",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.437500, 590008.000000",\
+ "590007.375000, 590007.437500, 590007.500000, 590007.687500, 590008.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590008.625000, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.750000, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.750000, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.875000, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.125000, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340",\
+ "0.074152, 0.115602, 0.215213, 0.563930, 1.651340");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590006.875000, 590006.937500, 590007.000000, 590007.312500, 590008.125000",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.437500, 590008.250000",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.562500, 590008.375000",\
+ "590007.250000, 590007.312500, 590007.375000, 590007.687500, 590008.500000",\
+ "590007.625000, 590007.687500, 590007.750000, 590008.062500, 590008.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430",\
+ "0.091331, 0.157635, 0.313861, 0.840307, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590008.625000, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.625000, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.750000, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.875000, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.125000, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020",\
+ "0.072111, 0.113800, 0.214396, 0.559011, 1.650020");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "590006.875000, 590006.937500, 590007.000000, 590007.312500, 590008.125000",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.437500, 590008.250000",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.562500, 590008.375000",\
+ "590007.250000, 590007.312500, 590007.375000, 590007.687500, 590008.500000",\
+ "590007.500000, 590007.562500, 590007.625000, 590007.937500, 590008.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002720, 0.005181, 0.010916, 0.030014, 0.090214");
+ values ( "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812",\
+ "0.090757, 0.157286, 0.312487, 0.829843, 2.465812");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_sys_val_o_inv_min*/
+
+} /* end of pin clk_src_sys_val_o */
+
+pin("clk_src_aon_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 4.852190 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.018084 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_aon_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.829798, 0.861406, 1.030187, 1.471304, 2.111221",\
+ "0.918104, 0.949713, 1.118494, 1.559610, 2.199528",\
+ "1.006314, 1.037922, 1.206704, 1.647820, 2.287737",\
+ "1.155623, 1.187232, 1.356013, 1.797129, 2.437046",\
+ "1.394957, 1.426565, 1.595346, 2.036462, 2.676380");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.883488, 0.912350, 1.061245, 1.451119, 2.016701",\
+ "0.970887, 0.999749, 1.148644, 1.538518, 2.104100",\
+ "1.051701, 1.080563, 1.229459, 1.619333, 2.184914",\
+ "1.189711, 1.218573, 1.367469, 1.757343, 2.322925",\
+ "1.410200, 1.439062, 1.587957, 1.977831, 2.543413");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_aon_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.829665, 0.861273, 1.030054, 1.471171, 2.111088",\
+ "0.917971, 0.949579, 1.118361, 1.559477, 2.199394",\
+ "1.006180, 1.037788, 1.206569, 1.647686, 2.287603",\
+ "1.155489, 1.187097, 1.355879, 1.796995, 2.436912",\
+ "1.394823, 1.426431, 1.595212, 2.036328, 2.676246");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.882434, 0.911296, 1.060191, 1.450065, 2.015647",\
+ "0.969833, 0.998695, 1.147590, 1.537464, 2.103046",\
+ "1.050646, 1.079508, 1.228404, 1.618278, 2.183859",\
+ "1.188651, 1.217513, 1.366409, 1.756283, 2.321865",\
+ "1.409136, 1.437999, 1.586894, 1.976768, 2.542350");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033",\
+ "0.017866, 0.065807, 0.337647, 1.043323, 2.067033");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_aon_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970010.562500, 970010.562500, 970010.750000, 970011.187500, 970011.812500",\
+ "970010.687500, 970010.687500, 970010.875000, 970011.312500, 970011.937500",\
+ "970010.812500, 970010.812500, 970011.000000, 970011.437500, 970012.062500",\
+ "970010.812500, 970010.812500, 970011.000000, 970011.437500, 970012.062500",\
+ "970011.187500, 970011.187500, 970011.375000, 970011.812500, 970012.437500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970010.375000, 970010.375000, 970010.562500, 970010.937500, 970011.500000",\
+ "970010.500000, 970010.500000, 970010.687500, 970011.062500, 970011.625000",\
+ "970010.625000, 970010.625000, 970010.812500, 970011.187500, 970011.750000",\
+ "970010.625000, 970010.625000, 970010.812500, 970011.187500, 970011.750000",\
+ "970011.000000, 970011.000000, 970011.187500, 970011.562500, 970012.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_aon_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.860464, 0.892073, 1.060854, 1.501970, 2.141887",\
+ "0.948265, 0.979873, 1.148654, 1.589771, 2.229688",\
+ "1.029564, 1.061172, 1.229954, 1.671070, 2.310987",\
+ "1.087717, 1.119326, 1.288107, 1.729223, 2.369140",\
+ "1.396438, 1.428046, 1.596828, 2.037944, 2.677861");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.970766, 0.999628, 1.148520, 1.538388, 2.103961",\
+ "1.058640, 1.087502, 1.236394, 1.626262, 2.191835",\
+ "1.152976, 1.181838, 1.330730, 1.720598, 2.286171",\
+ "1.220734, 1.249595, 1.398488, 1.788356, 2.353929",\
+ "1.581432, 1.610294, 1.759186, 2.149055, 2.714628");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_aon_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970007.187500, 970007.187500, 970007.375000, 970007.812500, 970008.437500",\
+ "970007.312500, 970007.312500, 970007.500000, 970007.937500, 970008.562500",\
+ "970007.312500, 970007.312500, 970007.500000, 970007.937500, 970008.562500",\
+ "970007.562500, 970007.562500, 970007.750000, 970008.187500, 970008.812500",\
+ "970007.812500, 970007.812500, 970008.000000, 970008.437500, 970009.062500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970010.250000, 970010.250000, 970010.437500, 970010.812500, 970011.375000",\
+ "970010.375000, 970010.375000, 970010.562500, 970010.937500, 970011.500000",\
+ "970010.500000, 970010.500000, 970010.687500, 970011.062500, 970011.625000",\
+ "970010.750000, 970010.750000, 970010.937500, 970011.312500, 970011.875000",\
+ "970011.000000, 970011.000000, 970011.187500, 970011.562500, 970012.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "380008.531250, 380008.562500, 380008.750000, 380009.187500, 380009.812500",\
+ "380008.625000, 380008.656250, 380008.843750, 380009.281250, 380009.906250",\
+ "380008.687500, 380008.718750, 380008.906250, 380009.343750, 380009.968750",\
+ "380008.843750, 380008.875000, 380009.062500, 380009.500000, 380010.125000",\
+ "380009.062500, 380009.093750, 380009.281250, 380009.718750, 380010.343750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "380007.906250, 380007.906250, 380008.062500, 380008.468750, 380009.031250",\
+ "380008.000000, 380008.000000, 380008.156250, 380008.562500, 380009.125000",\
+ "380008.093750, 380008.093750, 380008.250000, 380008.656250, 380009.218750",\
+ "380008.281250, 380008.281250, 380008.437500, 380008.843750, 380009.406250",\
+ "380008.531250, 380008.531250, 380008.687500, 380009.093750, 380009.656250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970007.437500, 970007.437500, 970007.625000, 970008.000000, 970008.562500",\
+ "970007.562500, 970007.562500, 970007.750000, 970008.125000, 970008.687500",\
+ "970007.562500, 970007.562500, 970007.750000, 970008.125000, 970008.687500",\
+ "970007.812500, 970007.812500, 970008.000000, 970008.375000, 970008.937500",\
+ "970008.062500, 970008.062500, 970008.250000, 970008.625000, 970009.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "970010.437500, 970010.437500, 970010.625000, 970011.062500, 970011.687500",\
+ "970010.562500, 970010.562500, 970010.750000, 970011.187500, 970011.812500",\
+ "970010.687500, 970010.687500, 970010.875000, 970011.312500, 970011.937500",\
+ "970010.937500, 970010.937500, 970011.125000, 970011.562500, 970012.187500",\
+ "970011.187500, 970011.187500, 970011.375000, 970011.812500, 970012.437500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "380000.750000, 380000.750000, 380000.906250, 380001.312500, 380001.875000",\
+ "380000.843750, 380000.843750, 380001.000000, 380001.406250, 380001.968750",\
+ "380000.906250, 380000.906250, 380001.062500, 380001.468750, 380002.031250",\
+ "380001.062500, 380001.062500, 380001.218750, 380001.625000, 380002.187500",\
+ "380001.281250, 380001.281250, 380001.437500, 380001.843750, 380002.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043",\
+ "0.017866, 0.065808, 0.337669, 1.043341, 2.067043");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "380002.031250, 380002.062500, 380002.250000, 380002.687500, 380003.312500",\
+ "380002.125000, 380002.156250, 380002.343750, 380002.781250, 380003.406250",\
+ "380002.218750, 380002.250000, 380002.437500, 380002.875000, 380003.500000",\
+ "380002.406250, 380002.437500, 380002.625000, 380003.062500, 380003.687500",\
+ "380002.656250, 380002.687500, 380002.875000, 380003.312500, 380003.937500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523",\
+ "0.018689, 0.076907, 0.397582, 1.240182, 2.462523");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590008.812500, 590008.812500, 590009.000000, 590009.437500, 590010.062500",\
+ "590008.937500, 590008.937500, 590009.125000, 590009.562500, 590010.187500",\
+ "590008.937500, 590008.937500, 590009.125000, 590009.562500, 590010.187500",\
+ "590009.062500, 590009.062500, 590009.250000, 590009.687500, 590010.312500",\
+ "590009.312500, 590009.312500, 590009.500000, 590009.937500, 590010.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590007.187500, 590007.187500, 590007.375000, 590007.750000, 590008.312500",\
+ "590007.312500, 590007.312500, 590007.500000, 590007.875000, 590008.437500",\
+ "590007.437500, 590007.437500, 590007.625000, 590008.000000, 590008.562500",\
+ "590007.562500, 590007.562500, 590007.750000, 590008.125000, 590008.687500",\
+ "590007.937500, 590007.937500, 590008.125000, 590008.500000, 590009.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590008.812500, 590008.812500, 590009.000000, 590009.437500, 590010.062500",\
+ "590008.812500, 590008.812500, 590009.000000, 590009.437500, 590010.062500",\
+ "590008.937500, 590008.937500, 590009.125000, 590009.562500, 590010.187500",\
+ "590009.062500, 590009.062500, 590009.250000, 590009.687500, 590010.312500",\
+ "590009.312500, 590009.312500, 590009.500000, 590009.937500, 590010.562500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590007.187500, 590007.187500, 590007.375000, 590007.750000, 590008.312500",\
+ "590007.312500, 590007.312500, 590007.500000, 590007.875000, 590008.437500",\
+ "590007.437500, 590007.437500, 590007.625000, 590008.000000, 590008.562500",\
+ "590007.562500, 590007.562500, 590007.750000, 590008.125000, 590008.687500",\
+ "590007.812500, 590007.812500, 590008.000000, 590008.375000, 590008.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590008.625000, 590008.625000, 590008.812500, 590009.187500, 590009.750000",\
+ "590008.750000, 590008.750000, 590008.937500, 590009.312500, 590009.875000",\
+ "590008.750000, 590008.750000, 590008.937500, 590009.312500, 590009.875000",\
+ "590008.875000, 590008.875000, 590009.062500, 590009.437500, 590010.000000",\
+ "590009.125000, 590009.125000, 590009.312500, 590009.687500, 590010.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039",\
+ "0.017866, 0.065807, 0.337660, 1.043334, 2.067039");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590006.937500, 590006.937500, 590007.125000, 590007.562500, 590008.187500",\
+ "590007.062500, 590007.062500, 590007.250000, 590007.687500, 590008.312500",\
+ "590007.187500, 590007.187500, 590007.375000, 590007.812500, 590008.437500",\
+ "590007.312500, 590007.312500, 590007.500000, 590007.937500, 590008.562500",\
+ "590007.687500, 590007.687500, 590007.875000, 590008.312500, 590008.937500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535",\
+ "0.018690, 0.076907, 0.397572, 1.240181, 2.462535");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590008.625000, 590008.625000, 590008.812500, 590009.187500, 590009.750000",\
+ "590008.625000, 590008.625000, 590008.812500, 590009.187500, 590009.750000",\
+ "590008.750000, 590008.750000, 590008.937500, 590009.312500, 590009.875000",\
+ "590008.875000, 590008.875000, 590009.062500, 590009.437500, 590010.000000",\
+ "590009.125000, 590009.125000, 590009.312500, 590009.687500, 590010.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040",\
+ "0.017866, 0.065808, 0.337663, 1.043336, 2.067040");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "590006.937500, 590006.937500, 590007.125000, 590007.562500, 590008.187500",\
+ "590007.062500, 590007.062500, 590007.250000, 590007.687500, 590008.312500",\
+ "590007.187500, 590007.187500, 590007.375000, 590007.812500, 590008.437500",\
+ "590007.312500, 590007.312500, 590007.500000, 590007.937500, 590008.562500",\
+ "590007.562500, 590007.562500, 590007.750000, 590008.187500, 590008.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.018084, 0.134289, 0.768982, 2.435137, 4.852190");
+ values ( "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529",\
+ "0.018689, 0.076907, 0.397577, 1.240181, 2.462529");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_o_inv_min*/
+
+} /* end of pin clk_src_aon_o */
+
+pin("clk_src_aon_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.090214 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_aon_val_o;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970010.375000, 970010.375000, 970010.500000, 970010.750000, 970011.625000",\
+ "970010.500000, 970010.500000, 970010.625000, 970010.875000, 970011.750000",\
+ "970010.625000, 970010.625000, 970010.750000, 970011.000000, 970011.875000",\
+ "970010.625000, 970010.625000, 970010.750000, 970011.000000, 970011.875000",\
+ "970011.000000, 970011.000000, 970011.125000, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_aon_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.710726, 0.747218, 0.829413, 1.103529, 1.981775",\
+ "0.798527, 0.835019, 0.917213, 1.191329, 2.069575",\
+ "0.879826, 0.916318, 0.998513, 1.272629, 2.150875",\
+ "0.937979, 0.974471, 1.056666, 1.330782, 2.209028",\
+ "1.246700, 1.283192, 1.365386, 1.639502, 2.517748");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.688713, 0.718170, 0.777854, 0.968115, 1.580205",\
+ "0.776513, 0.805970, 0.865655, 1.055915, 1.668005",\
+ "0.857813, 0.887270, 0.946954, 1.137214, 1.749305",\
+ "0.915966, 0.945423, 1.005107, 1.195368, 1.807458",\
+ "1.224687, 1.254144, 1.313828, 1.504088, 2.116179");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_aon_val_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970007.125000, 970007.125000, 970007.250000, 970007.500000, 970008.375000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.500000, 970007.500000, 970007.625000, 970007.875000, 970008.750000",\
+ "970007.750000, 970007.750000, 970007.875000, 970008.125000, 970009.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970010.187500, 970010.250000, 970010.312500, 970010.500000, 970011.125000",\
+ "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.687500, 970010.750000, 970010.812500, 970011.000000, 970011.625000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "380000.468750, 380000.500000, 380000.593750, 380000.843750, 380001.750000",\
+ "380000.562500, 380000.593750, 380000.687500, 380000.937500, 380001.843750",\
+ "380000.625000, 380000.656250, 380000.750000, 380001.000000, 380001.906250",\
+ "380000.781250, 380000.812500, 380000.906250, 380001.156250, 380002.062500",\
+ "380001.000000, 380001.031250, 380001.125000, 380001.375000, 380002.281250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "380001.906250, 380001.937500, 380002.000000, 380002.187500, 380002.781250",\
+ "380002.000000, 380002.031250, 380002.093750, 380002.281250, 380002.875000",\
+ "380002.093750, 380002.125000, 380002.187500, 380002.375000, 380002.968750",\
+ "380002.281250, 380002.312500, 380002.375000, 380002.562500, 380003.156250",\
+ "380002.531250, 380002.562500, 380002.625000, 380002.812500, 380003.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970007.187500, 970007.187500, 970007.250000, 970007.437500, 970008.062500",\
+ "970007.312500, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.312500, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.562500, 970007.562500, 970007.625000, 970007.812500, 970008.437500",\
+ "970007.812500, 970007.812500, 970007.875000, 970008.062500, 970008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536743, 1.653005");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "970010.250000, 970010.250000, 970010.375000, 970010.625000, 970011.500000",\
+ "970010.375000, 970010.375000, 970010.500000, 970010.750000, 970011.625000",\
+ "970010.500000, 970010.500000, 970010.625000, 970010.875000, 970011.750000",\
+ "970010.750000, 970010.750000, 970010.875000, 970011.125000, 970012.000000",\
+ "970011.000000, 970011.000000, 970011.125000, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799035, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "380000.500000, 380000.531250, 380000.593750, 380000.781250, 380001.406250",\
+ "380000.593750, 380000.625000, 380000.687500, 380000.875000, 380001.500000",\
+ "380000.656250, 380000.687500, 380000.750000, 380000.937500, 380001.562500",\
+ "380000.812500, 380000.843750, 380000.906250, 380001.093750, 380001.718750",\
+ "380001.031250, 380001.062500, 380001.125000, 380001.312500, 380001.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611",\
+ "0.046907, 0.088182, 0.186999, 0.533681, 1.651611");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "380001.906250, 380001.968750, 380002.031250, 380002.312500, 380003.187500",\
+ "380002.000000, 380002.062500, 380002.125000, 380002.406250, 380003.281250",\
+ "380002.093750, 380002.156250, 380002.218750, 380002.500000, 380003.375000",\
+ "380002.281250, 380002.343750, 380002.406250, 380002.687500, 380003.562500",\
+ "380002.531250, 380002.593750, 380002.656250, 380002.937500, 380003.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133",\
+ "0.051468, 0.115906, 0.271423, 0.789292, 2.460133");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_aon_val_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590008.625000, 590008.625000, 590008.750000, 590009.000000, 590009.875000",\
+ "590008.750000, 590008.750000, 590008.875000, 590009.125000, 590010.000000",\
+ "590008.750000, 590008.750000, 590008.875000, 590009.125000, 590010.000000",\
+ "590008.875000, 590008.875000, 590009.000000, 590009.250000, 590010.125000",\
+ "590009.125000, 590009.125000, 590009.250000, 590009.500000, 590010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590006.937500, 590006.937500, 590007.000000, 590007.187500, 590007.812500",\
+ "590007.062500, 590007.062500, 590007.125000, 590007.312500, 590007.937500",\
+ "590007.187500, 590007.187500, 590007.250000, 590007.437500, 590008.062500",\
+ "590007.312500, 590007.312500, 590007.375000, 590007.562500, 590008.187500",\
+ "590007.687500, 590007.687500, 590007.750000, 590007.937500, 590008.562500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590008.437500, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.437500, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.562500, 590008.562500, 590008.625000, 590008.937500, 590009.812500",\
+ "590008.687500, 590008.687500, 590008.750000, 590009.062500, 590009.937500",\
+ "590008.937500, 590008.937500, 590009.000000, 590009.312500, 590010.187500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590006.750000, 590006.750000, 590006.812500, 590007.000000, 590007.625000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.125000, 590007.750000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.250000, 590007.875000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.375000, 590008.000000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.625000, 590008.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005",\
+ "0.049199, 0.090220, 0.188113, 0.536750, 1.653005");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.625000, 590007.625000, 590007.750000, 590008.000000, 590008.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430",\
+ "0.051936, 0.116244, 0.271542, 0.799058, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439",\
+ "0.046941, 0.088258, 0.187000, 0.531185, 1.650439");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.500000, 590007.500000, 590007.625000, 590007.875000, 590008.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001189, 0.003650, 0.009385, 0.028484, 0.090214");
+ values ( "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855",\
+ "0.051557, 0.115907, 0.271016, 0.788173, 2.465855");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_aon_val_o_inv_min*/
+
+} /* end of pin clk_src_aon_val_o */
+
+pin("clk_src_io_en_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002154 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_en_i;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.090457, 0.087585",\
+ "0.271588, 0.219415, 0.179927, 0.162045, 0.157577",\
+ "0.363033, 0.310027, 0.270334, 0.252385, 0.247965",\
+ "0.507780, 0.454308, 0.413646, 0.395357, 0.391106",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.049669, 0.020498",\
+ "0.324602, 0.241857, 0.166855, 0.126539, 0.100040",\
+ "0.429418, 0.345854, 0.270221, 0.227986, 0.196782",\
+ "0.605833, 0.521783, 0.445878, 0.397956, 0.350944",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.674795");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_en_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.032751, 0.135173",\
+ "-0.166367, -0.123600, -0.088245, -0.037477, 0.065076",\
+ "-0.251291, -0.208679, -0.174484, -0.124115, -0.021332",\
+ "-0.373429, -0.330963, -0.299719, -0.251733, -0.152256",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.102409, 0.285045",\
+ "-0.205839, -0.131127, -0.064641, 0.027653, 0.211502",\
+ "-0.308157, -0.233980, -0.166224, -0.072248, 0.114884",\
+ "-0.470591, -0.397956, -0.329423, -0.234665, -0.046227",\
+ "-0.811364, -0.742478, -0.673228, -0.578223, -0.389923");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_en_i_hldr*/
+
+} /* end of pin clk_src_io_en_i */
+
+pin("clk_src_io_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.069236 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.028657 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.549102, 1.558939, 1.580409, 1.648733, 2.140488",\
+ "1.549102, 1.558939, 1.580409, 1.648733, 2.140488",\
+ "1.549102, 1.558939, 1.580409, 1.648733, 2.140488",\
+ "1.549102, 1.558939, 1.580409, 1.648733, 2.140488",\
+ "1.549102, 1.558939, 1.580409, 1.648733, 2.140488");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.576328, 1.589726, 1.618968, 1.712027, 2.381811",\
+ "1.576328, 1.589726, 1.618968, 1.712027, 2.381811",\
+ "1.576328, 1.589726, 1.618968, 1.712027, 2.381811",\
+ "1.576328, 1.589726, 1.618968, 1.712027, 2.381811",\
+ "1.576328, 1.589726, 1.618968, 1.712027, 2.381811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_o_fedg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.548301, 1.558138, 1.579608, 1.647932, 2.139687",\
+ "1.548301, 1.558138, 1.579608, 1.647932, 2.139687",\
+ "1.548301, 1.558138, 1.579608, 1.647932, 2.139687",\
+ "1.548301, 1.558138, 1.579608, 1.647932, 2.139687",\
+ "1.548301, 1.558138, 1.579608, 1.647932, 2.139687");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.574098, 1.587497, 1.616739, 1.709798, 2.379581",\
+ "1.574098, 1.587497, 1.616739, 1.709798, 2.379581",\
+ "1.574098, 1.587497, 1.616739, 1.709798, 2.379581",\
+ "1.574098, 1.587497, 1.616739, 1.709798, 2.379581",\
+ "1.574098, 1.587497, 1.616739, 1.709798, 2.379581");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_o_fedg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.452656, 1.462494, 1.483963, 1.552287, 2.044042",\
+ "1.532226, 1.542063, 1.563532, 1.631856, 2.123611",\
+ "1.612140, 1.621977, 1.643447, 1.711771, 2.203526",\
+ "1.741866, 1.751703, 1.773172, 1.841496, 2.333251",\
+ "1.941871, 1.951709, 1.973178, 2.041502, 2.533257");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.431237, 1.444636, 1.473878, 1.566937, 2.236720",\
+ "1.520409, 1.533808, 1.563050, 1.656109, 2.325892",\
+ "1.611352, 1.624751, 1.653993, 1.747052, 2.416835",\
+ "1.766391, 1.779789, 1.809031, 1.902090, 2.571874",\
+ "2.019272, 2.032671, 2.061913, 2.154972, 2.824755");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044609, 1.208373, 2.387050");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.436974, 1.446811, 1.468281, 1.536605, 2.028360",\
+ "1.516723, 1.526561, 1.548030, 1.616354, 2.108109",\
+ "1.592126, 1.601964, 1.623433, 1.691757, 2.183512",\
+ "1.712250, 1.722088, 1.743557, 1.811881, 2.303636",\
+ "1.895420, 1.905257, 1.926727, 1.995051, 2.486806");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.423435, 1.436834, 1.466076, 1.559135, 2.228919",\
+ "1.511023, 1.524422, 1.553663, 1.646723, 2.316506",\
+ "1.597821, 1.611220, 1.640462, 1.733521, 2.403305",\
+ "1.747068, 1.760467, 1.789708, 1.882767, 2.552551",\
+ "1.991484, 2.004883, 2.034125, 2.127184, 2.796968");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050",\
+ "0.969570, 0.993149, 1.044608, 1.208373, 2.387050");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_o_una_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970011.937500, 970011.937500, 970011.937500, 970012.062500, 970012.500000",\
+ "970012.062500, 970012.062500, 970012.062500, 970012.187500, 970012.625000",\
+ "970012.187500, 970012.187500, 970012.187500, 970012.312500, 970012.750000",\
+ "970012.187500, 970012.187500, 970012.187500, 970012.312500, 970012.750000",\
+ "970012.562500, 970012.562500, 970012.562500, 970012.687500, 970013.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970010.562500, 970010.625000, 970010.625000, 970010.687500, 970011.375000",\
+ "970010.687500, 970010.750000, 970010.750000, 970010.812500, 970011.500000",\
+ "970010.812500, 970010.875000, 970010.875000, 970010.937500, 970011.625000",\
+ "970010.812500, 970010.875000, 970010.875000, 970010.937500, 970011.625000",\
+ "970011.187500, 970011.250000, 970011.250000, 970011.312500, 970012.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_io_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.979131, 0.988972, 1.010450, 1.078799, 1.570735",\
+ "1.066932, 1.076773, 1.098250, 1.166599, 1.658535",\
+ "1.148231, 1.158072, 1.179549, 1.247899, 1.739835",\
+ "1.206384, 1.216226, 1.237703, 1.306052, 1.797988",\
+ "1.515105, 1.524946, 1.546423, 1.614772, 2.106709");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "1.139635, 1.153062, 1.182364, 1.275615, 1.946779",\
+ "1.227509, 1.240935, 1.270237, 1.363488, 2.034653",\
+ "1.321845, 1.335272, 1.364574, 1.457825, 2.128989",\
+ "1.389603, 1.403029, 1.432331, 1.525582, 2.196747",\
+ "1.750301, 1.763728, 1.793030, 1.886281, 2.557446");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_io_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970007.250000, 970007.250000, 970007.312500, 970007.375000, 970007.875000",\
+ "970007.375000, 970007.375000, 970007.437500, 970007.500000, 970008.000000",\
+ "970007.375000, 970007.375000, 970007.437500, 970007.500000, 970008.000000",\
+ "970007.625000, 970007.625000, 970007.687500, 970007.750000, 970008.250000",\
+ "970007.875000, 970007.875000, 970007.937500, 970008.000000, 970008.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970010.437500, 970010.500000, 970010.500000, 970010.562500, 970011.250000",\
+ "970010.562500, 970010.625000, 970010.625000, 970010.687500, 970011.375000",\
+ "970010.687500, 970010.750000, 970010.750000, 970010.812500, 970011.500000",\
+ "970010.937500, 970011.000000, 970011.000000, 970011.062500, 970011.750000",\
+ "970011.187500, 970011.250000, 970011.250000, 970011.312500, 970012.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "380001.562500, 380001.593750, 380001.593750, 380001.687500, 380002.156250",\
+ "380001.656250, 380001.687500, 380001.687500, 380001.781250, 380002.250000",\
+ "380001.718750, 380001.750000, 380001.750000, 380001.843750, 380002.312500",\
+ "380001.875000, 380001.906250, 380001.906250, 380002.000000, 380002.468750",\
+ "380002.093750, 380002.125000, 380002.125000, 380002.218750, 380002.687500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "380003.031250, 380003.062500, 380003.093750, 380003.187500, 380003.843750",\
+ "380003.125000, 380003.156250, 380003.187500, 380003.281250, 380003.937500",\
+ "380003.218750, 380003.250000, 380003.281250, 380003.375000, 380004.031250",\
+ "380003.406250, 380003.437500, 380003.468750, 380003.562500, 380004.218750",\
+ "380003.656250, 380003.687500, 380003.718750, 380003.812500, 380004.468750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970008.625000, 970008.625000, 970008.625000, 970008.750000, 970009.437500",\
+ "970008.750000, 970008.750000, 970008.750000, 970008.875000, 970009.562500",\
+ "970008.750000, 970008.750000, 970008.750000, 970008.875000, 970009.562500",\
+ "970009.000000, 970009.000000, 970009.000000, 970009.125000, 970009.812500",\
+ "970009.250000, 970009.250000, 970009.250000, 970009.375000, 970010.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390203");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "970011.812500, 970011.812500, 970011.812500, 970011.937500, 970012.375000",\
+ "970011.937500, 970011.937500, 970011.937500, 970012.062500, 970012.500000",\
+ "970012.062500, 970012.062500, 970012.062500, 970012.187500, 970012.625000",\
+ "970012.312500, 970012.312500, 970012.312500, 970012.437500, 970012.875000",\
+ "970012.562500, 970012.562500, 970012.562500, 970012.687500, 970013.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "380000.875000, 380000.906250, 380000.937500, 380001.031250, 380001.687500",\
+ "380000.968750, 380001.000000, 380001.031250, 380001.125000, 380001.781250",\
+ "380001.031250, 380001.062500, 380001.093750, 380001.187500, 380001.843750",\
+ "380001.187500, 380001.218750, 380001.250000, 380001.343750, 380002.000000",\
+ "380001.406250, 380001.437500, 380001.468750, 380001.562500, 380002.218750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050",\
+ "0.965198, 0.988888, 1.040589, 1.205123, 2.387050");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "380002.156250, 380002.187500, 380002.187500, 380002.281250, 380002.750000",\
+ "380002.250000, 380002.281250, 380002.281250, 380002.375000, 380002.843750",\
+ "380002.343750, 380002.375000, 380002.375000, 380002.468750, 380002.937500",\
+ "380002.531250, 380002.562500, 380002.562500, 380002.656250, 380003.125000",\
+ "380002.781250, 380002.812500, 380002.812500, 380002.906250, 380003.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590010.187500, 590010.187500, 590010.187500, 590010.312500, 590010.750000",\
+ "590010.312500, 590010.312500, 590010.312500, 590010.437500, 590010.875000",\
+ "590010.312500, 590010.312500, 590010.312500, 590010.437500, 590010.875000",\
+ "590010.437500, 590010.437500, 590010.437500, 590010.562500, 590011.000000",\
+ "590010.687500, 590010.687500, 590010.687500, 590010.812500, 590011.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590008.375000, 590008.375000, 590008.375000, 590008.500000, 590009.187500",\
+ "590008.500000, 590008.500000, 590008.500000, 590008.625000, 590009.312500",\
+ "590008.625000, 590008.625000, 590008.625000, 590008.750000, 590009.437500",\
+ "590008.750000, 590008.750000, 590008.750000, 590008.875000, 590009.562500",\
+ "590009.125000, 590009.125000, 590009.125000, 590009.250000, 590009.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590008.875000, 590008.875000, 590008.937500, 590009.000000, 590009.500000",\
+ "590008.875000, 590008.875000, 590008.937500, 590009.000000, 590009.500000",\
+ "590009.000000, 590009.000000, 590009.062500, 590009.125000, 590009.625000",\
+ "590009.125000, 590009.125000, 590009.187500, 590009.250000, 590009.750000",\
+ "590009.375000, 590009.375000, 590009.437500, 590009.500000, 590010.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590007.250000, 590007.250000, 590007.312500, 590007.375000, 590008.062500",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.500000, 590008.187500",\
+ "590007.500000, 590007.500000, 590007.562500, 590007.625000, 590008.312500",\
+ "590007.625000, 590007.625000, 590007.687500, 590007.750000, 590008.437500",\
+ "590007.875000, 590007.875000, 590007.937500, 590008.000000, 590008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590008.812500, 590008.875000, 590008.875000, 590008.937500, 590009.625000",\
+ "590008.937500, 590009.000000, 590009.000000, 590009.062500, 590009.750000",\
+ "590008.937500, 590009.000000, 590009.000000, 590009.062500, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.125000, 590009.187500, 590009.875000",\
+ "590009.312500, 590009.375000, 590009.375000, 590009.437500, 590010.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202",\
+ "0.967112, 0.990771, 1.042405, 1.206725, 2.390202");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590007.000000, 590007.000000, 590007.062500, 590007.125000, 590007.625000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.250000, 590007.750000",\
+ "590007.250000, 590007.250000, 590007.312500, 590007.375000, 590007.875000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.500000, 590008.000000",\
+ "590007.750000, 590007.750000, 590007.812500, 590007.875000, 590008.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878",\
+ "0.813271, 0.831978, 0.872805, 1.002733, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590008.812500, 590008.875000, 590008.875000, 590008.937500, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.875000, 590008.937500, 590009.625000",\
+ "590008.937500, 590009.000000, 590009.000000, 590009.062500, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.125000, 590009.187500, 590009.875000",\
+ "590009.312500, 590009.375000, 590009.375000, 590009.437500, 590010.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050",\
+ "0.965982, 0.989673, 1.041377, 1.205920, 2.387050");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "590007.000000, 590007.000000, 590007.062500, 590007.125000, 590007.625000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.250000, 590007.750000",\
+ "590007.250000, 590007.250000, 590007.312500, 590007.375000, 590007.875000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.500000, 590008.000000",\
+ "590007.625000, 590007.625000, 590007.687500, 590007.750000, 590008.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028657, 0.029332, 0.030805, 0.035494, 0.069236");
+ values ( "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571",\
+ "0.808825, 0.827468, 0.868155, 0.997637, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_o_inv_min*/
+
+} /* end of pin clk_src_io_o */
+
+pin("clk_src_io_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.090214 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_val_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.349435, 0.390046, 0.472189, 0.746558, 1.641427",\
+ "0.436833, 0.477444, 0.559587, 0.833956, 1.728824",\
+ "0.517679, 0.558291, 0.640433, 0.914803, 1.809671",\
+ "0.655812, 0.696423, 0.778566, 1.052935, 1.947804",\
+ "0.895822, 0.936589, 1.018755, 1.291518, 2.187617");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.023045, 0.083902, 0.239677, 0.764755, 2.477069",\
+ "0.023045, 0.083902, 0.239677, 0.764755, 2.477069",\
+ "0.023045, 0.083902, 0.239677, 0.764755, 2.477069",\
+ "0.023045, 0.083902, 0.239677, 0.764755, 2.477069",\
+ "0.023045, 0.083902, 0.239677, 0.764756, 2.477069");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.392641, 0.430353, 0.490673, 0.680876, 1.305538",\
+ "0.480039, 0.517751, 0.578071, 0.768273, 1.392936",\
+ "0.560851, 0.598563, 0.658884, 0.849086, 1.473748",\
+ "0.698861, 0.736574, 0.796894, 0.987096, 1.611758",\
+ "0.919051, 0.956763, 1.017083, 1.207286, 1.831948");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028953, 0.070788, 0.167469, 0.516472, 1.652650",\
+ "0.028953, 0.070788, 0.167469, 0.516472, 1.652650",\
+ "0.028953, 0.070788, 0.167469, 0.516472, 1.652650",\
+ "0.028953, 0.070788, 0.167469, 0.516472, 1.652650",\
+ "0.028953, 0.070788, 0.167469, 0.516472, 1.652650");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.222488, 0.262832, 0.344930, 0.617962, 1.516487",\
+ "0.310677, 0.351020, 0.433119, 0.706150, 1.604676",\
+ "0.398314, 0.438657, 0.520756, 0.793787, 1.692313",\
+ "0.546582, 0.586925, 0.669023, 0.942055, 1.840581",\
+ "0.781897, 0.822240, 0.904338, 1.177370, 2.075895");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021529, 0.083764, 0.238778, 0.757629, 2.456834",\
+ "0.021529, 0.083764, 0.238778, 0.757629, 2.456834",\
+ "0.021529, 0.083764, 0.238778, 0.757629, 2.456834",\
+ "0.021529, 0.083764, 0.238778, 0.757629, 2.456834",\
+ "0.021529, 0.083764, 0.238778, 0.757629, 2.456834");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.263406, 0.301157, 0.361570, 0.551735, 1.176520",\
+ "0.351595, 0.389345, 0.449758, 0.639924, 1.264709",\
+ "0.439232, 0.476982, 0.537395, 0.727561, 1.352346",\
+ "0.587500, 0.625250, 0.685663, 0.875828, 1.500613",\
+ "0.814247, 0.851409, 0.911729, 1.102035, 1.725865");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025912, 0.068635, 0.165828, 0.512808, 1.651582",\
+ "0.025912, 0.068635, 0.165828, 0.512808, 1.651582",\
+ "0.025912, 0.068635, 0.165828, 0.512808, 1.651582",\
+ "0.025912, 0.068635, 0.165828, 0.512808, 1.651582",\
+ "0.025912, 0.068635, 0.165828, 0.512808, 1.651582");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_val_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.312500, 970010.375000, 970010.437500, 970010.750000, 970011.625000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.875000, 970011.750000",\
+ "970010.562500, 970010.625000, 970010.687500, 970011.000000, 970011.875000",\
+ "970010.562500, 970010.625000, 970010.687500, 970011.000000, 970011.875000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_io_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.691562, 0.732168, 0.814319, 1.088582, 1.983787",\
+ "0.779362, 0.819968, 0.902120, 1.176383, 2.071587",\
+ "0.860662, 0.901268, 0.983419, 1.257682, 2.152886",\
+ "0.918815, 0.959421, 1.041572, 1.315835, 2.211040",\
+ "1.227535, 1.268142, 1.350293, 1.624556, 2.519760");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.670852, 0.708006, 0.768329, 0.958648, 1.582536",\
+ "0.758652, 0.795807, 0.856129, 1.046448, 1.670336",\
+ "0.839952, 0.877106, 0.937428, 1.127748, 1.751636",\
+ "0.898105, 0.935259, 0.995582, 1.185901, 1.809789",\
+ "1.206825, 1.243980, 1.304302, 1.494621, 2.118509");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_io_val_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970007.125000, 970007.125000, 970007.250000, 970007.500000, 970008.375000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.500000, 970007.500000, 970007.625000, 970007.875000, 970008.750000",\
+ "970007.750000, 970007.750000, 970007.875000, 970008.125000, 970009.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.187500, 970010.250000, 970010.312500, 970010.500000, 970011.125000",\
+ "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.687500, 970010.750000, 970010.812500, 970011.000000, 970011.625000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380000.437500, 380000.500000, 380000.562500, 380000.843750, 380001.750000",\
+ "380000.531250, 380000.593750, 380000.656250, 380000.937500, 380001.843750",\
+ "380000.593750, 380000.656250, 380000.718750, 380001.000000, 380001.906250",\
+ "380000.750000, 380000.812500, 380000.875000, 380001.156250, 380002.062500",\
+ "380000.968750, 380001.031250, 380001.093750, 380001.375000, 380002.281250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380001.875000, 380001.906250, 380001.968750, 380002.156250, 380002.781250",\
+ "380001.968750, 380002.000000, 380002.062500, 380002.250000, 380002.875000",\
+ "380002.062500, 380002.093750, 380002.156250, 380002.343750, 380002.968750",\
+ "380002.250000, 380002.281250, 380002.343750, 380002.531250, 380003.156250",\
+ "380002.500000, 380002.531250, 380002.593750, 380002.781250, 380003.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970007.125000, 970007.187500, 970007.250000, 970007.437500, 970008.062500",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.500000, 970007.562500, 970007.625000, 970007.812500, 970008.437500",\
+ "970007.750000, 970007.812500, 970007.875000, 970008.062500, 970008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515896, 1.652424");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.187500, 970010.250000, 970010.312500, 970010.625000, 970011.500000",\
+ "970010.312500, 970010.375000, 970010.437500, 970010.750000, 970011.625000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.875000, 970011.750000",\
+ "970010.687500, 970010.750000, 970010.812500, 970011.125000, 970012.000000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430",\
+ "0.022870, 0.084359, 0.238855, 0.766786, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380000.500000, 380000.531250, 380000.593750, 380000.781250, 380001.406250",\
+ "380000.593750, 380000.625000, 380000.687500, 380000.875000, 380001.500000",\
+ "380000.656250, 380000.687500, 380000.750000, 380000.937500, 380001.562500",\
+ "380000.812500, 380000.843750, 380000.906250, 380001.093750, 380001.718750",\
+ "380001.031250, 380001.062500, 380001.125000, 380001.312500, 380001.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262",\
+ "0.025902, 0.068641, 0.165825, 0.512797, 1.652262");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380001.906250, 380001.937500, 380002.031250, 380002.281250, 380003.187500",\
+ "380002.000000, 380002.031250, 380002.125000, 380002.375000, 380003.281250",\
+ "380002.093750, 380002.125000, 380002.218750, 380002.468750, 380003.375000",\
+ "380002.281250, 380002.312500, 380002.406250, 380002.656250, 380003.562500",\
+ "380002.531250, 380002.562500, 380002.656250, 380002.906250, 380003.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111",\
+ "0.021561, 0.083764, 0.238778, 0.757109, 2.460111");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_io_val_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590009.000000, 590009.875000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.125000, 590010.000000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.125000, 590010.000000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.250000, 590010.125000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.500000, 590010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.937500, 590007.000000, 590007.187500, 590007.812500",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.312500, 590007.937500",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.437500, 590008.062500",\
+ "590007.250000, 590007.312500, 590007.375000, 590007.562500, 590008.187500",\
+ "590007.625000, 590007.687500, 590007.750000, 590007.937500, 590008.562500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.375000, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.375000, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.500000, 590008.562500, 590008.625000, 590008.937500, 590009.812500",\
+ "590008.625000, 590008.687500, 590008.750000, 590009.062500, 590009.937500",\
+ "590008.875000, 590008.937500, 590009.000000, 590009.312500, 590010.187500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.750000, 590006.750000, 590006.812500, 590007.000000, 590007.625000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.125000, 590007.750000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.250000, 590007.875000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.375000, 590008.000000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.625000, 590008.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424",\
+ "0.028495, 0.070786, 0.167370, 0.515903, 1.652424");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.625000, 590007.625000, 590007.750000, 590008.000000, 590008.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430",\
+ "0.022871, 0.084359, 0.238855, 0.766810, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078",\
+ "0.026015, 0.068726, 0.165865, 0.510718, 1.651078");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.500000, 590007.500000, 590007.625000, 590007.875000, 590008.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788",\
+ "0.022032, 0.083764, 0.238625, 0.755849, 2.465788");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_io_val_o_inv_min*/
+
+} /* end of pin clk_src_io_val_o */
+bus ( clk_src_io_48m_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("clk_src_io_48m_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_48m_o[3];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[3]_redg_min*/
+
+} /* end of pin clk_src_io_48m_o[3] */
+
+pin("clk_src_io_48m_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_48m_o[2];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[2]_redg_min*/
+
+} /* end of pin clk_src_io_48m_o[2] */
+
+pin("clk_src_io_48m_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_48m_o[1];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[1]_redg_min*/
+
+} /* end of pin clk_src_io_48m_o[1] */
+
+pin("clk_src_io_48m_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_io_48m_o[0];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_io_48m_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_clk_src_io_48m_o[0]_redg_min*/
+
+} /* end of pin clk_src_io_48m_o[0] */
+} /* end of bus clk_src_io_48m_o */
+
+pin("usb_ref_pulse_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000498 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_ref_pulse_i;
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.601598, 0.562432, 0.511802, 0.512897, 0.526214",\
+ "0.685611, 0.646445, 0.595815, 0.596911, 0.610227",\
+ "0.776643, 0.737477, 0.686847, 0.687943, 0.701259",\
+ "0.941188, 0.902022, 0.851392, 0.852488, 0.865804",\
+ "1.218007, 1.178841, 1.128211, 1.129307, 1.142623");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.502275, 0.444594, 0.389492, 0.390588, 0.403904",\
+ "0.590200, 0.532519, 0.477417, 0.478513, 0.491829",\
+ "0.690598, 0.632917, 0.577816, 0.578911, 0.592227",\
+ "0.875082, 0.817401, 0.762299, 0.763395, 0.776711",\
+ "1.192023, 1.134342, 1.079240, 1.080336, 1.093652");
+ }
+
+ } /* end of arc clk_ast_usb_i_usb_ref_pulse_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.289933, -0.256850, -0.198215, -0.184587, -0.018969",\
+ "-0.373947, -0.340864, -0.282229, -0.268602, -0.102983",\
+ "-0.464983, -0.431900, -0.373265, -0.359637, -0.194019",\
+ "-0.629535, -0.596452, -0.537817, -0.524189, -0.358571",\
+ "-0.906192, -0.873109, -0.814474, -0.800846, -0.635228");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.244346, -0.193347, -0.096886, -0.078739, 0.141805",\
+ "-0.332296, -0.281297, -0.184836, -0.166688, 0.053856",\
+ "-0.432681, -0.381682, -0.285221, -0.267073, -0.046529",\
+ "-0.616949, -0.565951, -0.469489, -0.451342, -0.230798",\
+ "-0.933995, -0.882996, -0.786535, -0.768387, -0.547843");
+ }
+
+ } /* end of arc clk_ast_usb_i_usb_ref_pulse_i_hldr*/
+
+} /* end of pin usb_ref_pulse_i */
+
+pin("usb_ref_val_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000622 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_ref_val_i;
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.572947, 0.533781, 0.483152, 0.484247, 0.497563",\
+ "0.655514, 0.616348, 0.565718, 0.566814, 0.580130",\
+ "0.734317, 0.695151, 0.644522, 0.645617, 0.658933",\
+ "0.870061, 0.830896, 0.780266, 0.781361, 0.794677",\
+ "1.084318, 1.045152, 0.994522, 0.995618, 1.008934");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.471556, 0.413875, 0.358773, 0.359869, 0.373185",\
+ "0.557541, 0.499860, 0.444758, 0.445854, 0.459170",\
+ "0.648123, 0.590443, 0.535341, 0.536436, 0.549753",\
+ "0.811397, 0.753716, 0.698614, 0.699710, 0.713026",\
+ "1.086303, 1.028622, 0.973521, 0.974616, 0.987932");
+ }
+
+ } /* end of arc clk_ast_usb_i_usb_ref_val_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.261299, -0.228217, -0.169581, -0.155962, 0.009554",\
+ "-0.343866, -0.310783, -0.252148, -0.238528, -0.073013",\
+ "-0.422669, -0.389587, -0.330951, -0.317332, -0.151816",\
+ "-0.558414, -0.525331, -0.466695, -0.453076, -0.287561",\
+ "-0.772670, -0.739587, -0.680952, -0.667332, -0.501817");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.213704, -0.162701, -0.066223, -0.048077, 0.172450",\
+ "-0.299689, -0.248686, -0.152209, -0.134063, 0.086465",\
+ "-0.390272, -0.339269, -0.242791, -0.224645, -0.004118",\
+ "-0.553545, -0.502542, -0.406065, -0.387919, -0.167392",\
+ "-0.828451, -0.777448, -0.680971, -0.662825, -0.442298");
+ }
+
+ } /* end of arc clk_ast_usb_i_usb_ref_val_i_hldr*/
+
+} /* end of pin usb_ref_val_i */
+
+pin("clk_src_usb_en_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001677 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_usb_en_i;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.090457, 0.087585",\
+ "0.271588, 0.219415, 0.179927, 0.162045, 0.157577",\
+ "0.363033, 0.310027, 0.270334, 0.252385, 0.247965",\
+ "0.507780, 0.454308, 0.413646, 0.395357, 0.391106",\
+ "0.811131, 0.757315, 0.714144, 0.694969, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.049669, 0.020498",\
+ "0.324602, 0.241857, 0.166855, 0.126539, 0.100040",\
+ "0.429418, 0.345854, 0.270221, 0.227986, 0.196782",\
+ "0.605833, 0.521783, 0.445878, 0.397956, 0.350944",\
+ "0.983325, 0.898854, 0.822917, 0.761117, 0.674795");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_en_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.032751, 0.135173",\
+ "-0.166367, -0.123600, -0.088245, -0.037477, 0.065076",\
+ "-0.251291, -0.208679, -0.174484, -0.124115, -0.021332",\
+ "-0.373429, -0.330963, -0.299719, -0.251733, -0.152256",\
+ "-0.620310, -0.578080, -0.553843, -0.512151, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.102409, 0.285045",\
+ "-0.205839, -0.131127, -0.064641, 0.027653, 0.211502",\
+ "-0.308157, -0.233980, -0.166224, -0.072248, 0.114884",\
+ "-0.470591, -0.397956, -0.329423, -0.234665, -0.046227",\
+ "-0.811364, -0.742478, -0.673228, -0.578223, -0.389923");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_en_i_hldr*/
+
+} /* end of pin clk_src_usb_en_i */
+
+pin("clk_src_usb_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.069236 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_usb_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.737872, 1.770095, 1.839437, 2.057034, 2.749000",\
+ "1.737872, 1.770095, 1.839437, 2.057034, 2.749000",\
+ "1.737872, 1.770095, 1.839437, 2.057034, 2.749000",\
+ "1.737872, 1.770095, 1.839437, 2.057034, 2.749000",\
+ "1.737872, 1.770095, 1.839437, 2.057034, 2.749000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.568604, 1.612346, 1.706142, 2.005007, 2.947481",\
+ "1.568604, 1.612346, 1.706142, 2.005007, 2.947481",\
+ "1.568604, 1.612346, 1.706142, 2.005007, 2.947481",\
+ "1.568604, 1.612346, 1.706142, 2.005007, 2.947481",\
+ "1.568604, 1.612346, 1.706142, 2.005007, 2.947481");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_fedg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : falling_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.093582, 1.125805, 1.195148, 1.412745, 2.104710",\
+ "1.093582, 1.125805, 1.195148, 1.412745, 2.104710",\
+ "1.093582, 1.125805, 1.195148, 1.412745, 2.104710",\
+ "1.093582, 1.125805, 1.195148, 1.412745, 2.104710",\
+ "1.093582, 1.125805, 1.195148, 1.412745, 2.104710");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.010551, 1.054292, 1.148088, 1.446953, 2.389427",\
+ "1.010551, 1.054292, 1.148088, 1.446953, 2.389427",\
+ "1.010551, 1.054292, 1.148088, 1.446953, 2.389427",\
+ "1.010551, 1.054292, 1.148088, 1.446953, 2.389427",\
+ "1.010551, 1.054292, 1.148088, 1.446953, 2.389427");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_fedg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.101180, 1.133403, 1.202745, 1.420342, 2.112307",\
+ "1.189325, 1.221548, 1.290891, 1.508488, 2.200453",\
+ "1.285347, 1.317570, 1.386912, 1.604509, 2.296474",\
+ "1.453311, 1.485534, 1.554876, 1.772473, 2.464438",\
+ "1.727352, 1.759575, 1.828917, 2.046515, 2.738480");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.029003, 1.072744, 1.166540, 1.465405, 2.407880",\
+ "1.116853, 1.160595, 1.254391, 1.553256, 2.495730",\
+ "1.198296, 1.242037, 1.335833, 1.634698, 2.577173",\
+ "1.337780, 1.381521, 1.475317, 1.774182, 2.716657",\
+ "1.565882, 1.609623, 1.703419, 2.002285, 2.944759");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.100277, 1.132500, 1.201842, 1.419439, 2.111404",\
+ "1.188403, 1.220626, 1.289968, 1.507565, 2.199530",\
+ "1.284444, 1.316668, 1.386010, 1.603607, 2.295572",\
+ "1.452407, 1.484630, 1.553972, 1.771569, 2.463535",\
+ "1.726368, 1.758591, 1.827933, 2.045531, 2.737496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.026546, 1.070287, 1.164084, 1.462948, 2.405423",\
+ "1.114365, 1.158106, 1.251902, 1.550767, 2.493242",\
+ "1.195575, 1.239316, 1.333112, 1.631977, 2.574452",\
+ "1.335306, 1.379047, 1.472843, 1.771708, 2.714183",\
+ "1.563376, 1.607117, 1.700913, 1.999778, 2.942253");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.641426, 1.673649, 1.742991, 1.960589, 2.652554",\
+ "1.720995, 1.753218, 1.822561, 2.040158, 2.732123",\
+ "1.800790, 1.833013, 1.902355, 2.119953, 2.811918",\
+ "1.930632, 1.962856, 2.032198, 2.249795, 2.941760",\
+ "2.130731, 2.162954, 2.232296, 2.449894, 3.141859");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017599, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.423514, 1.467255, 1.561051, 1.859916, 2.802391",\
+ "1.512686, 1.556427, 1.650223, 1.949089, 2.891563",\
+ "1.603640, 1.647381, 1.741178, 2.040043, 2.982517",\
+ "1.758735, 1.802476, 1.896272, 2.195137, 3.137612",\
+ "2.011581, 2.055323, 2.149119, 2.447984, 3.390458");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.625646, 1.657869, 1.727212, 1.944809, 2.636774",\
+ "1.705396, 1.737619, 1.806961, 2.024558, 2.716523",\
+ "1.780640, 1.812864, 1.882206, 2.099803, 2.791768",\
+ "1.900872, 1.933095, 2.002438, 2.220035, 2.912000",\
+ "2.084163, 2.116387, 2.185729, 2.403326, 3.095291");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "1.415430, 1.459171, 1.552967, 1.851832, 2.794307",\
+ "1.503017, 1.546759, 1.640555, 1.939419, 2.881894",\
+ "1.589827, 1.633568, 1.727364, 2.026229, 2.968703",\
+ "1.739106, 1.782847, 1.876643, 2.175508, 3.117983",\
+ "1.983528, 2.027269, 2.121065, 2.419930, 3.362405");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935",\
+ "0.020388, 0.096008, 0.262833, 0.786379, 2.444935");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_o_una_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970012.125000, 970012.187500, 970012.250000, 970012.437500, 970013.125000",\
+ "970012.250000, 970012.312500, 970012.375000, 970012.562500, 970013.250000",\
+ "970012.375000, 970012.437500, 970012.500000, 970012.687500, 970013.375000",\
+ "970012.375000, 970012.437500, 970012.500000, 970012.687500, 970013.375000",\
+ "970012.750000, 970012.812500, 970012.875000, 970013.062500, 970013.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970010.062500, 970010.062500, 970010.187500, 970010.500000, 970011.437500",\
+ "970010.187500, 970010.187500, 970010.312500, 970010.625000, 970011.562500",\
+ "970010.312500, 970010.312500, 970010.437500, 970010.750000, 970011.687500",\
+ "970010.312500, 970010.312500, 970010.437500, 970010.750000, 970011.687500",\
+ "970010.687500, 970010.687500, 970010.812500, 970011.125000, 970012.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_usb_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.559788, 0.592011, 0.660516, 0.878515, 1.570735",\
+ "0.647589, 0.679811, 0.748316, 0.966316, 1.658535",\
+ "0.728888, 0.761111, 0.829615, 1.047615, 1.739835",\
+ "0.787041, 0.819264, 0.887769, 1.105768, 1.797988",\
+ "1.095762, 1.127984, 1.196489, 1.414489, 2.106709");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.600873, 0.644670, 0.738286, 1.035322, 1.979740",\
+ "0.688747, 0.732544, 0.826160, 1.123196, 2.067614",\
+ "0.783083, 0.826880, 0.920496, 1.217532, 2.161950",\
+ "0.850841, 0.894638, 0.988254, 1.285290, 2.229708",\
+ "1.211540, 1.255336, 1.348952, 1.645988, 2.590406");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_usb_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970006.875000, 970006.875000, 970006.937500, 970007.187500, 970007.875000",\
+ "970007.000000, 970007.000000, 970007.062500, 970007.312500, 970008.000000",\
+ "970007.000000, 970007.000000, 970007.062500, 970007.312500, 970008.000000",\
+ "970007.250000, 970007.250000, 970007.312500, 970007.562500, 970008.250000",\
+ "970007.500000, 970007.500000, 970007.562500, 970007.812500, 970008.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970009.937500, 970009.937500, 970010.062500, 970010.375000, 970011.312500",\
+ "970010.062500, 970010.062500, 970010.187500, 970010.500000, 970011.437500",\
+ "970010.187500, 970010.187500, 970010.312500, 970010.625000, 970011.562500",\
+ "970010.437500, 970010.437500, 970010.562500, 970010.875000, 970011.812500",\
+ "970010.687500, 970010.687500, 970010.812500, 970011.125000, 970012.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "380001.781250, 380001.812500, 380001.875000, 380002.093750, 380002.781250",\
+ "380001.875000, 380001.906250, 380001.968750, 380002.187500, 380002.875000",\
+ "380001.937500, 380001.968750, 380002.031250, 380002.250000, 380002.937500",\
+ "380002.093750, 380002.125000, 380002.187500, 380002.406250, 380003.093750",\
+ "380002.312500, 380002.343750, 380002.406250, 380002.625000, 380003.312500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "380003.031250, 380003.062500, 380003.156250, 380003.468750, 380004.406250",\
+ "380003.125000, 380003.156250, 380003.250000, 380003.562500, 380004.500000",\
+ "380003.218750, 380003.250000, 380003.343750, 380003.656250, 380004.593750",\
+ "380003.406250, 380003.437500, 380003.531250, 380003.843750, 380004.781250",\
+ "380003.656250, 380003.687500, 380003.781250, 380004.093750, 380005.031250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970008.625000, 970008.687500, 970008.750000, 970009.062500, 970010.000000",\
+ "970008.750000, 970008.812500, 970008.875000, 970009.187500, 970010.125000",\
+ "970008.750000, 970008.812500, 970008.875000, 970009.187500, 970010.125000",\
+ "970009.000000, 970009.062500, 970009.125000, 970009.437500, 970010.375000",\
+ "970009.250000, 970009.312500, 970009.375000, 970009.687500, 970010.625000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260986, 0.783299, 2.448362");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "970012.000000, 970012.062500, 970012.125000, 970012.312500, 970013.000000",\
+ "970012.125000, 970012.187500, 970012.250000, 970012.437500, 970013.125000",\
+ "970012.250000, 970012.312500, 970012.375000, 970012.562500, 970013.250000",\
+ "970012.500000, 970012.562500, 970012.625000, 970012.812500, 970013.500000",\
+ "970012.750000, 970012.812500, 970012.875000, 970013.062500, 970013.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878",\
+ "0.042128, 0.086864, 0.207230, 0.622005, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "380000.343750, 380000.375000, 380000.468750, 380000.781250, 380001.718750",\
+ "380000.437500, 380000.468750, 380000.562500, 380000.875000, 380001.812500",\
+ "380000.500000, 380000.531250, 380000.625000, 380000.937500, 380001.875000",\
+ "380000.656250, 380000.687500, 380000.781250, 380001.093750, 380002.031250",\
+ "380000.875000, 380000.906250, 380001.000000, 380001.312500, 380002.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935",\
+ "0.020039, 0.095921, 0.259491, 0.781146, 2.444935");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "380001.750000, 380001.781250, 380001.843750, 380002.062500, 380002.750000",\
+ "380001.843750, 380001.875000, 380001.937500, 380002.156250, 380002.843750",\
+ "380001.937500, 380001.968750, 380002.031250, 380002.250000, 380002.937500",\
+ "380002.125000, 380002.156250, 380002.218750, 380002.437500, 380003.125000",\
+ "380002.375000, 380002.406250, 380002.468750, 380002.687500, 380003.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590010.375000, 590010.437500, 590010.500000, 590010.687500, 590011.375000",\
+ "590010.500000, 590010.562500, 590010.625000, 590010.812500, 590011.500000",\
+ "590010.500000, 590010.562500, 590010.625000, 590010.812500, 590011.500000",\
+ "590010.625000, 590010.687500, 590010.750000, 590010.937500, 590011.625000",\
+ "590010.875000, 590010.937500, 590011.000000, 590011.187500, 590011.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590008.375000, 590008.437500, 590008.500000, 590008.812500, 590009.750000",\
+ "590008.500000, 590008.562500, 590008.625000, 590008.937500, 590009.875000",\
+ "590008.625000, 590008.687500, 590008.750000, 590009.062500, 590010.000000",\
+ "590008.750000, 590008.812500, 590008.875000, 590009.187500, 590010.125000",\
+ "590009.125000, 590009.187500, 590009.250000, 590009.562500, 590010.500000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590008.437500, 590008.500000, 590008.562500, 590008.812500, 590009.500000",\
+ "590008.437500, 590008.500000, 590008.562500, 590008.812500, 590009.500000",\
+ "590008.562500, 590008.625000, 590008.687500, 590008.937500, 590009.625000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.062500, 590009.750000",\
+ "590008.937500, 590009.000000, 590009.062500, 590009.312500, 590010.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590006.687500, 590006.750000, 590006.875000, 590007.125000, 590008.125000",\
+ "590006.812500, 590006.875000, 590007.000000, 590007.250000, 590008.250000",\
+ "590006.937500, 590007.000000, 590007.125000, 590007.375000, 590008.375000",\
+ "590007.062500, 590007.125000, 590007.250000, 590007.500000, 590008.500000",\
+ "590007.312500, 590007.375000, 590007.500000, 590007.750000, 590008.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590008.312500, 590008.312500, 590008.437500, 590008.750000, 590009.687500",\
+ "590008.437500, 590008.437500, 590008.562500, 590008.875000, 590009.812500",\
+ "590008.437500, 590008.437500, 590008.562500, 590008.875000, 590009.812500",\
+ "590008.562500, 590008.562500, 590008.687500, 590009.000000, 590009.937500",\
+ "590008.812500, 590008.812500, 590008.937500, 590009.250000, 590010.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362",\
+ "0.038124, 0.100137, 0.260980, 0.783299, 2.448362");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590006.625000, 590006.625000, 590006.687500, 590006.937500, 590007.625000",\
+ "590006.750000, 590006.750000, 590006.812500, 590007.062500, 590007.750000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.187500, 590007.875000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.312500, 590008.000000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.687500, 590008.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878",\
+ "0.042077, 0.086820, 0.207230, 0.622005, 1.937878");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590008.312500, 590008.312500, 590008.437500, 590008.750000, 590009.687500",\
+ "590008.312500, 590008.312500, 590008.437500, 590008.750000, 590009.687500",\
+ "590008.437500, 590008.437500, 590008.562500, 590008.875000, 590009.812500",\
+ "590008.562500, 590008.562500, 590008.687500, 590009.000000, 590009.937500",\
+ "590008.812500, 590008.812500, 590008.937500, 590009.250000, 590010.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935",\
+ "0.020388, 0.095624, 0.260980, 0.781920, 2.444935");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "590006.625000, 590006.625000, 590006.687500, 590006.937500, 590007.625000",\
+ "590006.750000, 590006.750000, 590006.812500, 590007.062500, 590007.750000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.187500, 590007.875000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.312500, 590008.000000",\
+ "590007.250000, 590007.250000, 590007.312500, 590007.562500, 590008.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002148, 0.006836, 0.021756, 0.069236");
+ values ( "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571",\
+ "0.017600, 0.075142, 0.205270, 0.618216, 1.929571");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_o_inv_min*/
+
+} /* end of pin clk_src_usb_o */
+
+pin("clk_src_usb_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.090214 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : clk_src_usb_val_o;
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.349057, 0.389670, 0.471811, 0.746196, 1.641015",\
+ "0.436455, 0.477067, 0.559209, 0.833594, 1.728413",\
+ "0.517302, 0.557914, 0.640055, 0.914441, 1.809259",\
+ "0.655434, 0.696047, 0.778188, 1.052573, 1.947392",\
+ "0.895822, 0.936589, 1.018755, 1.291518, 2.187617");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.023046, 0.083902, 0.239672, 0.764755, 2.477149",\
+ "0.023046, 0.083902, 0.239672, 0.764755, 2.477149",\
+ "0.023046, 0.083902, 0.239672, 0.764755, 2.477149",\
+ "0.023046, 0.083902, 0.239672, 0.764755, 2.477149",\
+ "0.023046, 0.083902, 0.239672, 0.764756, 2.477149");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.392641, 0.430353, 0.490673, 0.680876, 1.305538",\
+ "0.480039, 0.517751, 0.578071, 0.768273, 1.392936",\
+ "0.560851, 0.598563, 0.658884, 0.849086, 1.473748",\
+ "0.698861, 0.736574, 0.796894, 0.987096, 1.611758",\
+ "0.919051, 0.956763, 1.017083, 1.207286, 1.831948");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028951, 0.070788, 0.167468, 0.516468, 1.652661",\
+ "0.028951, 0.070788, 0.167468, 0.516468, 1.652661",\
+ "0.028951, 0.070788, 0.167468, 0.516468, 1.652661",\
+ "0.028951, 0.070788, 0.167468, 0.516468, 1.652661",\
+ "0.028951, 0.070788, 0.167468, 0.516468, 1.652661");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.222724, 0.263066, 0.345165, 0.618191, 1.516706",\
+ "0.310912, 0.351255, 0.433354, 0.706380, 1.604895",\
+ "0.398549, 0.438892, 0.520991, 0.794016, 1.692532",\
+ "0.546817, 0.587159, 0.669259, 0.942284, 1.840799",\
+ "0.782132, 0.822474, 0.904573, 1.177599, 2.076114");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021530, 0.083764, 0.238778, 0.757619, 2.456895",\
+ "0.021530, 0.083764, 0.238778, 0.757619, 2.456895",\
+ "0.021530, 0.083764, 0.238778, 0.757619, 2.456895",\
+ "0.021530, 0.083764, 0.238778, 0.757619, 2.456895",\
+ "0.021530, 0.083764, 0.238778, 0.757619, 2.456895");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.263657, 0.301407, 0.361820, 0.551984, 1.176778",\
+ "0.351846, 0.389595, 0.450008, 0.640173, 1.264967",\
+ "0.439483, 0.477232, 0.537645, 0.727810, 1.352604",\
+ "0.587750, 0.625500, 0.685913, 0.876077, 1.500872",\
+ "0.813891, 0.851054, 0.911373, 1.101677, 1.725499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025914, 0.068635, 0.165828, 0.512808, 1.651598",\
+ "0.025914, 0.068635, 0.165828, 0.512808, 1.651598",\
+ "0.025914, 0.068635, 0.165828, 0.512808, 1.651598",\
+ "0.025914, 0.068635, 0.165828, 0.512808, 1.651598",\
+ "0.025914, 0.068635, 0.165828, 0.512808, 1.651598");
+ }
+
+ } /* end of arc clk_ast_ext_i_clk_src_usb_val_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.312500, 970010.375000, 970010.437500, 970010.750000, 970011.625000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.875000, 970011.750000",\
+ "970010.562500, 970010.625000, 970010.687500, 970011.000000, 970011.875000",\
+ "970010.562500, 970010.625000, 970010.687500, 970011.000000, 970011.875000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.562500, 970010.625000, 970010.687500, 970010.875000, 970011.500000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_usb_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.691181, 0.731788, 0.813938, 1.088216, 1.983374",\
+ "0.778982, 0.819588, 0.901739, 1.176016, 2.071174",\
+ "0.860281, 0.900888, 0.983038, 1.257316, 2.152474",\
+ "0.918434, 0.959041, 1.041191, 1.315469, 2.210627",\
+ "1.227155, 1.267762, 1.349912, 1.624190, 2.519347");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.670492, 0.707647, 0.767969, 0.958286, 1.582166",\
+ "0.758292, 0.795447, 0.855769, 1.046087, 1.669967",\
+ "0.839591, 0.876747, 0.937069, 1.127386, 1.751266",\
+ "0.897745, 0.934900, 0.995222, 1.185539, 1.809419",\
+ "1.206465, 1.243621, 1.303943, 1.494260, 2.118140");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262");
+ }
+
+ } /* end of arc clk_ast_tlul_i_clk_src_usb_val_o_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970007.125000, 970007.125000, 970007.250000, 970007.500000, 970008.375000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.250000, 970007.250000, 970007.375000, 970007.625000, 970008.500000",\
+ "970007.500000, 970007.500000, 970007.625000, 970007.875000, 970008.750000",\
+ "970007.750000, 970007.750000, 970007.875000, 970008.125000, 970009.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.187500, 970010.250000, 970010.312500, 970010.500000, 970011.125000",\
+ "970010.312500, 970010.375000, 970010.437500, 970010.625000, 970011.250000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.750000, 970011.375000",\
+ "970010.687500, 970010.750000, 970010.812500, 970011.000000, 970011.625000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.250000, 970011.875000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380000.437500, 380000.500000, 380000.562500, 380000.843750, 380001.750000",\
+ "380000.531250, 380000.593750, 380000.656250, 380000.937500, 380001.843750",\
+ "380000.593750, 380000.656250, 380000.718750, 380001.000000, 380001.906250",\
+ "380000.750000, 380000.812500, 380000.875000, 380001.156250, 380002.062500",\
+ "380000.968750, 380001.031250, 380001.093750, 380001.375000, 380002.281250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380001.875000, 380001.906250, 380001.968750, 380002.156250, 380002.781250",\
+ "380001.968750, 380002.000000, 380002.062500, 380002.250000, 380002.875000",\
+ "380002.062500, 380002.093750, 380002.156250, 380002.343750, 380002.968750",\
+ "380002.250000, 380002.281250, 380002.343750, 380002.531250, 380003.156250",\
+ "380002.500000, 380002.531250, 380002.593750, 380002.781250, 380003.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970007.125000, 970007.187500, 970007.250000, 970007.437500, 970008.062500",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.250000, 970007.312500, 970007.375000, 970007.562500, 970008.187500",\
+ "970007.500000, 970007.562500, 970007.625000, 970007.812500, 970008.437500",\
+ "970007.750000, 970007.812500, 970007.875000, 970008.062500, 970008.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515912, 1.652408");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "970010.187500, 970010.250000, 970010.312500, 970010.625000, 970011.500000",\
+ "970010.312500, 970010.375000, 970010.437500, 970010.750000, 970011.625000",\
+ "970010.437500, 970010.500000, 970010.562500, 970010.875000, 970011.750000",\
+ "970010.687500, 970010.750000, 970010.812500, 970011.125000, 970012.000000",\
+ "970010.937500, 970011.000000, 970011.062500, 970011.375000, 970012.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766838, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380000.500000, 380000.531250, 380000.593750, 380000.781250, 380001.406250",\
+ "380000.593750, 380000.625000, 380000.687500, 380000.875000, 380001.500000",\
+ "380000.656250, 380000.687500, 380000.750000, 380000.937500, 380001.562500",\
+ "380000.812500, 380000.843750, 380000.906250, 380001.093750, 380001.718750",\
+ "380001.031250, 380001.062500, 380001.125000, 380001.312500, 380001.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262",\
+ "0.025904, 0.068640, 0.165825, 0.512797, 1.652262");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "380001.906250, 380001.937500, 380002.031250, 380002.281250, 380003.187500",\
+ "380002.000000, 380002.031250, 380002.125000, 380002.375000, 380003.281250",\
+ "380002.093750, 380002.125000, 380002.218750, 380002.468750, 380003.375000",\
+ "380002.281250, 380002.312500, 380002.406250, 380002.656250, 380003.562500",\
+ "380002.531250, 380002.562500, 380002.656250, 380002.906250, 380003.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156",\
+ "0.021562, 0.083764, 0.238778, 0.757102, 2.460156");
+ }
+
+ } /* end of arc padmux2ast_i[4]_clk_src_usb_val_o_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590009.000000, 590009.875000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.125000, 590010.000000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.125000, 590010.000000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.250000, 590010.125000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.500000, 590010.375000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.937500, 590007.000000, 590007.187500, 590007.812500",\
+ "590007.000000, 590007.062500, 590007.125000, 590007.312500, 590007.937500",\
+ "590007.125000, 590007.187500, 590007.250000, 590007.437500, 590008.062500",\
+ "590007.250000, 590007.312500, 590007.375000, 590007.562500, 590008.187500",\
+ "590007.625000, 590007.687500, 590007.750000, 590007.937500, 590008.562500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_val_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.375000, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.375000, 590008.437500, 590008.500000, 590008.812500, 590009.687500",\
+ "590008.500000, 590008.562500, 590008.625000, 590008.937500, 590009.812500",\
+ "590008.625000, 590008.687500, 590008.750000, 590009.062500, 590009.937500",\
+ "590008.875000, 590008.937500, 590009.000000, 590009.312500, 590010.187500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.750000, 590006.750000, 590006.812500, 590007.000000, 590007.625000",\
+ "590006.875000, 590006.875000, 590006.937500, 590007.125000, 590007.750000",\
+ "590007.000000, 590007.000000, 590007.062500, 590007.250000, 590007.875000",\
+ "590007.125000, 590007.125000, 590007.187500, 590007.375000, 590008.000000",\
+ "590007.375000, 590007.375000, 590007.437500, 590007.625000, 590008.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_val_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408",\
+ "0.028494, 0.070786, 0.167369, 0.515919, 1.652408");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.625000, 590007.625000, 590007.750000, 590008.000000, 590008.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430",\
+ "0.022871, 0.084362, 0.238855, 0.766861, 2.469430");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_val_o_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.562500, 590008.625000, 590008.687500, 590008.875000, 590009.500000",\
+ "590008.687500, 590008.750000, 590008.812500, 590009.000000, 590009.625000",\
+ "590008.812500, 590008.875000, 590008.937500, 590009.125000, 590009.750000",\
+ "590009.062500, 590009.125000, 590009.187500, 590009.375000, 590010.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082",\
+ "0.026011, 0.068726, 0.165863, 0.510725, 1.651082");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "590006.875000, 590006.875000, 590007.000000, 590007.250000, 590008.125000",\
+ "590007.000000, 590007.000000, 590007.125000, 590007.375000, 590008.250000",\
+ "590007.125000, 590007.125000, 590007.250000, 590007.500000, 590008.375000",\
+ "590007.250000, 590007.250000, 590007.375000, 590007.625000, 590008.500000",\
+ "590007.500000, 590007.500000, 590007.625000, 590007.875000, 590008.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.002461, 0.008196, 0.027294, 0.090214");
+ values ( "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812",\
+ "0.022032, 0.083764, 0.238629, 0.755850, 2.465812");
+ }
+
+ } /* end of arc padmux2ast_i[5]_clk_src_usb_val_o_inv_min*/
+
+} /* end of pin clk_src_usb_val_o */
+bus ( usb_io_pu_cal_o ) {
+
+ bus_type : BUS20_type7 ;
+ direction : output ;
+
+pin("usb_io_pu_cal_o[19]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[19];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.314417, 0.335777, 0.372002, 0.776684, 1.668587",\
+ "0.399220, 0.420577, 0.456801, 0.861483, 1.753386",\
+ "0.475457, 0.496832, 0.533065, 0.937750, 1.829653",\
+ "0.530163, 0.551559, 0.587801, 0.992490, 1.884393",\
+ "0.830581, 0.852045, 0.888318, 1.293020, 2.184924");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128218, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128218, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070225, 0.128223, 0.852056, 2.450128",\
+ "0.046369, 0.071964, 0.128232, 0.852062, 2.450135");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.217558, 0.227289, 0.241063, 0.379813, 0.685715",\
+ "0.306214, 0.315945, 0.329719, 0.468469, 0.774371",\
+ "0.401954, 0.411685, 0.425460, 0.564210, 0.870112",\
+ "0.471485, 0.481216, 0.494992, 0.633742, 0.939644",\
+ "0.839028, 0.848765, 0.862546, 1.001302, 1.307204");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025202, 0.034115, 0.048740, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048740, 0.301167, 0.860107",\
+ "0.025203, 0.034116, 0.048742, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048744, 0.301167, 0.860107",\
+ "0.025222, 0.034137, 0.048764, 0.301167, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[19]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.197396, 0.217798, 0.253787, 0.659515, 1.549779",\
+ "0.285773, 0.306177, 0.342166, 0.747894, 1.638158",\
+ "0.375534, 0.395928, 0.431912, 0.837641, 1.727905",\
+ "0.439799, 0.460179, 0.496157, 0.901887, 1.792151",\
+ "0.781328, 0.801955, 0.838037, 1.243750, 2.134013");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041661, 0.069999, 0.126709, 0.849969, 2.447141",\
+ "0.041661, 0.069999, 0.126709, 0.849969, 2.447141",\
+ "0.041661, 0.069999, 0.126709, 0.849969, 2.447141",\
+ "0.041661, 0.069999, 0.126709, 0.849969, 2.447141",\
+ "0.041673, 0.070094, 0.126932, 0.849969, 2.447141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.177011, 0.187648, 0.201756, 0.342079, 0.647165",\
+ "0.264382, 0.275019, 0.289127, 0.429450, 0.734536",\
+ "0.342508, 0.353145, 0.367252, 0.507575, 0.812661",\
+ "0.397042, 0.407678, 0.421785, 0.562107, 0.867194",\
+ "0.681430, 0.692081, 0.706196, 0.846525, 1.151605");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024126, 0.032778, 0.047567, 0.299569, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[19]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[19] */
+
+pin("usb_io_pu_cal_o[18]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[18];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.314417, 0.335777, 0.372002, 0.776684, 1.668587",\
+ "0.399220, 0.420577, 0.456801, 0.861483, 1.753386",\
+ "0.475457, 0.496832, 0.533065, 0.937750, 1.829653",\
+ "0.530163, 0.551559, 0.587801, 0.992490, 1.884393",\
+ "0.830581, 0.852045, 0.888318, 1.293020, 2.184924");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128218, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128218, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070225, 0.128223, 0.852056, 2.450128",\
+ "0.046369, 0.071964, 0.128232, 0.852062, 2.450135");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.217558, 0.227289, 0.241063, 0.379813, 0.685715",\
+ "0.306214, 0.315945, 0.329719, 0.468469, 0.774371",\
+ "0.401954, 0.411685, 0.425460, 0.564210, 0.870112",\
+ "0.471485, 0.481216, 0.494992, 0.633742, 0.939644",\
+ "0.839028, 0.848765, 0.862546, 1.001302, 1.307204");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025200, 0.034112, 0.048740, 0.301167, 0.860107",\
+ "0.025200, 0.034112, 0.048740, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048742, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048744, 0.301167, 0.860107",\
+ "0.025221, 0.034136, 0.048764, 0.301167, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[18]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.211928, 0.232331, 0.268319, 0.674047, 1.564311",\
+ "0.300343, 0.320746, 0.356735, 0.762463, 1.652727",\
+ "0.394726, 0.415129, 0.451117, 0.856845, 1.747110",\
+ "0.462784, 0.483187, 0.519176, 0.924904, 1.815168",\
+ "0.787427, 0.807827, 0.843815, 1.249543, 2.139807");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041661, 0.070068, 0.126730, 0.849972, 2.447344",\
+ "0.041661, 0.070068, 0.126730, 0.849972, 2.447344",\
+ "0.041661, 0.070068, 0.126730, 0.849972, 2.447344",\
+ "0.041661, 0.070068, 0.126730, 0.849972, 2.447345",\
+ "0.041673, 0.070061, 0.126728, 0.849969, 2.447347");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.180996, 0.190508, 0.204096, 0.342744, 0.648655",\
+ "0.266400, 0.277038, 0.291146, 0.430107, 0.736018",\
+ "0.342508, 0.353145, 0.367252, 0.507575, 0.812661",\
+ "0.397042, 0.407678, 0.421785, 0.562107, 0.867194",\
+ "0.681430, 0.692081, 0.706196, 0.846525, 1.151605");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024113, 0.032746, 0.047552, 0.299568, 0.856157",\
+ "0.024126, 0.032778, 0.047567, 0.299569, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[18]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[18] */
+
+pin("usb_io_pu_cal_o[17]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[17];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.314417, 0.335777, 0.372002, 0.776684, 1.668587",\
+ "0.399220, 0.420577, 0.456801, 0.861483, 1.753386",\
+ "0.475457, 0.496832, 0.533065, 0.937750, 1.829653",\
+ "0.530163, 0.551559, 0.587801, 0.992490, 1.884393",\
+ "0.830581, 0.852045, 0.888318, 1.293020, 2.184924");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044601, 0.070148, 0.128218, 0.852056, 2.450125",\
+ "0.044663, 0.070159, 0.128218, 0.852056, 2.450125",\
+ "0.044669, 0.070182, 0.128220, 0.852056, 2.450126",\
+ "0.044669, 0.070225, 0.128223, 0.852056, 2.450128",\
+ "0.046118, 0.071698, 0.128232, 0.852061, 2.450135");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.217558, 0.227289, 0.241063, 0.379813, 0.685715",\
+ "0.306214, 0.315945, 0.329719, 0.468469, 0.774371",\
+ "0.401954, 0.411685, 0.425460, 0.564210, 0.870112",\
+ "0.471485, 0.481216, 0.494992, 0.633742, 0.939644",\
+ "0.839028, 0.848765, 0.862546, 1.001302, 1.307204");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048740, 0.301166, 0.860107",\
+ "0.025213, 0.034127, 0.048740, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048742, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048744, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048764, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[17]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.194489, 0.214889, 0.250877, 0.656605, 1.546869",\
+ "0.282628, 0.303028, 0.339015, 0.744743, 1.635008",\
+ "0.372036, 0.392436, 0.428424, 0.834152, 1.724416",\
+ "0.436052, 0.456452, 0.492440, 0.898167, 1.788432",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041673, 0.070054, 0.126726, 0.849969, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.175899, 0.186544, 0.200656, 0.340982, 0.646065",\
+ "0.263271, 0.273916, 0.288028, 0.428355, 0.733437",\
+ "0.344128, 0.354771, 0.368883, 0.509209, 0.814291",\
+ "0.401818, 0.412460, 0.426571, 0.566896, 0.871980",\
+ "0.705550, 0.716209, 0.730328, 0.870660, 1.175736");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024113, 0.032746, 0.047558, 0.299568, 0.856133",\
+ "0.024113, 0.032746, 0.047558, 0.299568, 0.856133",\
+ "0.024113, 0.032746, 0.047558, 0.299568, 0.856133",\
+ "0.024113, 0.032746, 0.047558, 0.299568, 0.856133",\
+ "0.024126, 0.032778, 0.047574, 0.299569, 0.856133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[17]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[17] */
+
+pin("usb_io_pu_cal_o[16]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[16];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.314417, 0.335777, 0.372002, 0.776684, 1.668587",\
+ "0.399220, 0.420577, 0.456801, 0.861483, 1.753386",\
+ "0.475457, 0.496832, 0.533065, 0.937750, 1.829653",\
+ "0.530163, 0.551559, 0.587801, 0.992490, 1.884393",\
+ "0.830581, 0.852045, 0.888318, 1.293020, 2.184924");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044695, 0.070193, 0.128218, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128218, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044695, 0.070225, 0.128223, 0.852056, 2.450128",\
+ "0.044695, 0.070368, 0.128232, 0.852056, 2.450135");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.217558, 0.227289, 0.241063, 0.379813, 0.685715",\
+ "0.306214, 0.315945, 0.329719, 0.468469, 0.774371",\
+ "0.401954, 0.411685, 0.425460, 0.564210, 0.870112",\
+ "0.471485, 0.481216, 0.494992, 0.633742, 0.939644",\
+ "0.839028, 0.848765, 0.862546, 1.001302, 1.307204");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048740, 0.301166, 0.860107",\
+ "0.025212, 0.034126, 0.048740, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048742, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048744, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048764, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[16]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.241214, 0.262542, 0.298754, 0.703431, 1.595333",\
+ "0.329624, 0.350953, 0.387164, 0.791841, 1.683743",\
+ "0.418828, 0.440156, 0.476368, 0.881044, 1.772947",\
+ "0.478173, 0.498573, 0.534561, 0.940289, 1.830553",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041661, 0.070060, 0.126728, 0.849972, 2.447347",\
+ "0.041673, 0.070054, 0.126726, 0.849969, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.180996, 0.190508, 0.204096, 0.342744, 0.648655",\
+ "0.268360, 0.277871, 0.291459, 0.430107, 0.736018",\
+ "0.349209, 0.358716, 0.372303, 0.510951, 0.816863",\
+ "0.406926, 0.416431, 0.430016, 0.568664, 0.874576",\
+ "0.710950, 0.720466, 0.734056, 0.872703, 1.178614");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024113, 0.032746, 0.047559, 0.299568, 0.856139",\
+ "0.024113, 0.032746, 0.047559, 0.299568, 0.856139",\
+ "0.024113, 0.032746, 0.047559, 0.299568, 0.856139",\
+ "0.024113, 0.032746, 0.047559, 0.299568, 0.856139",\
+ "0.024126, 0.032778, 0.047572, 0.299569, 0.856139");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[16]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[16] */
+
+pin("usb_io_pu_cal_o[15]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[15];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320701, 0.342069, 0.378299, 0.782982, 1.674885",\
+ "0.408065, 0.429433, 0.465663, 0.870347, 1.762250",\
+ "0.488969, 0.510342, 0.546573, 0.951258, 1.843161",\
+ "0.546844, 0.568237, 0.604478, 1.009167, 1.901070",\
+ "0.862468, 0.884064, 0.920396, 1.325122, 2.217029");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128219, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128219, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070220, 0.128222, 0.852056, 2.450128",\
+ "0.046369, 0.071964, 0.128250, 0.852062, 2.450147");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.208477, 0.218207, 0.231981, 0.370730, 0.676633",\
+ "0.296951, 0.306682, 0.320455, 0.459205, 0.765107",\
+ "0.387709, 0.397440, 0.411214, 0.549964, 0.855866",\
+ "0.453111, 0.462843, 0.476618, 0.615368, 0.921270",\
+ "0.800244, 0.809980, 0.823761, 0.962517, 1.268419");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025202, 0.034115, 0.048739, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048739, 0.301167, 0.860107",\
+ "0.025203, 0.034116, 0.048740, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048742, 0.301167, 0.860107",\
+ "0.025222, 0.034137, 0.048763, 0.301167, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[15]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.197396, 0.217798, 0.253787, 0.659515, 1.549779",\
+ "0.285773, 0.306177, 0.342166, 0.747894, 1.638158",\
+ "0.375534, 0.395928, 0.431912, 0.837641, 1.727905",\
+ "0.439799, 0.460179, 0.496157, 0.901887, 1.792151",\
+ "0.781328, 0.801955, 0.838037, 1.243750, 2.134013");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041685, 0.069999, 0.126709, 0.849953, 2.447141",\
+ "0.041695, 0.069999, 0.126709, 0.849953, 2.447141",\
+ "0.041741, 0.069999, 0.126709, 0.849953, 2.447141",\
+ "0.041758, 0.069999, 0.126709, 0.849953, 2.447141",\
+ "0.041766, 0.070174, 0.126932, 0.849953, 2.447141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.177011, 0.187648, 0.201756, 0.340918, 0.646830",\
+ "0.264382, 0.275019, 0.289127, 0.428292, 0.734203",\
+ "0.342508, 0.353145, 0.367252, 0.506601, 0.812513",\
+ "0.397042, 0.407678, 0.421785, 0.561150, 0.867061",\
+ "0.681430, 0.692081, 0.706196, 0.845682, 1.151594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024118, 0.032771, 0.047553, 0.299569, 0.856201",\
+ "0.024118, 0.032771, 0.047553, 0.299569, 0.856201",\
+ "0.024117, 0.032767, 0.047553, 0.299569, 0.856201",\
+ "0.024117, 0.032759, 0.047552, 0.299568, 0.856201",\
+ "0.024117, 0.032759, 0.047552, 0.299568, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[15]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[15] */
+
+pin("usb_io_pu_cal_o[14]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[14];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320701, 0.342069, 0.378299, 0.782982, 1.674885",\
+ "0.408065, 0.429433, 0.465663, 0.870347, 1.762250",\
+ "0.488969, 0.510342, 0.546573, 0.951258, 1.843161",\
+ "0.546844, 0.568237, 0.604478, 1.009167, 1.901070",\
+ "0.862468, 0.884064, 0.920396, 1.325122, 2.217029");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128219, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128219, 0.852056, 2.450125",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070220, 0.128222, 0.852056, 2.450128",\
+ "0.046369, 0.071964, 0.128250, 0.852062, 2.450147");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.208477, 0.218207, 0.231981, 0.370730, 0.676633",\
+ "0.296951, 0.306682, 0.320455, 0.459205, 0.765107",\
+ "0.387709, 0.397440, 0.411214, 0.549964, 0.855866",\
+ "0.453111, 0.462843, 0.476618, 0.615368, 0.921270",\
+ "0.800244, 0.809980, 0.823761, 0.962517, 1.268419");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025200, 0.034112, 0.048739, 0.301167, 0.860107",\
+ "0.025200, 0.034112, 0.048739, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048740, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048742, 0.301167, 0.860107",\
+ "0.025221, 0.034136, 0.048763, 0.301167, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[14]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.211928, 0.232331, 0.268319, 0.674047, 1.564311",\
+ "0.300343, 0.320746, 0.356735, 0.762463, 1.652727",\
+ "0.394726, 0.415129, 0.451117, 0.856845, 1.747110",\
+ "0.462784, 0.483187, 0.519176, 0.924904, 1.815168",\
+ "0.787427, 0.807827, 0.843815, 1.249543, 2.139807");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041685, 0.070068, 0.126730, 0.849967, 2.447344",\
+ "0.041695, 0.070068, 0.126730, 0.849965, 2.447344",\
+ "0.041741, 0.070068, 0.126730, 0.849957, 2.447344",\
+ "0.041758, 0.070068, 0.126730, 0.849954, 2.447345",\
+ "0.041766, 0.070061, 0.126728, 0.849953, 2.447347");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.179169, 0.188682, 0.202271, 0.340918, 0.646830",\
+ "0.266400, 0.276055, 0.289644, 0.428292, 0.734203",\
+ "0.342508, 0.353145, 0.367252, 0.506601, 0.812513",\
+ "0.397042, 0.407678, 0.421785, 0.561150, 0.867061",\
+ "0.681430, 0.692081, 0.706196, 0.845682, 1.151594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024118, 0.032771, 0.047553, 0.299569, 0.856201",\
+ "0.024118, 0.032771, 0.047553, 0.299569, 0.856201",\
+ "0.024117, 0.032767, 0.047553, 0.299569, 0.856201",\
+ "0.024117, 0.032759, 0.047552, 0.299568, 0.856201",\
+ "0.024117, 0.032759, 0.047552, 0.299568, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[14]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[14] */
+
+pin("usb_io_pu_cal_o[13]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[13];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320701, 0.342069, 0.378299, 0.782982, 1.674885",\
+ "0.408065, 0.429433, 0.465663, 0.870347, 1.762250",\
+ "0.488969, 0.510342, 0.546573, 0.951258, 1.843161",\
+ "0.546844, 0.568237, 0.604478, 1.009167, 1.901070",\
+ "0.862468, 0.884064, 0.920396, 1.325122, 2.217029");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044601, 0.070167, 0.128219, 0.852056, 2.450125",\
+ "0.044663, 0.070167, 0.128219, 0.852056, 2.450125",\
+ "0.044669, 0.070177, 0.128220, 0.852056, 2.450126",\
+ "0.044669, 0.070220, 0.128222, 0.852056, 2.450128",\
+ "0.046118, 0.071698, 0.128250, 0.852061, 2.450147");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.208477, 0.218207, 0.231981, 0.372429, 0.677586",\
+ "0.296951, 0.306682, 0.320688, 0.461137, 0.766294",\
+ "0.391373, 0.402162, 0.416428, 0.556878, 0.862036",\
+ "0.460819, 0.471609, 0.485876, 0.626327, 0.931486",\
+ "0.825748, 0.836544, 0.850818, 0.991274, 1.296437");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048739, 0.301166, 0.860107",\
+ "0.025213, 0.034127, 0.048739, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048740, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048742, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048763, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[13]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.194489, 0.214889, 0.250877, 0.656605, 1.546869",\
+ "0.282628, 0.303028, 0.339015, 0.744743, 1.635008",\
+ "0.372036, 0.392436, 0.428424, 0.834152, 1.724416",\
+ "0.436052, 0.456452, 0.492440, 0.898167, 1.788432",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041685, 0.070060, 0.126728, 0.849967, 2.447347",\
+ "0.041695, 0.070060, 0.126728, 0.849965, 2.447347",\
+ "0.041741, 0.070060, 0.126728, 0.849957, 2.447347",\
+ "0.041758, 0.070060, 0.126728, 0.849954, 2.447347",\
+ "0.041766, 0.070054, 0.126726, 0.849953, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.175899, 0.186544, 0.200656, 0.340918, 0.646065",\
+ "0.263271, 0.273916, 0.288028, 0.428292, 0.733437",\
+ "0.344128, 0.354365, 0.367954, 0.506601, 0.812513",\
+ "0.399406, 0.408915, 0.422502, 0.561150, 0.867061",\
+ "0.683934, 0.693446, 0.707035, 0.845682, 1.151594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024118, 0.032771, 0.047561, 0.299569, 0.856177",\
+ "0.024118, 0.032771, 0.047561, 0.299569, 0.856176",\
+ "0.024117, 0.032767, 0.047560, 0.299569, 0.856176",\
+ "0.024117, 0.032759, 0.047558, 0.299568, 0.856176",\
+ "0.024117, 0.032759, 0.047558, 0.299568, 0.856133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[13]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[13] */
+
+pin("usb_io_pu_cal_o[12]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[12];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320701, 0.342069, 0.378299, 0.782982, 1.674885",\
+ "0.408065, 0.429433, 0.465663, 0.870347, 1.762250",\
+ "0.488969, 0.510342, 0.546573, 0.951258, 1.843161",\
+ "0.546844, 0.568237, 0.604478, 1.009167, 1.901070",\
+ "0.862468, 0.884064, 0.920396, 1.325122, 2.217029");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044695, 0.070193, 0.128219, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128219, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044695, 0.070220, 0.128222, 0.852056, 2.450128",\
+ "0.044695, 0.070644, 0.128250, 0.852056, 2.450147");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.208477, 0.218207, 0.231981, 0.372429, 0.677586",\
+ "0.296951, 0.306682, 0.320455, 0.460894, 0.766051",\
+ "0.391373, 0.402162, 0.416428, 0.556878, 0.862036",\
+ "0.460819, 0.471609, 0.485876, 0.626327, 0.931486",\
+ "0.825748, 0.836544, 0.850818, 0.991274, 1.296437");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048739, 0.301166, 0.860107",\
+ "0.025212, 0.034126, 0.048739, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048740, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048742, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048763, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[12]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.238920, 0.260258, 0.296474, 0.701152, 1.593054",\
+ "0.327371, 0.348714, 0.384932, 0.789611, 1.681513",\
+ "0.416587, 0.437948, 0.474174, 0.878857, 1.770759",\
+ "0.478173, 0.498573, 0.534561, 0.940289, 1.830553",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041685, 0.070060, 0.126728, 0.849967, 2.447347",\
+ "0.041695, 0.070060, 0.126728, 0.849965, 2.447347",\
+ "0.041741, 0.070060, 0.126728, 0.849957, 2.447347",\
+ "0.041758, 0.070060, 0.126728, 0.849954, 2.447347",\
+ "0.041766, 0.070054, 0.126726, 0.849953, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.179169, 0.188682, 0.202271, 0.340918, 0.646830",\
+ "0.266542, 0.276055, 0.289644, 0.428292, 0.734203",\
+ "0.344853, 0.354365, 0.367954, 0.506601, 0.812513",\
+ "0.399406, 0.408915, 0.422502, 0.561150, 0.867061",\
+ "0.683934, 0.693446, 0.707035, 0.845682, 1.151594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024118, 0.032771, 0.047563, 0.299569, 0.856171",\
+ "0.024118, 0.032771, 0.047563, 0.299569, 0.856171",\
+ "0.024117, 0.032767, 0.047561, 0.299569, 0.856171",\
+ "0.024117, 0.032759, 0.047559, 0.299568, 0.856171",\
+ "0.024117, 0.032759, 0.047559, 0.299568, 0.856139");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[12]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[12] */
+
+pin("usb_io_pu_cal_o[11]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[11];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310563, 0.333600, 0.370684, 0.776237, 1.666485",\
+ "0.397928, 0.420965, 0.458048, 0.863602, 1.753849",\
+ "0.478891, 0.501955, 0.539050, 0.944602, 1.834849",\
+ "0.536743, 0.559839, 0.596947, 1.002497, 1.892744",\
+ "0.858742, 0.881931, 0.919078, 1.324622, 2.214868");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051946, 0.077865, 0.129119, 0.852080, 2.449966",\
+ "0.052034, 0.077959, 0.129147, 0.852081, 2.449966",\
+ "0.052292, 0.078232, 0.129231, 0.852081, 2.450003");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.206143, 0.216949, 0.231236, 0.371702, 0.676873",\
+ "0.294617, 0.305423, 0.319710, 0.460177, 0.765348",\
+ "0.385375, 0.396181, 0.410468, 0.550935, 0.856106",\
+ "0.450776, 0.461583, 0.475870, 0.616338, 0.921509",\
+ "0.797902, 0.808713, 0.823006, 0.963477, 1.268652");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025267, 0.034187, 0.048727, 0.301161, 0.860108",\
+ "0.025267, 0.034187, 0.048727, 0.301161, 0.860108",\
+ "0.025267, 0.034188, 0.048728, 0.301161, 0.860108",\
+ "0.025268, 0.034189, 0.048730, 0.301161, 0.860108",\
+ "0.025282, 0.034204, 0.048751, 0.301161, 0.860108");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[11]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.205226, 0.224853, 0.260301, 0.664656, 1.556533",\
+ "0.293604, 0.313232, 0.348681, 0.753036, 1.644913",\
+ "0.383357, 0.402977, 0.438423, 0.842777, 1.734654",\
+ "0.447610, 0.467222, 0.502663, 0.907016, 1.798893",\
+ "0.789341, 0.809115, 0.844630, 1.249013, 2.140893");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037493, 0.066493, 0.127978, 0.850658, 2.444969",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444969",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444969",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444969",\
+ "0.037854, 0.066833, 0.128000, 0.850658, 2.444969");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.179497, 0.189096, 0.202727, 0.341364, 0.647272",\
+ "0.266868, 0.276467, 0.290098, 0.428735, 0.734643",\
+ "0.344994, 0.354592, 0.368223, 0.506860, 0.812768",\
+ "0.399528, 0.409125, 0.422756, 0.561393, 0.867301",\
+ "0.683921, 0.693531, 0.707168, 0.845803, 1.151711");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024427, 0.033054, 0.047472, 0.299575, 0.856462");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[11]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[11] */
+
+pin("usb_io_pu_cal_o[10]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[10];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310563, 0.333600, 0.370684, 0.776237, 1.666485",\
+ "0.397928, 0.420965, 0.458048, 0.863602, 1.753849",\
+ "0.478891, 0.501955, 0.539050, 0.944602, 1.834849",\
+ "0.536743, 0.559839, 0.596947, 1.002497, 1.892744",\
+ "0.858742, 0.881931, 0.919078, 1.324622, 2.214868");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051946, 0.077865, 0.129119, 0.852080, 2.449966",\
+ "0.052034, 0.077959, 0.129147, 0.852081, 2.449966",\
+ "0.052292, 0.078232, 0.129231, 0.852081, 2.450003");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.206143, 0.216949, 0.231236, 0.371702, 0.676873",\
+ "0.294617, 0.305423, 0.319710, 0.460177, 0.765348",\
+ "0.385375, 0.396181, 0.410468, 0.550935, 0.856106",\
+ "0.450776, 0.461583, 0.475870, 0.616338, 0.921509",\
+ "0.797902, 0.808713, 0.823006, 0.963477, 1.268652");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025267, 0.034187, 0.048724, 0.301161, 0.860108",\
+ "0.025267, 0.034187, 0.048724, 0.301161, 0.860108",\
+ "0.025267, 0.034188, 0.048727, 0.301161, 0.860108",\
+ "0.025268, 0.034189, 0.048730, 0.301161, 0.860108",\
+ "0.025282, 0.034204, 0.048750, 0.301161, 0.860108");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[10]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.219758, 0.239385, 0.274833, 0.679189, 1.571066",\
+ "0.308173, 0.327801, 0.363249, 0.767605, 1.659482",\
+ "0.402556, 0.422183, 0.457632, 0.861987, 1.753864",\
+ "0.470615, 0.490242, 0.525690, 0.930046, 1.821923",\
+ "0.795255, 0.814880, 0.850328, 1.254683, 2.146560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037493, 0.066526, 0.127980, 0.850723, 2.444973",\
+ "0.037493, 0.066526, 0.127980, 0.850723, 2.444973",\
+ "0.037493, 0.066525, 0.127980, 0.850723, 2.444973",\
+ "0.037493, 0.066525, 0.127980, 0.850723, 2.444972",\
+ "0.037489, 0.066522, 0.127980, 0.850723, 2.444969");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.184074, 0.193673, 0.207304, 0.345941, 0.651849",\
+ "0.268886, 0.278485, 0.292117, 0.430754, 0.736662",\
+ "0.344994, 0.354592, 0.368223, 0.506860, 0.812768",\
+ "0.399528, 0.409125, 0.422756, 0.561393, 0.867301",\
+ "0.683921, 0.693531, 0.707168, 0.845803, 1.151711");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024391, 0.033017, 0.047459, 0.299575, 0.856462",\
+ "0.024427, 0.033054, 0.047472, 0.299575, 0.856462");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[10]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[10] */
+
+pin("usb_io_pu_cal_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310563, 0.333600, 0.370684, 0.776237, 1.666485",\
+ "0.397928, 0.420965, 0.458048, 0.863602, 1.753849",\
+ "0.478891, 0.501955, 0.539050, 0.944602, 1.834849",\
+ "0.536743, 0.559839, 0.596947, 1.002497, 1.892744",\
+ "0.858742, 0.881931, 0.919078, 1.324622, 2.214868");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051871, 0.077785, 0.129094, 0.852080, 2.449964",\
+ "0.051871, 0.077785, 0.129094, 0.852080, 2.449965",\
+ "0.051946, 0.077865, 0.129119, 0.852080, 2.449965",\
+ "0.052034, 0.077959, 0.129147, 0.852081, 2.449965",\
+ "0.052292, 0.078232, 0.129231, 0.852081, 2.449997");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.209465, 0.219196, 0.232970, 0.371719, 0.677621",\
+ "0.298173, 0.307904, 0.321678, 0.460428, 0.766330",\
+ "0.393912, 0.403643, 0.417418, 0.556169, 0.862071",\
+ "0.463358, 0.473091, 0.486867, 0.625618, 0.931520",\
+ "0.828290, 0.838027, 0.851809, 0.990566, 1.296468");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025267, 0.034187, 0.048739, 0.301161, 0.860107",\
+ "0.025267, 0.034187, 0.048740, 0.301161, 0.860107",\
+ "0.025267, 0.034188, 0.048743, 0.301161, 0.860107",\
+ "0.025268, 0.034189, 0.048747, 0.301161, 0.860107",\
+ "0.025282, 0.034204, 0.048767, 0.301161, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.202317, 0.221942, 0.257390, 0.661745, 1.553622",\
+ "0.290456, 0.310081, 0.345529, 0.749884, 1.641761",\
+ "0.379864, 0.399489, 0.434937, 0.839292, 1.731169",\
+ "0.443880, 0.463505, 0.498953, 0.903308, 1.795185",\
+ "0.771045, 0.790669, 0.826116, 1.230471, 2.122348");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444972",\
+ "0.037486, 0.066519, 0.127980, 0.850725, 2.444969");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.178388, 0.187993, 0.201627, 0.340263, 0.646171",\
+ "0.265760, 0.275365, 0.289000, 0.427635, 0.733544",\
+ "0.345043, 0.355588, 0.369648, 0.508490, 0.814398",\
+ "0.399593, 0.410134, 0.424192, 0.564475, 0.869603",\
+ "0.684147, 0.694701, 0.708766, 0.849054, 1.154177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024411, 0.033033, 0.047459, 0.299575, 0.856462",\
+ "0.024411, 0.033033, 0.047459, 0.299575, 0.856462",\
+ "0.024411, 0.033033, 0.047459, 0.299575, 0.856462",\
+ "0.024411, 0.033033, 0.047459, 0.299575, 0.856462",\
+ "0.024446, 0.033071, 0.047472, 0.299576, 0.856462");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[9]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[9] */
+
+pin("usb_io_pu_cal_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310563, 0.333600, 0.370684, 0.776237, 1.666485",\
+ "0.397928, 0.420965, 0.458048, 0.863602, 1.753849",\
+ "0.478891, 0.501955, 0.539050, 0.944602, 1.834849",\
+ "0.536743, 0.559839, 0.596947, 1.002497, 1.892744",\
+ "0.858742, 0.881931, 0.919078, 1.324622, 2.214868");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051871, 0.077785, 0.129094, 0.852080, 2.449966",\
+ "0.051946, 0.077865, 0.129119, 0.852080, 2.449966",\
+ "0.052034, 0.077959, 0.129147, 0.852081, 2.449966",\
+ "0.052292, 0.078232, 0.129231, 0.852081, 2.449966");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.209465, 0.219196, 0.232970, 0.371719, 0.677621",\
+ "0.297931, 0.307661, 0.321435, 0.460184, 0.766087",\
+ "0.393912, 0.403643, 0.417418, 0.556169, 0.862071",\
+ "0.463358, 0.473091, 0.486867, 0.625618, 0.931520",\
+ "0.828290, 0.838027, 0.851809, 0.990566, 1.296468");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025267, 0.034187, 0.048739, 0.301161, 0.860107",\
+ "0.025267, 0.034187, 0.048739, 0.301161, 0.860107",\
+ "0.025267, 0.034188, 0.048743, 0.301161, 0.860107",\
+ "0.025268, 0.034189, 0.048747, 0.301161, 0.860107",\
+ "0.025282, 0.034204, 0.048767, 0.301161, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.248424, 0.271436, 0.308509, 0.714064, 1.604311",\
+ "0.336713, 0.359725, 0.396797, 0.802353, 1.692600",\
+ "0.429673, 0.449299, 0.484746, 0.889101, 1.780978",\
+ "0.486001, 0.505626, 0.541074, 0.945429, 1.837306",\
+ "0.771045, 0.790669, 0.826116, 1.230471, 2.122348");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444973",\
+ "0.037489, 0.066522, 0.127980, 0.850724, 2.444972",\
+ "0.037486, 0.066519, 0.127980, 0.850725, 2.444969");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.184129, 0.194678, 0.208740, 0.349027, 0.654152",\
+ "0.268945, 0.279493, 0.293555, 0.433842, 0.738967",\
+ "0.345043, 0.355588, 0.369648, 0.509933, 0.815059",\
+ "0.399593, 0.410134, 0.424192, 0.564475, 0.869603",\
+ "0.684147, 0.694701, 0.708766, 0.849054, 1.154177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024415, 0.033034, 0.047459, 0.299575, 0.856462",\
+ "0.024415, 0.033034, 0.047459, 0.299575, 0.856462",\
+ "0.024415, 0.033034, 0.047459, 0.299575, 0.856462",\
+ "0.024415, 0.033034, 0.047459, 0.299575, 0.856462",\
+ "0.024441, 0.033067, 0.047472, 0.299576, 0.856462");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[8]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[8] */
+
+pin("usb_io_pu_cal_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310638, 0.333683, 0.370769, 0.776322, 1.666569",\
+ "0.398002, 0.421047, 0.458133, 0.863687, 1.753934",\
+ "0.478900, 0.501952, 0.539042, 0.944594, 1.834842",\
+ "0.536750, 0.559833, 0.596935, 1.002486, 1.892733",\
+ "0.841468, 0.864657, 0.901804, 1.307347, 2.197594");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051891, 0.077808, 0.129101, 0.852080, 2.449966",\
+ "0.051892, 0.077808, 0.129101, 0.852080, 2.449966",\
+ "0.051912, 0.077829, 0.129108, 0.852080, 2.449966",\
+ "0.051998, 0.077921, 0.129136, 0.852080, 2.449966",\
+ "0.052293, 0.078232, 0.129231, 0.852081, 2.450003");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.213971, 0.224767, 0.239042, 0.379500, 0.684663",\
+ "0.302629, 0.313425, 0.327700, 0.468158, 0.773321",\
+ "0.398375, 0.409171, 0.423447, 0.563905, 0.869068",\
+ "0.467906, 0.478703, 0.492979, 0.633438, 0.938602",\
+ "0.835457, 0.846260, 0.860543, 1.001007, 1.306175");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025238, 0.034155, 0.048727, 0.301163, 0.860108",\
+ "0.025238, 0.034155, 0.048727, 0.301163, 0.860108",\
+ "0.025238, 0.034156, 0.048728, 0.301163, 0.860108",\
+ "0.025240, 0.034158, 0.048730, 0.301163, 0.860108",\
+ "0.025257, 0.034176, 0.048751, 0.301163, 0.860108");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.205226, 0.224853, 0.260301, 0.664656, 1.556533",\
+ "0.293604, 0.313232, 0.348681, 0.753036, 1.644913",\
+ "0.383357, 0.402977, 0.438423, 0.842777, 1.734654",\
+ "0.447610, 0.467222, 0.502663, 0.907016, 1.798893",\
+ "0.789341, 0.809115, 0.844630, 1.249013, 2.140893");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037493, 0.066493, 0.127978, 0.850658, 2.444959",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444959",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444959",\
+ "0.037493, 0.066493, 0.127978, 0.850658, 2.444959",\
+ "0.037854, 0.066833, 0.128000, 0.850658, 2.444959");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.176807, 0.187341, 0.201395, 0.341364, 0.646807",\
+ "0.264176, 0.274709, 0.288763, 0.428735, 0.734175",\
+ "0.344994, 0.354592, 0.368223, 0.506860, 0.812768",\
+ "0.399528, 0.409125, 0.422756, 0.561393, 0.867301",\
+ "0.683921, 0.693531, 0.707168, 0.845803, 1.151711");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047450, 0.299575, 0.856488",\
+ "0.024427, 0.033054, 0.047464, 0.299575, 0.856488");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[7]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[7] */
+
+pin("usb_io_pu_cal_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.310638, 0.333683, 0.370769, 0.776322, 1.666569",\
+ "0.398002, 0.421047, 0.458133, 0.863687, 1.753934",\
+ "0.478900, 0.501952, 0.539042, 0.944594, 1.834842",\
+ "0.536750, 0.559833, 0.596935, 1.002486, 1.892733",\
+ "0.841468, 0.864657, 0.901804, 1.307347, 2.197594");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.051891, 0.077808, 0.129101, 0.852080, 2.449966",\
+ "0.051892, 0.077808, 0.129101, 0.852080, 2.449966",\
+ "0.051912, 0.077829, 0.129108, 0.852080, 2.449966",\
+ "0.051998, 0.077921, 0.129136, 0.852080, 2.449966",\
+ "0.052293, 0.078232, 0.129231, 0.852081, 2.450003");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.213971, 0.224767, 0.239042, 0.379500, 0.684663",\
+ "0.302629, 0.313425, 0.327700, 0.468158, 0.773321",\
+ "0.398375, 0.409171, 0.423447, 0.563905, 0.869068",\
+ "0.467906, 0.478703, 0.492979, 0.633438, 0.938602",\
+ "0.835457, 0.846260, 0.860543, 1.001007, 1.306175");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025238, 0.034155, 0.048724, 0.301163, 0.860108",\
+ "0.025238, 0.034155, 0.048724, 0.301163, 0.860108",\
+ "0.025238, 0.034156, 0.048727, 0.301163, 0.860108",\
+ "0.025240, 0.034158, 0.048730, 0.301163, 0.860108",\
+ "0.025257, 0.034176, 0.048750, 0.301163, 0.860108");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.219758, 0.239385, 0.274833, 0.679189, 1.571066",\
+ "0.308173, 0.327801, 0.363249, 0.767605, 1.659482",\
+ "0.402556, 0.422183, 0.457632, 0.861987, 1.753864",\
+ "0.469866, 0.490242, 0.525690, 0.930046, 1.821923",\
+ "0.795255, 0.814880, 0.850328, 1.254683, 2.146560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.037493, 0.066526, 0.127980, 0.850723, 2.444963",\
+ "0.037493, 0.066526, 0.127980, 0.850723, 2.444963",\
+ "0.037493, 0.066525, 0.127980, 0.850723, 2.444963",\
+ "0.037493, 0.066525, 0.127980, 0.850723, 2.444962",\
+ "0.037489, 0.066522, 0.127980, 0.850723, 2.444959");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.176807, 0.187341, 0.201395, 0.341676, 0.646807",\
+ "0.264176, 0.274709, 0.288763, 0.429043, 0.734175",\
+ "0.344994, 0.354592, 0.368223, 0.506860, 0.812768",\
+ "0.399528, 0.409125, 0.422756, 0.561393, 0.867301",\
+ "0.683921, 0.693531, 0.707168, 0.845803, 1.151711");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047448, 0.299575, 0.856488",\
+ "0.024391, 0.033017, 0.047450, 0.299575, 0.856488",\
+ "0.024427, 0.033054, 0.047464, 0.299575, 0.856488");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[6]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[6] */
+
+pin("usb_io_pu_cal_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320620, 0.341983, 0.378211, 0.782894, 1.674796",\
+ "0.407985, 0.429348, 0.465575, 0.870258, 1.762161",\
+ "0.488889, 0.510256, 0.546486, 0.951170, 1.843073",\
+ "0.546764, 0.568152, 0.604391, 1.009078, 1.900981",\
+ "0.851568, 0.873026, 0.909296, 1.313997, 2.205901");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044601, 0.070156, 0.128218, 0.852056, 2.450125",\
+ "0.044663, 0.070159, 0.128218, 0.852056, 2.450125",\
+ "0.044669, 0.070166, 0.128219, 0.852056, 2.450125",\
+ "0.044669, 0.070209, 0.128222, 0.852056, 2.450127",\
+ "0.046118, 0.071698, 0.128231, 0.852061, 2.450134");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216513, 0.226251, 0.240034, 0.378792, 0.684694",\
+ "0.305171, 0.314909, 0.328692, 0.467450, 0.773352",\
+ "0.400916, 0.410655, 0.424439, 0.563197, 0.869098",\
+ "0.470448, 0.480187, 0.493971, 0.632730, 0.938632",\
+ "0.838001, 0.847745, 0.861536, 1.000300, 1.306202");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048771, 0.301166, 0.860107",\
+ "0.025213, 0.034127, 0.048771, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048772, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048774, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048795, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.194489, 0.214889, 0.250877, 0.656605, 1.546869",\
+ "0.282628, 0.303028, 0.339015, 0.744743, 1.635008",\
+ "0.372036, 0.392436, 0.428424, 0.834152, 1.724416",\
+ "0.436052, 0.456452, 0.492440, 0.898167, 1.788432",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041716, 0.070054, 0.126726, 0.849962, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.175899, 0.186544, 0.200656, 0.340982, 0.646065",\
+ "0.263271, 0.273916, 0.288028, 0.428355, 0.733437",\
+ "0.344128, 0.354771, 0.368883, 0.509209, 0.814291",\
+ "0.401818, 0.412460, 0.426571, 0.566896, 0.871980",\
+ "0.705550, 0.716209, 0.730328, 0.870579, 1.175736");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024130, 0.032772, 0.047558, 0.299569, 0.856133",\
+ "0.024130, 0.032772, 0.047558, 0.299569, 0.856133",\
+ "0.024130, 0.032772, 0.047558, 0.299569, 0.856133",\
+ "0.024130, 0.032776, 0.047558, 0.299569, 0.856133",\
+ "0.024160, 0.032809, 0.047574, 0.299570, 0.856133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[5]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[5] */
+
+pin("usb_io_pu_cal_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320620, 0.341983, 0.378211, 0.782894, 1.674796",\
+ "0.407985, 0.429348, 0.465575, 0.870258, 1.762161",\
+ "0.488889, 0.510256, 0.546486, 0.951170, 1.843073",\
+ "0.546764, 0.568152, 0.604391, 1.009078, 1.900981",\
+ "0.851568, 0.873026, 0.909296, 1.313997, 2.205901");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044695, 0.070193, 0.128218, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128218, 0.852056, 2.450125",\
+ "0.044695, 0.070193, 0.128219, 0.852056, 2.450125",\
+ "0.044695, 0.070209, 0.128222, 0.852056, 2.450127",\
+ "0.044695, 0.070356, 0.128231, 0.852056, 2.450134");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216513, 0.226251, 0.240034, 0.378792, 0.684694",\
+ "0.305171, 0.314909, 0.328692, 0.467450, 0.773352",\
+ "0.400916, 0.410655, 0.424439, 0.563197, 0.869098",\
+ "0.470448, 0.480187, 0.493971, 0.632730, 0.938632",\
+ "0.838001, 0.847745, 0.861536, 1.000300, 1.306202");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048771, 0.301166, 0.860107",\
+ "0.025212, 0.034126, 0.048771, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048772, 0.301166, 0.860107",\
+ "0.025218, 0.034133, 0.048774, 0.301166, 0.860107",\
+ "0.025235, 0.034151, 0.048795, 0.301166, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.238935, 0.260283, 0.296504, 0.701185, 1.593087",\
+ "0.327362, 0.348711, 0.384931, 0.789612, 1.681514",\
+ "0.416458, 0.437806, 0.474027, 0.878708, 1.770610",\
+ "0.478173, 0.498573, 0.534561, 0.940289, 1.830553",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041711, 0.070060, 0.126728, 0.849963, 2.447347",\
+ "0.041716, 0.070054, 0.126726, 0.849962, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.179257, 0.188774, 0.202365, 0.341012, 0.646923",\
+ "0.266626, 0.276142, 0.289732, 0.428379, 0.734291",\
+ "0.347482, 0.356996, 0.370585, 0.509232, 0.815144",\
+ "0.405200, 0.414714, 0.428304, 0.566951, 0.872863",\
+ "0.708812, 0.718338, 0.731933, 0.870579, 1.176490");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024130, 0.032772, 0.047559, 0.299569, 0.856139",\
+ "0.024130, 0.032772, 0.047559, 0.299569, 0.856139",\
+ "0.024130, 0.032772, 0.047559, 0.299569, 0.856139",\
+ "0.024130, 0.032776, 0.047559, 0.299569, 0.856139",\
+ "0.024160, 0.032809, 0.047572, 0.299570, 0.856139");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[4]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[4] */
+
+pin("usb_io_pu_cal_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320745, 0.342120, 0.378352, 0.783037, 1.674940",\
+ "0.408109, 0.429484, 0.465717, 0.870402, 1.762305",\
+ "0.488983, 0.510358, 0.546591, 0.951276, 1.843179",\
+ "0.546734, 0.568108, 0.604341, 1.009026, 1.900929",\
+ "0.851113, 0.872490, 0.908724, 1.313410, 2.205313");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.046369, 0.071964, 0.128220, 0.852062, 2.450126");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216415, 0.226147, 0.239922, 0.378673, 0.684575",\
+ "0.304894, 0.314626, 0.328401, 0.467152, 0.773054",\
+ "0.400819, 0.410552, 0.424328, 0.563079, 0.868981",\
+ "0.469454, 0.479186, 0.492962, 0.631714, 0.937616",\
+ "0.837901, 0.847639, 0.861421, 1.000178, 1.306080");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025202, 0.034115, 0.048744, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048744, 0.301167, 0.860107",\
+ "0.025203, 0.034116, 0.048746, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048746, 0.301167, 0.860107",\
+ "0.025222, 0.034137, 0.048767, 0.301167, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.197396, 0.217798, 0.253787, 0.659515, 1.549779",\
+ "0.285773, 0.306177, 0.342166, 0.747894, 1.638158",\
+ "0.375534, 0.395928, 0.431912, 0.837641, 1.727905",\
+ "0.439799, 0.460179, 0.496157, 0.901887, 1.792151",\
+ "0.781328, 0.801955, 0.838037, 1.243750, 2.134013");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041723, 0.069999, 0.126709, 0.849959, 2.447141",\
+ "0.041723, 0.069999, 0.126709, 0.849959, 2.447141",\
+ "0.041723, 0.069999, 0.126709, 0.849959, 2.447141",\
+ "0.041723, 0.069999, 0.126709, 0.849959, 2.447141",\
+ "0.041728, 0.070141, 0.126932, 0.849959, 2.447141");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.177011, 0.187648, 0.201756, 0.342079, 0.647165",\
+ "0.264382, 0.275019, 0.289127, 0.429450, 0.734536",\
+ "0.342508, 0.353145, 0.367252, 0.507575, 0.812661",\
+ "0.397042, 0.407678, 0.421785, 0.562107, 0.867194",\
+ "0.681430, 0.692081, 0.706196, 0.846525, 1.151605");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024132, 0.032784, 0.047567, 0.299569, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[3]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[3] */
+
+pin("usb_io_pu_cal_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320745, 0.342120, 0.378352, 0.783037, 1.674940",\
+ "0.408109, 0.429484, 0.465717, 0.870402, 1.762305",\
+ "0.488983, 0.510358, 0.546591, 0.951276, 1.843179",\
+ "0.546734, 0.568108, 0.604341, 1.009026, 1.900929",\
+ "0.851113, 0.872490, 0.908724, 1.313410, 2.205313");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.044702, 0.070201, 0.128220, 0.852056, 2.450126",\
+ "0.046369, 0.071964, 0.128220, 0.852062, 2.450126");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216415, 0.226147, 0.239922, 0.378673, 0.684575",\
+ "0.304894, 0.314626, 0.328401, 0.467152, 0.773054",\
+ "0.400819, 0.410552, 0.424328, 0.563079, 0.868981",\
+ "0.469454, 0.479186, 0.492962, 0.631714, 0.937616",\
+ "0.837901, 0.847639, 0.861421, 1.000178, 1.306080");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025200, 0.034112, 0.048744, 0.301167, 0.860107",\
+ "0.025200, 0.034112, 0.048744, 0.301167, 0.860107",\
+ "0.025202, 0.034115, 0.048746, 0.301167, 0.860107",\
+ "0.025205, 0.034118, 0.048746, 0.301166, 0.860107",\
+ "0.025221, 0.034136, 0.048767, 0.301165, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.211928, 0.232331, 0.268319, 0.674047, 1.564311",\
+ "0.300343, 0.320746, 0.356735, 0.762463, 1.652727",\
+ "0.394726, 0.415129, 0.451117, 0.856845, 1.747110",\
+ "0.462784, 0.483187, 0.519176, 0.924904, 1.815168",\
+ "0.787427, 0.807827, 0.843815, 1.249543, 2.139807");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041723, 0.070068, 0.126730, 0.849961, 2.447344",\
+ "0.041723, 0.070068, 0.126730, 0.849961, 2.447344",\
+ "0.041723, 0.070068, 0.126730, 0.849961, 2.447344",\
+ "0.041723, 0.070068, 0.126730, 0.849961, 2.447345",\
+ "0.041728, 0.070061, 0.126728, 0.849959, 2.447347");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.181588, 0.192225, 0.206333, 0.346656, 0.651742",\
+ "0.266400, 0.277038, 0.291146, 0.431469, 0.736554",\
+ "0.342508, 0.353145, 0.367252, 0.507575, 0.812661",\
+ "0.397042, 0.407678, 0.421785, 0.562107, 0.867194",\
+ "0.681430, 0.692081, 0.706196, 0.846525, 1.151605");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024102, 0.032747, 0.047552, 0.299568, 0.856157",\
+ "0.024132, 0.032784, 0.047567, 0.299569, 0.856157");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[2]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[2] */
+
+pin("usb_io_pu_cal_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320745, 0.342120, 0.378352, 0.783037, 1.674940",\
+ "0.408109, 0.429484, 0.465717, 0.870402, 1.762305",\
+ "0.488983, 0.510358, 0.546591, 0.951276, 1.843179",\
+ "0.546734, 0.568108, 0.604341, 1.009026, 1.900929",\
+ "0.851113, 0.872490, 0.908724, 1.313410, 2.205313");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044601, 0.070181, 0.128220, 0.852056, 2.450126",\
+ "0.044663, 0.070181, 0.128220, 0.852056, 2.450126",\
+ "0.044669, 0.070181, 0.128220, 0.852056, 2.450126",\
+ "0.044669, 0.070181, 0.128220, 0.852056, 2.450126",\
+ "0.046118, 0.071698, 0.128220, 0.852061, 2.450126");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216415, 0.226147, 0.239922, 0.378673, 0.684575",\
+ "0.304894, 0.314626, 0.328401, 0.467152, 0.773054",\
+ "0.400819, 0.410552, 0.424328, 0.563079, 0.868981",\
+ "0.469454, 0.479186, 0.492962, 0.631714, 0.937616",\
+ "0.837901, 0.847639, 0.861421, 1.000178, 1.306080");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048744, 0.301166, 0.860107",\
+ "0.025213, 0.034127, 0.048744, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048746, 0.301165, 0.860107",\
+ "0.025218, 0.034133, 0.048746, 0.301165, 0.860107",\
+ "0.025235, 0.034151, 0.048767, 0.301164, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.194489, 0.214889, 0.250877, 0.656605, 1.546869",\
+ "0.282628, 0.303028, 0.339015, 0.744743, 1.635008",\
+ "0.372036, 0.392436, 0.428424, 0.834152, 1.724416",\
+ "0.436052, 0.456452, 0.492440, 0.898167, 1.788432",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041728, 0.070054, 0.126726, 0.849959, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.175899, 0.186544, 0.200656, 0.340982, 0.646065",\
+ "0.263271, 0.273916, 0.288028, 0.428355, 0.733437",\
+ "0.344128, 0.354771, 0.368883, 0.509209, 0.814291",\
+ "0.401818, 0.412460, 0.426571, 0.566896, 0.871980",\
+ "0.705550, 0.716209, 0.730328, 0.870660, 1.175736");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024102, 0.032747, 0.047558, 0.299568, 0.856133",\
+ "0.024102, 0.032747, 0.047558, 0.299568, 0.856133",\
+ "0.024102, 0.032747, 0.047558, 0.299568, 0.856133",\
+ "0.024102, 0.032747, 0.047558, 0.299568, 0.856133",\
+ "0.024132, 0.032784, 0.047574, 0.299569, 0.856133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[1]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[1] */
+
+pin("usb_io_pu_cal_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044612 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_io_pu_cal_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.320745, 0.342120, 0.378352, 0.783037, 1.674940",\
+ "0.408109, 0.429484, 0.465717, 0.870402, 1.762305",\
+ "0.488983, 0.510358, 0.546591, 0.951276, 1.843179",\
+ "0.546734, 0.568108, 0.604341, 1.009026, 1.900929",\
+ "0.851113, 0.872490, 0.908724, 1.313410, 2.205313");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044695, 0.070193, 0.128220, 0.852056, 2.450126",\
+ "0.044688, 0.070187, 0.128220, 0.852056, 2.450126");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.216415, 0.226147, 0.239922, 0.378673, 0.684575",\
+ "0.304894, 0.314626, 0.328401, 0.467152, 0.773054",\
+ "0.400819, 0.410552, 0.424328, 0.563079, 0.868981",\
+ "0.469454, 0.479186, 0.492962, 0.631714, 0.937616",\
+ "0.837901, 0.847639, 0.861421, 1.000178, 1.306080");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.025212, 0.034126, 0.048744, 0.301166, 0.860107",\
+ "0.025212, 0.034126, 0.048744, 0.301166, 0.860107",\
+ "0.025216, 0.034130, 0.048746, 0.301165, 0.860107",\
+ "0.025218, 0.034133, 0.048746, 0.301165, 0.860107",\
+ "0.025235, 0.034151, 0.048767, 0.301164, 0.860107");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.253595, 0.273995, 0.309982, 0.715710, 1.605975",\
+ "0.340966, 0.361366, 0.397353, 0.803081, 1.693346",\
+ "0.421845, 0.442245, 0.478233, 0.883961, 1.774225",\
+ "0.478173, 0.498573, 0.534561, 0.940289, 1.830553",\
+ "0.763219, 0.783617, 0.819604, 1.225332, 2.115596");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041723, 0.070060, 0.126728, 0.849961, 2.447347",\
+ "0.041728, 0.070054, 0.126726, 0.849959, 2.447349");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.187072, 0.197718, 0.211831, 0.352158, 0.657240",\
+ "0.275510, 0.286157, 0.300270, 0.440597, 0.745678",\
+ "0.366248, 0.376893, 0.391005, 0.531331, 0.836413",\
+ "0.431562, 0.442205, 0.456315, 0.596641, 0.901724",\
+ "0.774613, 0.785269, 0.799387, 0.939719, 1.244796");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.000583, 0.001725, 0.015098, 0.044612");
+ values ( "0.024102, 0.032747, 0.047559, 0.299568, 0.856139",\
+ "0.024102, 0.032747, 0.047559, 0.299568, 0.856139",\
+ "0.024102, 0.032747, 0.047559, 0.299568, 0.856139",\
+ "0.024102, 0.032747, 0.047559, 0.299568, 0.856139",\
+ "0.024132, 0.032784, 0.047572, 0.299569, 0.856139");
+ }
+
+ } /* end of arc clk_ast_tlul_i_usb_io_pu_cal_o[0]_redg_min*/
+
+} /* end of pin usb_io_pu_cal_o[0] */
+} /* end of bus usb_io_pu_cal_o */
+
+pin("adc_pd_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000990 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_pd_i;
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.145974, 0.070413, 0.002322, -0.008532, 0.040411",\
+ "0.237817, 0.162519, 0.094482, 0.084652, 0.136438",\
+ "0.327313, 0.252083, 0.184412, 0.176262, 0.232381",\
+ "0.476369, 0.401228, 0.333138, 0.324719, 0.380566",\
+ "0.727129, 0.652156, 0.582810, 0.572596, 0.624823");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.143537, 0.097803, 0.067619, 0.059035, 0.070038",\
+ "0.237266, 0.190708, 0.160460, 0.151771, 0.162549",\
+ "0.329371, 0.281569, 0.251215, 0.242361, 0.252794",\
+ "0.482853, 0.435010, 0.403977, 0.394743, 0.404895",\
+ "0.739407, 0.691484, 0.659103, 0.649115, 0.658707");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_pd_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.059104, 0.006478, 0.063764, 0.149867, 0.326932",\
+ "-0.151184, -0.084885, -0.026675, 0.059343, 0.235088",\
+ "-0.241063, -0.173618, -0.113766, -0.027872, 0.145596",\
+ "-0.389953, -0.320592, -0.259252, -0.172562, 0.001425",\
+ "-0.640054, -0.566890, -0.503114, -0.414430, -0.237640");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.075633, -0.033180, 0.001225, 0.107355, 0.367997",\
+ "-0.168712, -0.126409, -0.091657, -0.008939, 0.184913",\
+ "-0.259774, -0.217681, -0.182405, -0.135026, -0.041991",\
+ "-0.408979, -0.365800, -0.330498, -0.282705, -0.188522",\
+ "-0.657040, -0.611703, -0.576351, -0.527733, -0.431269");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_pd_i_hldr*/
+
+} /* end of pin adc_pd_i */
+
+pin("adc_a0_ai") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_a0_ai;
+} /* end of pin adc_a0_ai */
+
+pin("adc_a1_ai") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_a1_ai;
+} /* end of pin adc_a1_ai */
+bus ( adc_chnsel_i ) {
+
+ bus_type : BUS2_type5 ;
+ direction : input ;
+
+pin("adc_chnsel_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000460 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_chnsel_i[1];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.500117, 0.461902, 0.438325, 0.435047, 0.453355",\
+ "0.595615, 0.557400, 0.533823, 0.530545, 0.548853",\
+ "0.695525, 0.657310, 0.633733, 0.630455, 0.648763",\
+ "0.875461, 0.837246, 0.813669, 0.810391, 0.828699",\
+ "1.191947, 1.153731, 1.130154, 1.126876, 1.145184");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.605397, 0.537315, 0.507057, 0.526616, 0.751141",\
+ "0.681420, 0.613337, 0.583080, 0.602638, 0.827164",\
+ "0.783637, 0.715554, 0.685297, 0.704855, 0.929381",\
+ "0.996963, 0.928735, 0.898477, 0.918181, 1.142707",\
+ "1.384407, 1.315680, 1.285422, 1.305625, 1.530151");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_chnsel_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.108536, -0.069519, -0.039211, 0.000204, 0.221057",\
+ "-0.207833, -0.168834, -0.138446, -0.098987, 0.125559",\
+ "-0.311546, -0.272599, -0.241997, -0.202419, 0.025649",\
+ "-0.492274, -0.453433, -0.422380, -0.382553, -0.154287",\
+ "-0.791907, -0.753246, -0.721402, -0.681127, -0.470772");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.305777, -0.243225, -0.192080, -0.118367, 0.030759",\
+ "-0.381816, -0.319265, -0.268119, -0.194406, -0.045281",\
+ "-0.483977, -0.421325, -0.370075, -0.296389, -0.147462",\
+ "-0.695975, -0.632864, -0.581137, -0.507574, -0.359554",\
+ "-1.082510, -1.018340, -0.965517, -0.892237, -0.746305");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_chnsel_i[1]_hldr*/
+
+} /* end of pin adc_chnsel_i[1] */
+
+pin("adc_chnsel_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000438 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_chnsel_i[0];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.501910, 0.463695, 0.440118, 0.436840, 0.455148",\
+ "0.598688, 0.560473, 0.536896, 0.533618, 0.551926",\
+ "0.702673, 0.664458, 0.640881, 0.637603, 0.655911",\
+ "0.888472, 0.850257, 0.826680, 0.823402, 0.841710",\
+ "1.218538, 1.180323, 1.156746, 1.153468, 1.171776");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.606473, 0.538391, 0.508134, 0.527691, 0.752217",\
+ "0.684191, 0.616110, 0.585852, 0.605410, 0.829935",\
+ "0.780333, 0.712252, 0.681994, 0.701552, 0.926077",\
+ "0.980044, 0.911864, 0.881606, 0.901262, 1.125788",\
+ "1.359676, 1.291175, 1.260918, 1.280894, 1.505420");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_chnsel_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.110705, -0.071690, -0.041374, -0.001954, 0.219264",\
+ "-0.211096, -0.172099, -0.141707, -0.102245, 0.122486",\
+ "-0.318758, -0.279812, -0.249205, -0.209624, 0.018501",\
+ "-0.505427, -0.466584, -0.435539, -0.395715, -0.167298",\
+ "-0.819228, -0.780572, -0.748725, -0.708453, -0.497364");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.306862, -0.244315, -0.193173, -0.119459, 0.029674",\
+ "-0.384597, -0.322050, -0.270908, -0.197194, -0.048061",\
+ "-0.480694, -0.418072, -0.366852, -0.293158, -0.144173",\
+ "-0.679326, -0.616367, -0.564798, -0.491194, -0.342874",\
+ "-1.058081, -0.994264, -0.941806, -0.868432, -0.721804");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_chnsel_i[0]_hldr*/
+
+} /* end of pin adc_chnsel_i[0] */
+} /* end of bus adc_chnsel_i */
+bus ( adc_d_o ) {
+
+ bus_type : BUS10_type8 ;
+ direction : output ;
+
+pin("adc_d_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[9];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[9]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[9]_hldr*/
+
+} /* end of pin adc_d_o[9] */
+
+pin("adc_d_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[8];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[8]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[8]_hldr*/
+
+} /* end of pin adc_d_o[8] */
+
+pin("adc_d_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[7];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[7]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[7]_hldr*/
+
+} /* end of pin adc_d_o[7] */
+
+pin("adc_d_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[6];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[6]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[6]_hldr*/
+
+} /* end of pin adc_d_o[6] */
+
+pin("adc_d_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[5];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[5]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[5]_hldr*/
+
+} /* end of pin adc_d_o[5] */
+
+pin("adc_d_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[4];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[4]_hldr*/
+
+} /* end of pin adc_d_o[4] */
+
+pin("adc_d_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[3];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[3]_hldr*/
+
+} /* end of pin adc_d_o[3] */
+
+pin("adc_d_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[2];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[2]_hldr*/
+
+} /* end of pin adc_d_o[2] */
+
+pin("adc_d_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[1];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[1]_hldr*/
+
+} /* end of pin adc_d_o[1] */
+
+pin("adc_d_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000474 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_o[0];
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.246589, 2.482563",\
+ "0.023522, 0.294865, 0.630572, 1.246589, 2.482563",\
+ "0.036913, 0.297173, 0.630608, 1.246589, 2.482563",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.482563",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183996, 0.385207, 0.758292, 1.504462",\
+ "0.020571, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.021496, 0.184130, 0.385715, 0.758292, 1.504462",\
+ "0.027055, 0.184687, 0.385715, 0.758292, 1.504742",\
+ "0.042630, 0.188229, 0.385715, 0.758292, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.043083, 0.198120, 0.374256, 0.697785, 1.344843",\
+ "0.128923, 0.285295, 0.461364, 0.784501, 1.430777",\
+ "0.210274, 0.373426, 0.549322, 0.872125, 1.517732",\
+ "0.345402, 0.527885, 0.703101, 1.025419, 1.670053",\
+ "0.557160, 0.787678, 0.963834, 1.284789, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.018401, 0.293911, 0.628602, 1.245375, 2.473548",\
+ "0.023522, 0.294865, 0.630572, 1.245375, 2.473548",\
+ "0.036913, 0.297173, 0.630608, 1.245450, 2.473548",\
+ "0.064917, 0.305223, 0.630841, 1.247228, 2.473548",\
+ "0.122287, 0.339635, 0.636985, 1.249173, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.062966, 0.171021, 0.282962, 0.487566, 0.896774",\
+ "0.150539, 0.258340, 0.370243, 0.574871, 0.984127",\
+ "0.230685, 0.338682, 0.450270, 0.654899, 1.064159",\
+ "0.365948, 0.476706, 0.588287, 0.792199, 1.200024",\
+ "0.578145, 0.699559, 0.811451, 1.015162, 1.422583");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000474, 0.073473, 0.160858, 0.321243, 0.642011");
+ values ( "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.020571, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.021496, 0.183210, 0.383705, 0.756065, 1.500784",\
+ "0.027055, 0.184687, 0.384226, 0.757731, 1.504742",\
+ "0.042630, 0.188229, 0.384226, 0.757731, 1.504742");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.203067, 0.157249, 0.127058, 0.118464, 0.129443",\
+ "0.207936, 0.162118, 0.131927, 0.123333, 0.134312",\
+ "0.282684, 0.236865, 0.206674, 0.198080, 0.209060",\
+ "0.376050, 0.329912, 0.299696, 0.291061, 0.301953",\
+ "0.789608, 0.741801, 0.711356, 0.702451, 0.712846");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.248522, 0.173196, 0.105012, 0.094508, 0.144555",\
+ "0.253666, 0.178340, 0.110157, 0.099653, 0.149700",\
+ "0.325959, 0.250633, 0.182449, 0.171946, 0.221993",\
+ "0.430477, 0.355166, 0.287060, 0.276913, 0.327879",\
+ "0.906305, 0.831103, 0.763471, 0.755707, 0.812875");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018401, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.129733, -0.087286, -0.052870, 0.052534, 0.311104",\
+ "-0.134675, -0.092227, -0.057811, 0.047593, 0.306162",\
+ "-0.208828, -0.166380, -0.131964, -0.026560, 0.232009",\
+ "-0.298006, -0.255611, -0.221074, -0.123848, 0.111390",\
+ "-0.695505, -0.653392, -0.618114, -0.570728, -0.477670");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020571, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.128225, -0.062545, -0.005224, 0.080862, 0.257839",\
+ "-0.134070, -0.068391, -0.011070, 0.075016, 0.251993",\
+ "-0.211053, -0.145374, -0.088052, -0.001967, 0.175010",\
+ "-0.312522, -0.246536, -0.188774, -0.102722, 0.073645",\
+ "-0.766129, -0.698256, -0.637868, -0.551957, -0.379066");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_o[0]_hldr*/
+
+} /* end of pin adc_d_o[0] */
+} /* end of bus adc_d_o */
+
+pin("adc_d_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000485 ;
+
+ /* Other user defined attributes. */
+ original_pin : adc_d_val_o;
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.043124, 0.198142, 0.374272, 0.697796, 1.344843",\
+ "0.128968, 0.285317, 0.461380, 0.784513, 1.430777",\
+ "0.210336, 0.373448, 0.549338, 0.872136, 1.517732",\
+ "0.345497, 0.527907, 0.703118, 1.025430, 1.670053",\
+ "0.557318, 0.787701, 0.963851, 1.284800, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.018442, 0.293953, 0.628634, 1.246610, 2.482563",\
+ "0.023559, 0.294907, 0.630604, 1.246610, 2.482563",\
+ "0.036948, 0.297215, 0.630640, 1.246610, 2.482563",\
+ "0.064957, 0.305264, 0.630873, 1.247249, 2.482563",\
+ "0.122341, 0.339671, 0.637017, 1.249194, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.062980, 0.171026, 0.282963, 0.487563, 0.896764",\
+ "0.150552, 0.258345, 0.370244, 0.574868, 0.984118",\
+ "0.230698, 0.338686, 0.450271, 0.654897, 1.064149",\
+ "0.365964, 0.476710, 0.588288, 0.792197, 1.200014",\
+ "0.578168, 0.699563, 0.811453, 1.015159, 1.422574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.020581, 0.184004, 0.385209, 0.758288, 1.504444",\
+ "0.020581, 0.184139, 0.385717, 0.758288, 1.504444",\
+ "0.021507, 0.184139, 0.385717, 0.758288, 1.504444",\
+ "0.027064, 0.184695, 0.385717, 0.758288, 1.504725",\
+ "0.042640, 0.188237, 0.385717, 0.758288, 1.504725");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.043124, 0.198142, 0.374272, 0.697796, 1.344843",\
+ "0.128968, 0.285317, 0.461380, 0.784513, 1.430777",\
+ "0.210336, 0.373448, 0.549338, 0.872136, 1.517732",\
+ "0.345497, 0.527907, 0.703118, 1.025430, 1.670053",\
+ "0.557318, 0.787701, 0.963851, 1.284800, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.018442, 0.293953, 0.628634, 1.245396, 2.473548",\
+ "0.023559, 0.294907, 0.630604, 1.245396, 2.473548",\
+ "0.036948, 0.297215, 0.630640, 1.245471, 2.473548",\
+ "0.064957, 0.305264, 0.630873, 1.247249, 2.473548",\
+ "0.122341, 0.339671, 0.637017, 1.249194, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.062980, 0.171026, 0.282963, 0.487563, 0.896764",\
+ "0.150552, 0.258345, 0.370244, 0.574868, 0.984118",\
+ "0.230698, 0.338686, 0.450271, 0.654897, 1.064149",\
+ "0.365964, 0.476710, 0.588288, 0.792197, 1.200014",\
+ "0.578168, 0.699563, 0.811453, 1.015159, 1.422574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000485, 0.073484, 0.160867, 0.321248, 0.642011");
+ values ( "0.020581, 0.183219, 0.383707, 0.756060, 1.500767",\
+ "0.020581, 0.183219, 0.383707, 0.756060, 1.500767",\
+ "0.021507, 0.183219, 0.383707, 0.756060, 1.500767",\
+ "0.027064, 0.184695, 0.384228, 0.757727, 1.504725",\
+ "0.042640, 0.188237, 0.384228, 0.757727, 1.504725");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_val_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018442, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.243976, 0.197294, 0.167037, 0.158332, 0.169076",\
+ "0.249724, 0.203042, 0.172784, 0.164080, 0.174823",\
+ "0.330128, 0.283446, 0.253188, 0.244484, 0.255227",\
+ "0.421667, 0.374985, 0.344728, 0.336023, 0.346766",\
+ "0.857546, 0.810300, 0.779998, 0.771221, 0.781810");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.235882, 0.160549, 0.092329, 0.081659, 0.131277",\
+ "0.241065, 0.165732, 0.097513, 0.086843, 0.136460",\
+ "0.320960, 0.245631, 0.177435, 0.166874, 0.216773",\
+ "0.424142, 0.348830, 0.280724, 0.270576, 0.321539",\
+ "0.869196, 0.793968, 0.726309, 0.718213, 0.774472");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_val_o_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_adc_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.018442, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.172771, -0.130490, -0.095686, -0.016470, 0.167392",\
+ "-0.178433, -0.136153, -0.101349, -0.022133, 0.161730",\
+ "-0.256684, -0.214404, -0.179600, -0.100383, 0.083479",\
+ "-0.345053, -0.302773, -0.267969, -0.188752, -0.004890",\
+ "-0.762797, -0.720612, -0.685586, -0.621349, -0.480218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.121789, -0.056140, 0.001137, 0.087226, 0.264264",\
+ "-0.127527, -0.061878, -0.004601, 0.081488, 0.258526",\
+ "-0.211930, -0.146176, -0.088749, -0.002671, 0.174159",\
+ "-0.309060, -0.243056, -0.185270, -0.099220, 0.077113",\
+ "-0.732847, -0.665438, -0.605637, -0.519740, -0.346201");
+ }
+
+ } /* end of arc clk_ast_adc_i_adc_d_val_o_hldr*/
+
+} /* end of pin adc_d_val_o */
+
+pin("rng_en_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_en_i;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.091175, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.101895, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.139769, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.290788, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.695925, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.056957, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.066835, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.106583, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.278157, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.782684, 0.674795");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_en_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.007162, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, -0.003653, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.040647, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.185592, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.534595, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.056779, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.046339, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.007805, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.160590, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.625268, -0.389923");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_en_i_hldr*/
+
+} /* end of pin rng_en_i */
+
+pin("rng_fips_i") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_fips_i;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.091175, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.101895, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.139769, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.290788, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.695925, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.056957, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.066835, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.106583, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.278157, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.782684, 0.674795");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_fips_i_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.007162, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, -0.003653, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.040647, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.185592, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.534595, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.056779, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.046339, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.007805, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.160590, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.625268, -0.389923");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_fips_i_hldr*/
+
+} /* end of pin rng_fips_i */
+
+pin("rng_val_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_val_o;
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.043198, 0.198183, 0.374303, 0.697816, 1.344843",\
+ "0.100770, 0.256465, 0.432811, 0.755524, 1.400950",\
+ "0.234375, 0.400817, 0.576577, 0.899279, 1.544683",\
+ "0.266829, 0.437889, 0.613486, 0.936071, 1.581241",\
+ "0.557607, 0.787741, 0.963881, 1.284820, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.018518, 0.294029, 0.628692, 1.246649, 2.482563",\
+ "0.020629, 0.294660, 0.630087, 1.246649, 2.482563",\
+ "0.041968, 0.298715, 0.630739, 1.246649, 2.482563",\
+ "0.048693, 0.300646, 0.630795, 1.246649, 2.482563",\
+ "0.122440, 0.339737, 0.637074, 1.249232, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.063098, 0.171066, 0.282997, 0.487591, 0.896779",\
+ "0.123042, 0.230894, 0.342842, 0.547360, 0.956396",\
+ "0.254755, 0.363148, 0.474725, 0.679218, 1.088204",\
+ "0.287224, 0.396275, 0.507850, 0.712171, 1.120812",\
+ "0.578369, 0.699604, 0.811487, 1.015187, 1.422589");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.020669, 0.184077, 0.385272, 0.758339, 1.504472",\
+ "0.020669, 0.184227, 0.385542, 0.758386, 1.504472",\
+ "0.022583, 0.184227, 0.385542, 0.758386, 1.504472",\
+ "0.023913, 0.184227, 0.385542, 0.758386, 1.504472",\
+ "0.042731, 0.188308, 0.385542, 0.758386, 1.504752");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_val_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.043198, 0.198183, 0.374303, 0.697816, 1.344843",\
+ "0.100770, 0.256465, 0.432811, 0.755524, 1.400950",\
+ "0.234375, 0.400817, 0.576577, 0.899279, 1.544683",\
+ "0.266829, 0.437889, 0.613486, 0.936071, 1.581241",\
+ "0.557607, 0.787741, 0.963881, 1.284820, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.018518, 0.294029, 0.628692, 1.245563, 2.473548",\
+ "0.020629, 0.294660, 0.630087, 1.245563, 2.473548",\
+ "0.041968, 0.298715, 0.630739, 1.245824, 2.473548",\
+ "0.048693, 0.300646, 0.630795, 1.246251, 2.473548",\
+ "0.122440, 0.339737, 0.637074, 1.249232, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.063098, 0.171066, 0.282997, 0.487591, 0.896779",\
+ "0.123042, 0.230894, 0.342842, 0.547360, 0.956396",\
+ "0.254755, 0.363148, 0.474725, 0.679218, 1.088204",\
+ "0.287224, 0.396275, 0.507850, 0.712171, 1.120812",\
+ "0.578369, 0.699604, 0.811487, 1.015187, 1.422589");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.020669, 0.183553, 0.383962, 0.756493, 1.501555",\
+ "0.020669, 0.183553, 0.383962, 0.756493, 1.501555",\
+ "0.022583, 0.183553, 0.383962, 0.756493, 1.501555",\
+ "0.023913, 0.183907, 0.384224, 0.757011, 1.502586",\
+ "0.042731, 0.188308, 0.384291, 0.757778, 1.504752");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_val_o_redg_min*/
+
+} /* end of pin rng_val_o */
+bus ( rng_b_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("rng_b_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001003 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_b_o[3];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.247608, 2.482563",\
+ "0.022435, 0.296571, 0.631520, 1.247608, 2.482563",\
+ "0.043575, 0.300601, 0.632171, 1.247608, 2.482563",\
+ "0.050360, 0.302518, 0.632228, 1.247608, 2.482563",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.185188, 0.386108, 0.758886, 1.504440",\
+ "0.022008, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.023991, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.025265, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.044109, 0.189380, 0.386379, 0.758933, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.246518, 2.473548",\
+ "0.022435, 0.296571, 0.631520, 1.246518, 2.473548",\
+ "0.043575, 0.300601, 0.632171, 1.246779, 2.473548",\
+ "0.050360, 0.302518, 0.632228, 1.247206, 2.473548",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.023991, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.025265, 0.185012, 0.385060, 0.757558, 1.502554",\
+ "0.044109, 0.189380, 0.385129, 0.758326, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020388, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.036802, 0.036802, 0.036802, 0.036802, 0.036802",\
+ "0.042346, 0.042346, 0.042346, 0.042346, 0.042346",\
+ "0.109280, 0.109280, 0.109280, 0.109280, 0.109280",\
+ "0.178232, 0.178232, 0.178232, 0.178232, 0.178232",\
+ "0.458063, 0.458063, 0.458063, 0.458063, 0.458063");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022008, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.053733, 0.053733, 0.053733, 0.053733, 0.053733",\
+ "0.060946, 0.060946, 0.060946, 0.060946, 0.060946",\
+ "0.137682, 0.137682, 0.137682, 0.137682, 0.137682",\
+ "0.226588, 0.226588, 0.226588, 0.226588, 0.226588",\
+ "0.644240, 0.644240, 0.644240, 0.644240, 0.644240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_b_o[3]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.020388, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.034468, -0.034468, -0.034468, -0.034468, -0.034468",\
+ "-0.040015, -0.040015, -0.040015, -0.040015, -0.040015",\
+ "-0.106260, -0.106260, -0.106260, -0.106260, -0.106260",\
+ "-0.173208, -0.173208, -0.173208, -0.173208, -0.173208",\
+ "-0.445027, -0.445027, -0.445027, -0.445027, -0.445027");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022008, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.046633, -0.046633, -0.046633, -0.046633, -0.046633",\
+ "-0.053872, -0.053872, -0.053872, -0.053872, -0.053872",\
+ "-0.131912, -0.131912, -0.131912, -0.131912, -0.131912",\
+ "-0.220120, -0.220120, -0.220120, -0.220120, -0.220120",\
+ "-0.629632, -0.629632, -0.629632, -0.629632, -0.629632");
+ }
+
+ } /* end of arc clk_ast_tlul_i_rng_b_o[3]_cghr*/
+
+} /* end of pin rng_b_o[3] */
+
+pin("rng_b_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001003 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_b_o[2];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.247608, 2.482563",\
+ "0.022435, 0.296571, 0.631520, 1.247608, 2.482563",\
+ "0.043575, 0.300601, 0.632171, 1.247608, 2.482563",\
+ "0.050360, 0.302518, 0.632228, 1.247608, 2.482563",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.185188, 0.386108, 0.758886, 1.504440",\
+ "0.022008, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.023991, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.025265, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.044109, 0.189380, 0.386379, 0.758933, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.246518, 2.473548",\
+ "0.022435, 0.296571, 0.631520, 1.246518, 2.473548",\
+ "0.043575, 0.300601, 0.632171, 1.246779, 2.473548",\
+ "0.050360, 0.302518, 0.632228, 1.247206, 2.473548",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.023991, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.025265, 0.185012, 0.385060, 0.757558, 1.502554",\
+ "0.044109, 0.189380, 0.385129, 0.758326, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[2]_redg_min*/
+
+} /* end of pin rng_b_o[2] */
+
+pin("rng_b_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001003 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_b_o[1];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.247608, 2.482563",\
+ "0.022435, 0.296571, 0.631520, 1.247608, 2.482563",\
+ "0.043575, 0.300601, 0.632171, 1.247608, 2.482563",\
+ "0.050360, 0.302518, 0.632228, 1.247608, 2.482563",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.185188, 0.386108, 0.758886, 1.504440",\
+ "0.022008, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.023991, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.025265, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.044109, 0.189380, 0.386379, 0.758933, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.246518, 2.473548",\
+ "0.022435, 0.296571, 0.631520, 1.246518, 2.473548",\
+ "0.043575, 0.300601, 0.632171, 1.246779, 2.473548",\
+ "0.050360, 0.302518, 0.632228, 1.247206, 2.473548",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.023991, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.025265, 0.185012, 0.385060, 0.757558, 1.502554",\
+ "0.044109, 0.189380, 0.385129, 0.758326, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[1]_redg_min*/
+
+} /* end of pin rng_b_o[1] */
+
+pin("rng_b_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001003 ;
+
+ /* Other user defined attributes. */
+ original_pin : rng_b_o[0];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.247608, 2.482563",\
+ "0.022435, 0.296571, 0.631520, 1.247608, 2.482563",\
+ "0.043575, 0.300601, 0.632171, 1.247608, 2.482563",\
+ "0.050360, 0.302518, 0.632228, 1.247608, 2.482563",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.185188, 0.386108, 0.758886, 1.504440",\
+ "0.022008, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.023991, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.025265, 0.185339, 0.386379, 0.758933, 1.504440",\
+ "0.044109, 0.189380, 0.386379, 0.758933, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.045041, 0.199186, 0.375056, 0.698318, 1.344843",\
+ "0.102677, 0.257471, 0.433562, 0.756025, 1.400950",\
+ "0.237455, 0.401819, 0.577329, 0.899780, 1.544683",\
+ "0.270266, 0.438889, 0.614237, 0.936571, 1.581241",\
+ "0.564763, 0.788747, 0.964628, 1.285318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.020388, 0.295933, 0.630131, 1.246518, 2.473548",\
+ "0.022435, 0.296571, 0.631520, 1.246518, 2.473548",\
+ "0.043575, 0.300601, 0.632171, 1.246779, 2.473548",\
+ "0.050360, 0.302518, 0.632228, 1.247206, 2.473548",\
+ "0.124896, 0.341364, 0.638500, 1.250182, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.064894, 0.171688, 0.283456, 0.487892, 0.896762",\
+ "0.124805, 0.231515, 0.343301, 0.547660, 0.956379",\
+ "0.256621, 0.363767, 0.475184, 0.679518, 1.088186",\
+ "0.289162, 0.396894, 0.508308, 0.712471, 1.120795",\
+ "0.581429, 0.700226, 0.811944, 1.015486, 1.422571");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.022008, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.023991, 0.184659, 0.384798, 0.757040, 1.501523",\
+ "0.025265, 0.185012, 0.385060, 0.757558, 1.502554",\
+ "0.044109, 0.189380, 0.385129, 0.758326, 1.504720");
+ }
+
+ } /* end of arc clk_ast_rng_i_rng_b_o[0]_redg_min*/
+
+} /* end of pin rng_b_o[0] */
+} /* end of bus rng_b_o */
+bus ( entropy_rsp_i ) {
+
+ bus_type : BUS34_type9 ;
+ direction : input ;
+
+pin("entropy_rsp_i[33]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001563 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[33];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "1.119801, 1.062115, 1.000165, 1.001253, 1.020223",\
+ "1.200891, 1.143205, 1.081255, 1.082343, 1.101313",\
+ "1.316914, 1.259228, 1.197278, 1.198366, 1.217336",\
+ "1.518457, 1.460771, 1.398821, 1.399909, 1.418879",\
+ "1.859802, 1.802116, 1.740050, 1.741138, 1.760224");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.903123, 0.863686, 0.813020, 0.814108, 0.827330",\
+ "1.003527, 0.964090, 0.913424, 0.914512, 0.927734",\
+ "1.127836, 1.088399, 1.037733, 1.038821, 1.052043",\
+ "1.347378, 1.307941, 1.257275, 1.258363, 1.271584",\
+ "1.738717, 1.699280, 1.648614, 1.649702, 1.662924");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[33]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.168954, -0.118035, -0.021877, -0.003703, 0.217154",\
+ "-0.249369, -0.198449, -0.102291, -0.084118, 0.136740",\
+ "-0.329424, -0.278473, -0.182197, -0.164034, 0.056702",\
+ "-0.457832, -0.406830, -0.310356, -0.292210, -0.071679",\
+ "-0.639075, -0.587937, -0.490944, -0.472842, -0.252849");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.139897, -0.089049, 0.006833, 0.025029, 0.246173",\
+ "-0.240100, -0.189184, -0.093041, -0.074866, 0.146007",\
+ "-0.358064, -0.306668, -0.208689, -0.190671, 0.057939",\
+ "-0.516949, -0.483468, -0.393287, -0.375391, -0.096605",\
+ "-0.756377, -0.722936, -0.665170, -0.641259, -0.350671");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[33]_hldr*/
+
+} /* end of pin entropy_rsp_i[33] */
+
+pin("entropy_rsp_i[32]") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[32];
+} /* end of pin entropy_rsp_i[32] */
+
+pin("entropy_rsp_i[31]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[31];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[31]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[31]_hldr*/
+
+} /* end of pin entropy_rsp_i[31] */
+
+pin("entropy_rsp_i[30]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[30];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[30]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[30]_hldr*/
+
+} /* end of pin entropy_rsp_i[30] */
+
+pin("entropy_rsp_i[29]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[29];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[29]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[29]_hldr*/
+
+} /* end of pin entropy_rsp_i[29] */
+
+pin("entropy_rsp_i[28]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[28];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[28]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[28]_hldr*/
+
+} /* end of pin entropy_rsp_i[28] */
+
+pin("entropy_rsp_i[27]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[27];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[27]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[27]_hldr*/
+
+} /* end of pin entropy_rsp_i[27] */
+
+pin("entropy_rsp_i[26]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[26];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[26]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[26]_hldr*/
+
+} /* end of pin entropy_rsp_i[26] */
+
+pin("entropy_rsp_i[25]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[25];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[25]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[25]_hldr*/
+
+} /* end of pin entropy_rsp_i[25] */
+
+pin("entropy_rsp_i[24]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[24];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[24]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[24]_hldr*/
+
+} /* end of pin entropy_rsp_i[24] */
+
+pin("entropy_rsp_i[23]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[23];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[23]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[23]_hldr*/
+
+} /* end of pin entropy_rsp_i[23] */
+
+pin("entropy_rsp_i[22]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[22];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[22]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[22]_hldr*/
+
+} /* end of pin entropy_rsp_i[22] */
+
+pin("entropy_rsp_i[21]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[21];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[21]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[21]_hldr*/
+
+} /* end of pin entropy_rsp_i[21] */
+
+pin("entropy_rsp_i[20]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[20];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[20]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[20]_hldr*/
+
+} /* end of pin entropy_rsp_i[20] */
+
+pin("entropy_rsp_i[19]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[19];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[19]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[19]_hldr*/
+
+} /* end of pin entropy_rsp_i[19] */
+
+pin("entropy_rsp_i[18]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[18];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[18]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[18]_hldr*/
+
+} /* end of pin entropy_rsp_i[18] */
+
+pin("entropy_rsp_i[17]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[17];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[17]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[17]_hldr*/
+
+} /* end of pin entropy_rsp_i[17] */
+
+pin("entropy_rsp_i[16]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[16];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[16]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[16]_hldr*/
+
+} /* end of pin entropy_rsp_i[16] */
+
+pin("entropy_rsp_i[15]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[15];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[15]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[15]_hldr*/
+
+} /* end of pin entropy_rsp_i[15] */
+
+pin("entropy_rsp_i[14]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[14];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[14]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[14]_hldr*/
+
+} /* end of pin entropy_rsp_i[14] */
+
+pin("entropy_rsp_i[13]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[13];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[13]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[13]_hldr*/
+
+} /* end of pin entropy_rsp_i[13] */
+
+pin("entropy_rsp_i[12]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[12];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[12]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[12]_hldr*/
+
+} /* end of pin entropy_rsp_i[12] */
+
+pin("entropy_rsp_i[11]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[11];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[11]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[11]_hldr*/
+
+} /* end of pin entropy_rsp_i[11] */
+
+pin("entropy_rsp_i[10]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[10];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[10]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[10]_hldr*/
+
+} /* end of pin entropy_rsp_i[10] */
+
+pin("entropy_rsp_i[9]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[9];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[9]_hldr*/
+
+} /* end of pin entropy_rsp_i[9] */
+
+pin("entropy_rsp_i[8]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[8];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[8]_hldr*/
+
+} /* end of pin entropy_rsp_i[8] */
+
+pin("entropy_rsp_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[7];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[7]_hldr*/
+
+} /* end of pin entropy_rsp_i[7] */
+
+pin("entropy_rsp_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[6];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[6]_hldr*/
+
+} /* end of pin entropy_rsp_i[6] */
+
+pin("entropy_rsp_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[5];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[5]_hldr*/
+
+} /* end of pin entropy_rsp_i[5] */
+
+pin("entropy_rsp_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[4];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[4]_hldr*/
+
+} /* end of pin entropy_rsp_i[4] */
+
+pin("entropy_rsp_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[3];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[3]_hldr*/
+
+} /* end of pin entropy_rsp_i[3] */
+
+pin("entropy_rsp_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[2];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[2]_hldr*/
+
+} /* end of pin entropy_rsp_i[2] */
+
+pin("entropy_rsp_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[1];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[1]_hldr*/
+
+} /* end of pin entropy_rsp_i[1] */
+
+pin("entropy_rsp_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001123 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_rsp_i[0];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.202977, 0.164874, 0.114384, 0.115510, 0.129197",\
+ "0.287655, 0.249552, 0.199062, 0.200188, 0.213875",\
+ "0.378849, 0.340583, 0.290072, 0.291193, 0.304823",\
+ "0.542220, 0.503561, 0.452999, 0.454109, 0.467602",\
+ "0.818496, 0.778874, 0.728184, 0.729266, 0.742423");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.245106, 0.187436, 0.073491, 0.078675, 0.141673",\
+ "0.333057, 0.275386, 0.161441, 0.166625, 0.229623",\
+ "0.433433, 0.375759, 0.261891, 0.267131, 0.330810",\
+ "0.619112, 0.561430, 0.447762, 0.453147, 0.518594",\
+ "0.940670, 0.882965, 0.769819, 0.775584, 0.845650");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.134918, -0.101431, -0.043776, -0.018552, 0.287989",\
+ "-0.219595, -0.186108, -0.128453, -0.103229, 0.203312",\
+ "-0.310658, -0.277219, -0.219447, -0.195609, 0.094094",\
+ "-0.473587, -0.440262, -0.382212, -0.361659, -0.111869",\
+ "-0.749178, -0.716141, -0.657395, -0.645080, -0.495412");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.158345, -0.107350, -0.010904, 0.007245, 0.227804",\
+ "-0.246288, -0.195293, -0.098847, -0.080698, 0.139861",\
+ "-0.346722, -0.295637, -0.198845, -0.180726, 0.039476",\
+ "-0.532525, -0.481205, -0.383518, -0.365475, -0.146201",\
+ "-0.854381, -0.802448, -0.702421, -0.684578, -0.467728");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_rsp_i[0]_hldr*/
+
+} /* end of pin entropy_rsp_i[0] */
+} /* end of bus entropy_rsp_i */
+bus ( entropy_req_o ) {
+
+ bus_type : BUS1_type10 ;
+ direction : output ;
+
+pin("entropy_req_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : entropy_req_o[0];
+ timing () {
+ related_pin : "clk_ast_es_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.041147, 0.197164, 0.373538, 0.697306, 1.344843",\
+ "0.098611, 0.255444, 0.432048, 0.755015, 1.400950",\
+ "0.230794, 0.399801, 0.575814, 0.898771, 1.544683",\
+ "0.262809, 0.436873, 0.612723, 0.935562, 1.581241",\
+ "0.549011, 0.786720, 0.963122, 1.284314, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.016407, 0.292097, 0.627231, 1.245675, 2.482563",\
+ "0.018818, 0.292719, 0.628632, 1.245675, 2.482563",\
+ "0.040240, 0.296800, 0.629285, 1.245675, 2.482563",\
+ "0.046879, 0.298746, 0.629340, 1.245675, 2.482563",\
+ "0.119467, 0.338085, 0.635627, 1.248267, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.061012, 0.170429, 0.282525, 0.487280, 0.896790",\
+ "0.121003, 0.230257, 0.342370, 0.547049, 0.956407",\
+ "0.252523, 0.362513, 0.474253, 0.678907, 1.088215",\
+ "0.284909, 0.395640, 0.507378, 0.711860, 1.120823",\
+ "0.574684, 0.698966, 0.811016, 1.014877, 1.422600");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.018854, 0.182937, 0.384410, 0.757771, 1.504492",\
+ "0.018854, 0.183085, 0.384681, 0.757818, 1.504492",\
+ "0.021110, 0.183085, 0.384681, 0.757818, 1.504492",\
+ "0.022486, 0.183085, 0.384681, 0.757818, 1.504492",\
+ "0.041128, 0.187207, 0.384681, 0.757818, 1.504772");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_req_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_es_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.041147, 0.197164, 0.373538, 0.697306, 1.344843",\
+ "0.098611, 0.255444, 0.432048, 0.755015, 1.400950",\
+ "0.230794, 0.399801, 0.575814, 0.898771, 1.544683",\
+ "0.262809, 0.436873, 0.612723, 0.935562, 1.581241",\
+ "0.549011, 0.786720, 0.963122, 1.284314, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.016407, 0.292097, 0.627231, 1.244593, 2.473548",\
+ "0.018818, 0.292719, 0.628632, 1.244593, 2.473548",\
+ "0.040240, 0.296800, 0.629285, 1.244855, 2.473548",\
+ "0.046879, 0.298746, 0.629340, 1.245281, 2.473548",\
+ "0.119467, 0.338085, 0.635627, 1.248267, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.061012, 0.170429, 0.282525, 0.487280, 0.896790",\
+ "0.121003, 0.230257, 0.342370, 0.547049, 0.956407",\
+ "0.252523, 0.362513, 0.474253, 0.678907, 1.088215",\
+ "0.284909, 0.395640, 0.507378, 0.711860, 1.120823",\
+ "0.574684, 0.698966, 0.811016, 1.014877, 1.422600");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.072998, 0.160503, 0.321005, 0.642011");
+ values ( "0.018854, 0.182418, 0.383102, 0.755926, 1.501575",\
+ "0.018854, 0.182418, 0.383102, 0.755926, 1.501575",\
+ "0.021110, 0.182418, 0.383102, 0.755926, 1.501575",\
+ "0.022486, 0.182773, 0.383362, 0.756444, 1.502606",\
+ "0.041128, 0.187207, 0.383428, 0.757210, 1.504772");
+ }
+
+ } /* end of arc clk_ast_es_i_entropy_req_o[0]_redg_min*/
+
+} /* end of pin entropy_req_o[0] */
+} /* end of bus entropy_req_o */
+bus ( fla_alert_src_i ) {
+
+ bus_type : BUS2_type5 ;
+ direction : input ;
+
+pin("fla_alert_src_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000977 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_alert_src_i[1];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.160061, 0.122171, 0.071764, 0.072890, 0.086576",\
+ "0.244155, 0.206260, 0.155798, 0.156930, 0.170689",\
+ "0.325133, 0.287001, 0.236508, 0.237633, 0.251310",\
+ "0.464429, 0.425692, 0.375119, 0.376227, 0.389693",\
+ "0.687556, 0.647617, 0.596849, 0.597922, 0.610956");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.188609, 0.130944, 0.016876, 0.021970, 0.083878",\
+ "0.276270, 0.218603, 0.104578, 0.109703, 0.171989",\
+ "0.365048, 0.307375, 0.193490, 0.198718, 0.262247",\
+ "0.519717, 0.462029, 0.348488, 0.353966, 0.420536",\
+ "0.771986, 0.714301, 0.601221, 0.607099, 0.678536");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.092219, -0.058653, -0.001237, 0.026220, 0.359896",\
+ "-0.176268, -0.142720, -0.085214, -0.058223, 0.269794",\
+ "-0.257056, -0.223577, -0.165901, -0.140924, 0.162616",\
+ "-0.395865, -0.362566, -0.304455, -0.284621, -0.043580",\
+ "-0.617889, -0.584914, -0.525934, -0.516364, -0.400062");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.101777, -0.050927, 0.044966, 0.063162, 0.284294",\
+ "-0.189465, -0.138565, -0.042479, -0.024300, 0.196634",\
+ "-0.278331, -0.227265, -0.130550, -0.112424, 0.107856",\
+ "-0.433215, -0.381745, -0.283488, -0.265494, -0.046811",\
+ "-0.685809, -0.633481, -0.532401, -0.514612, -0.298423");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[1]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.346181, 0.303572, 0.245705, 0.249110, 0.290489",\
+ "0.442377, 0.399789, 0.341790, 0.345163, 0.386153",\
+ "0.570076, 0.527583, 0.468994, 0.472224, 0.511474",\
+ "0.816390, 0.774143, 0.714024, 0.716882, 0.751614",\
+ "1.243561, 1.201654, 1.139151, 1.141470, 1.169661");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[1]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.258352, -0.220900, -0.161340, -0.151153, -0.027357",\
+ "-0.354483, -0.317000, -0.257562, -0.247380, -0.123649",\
+ "-0.481891, -0.444270, -0.385376, -0.375219, -0.251777",\
+ "-0.727449, -0.689470, -0.631990, -0.621894, -0.499204",\
+ "-1.152401, -1.113697, -1.058374, -1.048432, -0.927596");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[1]_remfr*/
+
+} /* end of pin fla_alert_src_i[1] */
+
+pin("fla_alert_src_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001210 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_alert_src_i[0];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.153898, 0.096234, -0.017862, -0.012789, 0.048865",\
+ "0.234547, 0.176873, 0.063006, 0.068247, 0.131938",\
+ "0.312922, 0.255231, 0.141780, 0.147323, 0.214693",\
+ "0.443628, 0.385987, 0.272716, 0.278561, 0.349586",\
+ "0.643976, 0.586670, 0.471971, 0.477562, 0.545510");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.135497, 0.097521, 0.047194, 0.048307, 0.061839",\
+ "0.227162, 0.188584, 0.138031, 0.139144, 0.152665",\
+ "0.314547, 0.274830, 0.224128, 0.225207, 0.238331",\
+ "0.459106, 0.419271, 0.367632, 0.368682, 0.381446",\
+ "0.699539, 0.659946, 0.606277, 0.607276, 0.619410");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.067048, -0.016232, 0.079533, 0.097739, 0.319005",\
+ "-0.147841, -0.096754, 0.000043, 0.018162, 0.238358",\
+ "-0.226477, -0.174901, -0.076238, -0.058278, 0.159985",\
+ "-0.357390, -0.304774, -0.203323, -0.185507, 0.031000",\
+ "-0.557290, -0.502515, -0.398294, -0.380283, -0.161393");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.067653, -0.034085, 0.023249, 0.050680, 0.384046",\
+ "-0.158725, -0.125379, -0.067382, -0.046199, 0.211248",\
+ "-0.245194, -0.212186, -0.153370, -0.141879, -0.002219",\
+ "-0.386154, -0.352349, -0.293338, -0.283677, -0.166272",\
+ "-0.618941, -0.583206, -0.524120, -0.514248, -0.394277");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[0]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.348301, 0.305676, 0.248104, 0.251583, 0.293858",\
+ "0.429286, 0.386661, 0.329089, 0.332567, 0.374842",\
+ "0.504635, 0.462011, 0.404396, 0.407864, 0.450008",\
+ "0.638699, 0.596084, 0.538251, 0.541665, 0.583146",\
+ "0.863013, 0.820471, 0.762185, 0.765489, 0.805634");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[0]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.260501, -0.223062, -0.163229, -0.153056, -0.029425",\
+ "-0.341485, -0.304046, -0.244213, -0.234040, -0.110409",\
+ "-0.416836, -0.379397, -0.319604, -0.309428, -0.185759",\
+ "-0.550887, -0.513443, -0.453851, -0.443663, -0.319850",\
+ "-0.774977, -0.737427, -0.678253, -0.668084, -0.544492");
+ }
+
+ } /* end of arc clk_ast_alert_i_fla_alert_src_i[0]_remrr*/
+
+} /* end of pin fla_alert_src_i[0] */
+} /* end of bus fla_alert_src_i */
+bus ( otp_alert_src_i ) {
+
+ bus_type : BUS2_type5 ;
+ direction : input ;
+
+pin("otp_alert_src_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000977 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_alert_src_i[1];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.160061, 0.122171, 0.071764, 0.072890, 0.086576",\
+ "0.244155, 0.206260, 0.155798, 0.156930, 0.170689",\
+ "0.325133, 0.287001, 0.236508, 0.237633, 0.251310",\
+ "0.464429, 0.425692, 0.375119, 0.376227, 0.389693",\
+ "0.687556, 0.647617, 0.596849, 0.597922, 0.610956");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.188609, 0.130944, 0.016876, 0.021970, 0.083878",\
+ "0.276270, 0.218603, 0.104578, 0.109703, 0.171989",\
+ "0.365048, 0.307375, 0.193490, 0.198718, 0.262247",\
+ "0.519717, 0.462029, 0.348488, 0.353966, 0.420536",\
+ "0.771986, 0.714301, 0.601221, 0.607099, 0.678536");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.092219, -0.058653, -0.001237, 0.026220, 0.359896",\
+ "-0.176268, -0.142720, -0.085214, -0.058223, 0.269794",\
+ "-0.257056, -0.223577, -0.165901, -0.140924, 0.162616",\
+ "-0.395865, -0.362566, -0.304455, -0.284621, -0.043580",\
+ "-0.617889, -0.584914, -0.525934, -0.516364, -0.400062");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.101777, -0.050927, 0.044966, 0.063162, 0.284294",\
+ "-0.189465, -0.138565, -0.042479, -0.024300, 0.196634",\
+ "-0.278331, -0.227265, -0.130550, -0.112424, 0.107856",\
+ "-0.433215, -0.381745, -0.283488, -0.265494, -0.046811",\
+ "-0.685809, -0.633481, -0.532401, -0.514612, -0.298423");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[1]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.346181, 0.303572, 0.245705, 0.249110, 0.290489",\
+ "0.442377, 0.399789, 0.341790, 0.345163, 0.386153",\
+ "0.570076, 0.527583, 0.468994, 0.472224, 0.511474",\
+ "0.816390, 0.774143, 0.714024, 0.716882, 0.751614",\
+ "1.243561, 1.201654, 1.139151, 1.141470, 1.169661");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[1]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.258352, -0.220900, -0.161340, -0.151153, -0.027357",\
+ "-0.354483, -0.317000, -0.257562, -0.247380, -0.123649",\
+ "-0.481891, -0.444270, -0.385376, -0.375219, -0.251777",\
+ "-0.727449, -0.689470, -0.631990, -0.621894, -0.499204",\
+ "-1.152401, -1.113697, -1.058374, -1.048432, -0.927596");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[1]_remfr*/
+
+} /* end of pin otp_alert_src_i[1] */
+
+pin("otp_alert_src_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001210 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_alert_src_i[0];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.153898, 0.096234, -0.017862, -0.012789, 0.048865",\
+ "0.234547, 0.176873, 0.063006, 0.068247, 0.131938",\
+ "0.312922, 0.255231, 0.141780, 0.147323, 0.214693",\
+ "0.443628, 0.385987, 0.272716, 0.278561, 0.349586",\
+ "0.643976, 0.586670, 0.471971, 0.477562, 0.545510");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.135497, 0.097521, 0.047194, 0.048307, 0.061839",\
+ "0.227162, 0.188584, 0.138031, 0.139144, 0.152665",\
+ "0.314547, 0.274830, 0.224128, 0.225207, 0.238331",\
+ "0.459106, 0.419271, 0.367632, 0.368682, 0.381446",\
+ "0.699539, 0.659946, 0.606277, 0.607276, 0.619410");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.067048, -0.016232, 0.079533, 0.097739, 0.319005",\
+ "-0.147841, -0.096754, 0.000043, 0.018162, 0.238358",\
+ "-0.226477, -0.174901, -0.076238, -0.058278, 0.159985",\
+ "-0.357390, -0.304774, -0.203323, -0.185507, 0.031000",\
+ "-0.557290, -0.502515, -0.398294, -0.380283, -0.161393");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.067653, -0.034085, 0.023249, 0.050680, 0.384046",\
+ "-0.158725, -0.125379, -0.067382, -0.046199, 0.211248",\
+ "-0.245194, -0.212186, -0.153370, -0.141879, -0.002219",\
+ "-0.386154, -0.352349, -0.293338, -0.283677, -0.166272",\
+ "-0.618941, -0.583206, -0.524120, -0.514248, -0.394277");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[0]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.348301, 0.305676, 0.248104, 0.251583, 0.293858",\
+ "0.429286, 0.386661, 0.329089, 0.332567, 0.374842",\
+ "0.504635, 0.462011, 0.404396, 0.407864, 0.450008",\
+ "0.638699, 0.596084, 0.538251, 0.541665, 0.583146",\
+ "0.863013, 0.820471, 0.762185, 0.765489, 0.805634");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[0]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.260501, -0.223062, -0.163229, -0.153056, -0.029425",\
+ "-0.341485, -0.304046, -0.244213, -0.234040, -0.110409",\
+ "-0.416836, -0.379397, -0.319604, -0.309428, -0.185759",\
+ "-0.550887, -0.513443, -0.453851, -0.443663, -0.319850",\
+ "-0.774977, -0.737427, -0.678253, -0.668084, -0.544492");
+ }
+
+ } /* end of arc clk_ast_alert_i_otp_alert_src_i[0]_remrr*/
+
+} /* end of pin otp_alert_src_i[0] */
+} /* end of bus otp_alert_src_i */
+bus ( alert_rsp_i ) {
+
+ bus_type : BUS52_type11 ;
+ direction : input ;
+
+pin("alert_rsp_i[51]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[51];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[51]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[51]_hldr*/
+
+} /* end of pin alert_rsp_i[51] */
+
+pin("alert_rsp_i[50]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[50];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[50]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[50]_hldr*/
+
+} /* end of pin alert_rsp_i[50] */
+
+pin("alert_rsp_i[49]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[49];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[49]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[49]_hldr*/
+
+} /* end of pin alert_rsp_i[49] */
+
+pin("alert_rsp_i[48]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[48];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[48]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[48]_hldr*/
+
+} /* end of pin alert_rsp_i[48] */
+
+pin("alert_rsp_i[47]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[47];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[47]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[47]_hldr*/
+
+} /* end of pin alert_rsp_i[47] */
+
+pin("alert_rsp_i[46]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[46];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[46]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[46]_hldr*/
+
+} /* end of pin alert_rsp_i[46] */
+
+pin("alert_rsp_i[45]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[45];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[45]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[45]_hldr*/
+
+} /* end of pin alert_rsp_i[45] */
+
+pin("alert_rsp_i[44]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[44];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[44]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[44]_hldr*/
+
+} /* end of pin alert_rsp_i[44] */
+
+pin("alert_rsp_i[43]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[43];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[43]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[43]_hldr*/
+
+} /* end of pin alert_rsp_i[43] */
+
+pin("alert_rsp_i[42]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[42];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[42]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[42]_hldr*/
+
+} /* end of pin alert_rsp_i[42] */
+
+pin("alert_rsp_i[41]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[41];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[41]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[41]_hldr*/
+
+} /* end of pin alert_rsp_i[41] */
+
+pin("alert_rsp_i[40]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[40];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[40]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[40]_hldr*/
+
+} /* end of pin alert_rsp_i[40] */
+
+pin("alert_rsp_i[39]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[39];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[39]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[39]_hldr*/
+
+} /* end of pin alert_rsp_i[39] */
+
+pin("alert_rsp_i[38]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[38];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[38]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[38]_hldr*/
+
+} /* end of pin alert_rsp_i[38] */
+
+pin("alert_rsp_i[37]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[37];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[37]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[37]_hldr*/
+
+} /* end of pin alert_rsp_i[37] */
+
+pin("alert_rsp_i[36]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[36];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[36]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[36]_hldr*/
+
+} /* end of pin alert_rsp_i[36] */
+
+pin("alert_rsp_i[35]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[35];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[35]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[35]_hldr*/
+
+} /* end of pin alert_rsp_i[35] */
+
+pin("alert_rsp_i[34]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[34];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[34]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[34]_hldr*/
+
+} /* end of pin alert_rsp_i[34] */
+
+pin("alert_rsp_i[33]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[33];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[33]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[33]_hldr*/
+
+} /* end of pin alert_rsp_i[33] */
+
+pin("alert_rsp_i[32]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[32];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[32]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[32]_hldr*/
+
+} /* end of pin alert_rsp_i[32] */
+
+pin("alert_rsp_i[31]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[31];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[31]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[31]_hldr*/
+
+} /* end of pin alert_rsp_i[31] */
+
+pin("alert_rsp_i[30]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[30];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[30]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[30]_hldr*/
+
+} /* end of pin alert_rsp_i[30] */
+
+pin("alert_rsp_i[29]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[29];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[29]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[29]_hldr*/
+
+} /* end of pin alert_rsp_i[29] */
+
+pin("alert_rsp_i[28]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[28];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[28]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[28]_hldr*/
+
+} /* end of pin alert_rsp_i[28] */
+
+pin("alert_rsp_i[27]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000591 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[27];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.199726, 0.138633, 0.033463, 0.054461, 0.309637",\
+ "0.287373, 0.226285, 0.121029, 0.142110, 0.398309",\
+ "0.384684, 0.323610, 0.218105, 0.239430, 0.498591",\
+ "0.560847, 0.499591, 0.393454, 0.414928, 0.675905",\
+ "0.860633, 0.798634, 0.691077, 0.712170, 0.968509");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.214871, 0.178837, 0.123974, 0.124132, 0.126049",\
+ "0.298634, 0.262602, 0.208037, 0.208173, 0.209823",\
+ "0.403277, 0.367383, 0.313251, 0.313345, 0.314481",\
+ "0.578488, 0.543087, 0.488416, 0.488511, 0.489666",\
+ "0.868870, 0.834430, 0.778706, 0.778804, 0.779997");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[27]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.112157, -0.054218, 0.050557, 0.069205, 0.295841",\
+ "-0.199804, -0.141906, -0.036659, -0.018006, 0.208689",\
+ "-0.297115, -0.239335, -0.132721, -0.114053, 0.112815",\
+ "-0.473050, -0.415309, -0.306338, -0.287512, -0.058720",\
+ "-0.771971, -0.713924, -0.601352, -0.581984, -0.346599");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.126284, -0.091801, -0.026053, 0.006825, 0.406380",\
+ "-0.209910, -0.175609, -0.109372, -0.076372, 0.324685",\
+ "-0.312970, -0.278942, -0.212075, -0.178671, 0.227297",\
+ "-0.483276, -0.448963, -0.383263, -0.349244, 0.064176",\
+ "-0.764074, -0.729205, -0.665784, -0.630568, -0.202592");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[27]_hldr*/
+
+} /* end of pin alert_rsp_i[27] */
+
+pin("alert_rsp_i[26]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000589 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[26];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.192162, 0.131067, 0.025934, 0.046895, 0.301630",\
+ "0.279200, 0.218116, 0.112785, 0.133940, 0.391038",\
+ "0.372216, 0.311153, 0.205428, 0.226969, 0.488754",\
+ "0.526955, 0.465449, 0.358834, 0.380180, 0.639596",\
+ "0.781727, 0.719289, 0.610887, 0.631753, 0.885337");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.203639, 0.167601, 0.112469, 0.112646, 0.114806",\
+ "0.292883, 0.256848, 0.201897, 0.202061, 0.204057",\
+ "0.398578, 0.362549, 0.308291, 0.308405, 0.309779",\
+ "0.587975, 0.552224, 0.497936, 0.498030, 0.499172",\
+ "0.915076, 0.879998, 0.824973, 0.825069, 0.826237");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[26]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.104592, -0.046636, 0.057935, 0.076581, 0.303191",\
+ "-0.191631, -0.133768, -0.028107, -0.009449, 0.217299",\
+ "-0.284646, -0.226970, -0.119146, -0.100465, 0.126557",\
+ "-0.438866, -0.381023, -0.270840, -0.251831, -0.020821",\
+ "-0.692552, -0.634323, -0.519612, -0.499921, -0.260619");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.115174, -0.080527, -0.015220, 0.017546, 0.415745",\
+ "-0.204335, -0.169799, -0.104194, -0.071353, 0.327762",\
+ "-0.309715, -0.275599, -0.208862, -0.175734, 0.226866",\
+ "-0.496251, -0.462141, -0.395611, -0.362029, 0.046093",\
+ "-0.816650, -0.782151, -0.717215, -0.682795, -0.264493");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[26]_hldr*/
+
+} /* end of pin alert_rsp_i[26] */
+
+pin("alert_rsp_i[25]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[25];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[25]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[25]_hldr*/
+
+} /* end of pin alert_rsp_i[25] */
+
+pin("alert_rsp_i[24]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[24];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[24]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[24]_hldr*/
+
+} /* end of pin alert_rsp_i[24] */
+
+pin("alert_rsp_i[23]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[23];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[23]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[23]_hldr*/
+
+} /* end of pin alert_rsp_i[23] */
+
+pin("alert_rsp_i[22]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[22];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[22]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[22]_hldr*/
+
+} /* end of pin alert_rsp_i[22] */
+
+pin("alert_rsp_i[21]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[21];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[21]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[21]_hldr*/
+
+} /* end of pin alert_rsp_i[21] */
+
+pin("alert_rsp_i[20]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[20];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[20]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[20]_hldr*/
+
+} /* end of pin alert_rsp_i[20] */
+
+pin("alert_rsp_i[19]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[19];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[19]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[19]_hldr*/
+
+} /* end of pin alert_rsp_i[19] */
+
+pin("alert_rsp_i[18]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[18];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[18]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[18]_hldr*/
+
+} /* end of pin alert_rsp_i[18] */
+
+pin("alert_rsp_i[17]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[17];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[17]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[17]_hldr*/
+
+} /* end of pin alert_rsp_i[17] */
+
+pin("alert_rsp_i[16]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[16];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[16]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[16]_hldr*/
+
+} /* end of pin alert_rsp_i[16] */
+
+pin("alert_rsp_i[15]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[15];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[15]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[15]_hldr*/
+
+} /* end of pin alert_rsp_i[15] */
+
+pin("alert_rsp_i[14]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[14];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[14]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[14]_hldr*/
+
+} /* end of pin alert_rsp_i[14] */
+
+pin("alert_rsp_i[13]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[13];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[13]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[13]_hldr*/
+
+} /* end of pin alert_rsp_i[13] */
+
+pin("alert_rsp_i[12]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[12];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[12]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[12]_hldr*/
+
+} /* end of pin alert_rsp_i[12] */
+
+pin("alert_rsp_i[11]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[11];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[11]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[11]_hldr*/
+
+} /* end of pin alert_rsp_i[11] */
+
+pin("alert_rsp_i[10]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[10];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[10]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[10]_hldr*/
+
+} /* end of pin alert_rsp_i[10] */
+
+pin("alert_rsp_i[9]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[9];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[9]_hldr*/
+
+} /* end of pin alert_rsp_i[9] */
+
+pin("alert_rsp_i[8]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[8];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[8]_hldr*/
+
+} /* end of pin alert_rsp_i[8] */
+
+pin("alert_rsp_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[7];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[7]_hldr*/
+
+} /* end of pin alert_rsp_i[7] */
+
+pin("alert_rsp_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[6];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[6]_hldr*/
+
+} /* end of pin alert_rsp_i[6] */
+
+pin("alert_rsp_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[5];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[5]_hldr*/
+
+} /* end of pin alert_rsp_i[5] */
+
+pin("alert_rsp_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[4];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[4]_hldr*/
+
+} /* end of pin alert_rsp_i[4] */
+
+pin("alert_rsp_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[3];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[3]_hldr*/
+
+} /* end of pin alert_rsp_i[3] */
+
+pin("alert_rsp_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[2];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[2]_hldr*/
+
+} /* end of pin alert_rsp_i[2] */
+
+pin("alert_rsp_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000448 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[1];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.185938, 0.149895, 0.094200, 0.094419, 0.097084",\
+ "0.272325, 0.236283, 0.180640, 0.180856, 0.183473",\
+ "0.358907, 0.322867, 0.267423, 0.267624, 0.270063",\
+ "0.517339, 0.481305, 0.426450, 0.426607, 0.428517",\
+ "0.782742, 0.746824, 0.692719, 0.692812, 0.693947");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.247782, 0.186691, 0.081487, 0.102517, 0.358097",\
+ "0.337069, 0.275978, 0.170775, 0.191805, 0.447385",\
+ "0.437523, 0.376437, 0.271157, 0.292262, 0.548747",\
+ "0.618326, 0.557252, 0.451732, 0.473072, 0.732422",\
+ "0.922412, 0.861156, 0.755022, 0.776496, 1.037479");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.097073, -0.062070, 0.002277, 0.034799, 0.430045",\
+ "-0.183156, -0.148183, -0.083758, -0.051216, 0.344267",\
+ "-0.269694, -0.234839, -0.170093, -0.137470, 0.259003",\
+ "-0.427321, -0.392813, -0.327135, -0.294275, 0.105065",\
+ "-0.690363, -0.656367, -0.589370, -0.556034, -0.150898");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.143047, -0.085078, 0.019349, 0.037994, 0.264586",\
+ "-0.232868, -0.174900, -0.070472, -0.051827, 0.174765",\
+ "-0.335734, -0.277819, -0.172775, -0.154124, 0.072546",\
+ "-0.517254, -0.459461, -0.352995, -0.334328, -0.107479",\
+ "-0.818219, -0.760494, -0.651701, -0.632901, -0.404435");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[1]_hldr*/
+
+} /* end of pin alert_rsp_i[1] */
+
+pin("alert_rsp_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000500 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_rsp_i[0];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.220674, 0.184637, 0.129589, 0.129760, 0.131844",\
+ "0.297060, 0.261023, 0.205975, 0.206146, 0.208230",\
+ "0.368632, 0.332596, 0.277611, 0.277778, 0.279805",\
+ "0.497931, 0.461898, 0.407219, 0.407363, 0.409115",\
+ "0.712779, 0.676837, 0.622759, 0.622852, 0.623986");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.209550, 0.148448, 0.043450, 0.064279, 0.317417",\
+ "0.301584, 0.240483, 0.135457, 0.156314, 0.409784",\
+ "0.402135, 0.341040, 0.235908, 0.256868, 0.511598",\
+ "0.580476, 0.519395, 0.414005, 0.435218, 0.693015",\
+ "0.877762, 0.816594, 0.710628, 0.732149, 0.993683");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.105222, -0.070365, -0.005626, 0.026996, 0.423447",\
+ "-0.183185, -0.148328, -0.083588, -0.050966, 0.345485",\
+ "-0.257972, -0.223201, -0.158231, -0.125551, 0.271609",\
+ "-0.390468, -0.355966, -0.290271, -0.257407, 0.141987",\
+ "-0.603765, -0.569785, -0.502723, -0.469420, -0.064694");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.121294, -0.063271, 0.040519, 0.059158, 0.285669",\
+ "-0.213390, -0.155380, -0.051441, -0.032801, 0.193729",\
+ "-0.313842, -0.255881, -0.151371, -0.132725, 0.093876",\
+ "-0.490960, -0.433113, -0.327285, -0.308625, -0.081856",\
+ "-0.786249, -0.728564, -0.620239, -0.601510, -0.373902");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_rsp_i[0]_hldr*/
+
+} /* end of pin alert_rsp_i[0] */
+} /* end of bus alert_rsp_i */
+bus ( alert_req_o ) {
+
+ bus_type : BUS26_type12 ;
+ direction : output ;
+
+pin("alert_req_o[25]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[25];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[25]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[25]_redg_min*/
+
+} /* end of pin alert_req_o[25] */
+
+pin("alert_req_o[24]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[24];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[24]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[24]_redg_min*/
+
+} /* end of pin alert_req_o[24] */
+
+pin("alert_req_o[23]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[23];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[23]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[23]_redg_min*/
+
+} /* end of pin alert_req_o[23] */
+
+pin("alert_req_o[22]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[22];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[22]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[22]_redg_min*/
+
+} /* end of pin alert_req_o[22] */
+
+pin("alert_req_o[21]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[21];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[21]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[21]_redg_min*/
+
+} /* end of pin alert_req_o[21] */
+
+pin("alert_req_o[20]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[20];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[20]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[20]_redg_min*/
+
+} /* end of pin alert_req_o[20] */
+
+pin("alert_req_o[19]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[19];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[19]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[19]_redg_min*/
+
+} /* end of pin alert_req_o[19] */
+
+pin("alert_req_o[18]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[18];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[18]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[18]_redg_min*/
+
+} /* end of pin alert_req_o[18] */
+
+pin("alert_req_o[17]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[17];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[17]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[17]_redg_min*/
+
+} /* end of pin alert_req_o[17] */
+
+pin("alert_req_o[16]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[16];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[16]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[16]_redg_min*/
+
+} /* end of pin alert_req_o[16] */
+
+pin("alert_req_o[15]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[15];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[15]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[15]_redg_min*/
+
+} /* end of pin alert_req_o[15] */
+
+pin("alert_req_o[14]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[14];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[14]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[14]_redg_min*/
+
+} /* end of pin alert_req_o[14] */
+
+pin("alert_req_o[13]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[13];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[13]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[13]_redg_min*/
+
+} /* end of pin alert_req_o[13] */
+
+pin("alert_req_o[12]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[12];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[12]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[12]_redg_min*/
+
+} /* end of pin alert_req_o[12] */
+
+pin("alert_req_o[11]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[11];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[11]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[11]_redg_min*/
+
+} /* end of pin alert_req_o[11] */
+
+pin("alert_req_o[10]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[10];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[10]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[10]_redg_min*/
+
+} /* end of pin alert_req_o[10] */
+
+pin("alert_req_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[9];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[9]_redg_min*/
+
+} /* end of pin alert_req_o[9] */
+
+pin("alert_req_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[8];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[8]_redg_min*/
+
+} /* end of pin alert_req_o[8] */
+
+pin("alert_req_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[7];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[7]_redg_min*/
+
+} /* end of pin alert_req_o[7] */
+
+pin("alert_req_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[6];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[6]_redg_min*/
+
+} /* end of pin alert_req_o[6] */
+
+pin("alert_req_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[5];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[5]_redg_min*/
+
+} /* end of pin alert_req_o[5] */
+
+pin("alert_req_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[4];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[4]_redg_min*/
+
+} /* end of pin alert_req_o[4] */
+
+pin("alert_req_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[3];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296659, 0.552264, 2.441059",\
+ "0.027606, 0.137424, 0.296659, 0.552264, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.555346, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.555346, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.186120, 0.340034, 1.494292",\
+ "0.022299, 0.090163, 0.186120, 0.340034, 1.494292",\
+ "0.024376, 0.090410, 0.186120, 0.340034, 1.494292",\
+ "0.025559, 0.090772, 0.186120, 0.340034, 1.494292",\
+ "0.043338, 0.097514, 0.190357, 0.340034, 1.494292");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.054627, 0.128254, 0.213264, 0.349398, 1.341047",\
+ "0.111446, 0.185285, 0.270053, 0.405814, 1.402083",\
+ "0.250051, 0.333480, 0.418189, 0.553854, 1.548154",\
+ "0.283766, 0.371624, 0.456253, 0.591793, 1.586834",\
+ "0.584903, 0.727700, 0.813314, 0.950396, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.026420, 0.137079, 0.296653, 0.551706, 2.441059",\
+ "0.027606, 0.137424, 0.296653, 0.551706, 2.442441",\
+ "0.048973, 0.143889, 0.302016, 0.554928, 2.445574",\
+ "0.056124, 0.147298, 0.303942, 0.554928, 2.445574",\
+ "0.135119, 0.207795, 0.342920, 0.559922, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.074318, 0.127023, 0.181661, 0.269150, 0.901570",\
+ "0.135238, 0.187941, 0.242461, 0.329766, 0.964295",\
+ "0.278249, 0.331631, 0.386036, 0.473153, 1.104683",\
+ "0.313722, 0.367652, 0.422063, 0.509190, 1.140690",\
+ "0.637044, 0.700813, 0.755435, 0.842904, 1.478811");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.031162, 0.073075, 0.140203, 0.634048");
+ values ( "0.022299, 0.090049, 0.185649, 0.338251, 1.490219",\
+ "0.022299, 0.090163, 0.185649, 0.338251, 1.490219",\
+ "0.024376, 0.090410, 0.185649, 0.338251, 1.490219",\
+ "0.025559, 0.090772, 0.185933, 0.338414, 1.490219",\
+ "0.043338, 0.097514, 0.190357, 0.339166, 1.490219");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[3]_redg_min*/
+
+} /* end of pin alert_req_o[3] */
+
+pin("alert_req_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001149 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[2];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297295, 0.552903, 2.441059",\
+ "0.028270, 0.138058, 0.297295, 0.552903, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555988, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555988, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186489, 0.340409, 1.494277",\
+ "0.022756, 0.090531, 0.186489, 0.340409, 1.494277",\
+ "0.024833, 0.090775, 0.186489, 0.340409, 1.494277",\
+ "0.025999, 0.091137, 0.186489, 0.340409, 1.494277",\
+ "0.043741, 0.097870, 0.190712, 0.340409, 1.494277");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.055384, 0.128593, 0.213603, 0.349733, 1.341047",\
+ "0.112211, 0.185623, 0.270391, 0.406151, 1.402083",\
+ "0.251189, 0.333817, 0.418527, 0.554191, 1.548154",\
+ "0.285031, 0.371962, 0.456591, 0.592129, 1.586834",\
+ "0.587490, 0.728041, 0.813655, 0.950730, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.027116, 0.137715, 0.297287, 0.552346, 2.441059",\
+ "0.028270, 0.138058, 0.297287, 0.552346, 2.442441",\
+ "0.049599, 0.144519, 0.302646, 0.555570, 2.445574",\
+ "0.056771, 0.147922, 0.304566, 0.555570, 2.445574",\
+ "0.136105, 0.208333, 0.343458, 0.560560, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.074922, 0.127232, 0.181871, 0.269356, 0.901561",\
+ "0.135837, 0.188150, 0.242670, 0.329973, 0.964286",\
+ "0.278886, 0.331840, 0.386244, 0.473358, 1.104675",\
+ "0.314388, 0.367860, 0.422271, 0.509395, 1.140682",\
+ "0.638051, 0.701022, 0.755644, 0.843111, 1.478802");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001149, 0.031329, 0.073242, 0.140370, 0.634048");
+ values ( "0.022737, 0.090417, 0.186014, 0.338627, 1.490204",\
+ "0.022756, 0.090531, 0.186014, 0.338627, 1.490204",\
+ "0.024833, 0.090775, 0.186014, 0.338627, 1.490204",\
+ "0.025999, 0.091137, 0.186298, 0.338790, 1.490204",\
+ "0.043741, 0.097870, 0.190712, 0.339540, 1.490204");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[2]_redg_min*/
+
+} /* end of pin alert_req_o[2] */
+
+pin("alert_req_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001011 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[1];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.054759, 0.128313, 0.213323, 0.349457, 1.341047",\
+ "0.111579, 0.185344, 0.270112, 0.405873, 1.402083",\
+ "0.250250, 0.333539, 0.418248, 0.553913, 1.548154",\
+ "0.283987, 0.371683, 0.456312, 0.591852, 1.586834",\
+ "0.585354, 0.727759, 0.813374, 0.950454, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.026541, 0.137190, 0.296770, 0.552376, 2.441059",\
+ "0.027722, 0.137535, 0.296770, 0.552376, 2.442441",\
+ "0.049082, 0.143999, 0.302126, 0.555458, 2.445574",\
+ "0.056237, 0.147407, 0.304051, 0.555458, 2.445574",\
+ "0.135291, 0.207889, 0.343014, 0.560034, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.074438, 0.127065, 0.181703, 0.269191, 0.901573",\
+ "0.135357, 0.187983, 0.242503, 0.329807, 0.964298",\
+ "0.278376, 0.331673, 0.386077, 0.473193, 1.104686",\
+ "0.313854, 0.367693, 0.422104, 0.509231, 1.140694",\
+ "0.637244, 0.700854, 0.755477, 0.842945, 1.478814");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.022386, 0.090122, 0.186194, 0.340109, 1.494298",\
+ "0.022386, 0.090236, 0.186194, 0.340109, 1.494298",\
+ "0.024466, 0.090482, 0.186194, 0.340109, 1.494298",\
+ "0.025646, 0.090844, 0.186194, 0.340109, 1.494298",\
+ "0.043418, 0.097585, 0.190427, 0.340109, 1.494298");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.054759, 0.128313, 0.213323, 0.349457, 1.341047",\
+ "0.111579, 0.185344, 0.270112, 0.405873, 1.402083",\
+ "0.250250, 0.333539, 0.418248, 0.553913, 1.548154",\
+ "0.283987, 0.371683, 0.456312, 0.591852, 1.586834",\
+ "0.585354, 0.727759, 0.813374, 0.950454, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.026541, 0.137190, 0.296764, 0.551818, 2.441059",\
+ "0.027722, 0.137535, 0.296764, 0.551818, 2.442441",\
+ "0.049082, 0.143999, 0.302126, 0.555040, 2.445574",\
+ "0.056237, 0.147407, 0.304051, 0.555040, 2.445574",\
+ "0.135291, 0.207889, 0.343014, 0.560034, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.074438, 0.127065, 0.181703, 0.269191, 0.901573",\
+ "0.135357, 0.187983, 0.242503, 0.329807, 0.964298",\
+ "0.278376, 0.331673, 0.386077, 0.473193, 1.104686",\
+ "0.313854, 0.367693, 0.422104, 0.509231, 1.140694",\
+ "0.637244, 0.700854, 0.755477, 0.842945, 1.478814");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.001011, 0.031191, 0.073104, 0.140232, 0.634048");
+ values ( "0.022386, 0.090122, 0.185722, 0.338326, 1.490226",\
+ "0.022386, 0.090236, 0.185722, 0.338326, 1.490226",\
+ "0.024466, 0.090482, 0.185722, 0.338326, 1.490226",\
+ "0.025646, 0.090844, 0.186005, 0.338489, 1.490226",\
+ "0.043418, 0.097585, 0.190427, 0.339240, 1.490226");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[1]_redg_min*/
+
+} /* end of pin alert_req_o[1] */
+
+pin("alert_req_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.634048 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000990 ;
+
+ /* Other user defined attributes. */
+ original_pin : alert_req_o[0];
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.054663, 0.128270, 0.213280, 0.349414, 1.341047",\
+ "0.111482, 0.185301, 0.270069, 0.405830, 1.402083",\
+ "0.250105, 0.333496, 0.418205, 0.553870, 1.548154",\
+ "0.283826, 0.371640, 0.456269, 0.591809, 1.586834",\
+ "0.585026, 0.727716, 0.813330, 0.950411, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.026453, 0.137109, 0.296689, 0.552294, 2.441059",\
+ "0.027638, 0.137454, 0.296689, 0.552294, 2.442441",\
+ "0.049002, 0.143919, 0.302046, 0.555377, 2.445574",\
+ "0.056155, 0.147327, 0.303971, 0.555377, 2.445574",\
+ "0.135166, 0.207821, 0.342945, 0.559953, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.074369, 0.127040, 0.181679, 0.269167, 0.901576",\
+ "0.135288, 0.187959, 0.242479, 0.329784, 0.964302",\
+ "0.278302, 0.331649, 0.386053, 0.473170, 1.104690",\
+ "0.313777, 0.367669, 0.422080, 0.509207, 1.140697",\
+ "0.637128, 0.700830, 0.755452, 0.842922, 1.478818");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.022335, 0.090079, 0.186151, 0.340065, 1.494304",\
+ "0.022335, 0.090194, 0.186151, 0.340065, 1.494304",\
+ "0.024413, 0.090440, 0.186151, 0.340065, 1.494304",\
+ "0.025595, 0.090802, 0.186151, 0.340065, 1.494304",\
+ "0.043371, 0.097543, 0.190386, 0.340065, 1.494304");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.054663, 0.128270, 0.213280, 0.349414, 1.341047",\
+ "0.111482, 0.185301, 0.270069, 0.405830, 1.402083",\
+ "0.250105, 0.333496, 0.418205, 0.553870, 1.548154",\
+ "0.283826, 0.371640, 0.456269, 0.591809, 1.586834",\
+ "0.585026, 0.727716, 0.813330, 0.950411, 1.938873");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.026453, 0.137109, 0.296683, 0.551737, 2.441059",\
+ "0.027638, 0.137454, 0.296683, 0.551737, 2.442441",\
+ "0.049002, 0.143919, 0.302046, 0.554959, 2.445574",\
+ "0.056155, 0.147327, 0.303971, 0.554959, 2.445574",\
+ "0.135166, 0.207821, 0.342945, 0.559953, 2.445574");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.074369, 0.127040, 0.181679, 0.269167, 0.901576",\
+ "0.135288, 0.187959, 0.242479, 0.329784, 0.964302",\
+ "0.278302, 0.331649, 0.386053, 0.473170, 1.104690",\
+ "0.313777, 0.367669, 0.422080, 0.509207, 1.140697",\
+ "0.637128, 0.700830, 0.755452, 0.842922, 1.478818");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000990, 0.031170, 0.073083, 0.140211, 0.634048");
+ values ( "0.022335, 0.090079, 0.185679, 0.338282, 1.490232",\
+ "0.022335, 0.090194, 0.185679, 0.338282, 1.490232",\
+ "0.024413, 0.090440, 0.185679, 0.338282, 1.490232",\
+ "0.025595, 0.090802, 0.185963, 0.338445, 1.490232",\
+ "0.043371, 0.097543, 0.190386, 0.339197, 1.490232");
+ }
+
+ } /* end of arc clk_ast_alert_i_alert_req_o[0]_redg_min*/
+
+} /* end of pin alert_req_o[0] */
+} /* end of bus alert_req_o */
+bus ( dft_strap_test_i ) {
+
+ bus_type : BUS3_type13 ;
+ direction : input ;
+
+pin("dft_strap_test_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001120 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_strap_test_i[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.478706, 0.503228, 0.581052, 0.648637, 1.079464",\
+ "0.567148, 0.591670, 0.669494, 0.737079, 1.167906",\
+ "0.650074, 0.674596, 0.752419, 0.820004, 1.250831",\
+ "0.793078, 0.817600, 0.895423, 0.963008, 1.393835",\
+ "1.032445, 1.056946, 1.134770, 1.202355, 1.633182");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.463301, 0.380673, 0.305530, 0.271812, 0.239120",\
+ "0.556491, 0.473863, 0.398720, 0.365002, 0.332310",\
+ "0.646873, 0.564245, 0.489102, 0.455384, 0.422692",\
+ "0.811633, 0.729010, 0.653883, 0.620177, 0.587543",\
+ "1.181053, 1.098457, 1.023414, 0.989768, 0.957438");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.265123, -0.222342, -0.186677, -0.161410, -0.033314",\
+ "-0.347654, -0.304874, -0.269208, -0.243941, -0.115845",\
+ "-0.437836, -0.395055, -0.359390, -0.334122, -0.206027",\
+ "-0.606076, -0.563289, -0.527626, -0.502359, -0.374263",\
+ "-0.890704, -0.847899, -0.812254, -0.786994, -0.658891");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.255864, -0.182785, -0.116647, -0.070567, 0.157553",\
+ "-0.349537, -0.279942, -0.213805, -0.167724, 0.060396",\
+ "-0.440910, -0.389678, -0.323541, -0.277461, -0.049341",\
+ "-0.599026, -0.557614, -0.524142, -0.478056, -0.249871",\
+ "-0.851183, -0.809770, -0.777053, -0.739869, -0.511712");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[2]_hldr*/
+
+} /* end of pin dft_strap_test_i[2] */
+
+pin("dft_strap_test_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001321 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_strap_test_i[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.428035, 0.345406, 0.276171, 0.259388, 0.254027",\
+ "0.519710, 0.437082, 0.361939, 0.340063, 0.334702",\
+ "0.618532, 0.535904, 0.460761, 0.427043, 0.420880",\
+ "0.797361, 0.714733, 0.639590, 0.605872, 0.573180",\
+ "1.098214, 1.015590, 0.940461, 0.906752, 0.874108");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.453520, 0.478042, 0.555866, 0.623451, 1.054278",\
+ "0.538258, 0.562780, 0.640604, 0.708189, 1.139016",\
+ "0.651889, 0.676378, 0.754202, 0.821787, 1.252614",\
+ "0.864482, 0.889878, 0.967702, 1.035287, 1.466114",\
+ "1.235476, 1.260812, 1.338683, 1.406288, 1.837127");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.221451, -0.180039, -0.147321, -0.110125, 0.118032",\
+ "-0.314428, -0.273016, -0.240298, -0.203102, 0.025055",\
+ "-0.409753, -0.368340, -0.335623, -0.298439, -0.070282",\
+ "-0.551259, -0.508465, -0.472804, -0.447539, -0.236382",\
+ "-0.757339, -0.714548, -0.679008, -0.653790, -0.510956");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.247877, -0.173125, -0.106987, -0.060907, 0.167213",\
+ "-0.342789, -0.268037, -0.201899, -0.155819, 0.072301",\
+ "-0.443799, -0.369047, -0.302909, -0.256829, -0.028709",\
+ "-0.627085, -0.552322, -0.486182, -0.440095, -0.211908",\
+ "-0.932472, -0.857684, -0.791539, -0.745437, -0.517093");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[1]_hldr*/
+
+} /* end of pin dft_strap_test_i[1] */
+
+pin("dft_strap_test_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000495 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_strap_test_i[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.476989, 0.501509, 0.579333, 0.646918, 1.077745",\
+ "0.568510, 0.593031, 0.670855, 0.738440, 1.169267",\
+ "0.663180, 0.687701, 0.765525, 0.833110, 1.263937",\
+ "0.832054, 0.856556, 0.934380, 1.001965, 1.432792",\
+ "1.118659, 1.143116, 1.220940, 1.288525, 1.719352");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.474663, 0.392034, 0.328853, 0.312070, 0.306709",\
+ "0.571978, 0.489349, 0.424889, 0.408106, 0.402744",\
+ "0.676749, 0.594121, 0.529069, 0.512287, 0.506925",\
+ "0.856563, 0.773935, 0.708488, 0.691705, 0.686343",\
+ "1.151508, 1.068880, 1.004139, 0.987361, 0.981971");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.289829, -0.215077, -0.148940, -0.102859, 0.125261",\
+ "-0.385674, -0.310922, -0.244784, -0.198704, 0.029416",\
+ "-0.484928, -0.410176, -0.344038, -0.297958, -0.069838",\
+ "-0.657145, -0.582393, -0.516256, -0.470176, -0.242056",\
+ "-0.943033, -0.868281, -0.802144, -0.756064, -0.527944");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.269424, -0.228012, -0.195294, -0.158099, 0.070058",\
+ "-0.366945, -0.325532, -0.292815, -0.255619, -0.027462",\
+ "-0.471935, -0.430523, -0.397805, -0.360610, -0.132453",\
+ "-0.650169, -0.608757, -0.576039, -0.538849, -0.310692",\
+ "-0.940386, -0.898973, -0.866256, -0.829075, -0.600918");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_strap_test_i[0]_hldr*/
+
+} /* end of pin dft_strap_test_i[0] */
+} /* end of bus dft_strap_test_i */
+bus ( lc_dft_en_i ) {
+
+ bus_type : BUS4_type6 ;
+ direction : input ;
+
+pin("lc_dft_en_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : lc_dft_en_i[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.116868, 0.046289, 0.009123, -0.011232, -0.072101",\
+ "0.130035, 0.060315, 0.022495, 0.001866, -0.059037",\
+ "0.171476, 0.101933, 0.064692, 0.043957, -0.021156",\
+ "0.330098, 0.263569, 0.222296, 0.198239, 0.112987",\
+ "0.772581, 0.713134, 0.646673, 0.609916, 0.496722");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.164832, 0.206226, 0.283518, 0.350873, 0.781571",\
+ "0.176771, 0.218346, 0.296254, 0.363875, 0.794722",\
+ "0.219963, 0.260510, 0.337961, 0.405191, 0.833567",\
+ "0.396019, 0.435268, 0.507744, 0.571712, 0.985407",\
+ "0.931350, 0.951153, 1.007354, 1.063861, 1.468564");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.015255, 0.029491, 0.060650, 0.081348, 0.176530",\
+ "-0.028040, 0.015174, 0.046352, 0.067152, 0.163478",\
+ "-0.067695, -0.029062, 0.006032, 0.028571, 0.126390",\
+ "-0.170614, -0.143005, -0.113142, -0.091864, 0.016864",\
+ "-0.388675, -0.412783, -0.403332, -0.388997, -0.262218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.058687, -0.133819, -0.215174, -0.276149, -0.608913",\
+ "-0.070579, -0.145649, -0.226804, -0.287545, -0.618487",\
+ "-0.113780, -0.187774, -0.267897, -0.328130, -0.658063",\
+ "-0.257059, -0.339271, -0.416614, -0.475103, -0.797794",\
+ "-0.613549, -0.743897, -0.832843, -0.896262, -1.220625");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[3]_hldr*/
+
+} /* end of pin lc_dft_en_i[3] */
+
+pin("lc_dft_en_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : lc_dft_en_i[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.091175, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.101895, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.139769, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.290788, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.695925, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.056957, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.066835, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.106583, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.278157, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.782684, 0.674795");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.007162, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, -0.003653, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.040647, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.185592, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.534595, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.056779, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.046339, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.007805, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.160590, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.625268, -0.389923");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[2]_hldr*/
+
+} /* end of pin lc_dft_en_i[2] */
+
+pin("lc_dft_en_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : lc_dft_en_i[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.116868, 0.046289, 0.009123, -0.011232, -0.072101",\
+ "0.130035, 0.060315, 0.022495, 0.001866, -0.059037",\
+ "0.171476, 0.101933, 0.064692, 0.043957, -0.021156",\
+ "0.330098, 0.263569, 0.222296, 0.198239, 0.112987",\
+ "0.772581, 0.713134, 0.646673, 0.609916, 0.496722");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.164832, 0.206226, 0.283518, 0.350873, 0.781571",\
+ "0.176771, 0.218346, 0.296254, 0.363875, 0.794722",\
+ "0.219963, 0.260510, 0.337961, 0.405191, 0.833567",\
+ "0.396019, 0.435268, 0.507744, 0.571712, 0.985407",\
+ "0.931350, 0.951153, 1.007354, 1.063861, 1.468564");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.015255, 0.029491, 0.060650, 0.081348, 0.176530",\
+ "-0.028040, 0.015174, 0.046352, 0.067152, 0.163478",\
+ "-0.067695, -0.029062, 0.006032, 0.028571, 0.126390",\
+ "-0.170614, -0.143005, -0.113142, -0.091864, 0.016864",\
+ "-0.388675, -0.412783, -0.403332, -0.388997, -0.262218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.058687, -0.133819, -0.215174, -0.276149, -0.608913",\
+ "-0.070579, -0.145649, -0.226804, -0.287545, -0.618487",\
+ "-0.113780, -0.187774, -0.267897, -0.328130, -0.658063",\
+ "-0.257059, -0.339271, -0.416614, -0.475103, -0.797794",\
+ "-0.613549, -0.743897, -0.832843, -0.896262, -1.220625");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[1]_hldr*/
+
+} /* end of pin lc_dft_en_i[1] */
+
+pin("lc_dft_en_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : lc_dft_en_i[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.200076, 0.146984, 0.107694, 0.091175, 0.087585",\
+ "0.210849, 0.158775, 0.118789, 0.101895, 0.097230",\
+ "0.247906, 0.195949, 0.156513, 0.139769, 0.134169",\
+ "0.400793, 0.347442, 0.307665, 0.290788, 0.285288",\
+ "0.811131, 0.757315, 0.714144, 0.695925, 0.691143");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.249331, 0.166333, 0.091045, 0.056957, 0.020498",\
+ "0.258619, 0.175944, 0.100656, 0.066835, 0.033618",\
+ "0.297457, 0.214925, 0.140086, 0.106583, 0.074986",\
+ "0.472698, 0.388796, 0.312903, 0.278157, 0.236728",\
+ "0.983325, 0.898854, 0.822917, 0.782684, 0.674795");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.096530, -0.053812, -0.018112, 0.007162, 0.135173",\
+ "-0.107327, -0.064625, -0.028931, -0.003653, 0.124428",\
+ "-0.144374, -0.101567, -0.065911, -0.040647, 0.087453",\
+ "-0.286358, -0.243809, -0.210094, -0.185592, -0.057011",\
+ "-0.620310, -0.578080, -0.553843, -0.534595, -0.422314");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.028986, 0.127724, 0.562810, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.130907, -0.055165, 0.010770, 0.056779, 0.285045",\
+ "-0.140562, -0.065848, 0.000282, 0.046339, 0.274227",\
+ "-0.179341, -0.104491, -0.038333, 0.007805, 0.236523",\
+ "-0.350407, -0.276449, -0.208169, -0.160590, 0.074989",\
+ "-0.811364, -0.742478, -0.673228, -0.625268, -0.389923");
+ }
+
+ } /* end of arc clk_ast_tlul_i_lc_dft_en_i[0]_hldr*/
+
+} /* end of pin lc_dft_en_i[0] */
+} /* end of bus lc_dft_en_i */
+bus ( fla_obs_i ) {
+
+ bus_type : BUS8_type14 ;
+ direction : input ;
+
+pin("fla_obs_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[7];
+} /* end of pin fla_obs_i[7] */
+
+pin("fla_obs_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[6];
+} /* end of pin fla_obs_i[6] */
+
+pin("fla_obs_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[5];
+} /* end of pin fla_obs_i[5] */
+
+pin("fla_obs_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[4];
+} /* end of pin fla_obs_i[4] */
+
+pin("fla_obs_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[3];
+} /* end of pin fla_obs_i[3] */
+
+pin("fla_obs_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[2];
+} /* end of pin fla_obs_i[2] */
+
+pin("fla_obs_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[1];
+} /* end of pin fla_obs_i[1] */
+
+pin("fla_obs_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : fla_obs_i[0];
+} /* end of pin fla_obs_i[0] */
+} /* end of bus fla_obs_i */
+bus ( otp_obs_i ) {
+
+ bus_type : BUS8_type14 ;
+ direction : input ;
+
+pin("otp_obs_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[7];
+} /* end of pin otp_obs_i[7] */
+
+pin("otp_obs_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[6];
+} /* end of pin otp_obs_i[6] */
+
+pin("otp_obs_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[5];
+} /* end of pin otp_obs_i[5] */
+
+pin("otp_obs_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[4];
+} /* end of pin otp_obs_i[4] */
+
+pin("otp_obs_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[3];
+} /* end of pin otp_obs_i[3] */
+
+pin("otp_obs_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[2];
+} /* end of pin otp_obs_i[2] */
+
+pin("otp_obs_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[1];
+} /* end of pin otp_obs_i[1] */
+
+pin("otp_obs_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otp_obs_i[0];
+} /* end of pin otp_obs_i[0] */
+} /* end of bus otp_obs_i */
+bus ( otm_obs_i ) {
+
+ bus_type : BUS8_type14 ;
+ direction : input ;
+
+pin("otm_obs_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[7];
+} /* end of pin otm_obs_i[7] */
+
+pin("otm_obs_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[6];
+} /* end of pin otm_obs_i[6] */
+
+pin("otm_obs_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[5];
+} /* end of pin otm_obs_i[5] */
+
+pin("otm_obs_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[4];
+} /* end of pin otm_obs_i[4] */
+
+pin("otm_obs_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[3];
+} /* end of pin otm_obs_i[3] */
+
+pin("otm_obs_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[2];
+} /* end of pin otm_obs_i[2] */
+
+pin("otm_obs_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000506 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[1];
+} /* end of pin otm_obs_i[1] */
+
+pin("otm_obs_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000492 ;
+
+ /* Other user defined attributes. */
+ original_pin : otm_obs_i[0];
+} /* end of pin otm_obs_i[0] */
+} /* end of bus otm_obs_i */
+
+pin("usb_obs_i") {
+ direction : input ;
+ max_transition : 5.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : usb_obs_i;
+} /* end of pin usb_obs_i */
+bus ( obs_ctrl_o ) {
+
+ bus_type : BUS12_type15 ;
+ direction : output ;
+
+pin("obs_ctrl_o[11]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000605 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[11];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.551399, 0.731602, 0.919092, 1.221084, 1.804596",\
+ "0.583544, 0.763747, 0.951237, 1.253229, 1.836741",\
+ "0.655451, 0.835654, 1.023144, 1.325136, 1.908648",\
+ "0.911916, 1.092119, 1.279609, 1.581602, 2.165114",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.636337, 0.816885, 1.005100, 1.307096, 1.890974",\
+ "0.668482, 0.849030, 1.037246, 1.339242, 1.923120",\
+ "0.740389, 0.920937, 1.109152, 1.411149, 1.995026",\
+ "0.996855, 1.177402, 1.365618, 1.667614, 2.251492",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.712249, 0.892328, 1.079909, 1.381693, 1.965147",\
+ "0.744394, 0.924473, 1.112054, 1.413838, 1.997292",\
+ "0.816301, 0.996380, 1.183961, 1.485745, 2.069199",\
+ "1.072767, 1.252846, 1.440427, 1.742211, 2.325664",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244640",\
+ "0.766618, 0.946840, 1.134560, 1.436233, 2.019464",\
+ "0.798764, 0.978985, 1.166705, 1.468378, 2.051609",\
+ "0.870670, 1.050892, 1.238612, 1.540285, 2.123516",\
+ "1.127136, 1.307358, 1.495078, 1.796751, 2.379982",\
+ "2.046112, 2.226333, 2.414054, 2.715726, 3.298958",\
+ "1.048213, 1.232108, 1.418511, 1.719959, 2.302742",\
+ "1.080358, 1.264253, 1.450656, 1.752105, 2.334887",\
+ "1.152265, 1.336160, 1.522563, 1.824011, 2.406794",\
+ "1.408731, 1.592625, 1.779028, 2.080477, 2.663259",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.410192, 0.677978, 0.939558, 1.379255, 2.258650",\
+ "0.437946, 0.705732, 0.967312, 1.407009, 2.286404",\
+ "0.489378, 0.757164, 1.018744, 1.458441, 2.337836",\
+ "0.655862, 0.923647, 1.185227, 1.624924, 2.504319",\
+ "1.246932, 1.514718, 1.776298, 2.215995, 3.095390",\
+ "0.498896, 0.766053, 1.028199, 1.467484, 2.346055",\
+ "0.526650, 0.793807, 1.055953, 1.495238, 2.373809",\
+ "0.578082, 0.845239, 1.107385, 1.546670, 2.425241",\
+ "0.744566, 1.011722, 1.273868, 1.713154, 2.591724",\
+ "1.335636, 1.602793, 1.864939, 2.304224, 3.182795",\
+ "0.591838, 0.859198, 1.119924, 1.559648, 2.439097",\
+ "0.619592, 0.886952, 1.147678, 1.587402, 2.466851",\
+ "0.671024, 0.938384, 1.199110, 1.638834, 2.518283",\
+ "0.837508, 1.104867, 1.365594, 1.805318, 2.684766",\
+ "1.428578, 1.695938, 1.956664, 2.396388, 3.275837",\
+ "0.657682, 0.927762, 1.186944, 1.626498, 2.505608",\
+ "0.685436, 0.955516, 1.214698, 1.654252, 2.533362",\
+ "0.736868, 1.006948, 1.266130, 1.705685, 2.584794",\
+ "0.903352, 1.173432, 1.432614, 1.872168, 2.751277",\
+ "1.494422, 1.764502, 2.023684, 2.463239, 3.342348",\
+ "1.004203, 1.308598, 1.557607, 1.995652, 2.871743",\
+ "1.031957, 1.336352, 1.585361, 2.023406, 2.899497",\
+ "1.083390, 1.387784, 1.636793, 2.074838, 2.950930",\
+ "1.249873, 1.554267, 1.803276, 2.241322, 3.117413",\
+ "1.840944, 2.145338, 2.394347, 2.832392, 3.708484");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_2706*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.459504, 0.723077, 0.999350, 1.468080, 2.405539",\
+ "0.491649, 0.755223, 1.031495, 1.500225, 2.437684",\
+ "0.563556, 0.827130, 1.103402, 1.572132, 2.509591",\
+ "0.820022, 1.083595, 1.359868, 1.828597, 2.766056",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.547698, 0.810618, 1.086918, 1.554795, 2.491473",\
+ "0.579843, 0.842764, 1.119063, 1.586940, 2.523618",\
+ "0.651750, 0.914670, 1.190970, 1.658847, 2.595525",\
+ "0.908216, 1.171136, 1.447435, 1.915312, 2.851990",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.636014, 0.899599, 1.174883, 1.642418, 2.578428",\
+ "0.668159, 0.931744, 1.207028, 1.674563, 2.610573",\
+ "0.740066, 1.003651, 1.278935, 1.746470, 2.682480",\
+ "0.996532, 1.260116, 1.535400, 2.002935, 2.938945",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.698510, 0.965234, 1.239022, 1.706331, 2.641937",\
+ "0.730655, 0.997379, 1.271168, 1.738477, 2.674082",\
+ "0.802562, 1.069286, 1.343075, 1.810383, 2.745989",\
+ "1.059028, 1.325751, 1.599540, 2.066849, 3.002454",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.027636, 1.329564, 1.590890, 2.055681, 2.987393",\
+ "1.059781, 1.361710, 1.623035, 2.087826, 3.019538",\
+ "1.131688, 1.433616, 1.694942, 2.159733, 3.091445",\
+ "1.388154, 1.690082, 1.951407, 2.416198, 3.347910",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703320, 0.703316",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703320, 0.703316",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703320, 0.703316",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703320, 0.703316",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703320, 0.703316",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.393145, 0.575577, 0.771969, 1.081022, 1.675830",\
+ "0.420899, 0.603331, 0.799723, 1.108776, 1.703585",\
+ "0.472331, 0.654763, 0.851155, 1.160208, 1.755017",\
+ "0.638815, 0.821247, 1.017638, 1.326692, 1.921499",\
+ "1.229885, 1.412317, 1.608709, 1.917762, 2.512568",\
+ "0.480560, 0.662962, 0.859462, 1.168327, 1.763184",\
+ "0.508314, 0.690716, 0.887216, 1.196081, 1.790938",\
+ "0.559746, 0.742149, 0.938648, 1.247514, 1.842370",\
+ "0.726229, 0.908632, 1.105132, 1.413997, 2.008852",\
+ "1.317300, 1.499703, 1.696202, 2.005067, 2.599921",\
+ "0.561436, 0.743299, 0.939489, 1.248356, 1.843215",\
+ "0.589190, 0.771053, 0.967243, 1.276110, 1.870970",\
+ "0.640622, 0.822485, 1.018675, 1.327542, 1.922402",\
+ "0.807106, 0.988969, 1.185158, 1.494025, 2.088884",\
+ "1.398176, 1.580039, 1.776229, 2.085095, 2.679953",\
+ "0.619083, 0.800848, 0.997033, 1.305601, 1.899863",\
+ "0.646837, 0.828601, 1.024787, 1.333355, 1.927617",\
+ "0.698269, 0.880034, 1.076219, 1.384787, 1.979049",\
+ "0.864752, 1.046517, 1.242702, 1.551270, 2.145531",\
+ "1.455823, 1.637588, 1.833773, 2.142340, 2.736601",\
+ "0.921290, 1.106072, 1.300666, 1.608616, 2.201710",\
+ "0.949044, 1.133826, 1.328420, 1.636370, 2.229464",\
+ "1.000476, 1.185258, 1.379853, 1.687802, 2.280896",\
+ "1.166960, 1.351742, 1.546336, 1.854285, 2.447378",\
+ "1.758030, 1.942812, 2.137407, 2.445355, 3.038447");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066652",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066652",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066652",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066652",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066652",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_2637*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.455529, 0.715158, 0.987030, 1.443910, 2.357670",\
+ "0.487674, 0.747303, 1.019175, 1.476055, 2.389815",\
+ "0.559581, 0.819210, 1.091082, 1.547962, 2.461721",\
+ "0.816046, 1.075675, 1.347547, 1.804427, 2.718186",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.543634, 0.802691, 1.074561, 1.530625, 2.443603",\
+ "0.575779, 0.834837, 1.106706, 1.562770, 2.475748",\
+ "0.647686, 0.906743, 1.178613, 1.634677, 2.547655",\
+ "0.904151, 1.163209, 1.435078, 1.891142, 2.804120",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.631664, 0.891657, 1.162525, 1.618248, 2.530558",\
+ "0.663809, 0.923802, 1.194670, 1.650393, 2.562703",\
+ "0.735716, 0.995709, 1.266577, 1.722300, 2.634610",\
+ "0.992181, 1.252175, 1.523042, 1.978765, 2.891075",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.693885, 0.957271, 1.226663, 1.682162, 2.594067",\
+ "0.726030, 0.989416, 1.258808, 1.714307, 2.626212",\
+ "0.797937, 1.061323, 1.330715, 1.786214, 2.698119",\
+ "1.054402, 1.317788, 1.587180, 2.042679, 2.954584",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.021272, 1.321346, 1.578410, 2.031462, 2.939523",\
+ "1.053417, 1.353491, 1.610555, 2.063607, 2.971668",\
+ "1.125324, 1.425398, 1.682462, 2.135514, 3.043575",\
+ "1.381790, 1.681863, 1.938927, 2.391979, 3.300040",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703318, 0.703312",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703318, 0.703312",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703318, 0.703312",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703318, 0.703312",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034925",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211195, 0.211195",\
+ "0.703322, 0.703322, 0.703321, 0.703318, 0.703312",\
+ "2.463890, 2.463889, 2.463888, 2.463885, 2.463879");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.391484, 0.574025, 0.770279, 1.079497, 1.674793",\
+ "0.419237, 0.601779, 0.798033, 1.107251, 1.702548",\
+ "0.470670, 0.653211, 0.849465, 1.158683, 1.753979",\
+ "0.637153, 0.819694, 1.015949, 1.325166, 1.920461",\
+ "1.228224, 1.410765, 1.607020, 1.916236, 2.511531",\
+ "0.478904, 0.661410, 0.857772, 1.166802, 1.762147",\
+ "0.506657, 0.689164, 0.885526, 1.194556, 1.789901",\
+ "0.558090, 0.740596, 0.936958, 1.245988, 1.841333",\
+ "0.724573, 0.907080, 1.103442, 1.412471, 2.007815",\
+ "1.315644, 1.498150, 1.694512, 2.003541, 2.598884",\
+ "0.559771, 0.741747, 0.937799, 1.246830, 1.842178",\
+ "0.587525, 0.769501, 0.965553, 1.274584, 1.869933",\
+ "0.638957, 0.820933, 1.016985, 1.326016, 1.921365",\
+ "0.805441, 0.987416, 1.183469, 1.492499, 2.087847",\
+ "1.396511, 1.578487, 1.774539, 2.083570, 2.678916",\
+ "0.617410, 0.799295, 0.995343, 1.304075, 1.898826",\
+ "0.645164, 0.827049, 1.023097, 1.331829, 1.926580",\
+ "0.696596, 0.878481, 1.074529, 1.383261, 1.978012",\
+ "0.863080, 1.044965, 1.241013, 1.549745, 2.144494",\
+ "1.454150, 1.636036, 1.832083, 2.140815, 2.735564",\
+ "0.919505, 1.104522, 1.298977, 1.607090, 2.200673",\
+ "0.947259, 1.132276, 1.326731, 1.634844, 2.228427",\
+ "0.998691, 1.183708, 1.378163, 1.686276, 2.279859",\
+ "1.165175, 1.350191, 1.544647, 1.852759, 2.446341",\
+ "1.756245, 1.941262, 2.135717, 2.443830, 3.037410");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066651",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066651",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066651",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066651",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036751",\
+ "0.066655, 0.066655, 0.066655, 0.066654, 0.066651",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440315",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523674");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_2582*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.547812, 0.726239, 0.906500, 1.192706, 1.743823",\
+ "0.579958, 0.758384, 0.938645, 1.224851, 1.775968",\
+ "0.651865, 0.830291, 1.010552, 1.296758, 1.847875",\
+ "0.908330, 1.086757, 1.267017, 1.553223, 2.104340",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.632751, 0.811512, 0.992415, 1.278626, 1.830201",\
+ "0.664896, 0.843657, 1.024560, 1.310771, 1.862346",\
+ "0.736803, 0.915564, 1.096467, 1.382678, 1.934253",\
+ "0.993268, 1.172029, 1.352932, 1.639144, 2.190719",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.708657, 0.886955, 1.067224, 1.353223, 1.904374",\
+ "0.740802, 0.919100, 1.099369, 1.385368, 1.936519",\
+ "0.812709, 0.991007, 1.171276, 1.457275, 2.008426",\
+ "1.069174, 1.247472, 1.427741, 1.713740, 2.264891",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.763009, 0.941467, 1.121875, 1.407763, 1.958691",\
+ "0.795154, 0.973612, 1.154020, 1.439908, 1.990836",\
+ "0.867061, 1.045519, 1.225927, 1.511815, 2.062743",\
+ "1.123527, 1.301984, 1.482392, 1.768280, 2.319208",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.044431, 1.226694, 1.405825, 1.691489, 2.241968",\
+ "1.076576, 1.258839, 1.437970, 1.723634, 2.274114",\
+ "1.148483, 1.330746, 1.509877, 1.795541, 2.346020",\
+ "1.404948, 1.587211, 1.766343, 2.052006, 2.602486",\
+ "2.323924, 2.506187, 2.685318, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.034926, 0.034926, 0.034926, 0.034926, 0.034926",\
+ "0.080177, 0.080177, 0.080177, 0.080177, 0.080177",\
+ "0.211196, 0.211196, 0.211196, 0.211196, 0.211196",\
+ "0.703322, 0.703322, 0.703322, 0.703322, 0.703322",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.408756, 0.673926, 0.933128, 1.369310, 2.241675",\
+ "0.436510, 0.701680, 0.960881, 1.397064, 2.269429",\
+ "0.487942, 0.753112, 1.012314, 1.448496, 2.320861",\
+ "0.654426, 0.919595, 1.178797, 1.614980, 2.487345",\
+ "1.245496, 1.510666, 1.769868, 2.206050, 3.078415",\
+ "0.497422, 0.762001, 1.021768, 1.457539, 2.329080",\
+ "0.525175, 0.789755, 1.049522, 1.485293, 2.356834",\
+ "0.576608, 0.841187, 1.100955, 1.536725, 2.408266",\
+ "0.743091, 1.007670, 1.267438, 1.703208, 2.574750",\
+ "1.334162, 1.598741, 1.858509, 2.294279, 3.165820",\
+ "0.590228, 0.855124, 1.113494, 1.549703, 2.422122",\
+ "0.617982, 0.882878, 1.141248, 1.577457, 2.449876",\
+ "0.669414, 0.934310, 1.192680, 1.628889, 2.501308",\
+ "0.835898, 1.100793, 1.359163, 1.795373, 2.667792",\
+ "1.426969, 1.691864, 1.950234, 2.386443, 3.258862",\
+ "0.655951, 0.923658, 1.180514, 1.616553, 2.488633",\
+ "0.683705, 0.951412, 1.208267, 1.644307, 2.516387",\
+ "0.735137, 1.002844, 1.259700, 1.695739, 2.567819",\
+ "0.901620, 1.169327, 1.426183, 1.862223, 2.734303",\
+ "1.492691, 1.760398, 2.017254, 2.453294, 3.325373",\
+ "1.001740, 1.304156, 1.551144, 1.985685, 2.854766",\
+ "1.029494, 1.331910, 1.578898, 2.013438, 2.882520",\
+ "1.080926, 1.383342, 1.630330, 2.064871, 2.933952",\
+ "1.247410, 1.549826, 1.796813, 2.231354, 3.100436",\
+ "1.838480, 2.140896, 2.387884, 2.822425, 3.691506");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677",\
+ "0.036752, 0.036752, 0.036752, 0.036752, 0.036752",\
+ "0.066655, 0.066655, 0.066655, 0.066655, 0.066655",\
+ "0.142207, 0.142207, 0.142207, 0.142207, 0.142207",\
+ "0.440316, 0.440316, 0.440316, 0.440316, 0.440316",\
+ "1.523676, 1.523676, 1.523676, 1.523676, 1.523677");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_2520*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.315086, 0.347231, 0.419138, 0.675604, 1.594576",\
+ "0.402477, 0.434622, 0.506529, 0.762995, 1.681967",\
+ "0.483396, 0.515541, 0.587448, 0.843914, 1.762885",\
+ "0.541136, 0.573281, 0.645189, 0.901655, 1.820624",\
+ "0.843842, 0.875987, 0.947895, 1.204361, 2.123326");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.034927, 0.080178, 0.211197, 0.703303, 2.463871",\
+ "0.034927, 0.080178, 0.211262, 0.703303, 2.463871",\
+ "0.034927, 0.080178, 0.211506, 0.703303, 2.463871",\
+ "0.034928, 0.080178, 0.211506, 0.703303, 2.463871",\
+ "0.035124, 0.080207, 0.211847, 0.703316, 2.463884");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.288640, 0.316394, 0.367826, 0.534309, 1.125380",\
+ "0.376032, 0.403786, 0.455218, 0.621702, 1.212772",\
+ "0.456902, 0.484656, 0.536088, 0.702571, 1.293642",\
+ "0.514551, 0.542304, 0.593737, 0.760220, 1.351291",\
+ "0.817630, 0.845638, 0.897452, 1.064344, 1.655102");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.036752, 0.066655, 0.142211, 0.440316, 1.524426",\
+ "0.036752, 0.066655, 0.142211, 0.440316, 1.524426",\
+ "0.036752, 0.066655, 0.142211, 0.440316, 1.524300",\
+ "0.036752, 0.066655, 0.142211, 0.440316, 1.524064",\
+ "0.036746, 0.066581, 0.142211, 0.440310, 1.523676");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.499182, 0.679295, 0.866874, 1.168853, 1.751950",\
+ "0.529816, 0.709930, 0.897508, 1.199488, 1.782584",\
+ "0.601083, 0.781197, 0.968775, 1.270755, 1.853851",\
+ "0.856808, 1.036922, 1.224500, 1.526480, 2.109576",\
+ "1.774034, 1.954148, 2.141726, 2.443706, 3.026802",\
+ "0.584120, 0.764131, 0.951944, 1.254360, 1.838328",\
+ "0.614754, 0.794765, 0.982578, 1.284994, 1.868962",\
+ "0.686022, 0.866033, 1.053846, 1.356261, 1.940230",\
+ "0.941746, 1.121757, 1.309570, 1.611986, 2.195954",\
+ "1.858973, 2.038984, 2.226796, 2.529212, 3.113181",\
+ "0.660032, 0.839574, 1.026753, 1.328956, 1.912500",\
+ "0.690666, 0.870209, 1.057387, 1.359591, 1.943135",\
+ "0.761934, 0.941476, 1.128654, 1.430858, 2.014402",\
+ "1.017658, 1.197201, 1.384379, 1.686583, 2.270127",\
+ "1.934885, 2.114427, 2.301605, 2.603809, 3.187353",\
+ "0.714401, 0.894326, 1.081641, 1.383562, 1.966818",\
+ "0.745036, 0.924960, 1.112276, 1.414196, 1.997452",\
+ "0.816303, 0.996228, 1.183543, 1.485464, 2.068719",\
+ "1.072027, 1.251952, 1.439268, 1.741188, 2.324444",\
+ "1.989254, 2.169178, 2.356494, 2.658415, 3.241670",\
+ "0.995996, 1.179891, 1.365817, 1.667288, 2.250095",\
+ "1.026630, 1.210525, 1.396451, 1.697923, 2.280730",\
+ "1.097898, 1.281793, 1.467719, 1.769190, 2.351997",\
+ "1.353622, 1.537517, 1.723443, 2.024915, 2.607721",\
+ "2.270849, 2.454743, 2.640669, 2.942141, 3.524948");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.382273, 0.649883, 0.911284, 1.351061, 2.230222",\
+ "0.407140, 0.674750, 0.936142, 1.375888, 2.254987",\
+ "0.455457, 0.723068, 0.984460, 1.424205, 2.303304",\
+ "0.620747, 0.888357, 1.149749, 1.589495, 2.468594",\
+ "1.214576, 1.482187, 1.743588, 2.183365, 3.062526",\
+ "0.470977, 0.737958, 0.999925, 1.439290, 2.317627",\
+ "0.495844, 0.762825, 1.024783, 1.464117, 2.342392",\
+ "0.544161, 0.811142, 1.073101, 1.512434, 2.390709",\
+ "0.709451, 0.976432, 1.238390, 1.677724, 2.555999",\
+ "1.303280, 1.570262, 1.832229, 2.271594, 3.149931",\
+ "0.563919, 0.831278, 1.091970, 1.531536, 2.410669",\
+ "0.588786, 0.856145, 1.116828, 1.556363, 2.435434",\
+ "0.637103, 0.904463, 1.165145, 1.604680, 2.483751",\
+ "0.802393, 1.069752, 1.330435, 1.769970, 2.649041",\
+ "1.396222, 1.663582, 1.924273, 2.363840, 3.242973",\
+ "0.629763, 0.899843, 1.159026, 1.598547, 2.477591",\
+ "0.654629, 0.924710, 1.183884, 1.623374, 2.502355",\
+ "0.702947, 0.973027, 1.232201, 1.671691, 2.550673",\
+ "0.868237, 1.138317, 1.397491, 1.836981, 2.715962",\
+ "1.462066, 1.732146, 1.991329, 2.430851, 3.309894",\
+ "0.976284, 1.280678, 1.529696, 1.967773, 2.843926",\
+ "1.001151, 1.305545, 1.554554, 1.992599, 2.868690",\
+ "1.049468, 1.353863, 1.602872, 2.040917, 2.917008",\
+ "1.214758, 1.519152, 1.768161, 2.206207, 3.082298",\
+ "1.808588, 2.112982, 2.362000, 2.800076, 3.676230");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_min_2461*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.407290, 0.670821, 0.946941, 1.415072, 2.350076",\
+ "0.437925, 0.701456, 0.977575, 1.445707, 2.380711",\
+ "0.509192, 0.772723, 1.048843, 1.516974, 2.451978",\
+ "0.764916, 1.028448, 1.304567, 1.772699, 2.707703",\
+ "1.682143, 1.945674, 2.221793, 2.689925, 3.624929",\
+ "0.495484, 0.758362, 1.034508, 1.501788, 2.436010",\
+ "0.526119, 0.788996, 1.065142, 1.532422, 2.466645",\
+ "0.597386, 0.860264, 1.136409, 1.603690, 2.537912",\
+ "0.853111, 1.115988, 1.392134, 1.859414, 2.793636",\
+ "1.770337, 2.033214, 2.309360, 2.776640, 3.710862",\
+ "0.583800, 0.847341, 1.122472, 1.589428, 2.522965",\
+ "0.614435, 0.877976, 1.153107, 1.620063, 2.553600",\
+ "0.685702, 0.949243, 1.224374, 1.691330, 2.624867",\
+ "0.941427, 1.204967, 1.480099, 1.947054, 2.880591",\
+ "1.858653, 2.122194, 2.397325, 2.864281, 3.797817",\
+ "0.646296, 0.912975, 1.186612, 1.653517, 2.586474",\
+ "0.676931, 0.943609, 1.217247, 1.684151, 2.617109",\
+ "0.748198, 1.014877, 1.288514, 1.755419, 2.688376",\
+ "1.003923, 1.270601, 1.544238, 2.011143, 2.944100",\
+ "1.921149, 2.187827, 2.461465, 2.928370, 3.861326",\
+ "0.975422, 1.277290, 1.538476, 2.002961, 2.931930",\
+ "1.006057, 1.307924, 1.569111, 2.033595, 2.962565",\
+ "1.077324, 1.379191, 1.640378, 2.104863, 3.033832",\
+ "1.333048, 1.634916, 1.896102, 2.360587, 3.289557",\
+ "2.250275, 2.552142, 2.813329, 3.277813, 4.206782");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.031515, 0.031515, 0.031516, 0.031516, 0.031517",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699348",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.031515, 0.031515, 0.031516, 0.031516, 0.031517",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699348",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.031515, 0.031515, 0.031516, 0.031516, 0.031517",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699348",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.031515, 0.031515, 0.031516, 0.031516, 0.031517",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699348",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.031515, 0.031515, 0.031516, 0.031516, 0.031517",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699348",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.365228, 0.547285, 0.743519, 1.052700, 1.647184",\
+ "0.390093, 0.572150, 0.768283, 1.077415, 1.671868",\
+ "0.438410, 0.620468, 0.816601, 1.125732, 1.720186",\
+ "0.603700, 0.785757, 0.981890, 1.291023, 1.885478",\
+ "1.197531, 1.379589, 1.575822, 1.885003, 2.479486",\
+ "0.452642, 0.634604, 0.830800, 1.140005, 1.734538",\
+ "0.477507, 0.659469, 0.855564, 1.164720, 1.759222",\
+ "0.525825, 0.707786, 0.903881, 1.213037, 1.807539",\
+ "0.691115, 0.873076, 1.069171, 1.378328, 1.972831",\
+ "1.284946, 1.466908, 1.663103, 1.972308, 2.566839",\
+ "0.533519, 0.714940, 0.910827, 1.220034, 1.814569",\
+ "0.558384, 0.739805, 0.935591, 1.244748, 1.839253",\
+ "0.606701, 0.788123, 0.983908, 1.293066, 1.887571",\
+ "0.771991, 0.953413, 1.149198, 1.458356, 2.052863",\
+ "1.365822, 1.547244, 1.743130, 2.052336, 2.646871",\
+ "0.591165, 0.772777, 0.968562, 1.277504, 1.871665",\
+ "0.616030, 0.797642, 0.993326, 1.302219, 1.896349",\
+ "0.664348, 0.845960, 1.041644, 1.350536, 1.944667",\
+ "0.829637, 1.011249, 1.206933, 1.515826, 2.109958",\
+ "1.423469, 1.605081, 1.800866, 2.109807, 2.703966",\
+ "0.893373, 1.078154, 1.272226, 1.580711, 2.173983",\
+ "0.918238, 1.103019, 1.296990, 1.605426, 2.198667",\
+ "0.966555, 1.151337, 1.345307, 1.653743, 2.246984",\
+ "1.131845, 1.316627, 1.510597, 1.819033, 2.412276",\
+ "1.725676, 1.910458, 2.104529, 2.413014, 3.006285");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435755, 0.435768",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435755, 0.435768",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435755, 0.435768",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435755, 0.435768",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435755, 0.435768",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_min_2383*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.403312, 0.662871, 0.934506, 1.390667, 2.301835",\
+ "0.433946, 0.693506, 0.965141, 1.421302, 2.332470",\
+ "0.505214, 0.764773, 1.036408, 1.492569, 2.403737",\
+ "0.760938, 1.020497, 1.292132, 1.748294, 2.659461",\
+ "1.678164, 1.937724, 2.209359, 2.665520, 3.576688",\
+ "0.491417, 0.750404, 1.022035, 1.477383, 2.387769",\
+ "0.522051, 0.781039, 1.052670, 1.508018, 2.418404",\
+ "0.593319, 0.852306, 1.123937, 1.579285, 2.489671",\
+ "0.849043, 1.108030, 1.379661, 1.835009, 2.745395",\
+ "1.766269, 2.025257, 2.296888, 2.752235, 3.662621",\
+ "0.579447, 0.839368, 1.109999, 1.565022, 2.474724",\
+ "0.610081, 0.870003, 1.140634, 1.595656, 2.505359",\
+ "0.681349, 0.941270, 1.211901, 1.666924, 2.576626",\
+ "0.937073, 1.196995, 1.467626, 1.922648, 2.832350",\
+ "1.854300, 2.114221, 2.384852, 2.839874, 3.749576",\
+ "0.641668, 0.904980, 1.174137, 1.629096, 2.538233",\
+ "0.672303, 0.935614, 1.204772, 1.659731, 2.568868",\
+ "0.743570, 1.006881, 1.276039, 1.730998, 2.640135",\
+ "0.999294, 1.262606, 1.531763, 1.986722, 2.895859",\
+ "1.916521, 2.179832, 2.448990, 2.903949, 3.813085",\
+ "0.969056, 1.269028, 1.525880, 1.978482, 2.883689",\
+ "0.999690, 1.299663, 1.556514, 2.009117, 2.914324",\
+ "1.070957, 1.370930, 1.627782, 2.080384, 2.985591",\
+ "1.326682, 1.626654, 1.883506, 2.336109, 3.241315",\
+ "2.243908, 2.543881, 2.800732, 3.253335, 4.158542");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.031515, 0.031515, 0.031516, 0.031517, 0.031519",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077661",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699347",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.031515, 0.031515, 0.031516, 0.031517, 0.031519",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077661",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699347",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.031515, 0.031515, 0.031516, 0.031517, 0.031519",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077661",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699347",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.031515, 0.031515, 0.031516, 0.031517, 0.031519",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077661",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699347",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.031515, 0.031515, 0.031516, 0.031517, 0.031519",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077661",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699349, 0.699347",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.363564, 0.545731, 0.741830, 1.051168, 1.646128",\
+ "0.388431, 0.570598, 0.766595, 1.075888, 1.670830",\
+ "0.436748, 0.618916, 0.814913, 1.124206, 1.719148",\
+ "0.602038, 0.784206, 0.980202, 1.289496, 1.884440",\
+ "1.195867, 1.378035, 1.574133, 1.883471, 2.478430",\
+ "0.450984, 0.633050, 0.829111, 1.138473, 1.733482",\
+ "0.475851, 0.657917, 0.853876, 1.163193, 1.758184",\
+ "0.524168, 0.706235, 0.902193, 1.211511, 1.806502",\
+ "0.689458, 0.871524, 1.067483, 1.376801, 1.971793",\
+ "1.283288, 1.465354, 1.661414, 1.970776, 2.565784",\
+ "0.531851, 0.713387, 0.909137, 1.218501, 1.813514",\
+ "0.556719, 0.738254, 0.933903, 1.243222, 1.838215",\
+ "0.605036, 0.786572, 0.982220, 1.291539, 1.886533",\
+ "0.770326, 0.951861, 1.147510, 1.456830, 2.051825",\
+ "1.364155, 1.545691, 1.741441, 2.050804, 2.645815",\
+ "0.589490, 0.771224, 0.966873, 1.275972, 1.870610",\
+ "0.614358, 0.796091, 0.991638, 1.300693, 1.895312",\
+ "0.662675, 0.844408, 1.039955, 1.349010, 1.943630",\
+ "0.827965, 1.009698, 1.205245, 1.514301, 2.108922",\
+ "1.421794, 1.603527, 1.799176, 2.108275, 2.702911",\
+ "0.891585, 1.076602, 1.270536, 1.579180, 2.172930",\
+ "0.916453, 1.101469, 1.295302, 1.603900, 2.197631",\
+ "0.964770, 1.149787, 1.343619, 1.652218, 2.245949",\
+ "1.130060, 1.315076, 1.508909, 1.817508, 2.411241",\
+ "1.723889, 1.908906, 2.102840, 2.411483, 3.005231");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435756, 0.435770",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435756, 0.435770",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435756, 0.435770",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435756, 0.435770",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017",\
+ "0.028581, 0.028581, 0.028581, 0.028582, 0.028582",\
+ "0.057562, 0.057562, 0.057562, 0.057563, 0.057564",\
+ "0.134857, 0.134857, 0.134857, 0.134858, 0.134859",\
+ "0.435749, 0.435749, 0.435750, 0.435756, 0.435770",\
+ "1.519015, 1.519015, 1.519015, 1.519016, 1.519017");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_min_2325*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.495595, 0.673935, 0.854281, 1.140468, 1.691221",\
+ "0.526230, 0.704569, 0.884916, 1.171102, 1.721856",\
+ "0.597497, 0.775836, 0.956183, 1.242370, 1.793123",\
+ "0.853221, 1.031561, 1.211908, 1.498094, 2.048847",\
+ "1.770448, 1.948787, 2.129134, 2.415321, 2.966074",\
+ "0.580534, 0.758770, 0.939351, 1.225974, 1.777599",\
+ "0.611168, 0.789405, 0.969986, 1.256609, 1.808234",\
+ "0.682435, 0.860672, 1.041253, 1.327876, 1.879501",\
+ "0.938160, 1.116397, 1.296978, 1.583601, 2.135226",\
+ "1.855386, 2.033623, 2.214204, 2.500827, 3.052452",\
+ "0.656440, 0.834214, 1.014160, 1.300571, 1.851772",\
+ "0.687074, 0.864848, 1.044795, 1.331205, 1.882406",\
+ "0.758341, 0.936116, 1.116062, 1.402473, 1.953674",\
+ "1.014066, 1.191840, 1.371787, 1.658197, 2.209398",\
+ "1.931292, 2.109066, 2.289013, 2.575424, 3.126625",\
+ "0.710792, 0.888959, 1.069026, 1.355165, 1.906089",\
+ "0.741426, 0.919594, 1.099660, 1.385799, 1.936724",\
+ "0.812694, 0.990861, 1.170928, 1.457067, 2.007991",\
+ "1.068418, 1.246586, 1.426652, 1.712791, 2.263715",\
+ "1.985644, 2.163812, 2.343878, 2.630017, 3.180942",\
+ "0.992214, 1.174477, 1.353179, 1.638891, 2.189367",\
+ "1.022848, 1.205111, 1.383813, 1.669525, 2.220001",\
+ "1.094115, 1.276379, 1.455081, 1.740793, 2.291269",\
+ "1.349840, 1.532103, 1.710805, 1.996517, 2.546993",\
+ "2.267066, 2.449329, 2.628031, 2.913743, 3.464219");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.031515, 0.031515, 0.031515, 0.031515, 0.031515",\
+ "0.077660, 0.077660, 0.077660, 0.077660, 0.077660",\
+ "0.209649, 0.209649, 0.209649, 0.209649, 0.209649",\
+ "0.699350, 0.699350, 0.699350, 0.699350, 0.699350",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.380837, 0.645836, 0.904865, 1.341130, 2.213276",\
+ "0.405704, 0.670703, 0.929723, 1.365952, 2.238030",\
+ "0.454021, 0.719020, 0.978040, 1.414270, 2.286347",\
+ "0.619311, 0.884310, 1.143330, 1.579559, 2.451637",\
+ "1.213140, 1.478139, 1.737169, 2.173433, 3.045579",\
+ "0.469502, 0.733911, 0.993506, 1.429358, 2.300681",\
+ "0.494369, 0.758778, 1.018363, 1.454181, 2.325435",\
+ "0.542686, 0.807095, 1.066681, 1.502498, 2.373752",\
+ "0.707976, 0.972385, 1.231971, 1.667788, 2.539042",\
+ "1.301806, 1.566214, 1.825810, 2.261662, 3.132985",\
+ "0.562309, 0.827204, 1.085541, 1.521602, 2.393723",\
+ "0.587176, 0.852071, 1.110399, 1.546425, 2.418477",\
+ "0.635493, 0.900389, 1.158716, 1.594742, 2.466794",\
+ "0.800783, 1.065678, 1.324006, 1.760032, 2.632084",\
+ "1.394613, 1.659508, 1.917845, 2.353905, 3.226027",\
+ "0.628031, 0.895738, 1.152596, 1.588608, 2.460633",\
+ "0.652898, 0.920605, 1.177454, 1.613431, 2.485386",\
+ "0.701216, 0.968923, 1.225771, 1.661748, 2.533704",\
+ "0.866506, 1.134212, 1.391061, 1.827038, 2.698993",\
+ "1.460335, 1.728042, 1.984900, 2.420912, 3.292936",\
+ "0.973821, 1.276237, 1.523234, 1.957809, 2.826960",\
+ "0.998688, 1.301104, 1.548091, 1.982632, 2.851713",\
+ "1.047005, 1.349421, 1.596409, 2.030949, 2.900031",\
+ "1.212295, 1.514711, 1.761698, 2.196239, 3.065320",\
+ "1.806124, 2.108541, 2.355538, 2.790113, 3.659263");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015",\
+ "0.028581, 0.028581, 0.028581, 0.028581, 0.028581",\
+ "0.057562, 0.057562, 0.057562, 0.057562, 0.057562",\
+ "0.134857, 0.134857, 0.134857, 0.134857, 0.134857",\
+ "0.435749, 0.435749, 0.435749, 0.435749, 0.435750",\
+ "1.519015, 1.519015, 1.519015, 1.519015, 1.519015");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_min_2267*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.132999, 0.164048, 0.235821, 0.492102, 1.411098",\
+ "0.221194, 0.252231, 0.324016, 0.580346, 1.499024",\
+ "0.309537, 0.340556, 0.412339, 0.668869, 1.587106",\
+ "0.372125, 0.403153, 0.474871, 0.731698, 1.650402",\
+ "0.701985, 0.733051, 0.804557, 1.061823, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.031515, 0.077660, 0.209649, 0.699350, 2.448223",\
+ "0.031515, 0.077660, 0.209649, 0.699350, 2.448223",\
+ "0.031515, 0.077660, 0.209649, 0.699350, 2.448223",\
+ "0.031515, 0.077660, 0.209649, 0.699350, 2.448223",\
+ "0.031515, 0.077660, 0.209649, 0.699350, 2.448223");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.172647, 0.198025, 0.247447, 0.413179, 1.004020",\
+ "0.260051, 0.285429, 0.334851, 0.500582, 1.091424",\
+ "0.340949, 0.366324, 0.415751, 0.581486, 1.172337",\
+ "0.398613, 0.423981, 0.473417, 0.639160, 1.230028",\
+ "0.700957, 0.726326, 0.775791, 0.941604, 1.532645");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.028580, 0.057560, 0.134856, 0.434927, 1.516730",\
+ "0.028580, 0.057560, 0.134856, 0.434927, 1.516730",\
+ "0.028580, 0.057560, 0.134856, 0.434975, 1.516730",\
+ "0.028580, 0.057560, 0.134856, 0.435062, 1.516730",\
+ "0.028580, 0.057561, 0.134856, 0.435749, 1.516730");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[11]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.079929, 0.111758, 0.183223, 0.439138, 1.359203",\
+ "0.167497, 0.199454, 0.270769, 0.526908, 1.444562",\
+ "0.264286, 0.298668, 0.370756, 0.626584, 1.547694",\
+ "0.439501, 0.480020, 0.554277, 0.809849, 1.732299",\
+ "0.736451, 0.793429, 0.877676, 1.133252, 2.048527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.033688, 0.079103, 0.210853, 0.705450, 2.481454",\
+ "0.034938, 0.079398, 0.210853, 0.707160, 2.481454",\
+ "0.042553, 0.084403, 0.210853, 0.707160, 2.481454",\
+ "0.062025, 0.097740, 0.214926, 0.707160, 2.481454",\
+ "0.107816, 0.136398, 0.233803, 0.707160, 2.481454");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.118927, 0.147104, 0.198913, 0.365810, 0.957538",\
+ "0.198088, 0.226133, 0.277877, 0.444754, 1.035269",\
+ "0.300437, 0.331131, 0.384010, 0.550764, 1.143163",\
+ "0.474766, 0.514213, 0.573035, 0.741315, 1.332791",\
+ "0.755439, 0.816369, 0.892028, 1.065959, 1.655414");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.037147, 0.066922, 0.142202, 0.440625, 1.525476",\
+ "0.037147, 0.066922, 0.142202, 0.440625, 1.525476",\
+ "0.046795, 0.072955, 0.144989, 0.440625, 1.525476",\
+ "0.074873, 0.097054, 0.159133, 0.443319, 1.525476",\
+ "0.131163, 0.155817, 0.206305, 0.453921, 1.527125");
+ }
+
+ } /* end of arc padmux2ast_i[3]_obs_ctrl_o[11]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.076002, 0.106508, 0.177677, 0.433841, 1.352120",\
+ "0.163173, 0.193992, 0.265018, 0.521506, 1.439207",\
+ "0.258934, 0.291253, 0.363111, 0.618813, 1.536303",\
+ "0.430665, 0.469075, 0.541536, 0.798208, 1.718362",\
+ "0.721771, 0.774421, 0.855976, 1.109381, 2.025527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.030664, 0.077525, 0.209536, 0.696987, 2.440521",\
+ "0.032038, 0.077878, 0.209536, 0.696987, 2.440521",\
+ "0.038668, 0.082173, 0.210178, 0.699757, 2.449750",\
+ "0.056119, 0.094147, 0.214335, 0.699757, 2.460771",\
+ "0.095850, 0.132052, 0.230566, 0.703608, 2.462313");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.085902, 0.110542, 0.159236, 0.324759, 0.917124",\
+ "0.171172, 0.195634, 0.244356, 0.409704, 1.001295",\
+ "0.269100, 0.297524, 0.347992, 0.513168, 1.105193",\
+ "0.434670, 0.473174, 0.529868, 0.695133, 1.285706",\
+ "0.702119, 0.762927, 0.838318, 1.010679, 1.597765");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000605, 0.003844, 0.012425, 0.043741, 0.156168");
+ values ( "0.029180, 0.058574, 0.135500, 0.435380, 1.519944",\
+ "0.030330, 0.058789, 0.135664, 0.436655, 1.520555",\
+ "0.042270, 0.067457, 0.139493, 0.437267, 1.520555",\
+ "0.069987, 0.091747, 0.153270, 0.440379, 1.520568",\
+ "0.124960, 0.149736, 0.200354, 0.450127, 1.523278");
+ }
+
+ } /* end of arc padmux2ast_i[3]_obs_ctrl_o[11]_una_min*/
+
+} /* end of pin obs_ctrl_o[11] */
+
+pin("obs_ctrl_o[10]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002440 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[10];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.570547, 0.750750, 0.938240, 1.240232, 1.823744",\
+ "0.598946, 0.779149, 0.966639, 1.268632, 1.852144",\
+ "0.670479, 0.850682, 1.038172, 1.340165, 1.923677",\
+ "0.926915, 1.107118, 1.294608, 1.596601, 2.180113",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.655485, 0.836033, 1.024249, 1.326245, 1.910123",\
+ "0.683885, 0.864432, 1.052648, 1.354644, 1.938522",\
+ "0.755418, 0.935965, 1.124181, 1.426177, 2.010055",\
+ "1.011854, 1.192401, 1.380617, 1.682613, 2.266491",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.731397, 0.911476, 1.099057, 1.400841, 1.984295",\
+ "0.759797, 0.939876, 1.127457, 1.429241, 2.012694",\
+ "0.831330, 1.011409, 1.198990, 1.500774, 2.084227",\
+ "1.087766, 1.267845, 1.455426, 1.757210, 2.340663",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244640",\
+ "0.785767, 0.965988, 1.153708, 1.455381, 2.038612",\
+ "0.814166, 0.994387, 1.182108, 1.483781, 2.067012",\
+ "0.885699, 1.065920, 1.253641, 1.555314, 2.138545",\
+ "1.142135, 1.322356, 1.510077, 1.811749, 2.394980",\
+ "2.046112, 2.226333, 2.414054, 2.715726, 3.298958",\
+ "1.067361, 1.251256, 1.437659, 1.739108, 2.321890",\
+ "1.095761, 1.279655, 1.466058, 1.767507, 2.350289",\
+ "1.167294, 1.351188, 1.537591, 1.839040, 2.421822",\
+ "1.423730, 1.607624, 1.794027, 2.095476, 2.678258",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.426873, 0.694659, 0.956239, 1.395936, 2.275331",\
+ "0.448702, 0.716487, 0.978067, 1.417764, 2.297159",\
+ "0.498842, 0.766628, 1.028208, 1.467905, 2.347300",\
+ "0.665219, 0.933004, 1.194584, 1.634281, 2.513676",\
+ "1.246642, 1.514428, 1.776008, 2.215705, 3.095100",\
+ "0.515577, 0.782734, 1.044880, 1.484165, 2.362736",\
+ "0.537406, 0.804562, 1.066708, 1.505994, 2.384564",\
+ "0.587546, 0.854703, 1.116849, 1.556134, 2.434705",\
+ "0.753923, 1.021079, 1.283225, 1.722511, 2.601081",\
+ "1.335346, 1.602503, 1.864649, 2.303934, 3.182505",\
+ "0.608520, 0.875879, 1.136606, 1.576329, 2.455778",\
+ "0.630348, 0.897707, 1.158434, 1.598158, 2.477606",\
+ "0.680488, 0.947848, 1.208574, 1.648298, 2.527747",\
+ "0.846865, 1.114224, 1.374951, 1.814675, 2.694123",\
+ "1.428288, 1.695648, 1.956374, 2.396098, 3.275547",\
+ "0.674363, 0.944443, 1.203625, 1.643180, 2.522289",\
+ "0.696192, 0.966272, 1.225454, 1.665008, 2.544117",\
+ "0.746332, 1.016412, 1.275594, 1.715149, 2.594258",\
+ "0.912709, 1.182789, 1.441971, 1.881525, 2.760634",\
+ "1.494132, 1.764212, 2.023394, 2.462949, 3.342058",\
+ "1.020885, 1.325279, 1.574288, 2.012334, 2.888425",\
+ "1.042713, 1.347107, 1.596116, 2.034162, 2.910253",\
+ "1.092854, 1.397248, 1.646257, 2.084302, 2.960393",\
+ "1.259230, 1.563624, 1.812633, 2.250679, 3.126770",\
+ "1.840654, 2.145048, 2.394057, 2.832103, 3.708194");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_2689*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.478652, 0.742226, 1.018498, 1.487228, 2.424687",\
+ "0.507052, 0.770625, 1.046898, 1.515627, 2.453087",\
+ "0.578584, 0.842158, 1.118431, 1.587160, 2.524619",\
+ "0.835020, 1.098594, 1.374866, 1.843596, 2.781055",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.566846, 0.829767, 1.106066, 1.573943, 2.510621",\
+ "0.595246, 0.858166, 1.134465, 1.602343, 2.539020",\
+ "0.666779, 0.929699, 1.205998, 1.673875, 2.610553",\
+ "0.923215, 1.186135, 1.462434, 1.930311, 2.866989",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.655163, 0.918747, 1.194031, 1.661566, 2.597576",\
+ "0.683562, 0.947146, 1.222430, 1.689965, 2.625975",\
+ "0.755095, 1.018679, 1.293963, 1.761498, 2.697508",\
+ "1.011531, 1.275115, 1.550399, 2.017934, 2.953944",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.717659, 0.984382, 1.258171, 1.725480, 2.661085",\
+ "0.746058, 1.012781, 1.286570, 1.753879, 2.689484",\
+ "0.817591, 1.084314, 1.358103, 1.825412, 2.761017",\
+ "1.074027, 1.340750, 1.614539, 2.081847, 3.017453",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.046784, 1.348713, 1.610038, 2.074829, 3.006541",\
+ "1.075184, 1.377112, 1.638437, 2.103229, 3.034940",\
+ "1.146717, 1.448645, 1.709970, 2.174761, 3.106473",\
+ "1.403152, 1.705081, 1.966406, 2.431197, 3.362909",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732054, 0.732051",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732054, 0.732051",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732054, 0.732051",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732054, 0.732051",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732054, 0.732051",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.409826, 0.592258, 0.788650, 1.097704, 1.692512",\
+ "0.431655, 0.614087, 0.810479, 1.119532, 1.714340",\
+ "0.481795, 0.664227, 0.860619, 1.169672, 1.764480",\
+ "0.648172, 0.830604, 1.026996, 1.336049, 1.930856",\
+ "1.229595, 1.412027, 1.608419, 1.917472, 2.512278",\
+ "0.497241, 0.679644, 0.876143, 1.185009, 1.779865",\
+ "0.519070, 0.701472, 0.897972, 1.206837, 1.801694",\
+ "0.569210, 0.751613, 0.948112, 1.256977, 1.851834",\
+ "0.735586, 0.917989, 1.114489, 1.423354, 2.018209",\
+ "1.317010, 1.499413, 1.695912, 2.004777, 2.599632",\
+ "0.578118, 0.759980, 0.956170, 1.265037, 1.859897",\
+ "0.599946, 0.781809, 0.977999, 1.286866, 1.881726",\
+ "0.650086, 0.831949, 1.028139, 1.337006, 1.931865",\
+ "0.816463, 0.998326, 1.194516, 1.503382, 2.098241",\
+ "1.397886, 1.579749, 1.775939, 2.084805, 2.679663",\
+ "0.635764, 0.817529, 1.013714, 1.322282, 1.916544",\
+ "0.657592, 0.839357, 1.035542, 1.344111, 1.938373",\
+ "0.707733, 0.889498, 1.085683, 1.394251, 1.988513",\
+ "0.874109, 1.055874, 1.252059, 1.560627, 2.154888",\
+ "1.455533, 1.637298, 1.833483, 2.142051, 2.736311",\
+ "0.937972, 1.122753, 1.317348, 1.625297, 2.218391",\
+ "0.959800, 1.144582, 1.339176, 1.647125, 2.240220",\
+ "1.009940, 1.194722, 1.389317, 1.697266, 2.290360",\
+ "1.176317, 1.361099, 1.555693, 1.863642, 2.456735",\
+ "1.757740, 1.942522, 2.137117, 2.445065, 3.038157");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082235, 0.082233",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082235, 0.082233",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082235, 0.082233",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082235, 0.082233",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082235, 0.082233",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_2623*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.474677, 0.734306, 1.006178, 1.463058, 2.376818",\
+ "0.503076, 0.762705, 1.034578, 1.491457, 2.405217",\
+ "0.574609, 0.834238, 1.106111, 1.562990, 2.476750",\
+ "0.831045, 1.090674, 1.362546, 1.819426, 2.733185",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.562782, 0.821840, 1.093709, 1.549773, 2.462751",\
+ "0.591181, 0.850239, 1.122108, 1.578173, 2.491151",\
+ "0.662714, 0.921772, 1.193641, 1.649706, 2.562684",\
+ "0.919150, 1.178208, 1.450077, 1.906141, 2.819119",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.650812, 0.910805, 1.181673, 1.637396, 2.549706",\
+ "0.679211, 0.939205, 1.210072, 1.665795, 2.578106",\
+ "0.750744, 1.010738, 1.281605, 1.737328, 2.649639",\
+ "1.007180, 1.267174, 1.538041, 1.993764, 2.906074",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.713033, 0.976419, 1.245811, 1.701310, 2.613215",\
+ "0.741432, 1.004818, 1.274210, 1.729709, 2.641615",\
+ "0.812965, 1.076351, 1.345743, 1.801242, 2.713148",\
+ "1.069401, 1.332787, 1.602179, 2.057678, 2.969583",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.040421, 1.340494, 1.597558, 2.050611, 2.958672",\
+ "1.068820, 1.368893, 1.625957, 2.079010, 2.987071",\
+ "1.140353, 1.440426, 1.697490, 2.150543, 3.058604",\
+ "1.396789, 1.696862, 1.953926, 2.406978, 3.315039",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732053, 0.732046",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732053, 0.732046",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732053, 0.732046",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239906, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732053, 0.732046",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108035",\
+ "0.239906, 0.239905, 0.239905, 0.239905, 0.239905",\
+ "0.732057, 0.732057, 0.732056, 0.732053, 0.732046",\
+ "2.463890, 2.463889, 2.463888, 2.463885, 2.463879");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.408165, 0.590706, 0.786961, 1.096178, 1.691475",\
+ "0.429993, 0.612534, 0.808789, 1.118006, 1.713303",\
+ "0.480134, 0.662675, 0.858930, 1.168147, 1.763443",\
+ "0.646510, 0.829051, 1.025306, 1.334523, 1.929818",\
+ "1.227934, 1.410475, 1.606730, 1.915946, 2.511241",\
+ "0.495585, 0.678091, 0.874454, 1.183483, 1.778828",\
+ "0.517413, 0.699920, 0.896282, 1.205312, 1.800657",\
+ "0.567554, 0.750060, 0.946422, 1.255452, 1.850797",\
+ "0.733930, 0.916437, 1.112799, 1.421828, 2.017172",\
+ "1.315354, 1.497860, 1.694222, 2.003251, 2.598594",\
+ "0.576453, 0.758428, 0.954480, 1.263512, 1.858860",\
+ "0.598281, 0.780257, 0.976309, 1.285340, 1.880688",\
+ "0.648421, 0.830397, 1.026449, 1.335480, 1.930828",\
+ "0.814798, 0.996773, 1.192826, 1.501856, 2.097203",\
+ "1.396221, 1.578197, 1.774249, 2.083280, 2.678626",\
+ "0.634091, 0.815977, 1.012024, 1.320757, 1.915507",\
+ "0.655920, 0.837805, 1.033853, 1.342585, 1.937336",\
+ "0.706060, 0.887945, 1.083993, 1.392725, 1.987476",\
+ "0.872437, 1.054322, 1.250370, 1.559102, 2.153851",\
+ "1.453860, 1.635746, 1.831793, 2.140525, 2.735273",\
+ "0.936187, 1.121203, 1.315658, 1.623772, 2.217354",\
+ "0.958015, 1.143031, 1.337487, 1.645600, 2.239183",\
+ "1.008155, 1.193172, 1.387627, 1.695740, 2.289323",\
+ "1.174532, 1.359548, 1.554004, 1.862116, 2.455698",\
+ "1.755955, 1.940972, 2.135427, 2.443540, 3.037120");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082234, 0.082232",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082234, 0.082232",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082234, 0.082232",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082234, 0.082232",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142",\
+ "0.053502, 0.053502, 0.053502, 0.053501, 0.053499",\
+ "0.082236, 0.082236, 0.082235, 0.082234, 0.082232",\
+ "0.159095, 0.159095, 0.159095, 0.159095, 0.159095",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523142");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_2570*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.566961, 0.745387, 0.925648, 1.211854, 1.762971",\
+ "0.595360, 0.773787, 0.954047, 1.240253, 1.791370",\
+ "0.666893, 0.845320, 1.025580, 1.311786, 1.862903",\
+ "0.923329, 1.101756, 1.282016, 1.568222, 2.119339",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.651899, 0.830660, 1.011563, 1.297774, 1.849349",\
+ "0.680298, 0.859059, 1.039962, 1.326174, 1.877749",\
+ "0.751831, 0.930592, 1.111495, 1.397707, 1.949282",\
+ "1.008267, 1.187028, 1.367931, 1.654143, 2.205718",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.727805, 0.906103, 1.086372, 1.372371, 1.923522",\
+ "0.756204, 0.934502, 1.114771, 1.400770, 1.951921",\
+ "0.827737, 1.006035, 1.186304, 1.472303, 2.023454",\
+ "1.084173, 1.262471, 1.442740, 1.728739, 2.279890",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.782157, 0.960615, 1.141023, 1.426911, 1.977839",\
+ "0.810557, 0.989014, 1.169422, 1.455310, 2.006238",\
+ "0.882089, 1.060547, 1.240955, 1.526843, 2.077771",\
+ "1.138525, 1.316983, 1.497391, 1.783279, 2.334207",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.063579, 1.245842, 1.424973, 1.710637, 2.261117",\
+ "1.091979, 1.274241, 1.453373, 1.739037, 2.289516",\
+ "1.163512, 1.345774, 1.524906, 1.810570, 2.361049",\
+ "1.419947, 1.602210, 1.781342, 2.067005, 2.617485",\
+ "2.323924, 2.506187, 2.685318, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.059998, 0.059998, 0.059998, 0.059998, 0.059998",\
+ "0.108036, 0.108036, 0.108036, 0.108036, 0.108036",\
+ "0.239906, 0.239906, 0.239906, 0.239906, 0.239906",\
+ "0.732057, 0.732057, 0.732057, 0.732057, 0.732057",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.425437, 0.690607, 0.949809, 1.385991, 2.258357",\
+ "0.447266, 0.712435, 0.971637, 1.407820, 2.280185",\
+ "0.497406, 0.762576, 1.021778, 1.457960, 2.330325",\
+ "0.663783, 0.928952, 1.188154, 1.624336, 2.496702",\
+ "1.245206, 1.510376, 1.769578, 2.205760, 3.078125",\
+ "0.514103, 0.778682, 1.038450, 1.474220, 2.345762",\
+ "0.535931, 0.800510, 1.060278, 1.496048, 2.367590",\
+ "0.586072, 0.850651, 1.110419, 1.546189, 2.417730",\
+ "0.752448, 1.017027, 1.276795, 1.712565, 2.584107",\
+ "1.333872, 1.598451, 1.858219, 2.293989, 3.165530",\
+ "0.606910, 0.871805, 1.130175, 1.566384, 2.438803",\
+ "0.628738, 0.893633, 1.152003, 1.588213, 2.460632",\
+ "0.678878, 0.943774, 1.202144, 1.638353, 2.510772",\
+ "0.845255, 1.110150, 1.368520, 1.804730, 2.677149",\
+ "1.426679, 1.691574, 1.949944, 2.386153, 3.258572",\
+ "0.672632, 0.940339, 1.197195, 1.633235, 2.505315",\
+ "0.694461, 0.962168, 1.219023, 1.655063, 2.527143",\
+ "0.744601, 1.012308, 1.269164, 1.705203, 2.577283",\
+ "0.910977, 1.178684, 1.435540, 1.871580, 2.743660",\
+ "1.492401, 1.760108, 2.016964, 2.453003, 3.325083",\
+ "1.018422, 1.320838, 1.567825, 2.002366, 2.871448",\
+ "1.040250, 1.342666, 1.589653, 2.024194, 2.893276",\
+ "1.090390, 1.392806, 1.639794, 2.074335, 2.943416",\
+ "1.256767, 1.559183, 1.806170, 2.240711, 3.109793",\
+ "1.838190, 2.140606, 2.387594, 2.822135, 3.691216");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144",\
+ "0.053502, 0.053502, 0.053502, 0.053502, 0.053502",\
+ "0.082236, 0.082236, 0.082236, 0.082236, 0.082235",\
+ "0.159094, 0.159094, 0.159094, 0.159094, 0.159094",\
+ "0.457392, 0.457392, 0.457392, 0.457392, 0.457392",\
+ "1.523144, 1.523144, 1.523144, 1.523144, 1.523144");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_2508*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.334234, 0.362633, 0.434167, 0.690603, 1.594576",\
+ "0.421625, 0.450024, 0.521558, 0.777994, 1.681967",\
+ "0.502544, 0.530943, 0.602477, 0.858913, 1.762885",\
+ "0.560284, 0.588684, 0.660217, 0.916654, 1.820624",\
+ "0.862990, 0.891389, 0.962923, 1.219360, 2.123326");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.059999, 0.108036, 0.239907, 0.732038, 2.463871",\
+ "0.059999, 0.108053, 0.240000, 0.732038, 2.463871",\
+ "0.059999, 0.108094, 0.240218, 0.732038, 2.463871",\
+ "0.059999, 0.108094, 0.240218, 0.732038, 2.463871",\
+ "0.060087, 0.108094, 0.240545, 0.732051, 2.463884");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.305321, 0.327149, 0.377290, 0.543666, 1.125090",\
+ "0.392714, 0.414542, 0.464682, 0.631059, 1.212482",\
+ "0.473583, 0.495412, 0.545552, 0.711928, 1.293352",\
+ "0.531232, 0.553060, 0.603201, 0.769577, 1.351001",\
+ "0.834460, 0.856477, 0.906940, 1.073696, 1.654812");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.053502, 0.082236, 0.159102, 0.457392, 1.523894",\
+ "0.053502, 0.082236, 0.159102, 0.457392, 1.523894",\
+ "0.053502, 0.082236, 0.159102, 0.457392, 1.523767",\
+ "0.053502, 0.082236, 0.159102, 0.457392, 1.523532",\
+ "0.053458, 0.082179, 0.159102, 0.457388, 1.523144");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.517252, 0.697365, 0.884944, 1.186924, 1.770020",\
+ "0.545074, 0.725188, 0.912766, 1.214746, 1.797842",\
+ "0.616076, 0.796190, 0.983769, 1.285748, 1.868845",\
+ "0.871803, 1.051917, 1.239495, 1.541475, 2.124571",\
+ "1.774034, 1.954148, 2.141726, 2.443706, 3.026802",\
+ "0.602190, 0.782201, 0.970014, 1.272430, 1.856398",\
+ "0.630012, 0.810023, 0.997836, 1.300252, 1.884220",\
+ "0.701015, 0.881026, 1.068839, 1.371255, 1.955223",\
+ "0.956741, 1.136753, 1.324565, 1.626981, 2.210949",\
+ "1.858973, 2.038984, 2.226796, 2.529212, 3.113181",\
+ "0.678102, 0.857644, 1.044823, 1.347027, 1.930570",\
+ "0.705924, 0.885467, 1.072645, 1.374849, 1.958393",\
+ "0.776927, 0.956469, 1.143648, 1.445851, 2.029395",\
+ "1.032653, 1.212196, 1.399374, 1.701578, 2.285122",\
+ "1.934885, 2.114427, 2.301605, 2.603809, 3.187353",\
+ "0.732471, 0.912396, 1.099712, 1.401632, 1.984888",\
+ "0.760294, 0.940218, 1.127534, 1.429455, 2.012710",\
+ "0.831296, 1.011221, 1.198536, 1.500457, 2.083713",\
+ "1.087023, 1.266947, 1.454263, 1.756184, 2.339439",\
+ "1.989254, 2.169178, 2.356494, 2.658415, 3.241670",\
+ "1.014066, 1.197961, 1.383887, 1.685358, 2.268165",\
+ "1.041888, 1.225783, 1.411709, 1.713181, 2.295988",\
+ "1.112891, 1.296786, 1.482712, 1.784183, 2.366990",\
+ "1.368618, 1.552512, 1.738438, 2.039910, 2.622717",\
+ "2.270849, 2.454743, 2.640669, 2.942141, 3.524948");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.397272, 0.664882, 0.926275, 1.366020, 2.245119",\
+ "0.417207, 0.684818, 0.946210, 1.385955, 2.265054",\
+ "0.464850, 0.732461, 0.993853, 1.433599, 2.312697",\
+ "0.630183, 0.897793, 1.159185, 1.598931, 2.478030",\
+ "1.214286, 1.481897, 1.743298, 2.183075, 3.062236",\
+ "0.485976, 0.752957, 1.014915, 1.454249, 2.332524",\
+ "0.505911, 0.772893, 1.034851, 1.474185, 2.352459",\
+ "0.553554, 0.820536, 1.082494, 1.521828, 2.400102",\
+ "0.718887, 0.985868, 1.247826, 1.687160, 2.565435",\
+ "1.302990, 1.569972, 1.831939, 2.271304, 3.149641",\
+ "0.578918, 0.846278, 1.106960, 1.546495, 2.425566",\
+ "0.598853, 0.866213, 1.126895, 1.566430, 2.445501",\
+ "0.646497, 0.913856, 1.174538, 1.614074, 2.493144",\
+ "0.811829, 1.079188, 1.339871, 1.779406, 2.658477",\
+ "1.395933, 1.663292, 1.923983, 2.363550, 3.242683",\
+ "0.644762, 0.914842, 1.174016, 1.613506, 2.492487",\
+ "0.664697, 0.934777, 1.193951, 1.633442, 2.512423",\
+ "0.712340, 0.982420, 1.241595, 1.681085, 2.560066",\
+ "0.877673, 1.147753, 1.406927, 1.846417, 2.725398",\
+ "1.461776, 1.731856, 1.991039, 2.430561, 3.309604",\
+ "0.991283, 1.295677, 1.544687, 1.982732, 2.858823",\
+ "1.011218, 1.315613, 1.564622, 2.002667, 2.878758",\
+ "1.058862, 1.363256, 1.612265, 2.050310, 2.926401",\
+ "1.224194, 1.528588, 1.777597, 2.215642, 3.091733",\
+ "1.808298, 2.112692, 2.361710, 2.799787, 3.675940");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_min_2444*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.425360, 0.688891, 0.965011, 1.433143, 2.368146",\
+ "0.453182, 0.716714, 0.992833, 1.460965, 2.395969",\
+ "0.524185, 0.787716, 1.063836, 1.531968, 2.466971",\
+ "0.779912, 1.043443, 1.319562, 1.787694, 2.722698",\
+ "1.682143, 1.945674, 2.221793, 2.689925, 3.624929",\
+ "0.513554, 0.776432, 1.052578, 1.519858, 2.454080",\
+ "0.541377, 0.804254, 1.080400, 1.547680, 2.481903",\
+ "0.612379, 0.875257, 1.151402, 1.618683, 2.552905",\
+ "0.868106, 1.130983, 1.407129, 1.874409, 2.808632",\
+ "1.770337, 2.033214, 2.309360, 2.776640, 3.710862",\
+ "0.601870, 0.865411, 1.140543, 1.607498, 2.541035",\
+ "0.629693, 0.893234, 1.168365, 1.635320, 2.568858",\
+ "0.700695, 0.964236, 1.239367, 1.706323, 2.639860",\
+ "0.956422, 1.219963, 1.495094, 1.962050, 2.895587",\
+ "1.858653, 2.122194, 2.397325, 2.864281, 3.797817",\
+ "0.664366, 0.931045, 1.204682, 1.671587, 2.604544",\
+ "0.692189, 0.958867, 1.232504, 1.699409, 2.632367",\
+ "0.763191, 1.029870, 1.303507, 1.770412, 2.703369",\
+ "1.018918, 1.285596, 1.559234, 2.026138, 2.959096",\
+ "1.921149, 2.187827, 2.461465, 2.928370, 3.861326",\
+ "0.993492, 1.295360, 1.556546, 2.021031, 2.950000",\
+ "1.021315, 1.323182, 1.584368, 2.048853, 2.977823",\
+ "1.092317, 1.394185, 1.655371, 2.119856, 3.048825",\
+ "1.348044, 1.649911, 1.911098, 2.375582, 3.304552",\
+ "2.250275, 2.552142, 2.813329, 3.277813, 4.206782");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.057228, 0.057228, 0.057228, 0.057228, 0.057229",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727954",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057229",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727954",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057229",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727954",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057229",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727954",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057229",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727954",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.380225, 0.562282, 0.758415, 1.067547, 1.662000",\
+ "0.400160, 0.582218, 0.778351, 1.087482, 1.681936",\
+ "0.447803, 0.629861, 0.825994, 1.135126, 1.729579",\
+ "0.613136, 0.795193, 0.991326, 1.300459, 1.894914",\
+ "1.197241, 1.379299, 1.575532, 1.884713, 2.479196",\
+ "0.467640, 0.649601, 0.845696, 1.154852, 1.749354",\
+ "0.487575, 0.669536, 0.865631, 1.174787, 1.769289",\
+ "0.535218, 0.717180, 0.913275, 1.222431, 1.816933",\
+ "0.700550, 0.882512, 1.078607, 1.387764, 1.982267",\
+ "1.284656, 1.466618, 1.662813, 1.972018, 2.566549",\
+ "0.548516, 0.729938, 0.925723, 1.234881, 1.829386",\
+ "0.568451, 0.749873, 0.945658, 1.254816, 1.849321",\
+ "0.616094, 0.797516, 0.993302, 1.302459, 1.896965",\
+ "0.781427, 0.962848, 1.158634, 1.467792, 2.062299",\
+ "1.365532, 1.546954, 1.742840, 2.052047, 2.646581",\
+ "0.606162, 0.787775, 0.983459, 1.292351, 1.886481",\
+ "0.626098, 0.807710, 1.003394, 1.312286, 1.906416",\
+ "0.673741, 0.855353, 1.051037, 1.359930, 1.954060",\
+ "0.839073, 1.020685, 1.216369, 1.525263, 2.119395",\
+ "1.423179, 1.604791, 1.800576, 2.109517, 2.703676",\
+ "0.908370, 1.093152, 1.287122, 1.595558, 2.188799",\
+ "0.928305, 1.113087, 1.307057, 1.615493, 2.208735",\
+ "0.975949, 1.160730, 1.354700, 1.663137, 2.256378",\
+ "1.141281, 1.326062, 1.520033, 1.828470, 2.421713",\
+ "1.725386, 1.910168, 2.104239, 2.412724, 3.005995");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452943",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452943",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452943",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452943",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452943",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_min_2368*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.421382, 0.680941, 0.952576, 1.408738, 2.319905",\
+ "0.449204, 0.708764, 0.980399, 1.436560, 2.347728",\
+ "0.520207, 0.779766, 1.051401, 1.507563, 2.418730",\
+ "0.775933, 1.035493, 1.307128, 1.763289, 2.674457",\
+ "1.678164, 1.937724, 2.209359, 2.665520, 3.576688",\
+ "0.509487, 0.768474, 1.040105, 1.495453, 2.405839",\
+ "0.537309, 0.796296, 1.067928, 1.523275, 2.433661",\
+ "0.608312, 0.867299, 1.138930, 1.594278, 2.504664",\
+ "0.864038, 1.123026, 1.394657, 1.850005, 2.760391",\
+ "1.766269, 2.025257, 2.296888, 2.752235, 3.662621",\
+ "0.597517, 0.857438, 1.128069, 1.583092, 2.492794",\
+ "0.625339, 0.885261, 1.155892, 1.610914, 2.520617",\
+ "0.696342, 0.956263, 1.226894, 1.681917, 2.591619",\
+ "0.952068, 1.211990, 1.482621, 1.937644, 2.847346",\
+ "1.854300, 2.114221, 2.384852, 2.839874, 3.749576",\
+ "0.659738, 0.923050, 1.192207, 1.647166, 2.556303",\
+ "0.687560, 0.950872, 1.220030, 1.674989, 2.584126",\
+ "0.758563, 1.021875, 1.291032, 1.745991, 2.655128",\
+ "1.014290, 1.277601, 1.546759, 2.001718, 2.910855",\
+ "1.916521, 2.179832, 2.448990, 2.903949, 3.813085",\
+ "0.987126, 1.287098, 1.543950, 1.996553, 2.901759",\
+ "1.014948, 1.314920, 1.571772, 2.024375, 2.929582",\
+ "1.085950, 1.385923, 1.642775, 2.095378, 3.000584",\
+ "1.341677, 1.641650, 1.898501, 2.351104, 3.256311",\
+ "2.243908, 2.543881, 2.800732, 3.253335, 4.158542");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.057228, 0.057228, 0.057228, 0.057229, 0.057230",\
+ "0.105834, 0.105834, 0.105834, 0.105835, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238479, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727954, 0.727953",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.057228, 0.057228, 0.057228, 0.057229, 0.057230",\
+ "0.105834, 0.105834, 0.105834, 0.105835, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238479, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727954, 0.727953",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.057228, 0.057228, 0.057228, 0.057229, 0.057230",\
+ "0.105834, 0.105834, 0.105834, 0.105835, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238479, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727954, 0.727953",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.057228, 0.057228, 0.057228, 0.057229, 0.057230",\
+ "0.105834, 0.105834, 0.105834, 0.105835, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238479, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727954, 0.727953",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.057228, 0.057228, 0.057228, 0.057229, 0.057230",\
+ "0.105834, 0.105834, 0.105834, 0.105835, 0.105835",\
+ "0.238478, 0.238478, 0.238478, 0.238479, 0.238479",\
+ "0.727955, 0.727955, 0.727955, 0.727954, 0.727953",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.378563, 0.560731, 0.756728, 1.066021, 1.660963",\
+ "0.398499, 0.580666, 0.776663, 1.085956, 1.680898",\
+ "0.446142, 0.628309, 0.824306, 1.133599, 1.728542",\
+ "0.611474, 0.793641, 0.989638, 1.298932, 1.893877",\
+ "1.195578, 1.377745, 1.573843, 1.883181, 2.478140",\
+ "0.465983, 0.648049, 0.844008, 1.153326, 1.748316",\
+ "0.485919, 0.667985, 0.863944, 1.173261, 1.768251",\
+ "0.533562, 0.715628, 0.911587, 1.220904, 1.815895",\
+ "0.698894, 0.880960, 1.076919, 1.386237, 1.981230",\
+ "1.282998, 1.465064, 1.661124, 1.970486, 2.565494",\
+ "0.546851, 0.728386, 0.924035, 1.233354, 1.828348",\
+ "0.566786, 0.748322, 0.943970, 1.253289, 1.848283",\
+ "0.614429, 0.795965, 0.991614, 1.300933, 1.895927",\
+ "0.779762, 0.961297, 1.156946, 1.466266, 2.061262",\
+ "1.363865, 1.545401, 1.741151, 2.050514, 2.645525",\
+ "0.604490, 0.786223, 0.981770, 1.290825, 1.885444",\
+ "0.624425, 0.806158, 1.001706, 1.310760, 1.905379",\
+ "0.672068, 0.853802, 1.049349, 1.358404, 1.953023",\
+ "0.837401, 1.019134, 1.214681, 1.523737, 2.118358",\
+ "1.421504, 1.603237, 1.798886, 2.107985, 2.702621",\
+ "0.906585, 1.091602, 1.285434, 1.594033, 2.187764",\
+ "0.926520, 1.111537, 1.305369, 1.613968, 2.207699",\
+ "0.974163, 1.159180, 1.353012, 1.661611, 2.255342",\
+ "1.139496, 1.324512, 1.518345, 1.826944, 2.420678",\
+ "1.723599, 1.908616, 2.102550, 2.411193, 3.004941");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073512, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452944",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073512, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452944",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073512, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452944",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073512, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452944",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044582",\
+ "0.073511, 0.073511, 0.073511, 0.073512, 0.073513",\
+ "0.152010, 0.152010, 0.152010, 0.152011, 0.152012",\
+ "0.452924, 0.452924, 0.452925, 0.452931, 0.452944",\
+ "1.518485, 1.518485, 1.518485, 1.518486, 1.518488");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_min_2312*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.513665, 0.692005, 0.872351, 1.158538, 1.709291",\
+ "0.541488, 0.719827, 0.900174, 1.186360, 1.737113",\
+ "0.612490, 0.790830, 0.971176, 1.257363, 1.808116",\
+ "0.868217, 1.046556, 1.226903, 1.513090, 2.063843",\
+ "1.770448, 1.948787, 2.129134, 2.415321, 2.966074",\
+ "0.598604, 0.776840, 0.957422, 1.244044, 1.795670",\
+ "0.626426, 0.804663, 0.985244, 1.271867, 1.823492",\
+ "0.697429, 0.875665, 1.056247, 1.342869, 1.894494",\
+ "0.953155, 1.131392, 1.311973, 1.598596, 2.150221",\
+ "1.855386, 2.033623, 2.214204, 2.500827, 3.052452",\
+ "0.674510, 0.852284, 1.032230, 1.318641, 1.869842",\
+ "0.702332, 0.880106, 1.060053, 1.346463, 1.897664",\
+ "0.773335, 0.951109, 1.131055, 1.417466, 1.968667",\
+ "1.029061, 1.206835, 1.386782, 1.673193, 2.224393",\
+ "1.931292, 2.109066, 2.289013, 2.575424, 3.126625",\
+ "0.728862, 0.907029, 1.087096, 1.373235, 1.924159",\
+ "0.756684, 0.934852, 1.114918, 1.401057, 1.951982",\
+ "0.827687, 1.005854, 1.185921, 1.472059, 2.022984",\
+ "1.083413, 1.261581, 1.441647, 1.727786, 2.278711",\
+ "1.985644, 2.163812, 2.343878, 2.630017, 3.180942",\
+ "1.010284, 1.192547, 1.371249, 1.656961, 2.207437",\
+ "1.038106, 1.220369, 1.399071, 1.684783, 2.235259",\
+ "1.109109, 1.291372, 1.470074, 1.755786, 2.306262",\
+ "1.364835, 1.547098, 1.725800, 2.011513, 2.561988",\
+ "2.267066, 2.449329, 2.628031, 2.913743, 3.464219");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.057228, 0.057228, 0.057228, 0.057228, 0.057228",\
+ "0.105834, 0.105834, 0.105834, 0.105834, 0.105834",\
+ "0.238478, 0.238478, 0.238478, 0.238478, 0.238478",\
+ "0.727955, 0.727955, 0.727955, 0.727955, 0.727955",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.395836, 0.660835, 0.919855, 1.356084, 2.228162",\
+ "0.415771, 0.680770, 0.939790, 1.376020, 2.248097",\
+ "0.463414, 0.728413, 0.987433, 1.423663, 2.295740",\
+ "0.628747, 0.893746, 1.152766, 1.588995, 2.461072",\
+ "1.212850, 1.477849, 1.736879, 2.173143, 3.045290",\
+ "0.484501, 0.748910, 1.008496, 1.444313, 2.315567",\
+ "0.504437, 0.768845, 1.028431, 1.464249, 2.335502",\
+ "0.552080, 0.816488, 1.076074, 1.511892, 2.383145",\
+ "0.717412, 0.981821, 1.241406, 1.677224, 2.548478",\
+ "1.301516, 1.565924, 1.825520, 2.261372, 3.132695",\
+ "0.577308, 0.842203, 1.100531, 1.536557, 2.408609",\
+ "0.597243, 0.862139, 1.120466, 1.556492, 2.428544",\
+ "0.644887, 0.909782, 1.168109, 1.604135, 2.476187",\
+ "0.810219, 1.075114, 1.333442, 1.769467, 2.641520",\
+ "1.394323, 1.659218, 1.917555, 2.353615, 3.225737",\
+ "0.643031, 0.910738, 1.167586, 1.603563, 2.475518",\
+ "0.662966, 0.930673, 1.187521, 1.623498, 2.495454",\
+ "0.710609, 0.978316, 1.235164, 1.671142, 2.543097",\
+ "0.875941, 1.143648, 1.400497, 1.836474, 2.708429",\
+ "1.460045, 1.727752, 1.984610, 2.420622, 3.292646",\
+ "0.988820, 1.291236, 1.538224, 1.972764, 2.841846",\
+ "1.008755, 1.311171, 1.558159, 1.992699, 2.861781",\
+ "1.056399, 1.358814, 1.605802, 2.040343, 2.909424",\
+ "1.221731, 1.524147, 1.771134, 2.205675, 3.074756",\
+ "1.805834, 2.108251, 2.355248, 2.789823, 3.658973");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485",\
+ "0.044581, 0.044581, 0.044581, 0.044581, 0.044581",\
+ "0.073511, 0.073511, 0.073511, 0.073511, 0.073511",\
+ "0.152010, 0.152010, 0.152010, 0.152010, 0.152010",\
+ "0.452924, 0.452924, 0.452924, 0.452925, 0.452925",\
+ "1.518485, 1.518485, 1.518485, 1.518485, 1.518485");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_min_2754*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.151345, 0.179420, 0.250838, 0.507101, 1.411098",\
+ "0.239529, 0.267606, 0.339037, 0.595340, 1.499024",\
+ "0.327854, 0.355929, 0.427371, 0.683856, 1.587106",\
+ "0.390452, 0.418510, 0.489921, 0.746692, 1.650402",\
+ "0.720352, 0.748358, 0.819633, 1.076844, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.057228, 0.105834, 0.238478, 0.727955, 2.448223",\
+ "0.057228, 0.105834, 0.238478, 0.727955, 2.448223",\
+ "0.057228, 0.105834, 0.238478, 0.727955, 2.448223",\
+ "0.057228, 0.105834, 0.238478, 0.727955, 2.448223",\
+ "0.057228, 0.105834, 0.238478, 0.727955, 2.448223");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.187745, 0.208337, 0.256868, 0.422532, 1.003731",\
+ "0.275148, 0.295740, 0.344271, 0.509935, 1.091134",\
+ "0.356045, 0.376636, 0.425171, 0.590840, 1.172047",\
+ "0.413704, 0.434296, 0.482838, 0.648514, 1.229738",\
+ "0.716053, 0.736646, 0.785216, 0.950960, 1.532355");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.044579, 0.073509, 0.152008, 0.452080, 1.516200",\
+ "0.044579, 0.073509, 0.152008, 0.452080, 1.516200",\
+ "0.044579, 0.073509, 0.152008, 0.452124, 1.516200",\
+ "0.044579, 0.073509, 0.152008, 0.452204, 1.516200",\
+ "0.044579, 0.073509, 0.152008, 0.452924, 1.516200");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.146298, 0.146298, 0.146298, 0.146298, 0.146298",\
+ "0.171440, 0.171440, 0.171440, 0.171440, 0.171440",\
+ "0.241225, 0.241225, 0.241225, 0.241225, 0.241225",\
+ "0.364369, 0.364369, 0.364369, 0.364369, 0.364369",\
+ "0.930611, 0.930611, 0.930611, 0.930611, 0.930611");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.419370, 0.419370, 0.419370, 0.419370, 0.419370",\
+ "0.439927, 0.439927, 0.439927, 0.439927, 0.439927",\
+ "0.498432, 0.498432, 0.498432, 0.498432, 0.498432",\
+ "0.607706, 0.607706, 0.607706, 0.607706, 0.607706",\
+ "1.345296, 1.345296, 1.345296, 1.345296, 1.345296");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.138551, -0.138551, -0.138551, -0.138551, -0.138551",\
+ "-0.162150, -0.162150, -0.162150, -0.162150, -0.162150",\
+ "-0.233628, -0.233628, -0.233628, -0.233628, -0.233628",\
+ "-0.357370, -0.357370, -0.357370, -0.357370, -0.357370",\
+ "-0.923132, -0.923132, -0.923132, -0.923132, -0.923132");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.415516, -0.415516, -0.415516, -0.415516, -0.415516",\
+ "-0.432323, -0.432323, -0.432323, -0.432323, -0.432323",\
+ "-0.494548, -0.494548, -0.494548, -0.494548, -0.494548",\
+ "-0.603812, -0.603812, -0.603812, -0.603812, -0.603812",\
+ "-1.339799, -1.339799, -1.339799, -1.339799, -1.339799");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[10]_cghr*/
+
+ timing () {
+ related_pin : "padmux2ast_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.098861, 0.127061, 0.198218, 0.454154, 1.359203",\
+ "0.186535, 0.214722, 0.285779, 0.541885, 1.444562",\
+ "0.285062, 0.314115, 0.385746, 0.641617, 1.547694",\
+ "0.464742, 0.495967, 0.569252, 0.824864, 1.732299",\
+ "0.773180, 0.811674, 0.892653, 1.148190, 2.048527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.058877, 0.106972, 0.239632, 0.734291, 2.481454",\
+ "0.059452, 0.107162, 0.239653, 0.735798, 2.481454",\
+ "0.065492, 0.111214, 0.239653, 0.735798, 2.481454",\
+ "0.080964, 0.122543, 0.243345, 0.735798, 2.481454",\
+ "0.122739, 0.156713, 0.261409, 0.735798, 2.481454");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.135906, 0.157942, 0.208401, 0.375177, 0.957248",\
+ "0.214952, 0.236957, 0.287364, 0.454102, 1.034980",\
+ "0.319131, 0.342208, 0.393489, 0.560142, 1.142872",\
+ "0.499405, 0.526607, 0.582603, 0.750679, 1.332501",\
+ "0.794222, 0.832488, 0.901924, 1.075291, 1.655125");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.053775, 0.082436, 0.159158, 0.457799, 1.524944",\
+ "0.053775, 0.082436, 0.159158, 0.457799, 1.524944",\
+ "0.061142, 0.087763, 0.161724, 0.457799, 1.524944",\
+ "0.087222, 0.109690, 0.175261, 0.460373, 1.524944",\
+ "0.145864, 0.166027, 0.220323, 0.470910, 1.526598");
+ }
+
+ } /* end of arc padmux2ast_i[2]_obs_ctrl_o[10]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.094010, 0.121742, 0.192687, 0.448829, 1.352120",\
+ "0.181367, 0.209191, 0.280055, 0.536519, 1.439207",\
+ "0.278263, 0.306648, 0.378094, 0.633788, 1.536303",\
+ "0.454444, 0.484657, 0.556595, 0.813226, 1.718362",\
+ "0.755309, 0.792056, 0.870822, 1.124333, 2.025527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.056753, 0.105860, 0.238203, 0.725444, 2.440521",\
+ "0.057457, 0.106111, 0.238203, 0.725444, 2.440521",\
+ "0.062809, 0.109450, 0.238891, 0.728499, 2.449750",\
+ "0.076809, 0.119663, 0.242773, 0.728499, 2.460771",\
+ "0.116537, 0.152614, 0.258265, 0.732313, 2.462313");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.100529, 0.120692, 0.168644, 0.334136, 0.916833",\
+ "0.185614, 0.205791, 0.253754, 0.419069, 1.001005",\
+ "0.286304, 0.308070, 0.357380, 0.522540, 1.104903",\
+ "0.458699, 0.485107, 0.539262, 0.704482, 1.285416",\
+ "0.740887, 0.778992, 0.848123, 1.019973, 1.597477");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.002440, 0.005679, 0.014260, 0.045576, 0.156168");
+ values ( "0.045486, 0.074449, 0.152541, 0.452549, 1.519412",\
+ "0.046012, 0.074648, 0.152769, 0.453825, 1.520024",\
+ "0.056013, 0.082252, 0.156413, 0.454416, 1.520024",\
+ "0.082035, 0.104246, 0.169572, 0.457496, 1.520040",\
+ "0.139812, 0.159966, 0.214496, 0.467116, 1.522752");
+ }
+
+ } /* end of arc padmux2ast_i[2]_obs_ctrl_o[10]_una_min*/
+
+} /* end of pin obs_ctrl_o[10] */
+
+pin("obs_ctrl_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001432 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.560564, 0.740767, 0.928257, 1.230250, 1.813761",\
+ "0.590490, 0.770693, 0.958183, 1.260175, 1.843687",\
+ "0.662228, 0.842431, 1.029921, 1.331913, 1.915425",\
+ "0.918680, 1.098883, 1.286373, 1.588366, 2.171877",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.645502, 0.826050, 1.014266, 1.316262, 1.900140",\
+ "0.675428, 0.855976, 1.044191, 1.346187, 1.930065",\
+ "0.747166, 0.927714, 1.115929, 1.417926, 2.001803",\
+ "1.003618, 1.184166, 1.372382, 1.674378, 2.258256",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.721415, 0.901494, 1.089075, 1.390859, 1.974312",\
+ "0.751340, 0.931419, 1.119000, 1.420784, 2.004238",\
+ "0.823078, 1.003157, 1.190738, 1.492522, 2.075976",\
+ "1.079530, 1.259610, 1.447191, 1.748975, 2.332428",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244640",\
+ "0.775784, 0.956005, 1.143726, 1.445398, 2.028629",\
+ "0.805709, 0.985931, 1.173651, 1.475324, 2.058555",\
+ "0.877448, 1.057669, 1.245389, 1.547062, 2.130293",\
+ "1.133900, 1.314121, 1.501842, 1.803514, 2.386745",\
+ "2.046112, 2.226333, 2.414054, 2.715726, 3.298958",\
+ "1.057379, 1.241273, 1.427676, 1.729125, 2.311907",\
+ "1.087304, 1.271199, 1.457602, 1.759050, 2.341833",\
+ "1.159042, 1.342937, 1.529340, 1.830788, 2.413571",\
+ "1.415495, 1.599389, 1.785792, 2.087241, 2.670023",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.418380, 0.686166, 0.947746, 1.387443, 2.266838",\
+ "0.442754, 0.710540, 0.972120, 1.411817, 2.291212",\
+ "0.493609, 0.761395, 1.022975, 1.462672, 2.342067",\
+ "0.660045, 0.927830, 1.189410, 1.629108, 2.508502",\
+ "1.246765, 1.514551, 1.776131, 2.215828, 3.095223",\
+ "0.507084, 0.774241, 1.036387, 1.475672, 2.354243",\
+ "0.531458, 0.798615, 1.060761, 1.500046, 2.378617",\
+ "0.582313, 0.849470, 1.111616, 1.550901, 2.429472",\
+ "0.748749, 1.015905, 1.278051, 1.717337, 2.595908",\
+ "1.335469, 1.602626, 1.864772, 2.304057, 3.182628",\
+ "0.600027, 0.867386, 1.128112, 1.567836, 2.447285",\
+ "0.624401, 0.891760, 1.152486, 1.592211, 2.471659",\
+ "0.675255, 0.942615, 1.203341, 1.643065, 2.522514",\
+ "0.841691, 1.109051, 1.369777, 1.809501, 2.688950",\
+ "1.428411, 1.695771, 1.956497, 2.396221, 3.275670",\
+ "0.665870, 0.935950, 1.195132, 1.634687, 2.513796",\
+ "0.690244, 0.960324, 1.219506, 1.659061, 2.538170",\
+ "0.741099, 1.011179, 1.270361, 1.709916, 2.589025",\
+ "0.907535, 1.177615, 1.436797, 1.876351, 2.755461",\
+ "1.494255, 1.764335, 2.023517, 2.463071, 3.342181",\
+ "1.012392, 1.316786, 1.565795, 2.003840, 2.879932",\
+ "1.036766, 1.341160, 1.590169, 2.028214, 2.904306",\
+ "1.087620, 1.392015, 1.641024, 2.079069, 2.955161",\
+ "1.254056, 1.558450, 1.807460, 2.245505, 3.121596",\
+ "1.840776, 2.145171, 2.394180, 2.832225, 3.708317");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_2714*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.468669, 0.732243, 1.008515, 1.477245, 2.414704",\
+ "0.498595, 0.762168, 1.038441, 1.507171, 2.444630",\
+ "0.570333, 0.833907, 1.110179, 1.578909, 2.516368",\
+ "0.826785, 1.090359, 1.366631, 1.835361, 2.772820",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.556864, 0.819784, 1.096083, 1.563960, 2.500638",\
+ "0.586789, 0.849709, 1.126009, 1.593886, 2.530564",\
+ "0.658527, 0.921448, 1.197747, 1.665624, 2.602302",\
+ "0.914980, 1.177900, 1.454199, 1.922076, 2.858753",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.645180, 0.908764, 1.184048, 1.651583, 2.587593",\
+ "0.675105, 0.938690, 1.213974, 1.681509, 2.617519",\
+ "0.746844, 1.010428, 1.285712, 1.753247, 2.689257",\
+ "1.003296, 1.266880, 1.542164, 2.009699, 2.945708",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.707676, 0.974399, 1.248188, 1.715497, 2.651102",\
+ "0.737601, 1.004325, 1.278113, 1.745422, 2.681028",\
+ "0.809340, 1.076063, 1.349852, 1.817160, 2.752766",\
+ "1.065792, 1.332515, 1.606304, 2.073612, 3.009217",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.036801, 1.338730, 1.600055, 2.064846, 2.996558",\
+ "1.066727, 1.368655, 1.629981, 2.094772, 3.026484",\
+ "1.138465, 1.440394, 1.701719, 2.166510, 3.098222",\
+ "1.394917, 1.696846, 1.958171, 2.422962, 3.354673",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716280, 0.716278, 0.716274",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716280, 0.716278, 0.716274",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716280, 0.716278, 0.716274",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716280, 0.716278, 0.716274",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716280, 0.716278, 0.716274",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.401333, 0.583765, 0.780157, 1.089211, 1.684018",\
+ "0.425707, 0.608139, 0.804531, 1.113585, 1.708393",\
+ "0.476562, 0.658994, 0.855386, 1.164439, 1.759248",\
+ "0.642998, 0.825430, 1.021822, 1.330875, 1.925682",\
+ "1.229718, 1.412150, 1.608542, 1.917595, 2.512401",\
+ "0.488748, 0.671151, 0.867650, 1.176516, 1.771372",\
+ "0.513122, 0.695525, 0.892024, 1.200890, 1.795747",\
+ "0.563977, 0.746379, 0.942879, 1.251745, 1.846601",\
+ "0.730413, 0.912815, 1.109315, 1.418180, 2.013035",\
+ "1.317133, 1.499535, 1.696035, 2.004900, 2.599754",\
+ "0.569624, 0.751487, 0.947677, 1.256544, 1.851403",\
+ "0.593999, 0.775861, 0.972051, 1.280918, 1.875778",\
+ "0.644853, 0.826716, 1.022906, 1.331773, 1.926633",\
+ "0.811289, 0.993152, 1.189342, 1.498208, 2.093067",\
+ "1.398009, 1.579872, 1.776062, 2.084928, 2.679786",\
+ "0.627271, 0.809036, 1.005221, 1.313789, 1.908051",\
+ "0.651645, 0.833410, 1.029595, 1.338163, 1.932426",\
+ "0.702500, 0.884265, 1.080450, 1.389018, 1.983280",\
+ "0.868935, 1.050700, 1.246886, 1.555453, 2.149714",\
+ "1.455656, 1.637420, 1.833606, 2.142173, 2.736434",\
+ "0.929479, 1.114260, 1.308855, 1.616804, 2.209898",\
+ "0.953853, 1.138634, 1.333229, 1.641178, 2.234272",\
+ "1.004707, 1.189489, 1.384084, 1.692033, 2.285127",\
+ "1.171143, 1.355925, 1.550519, 1.858468, 2.451561",\
+ "1.757863, 1.942645, 2.137239, 2.445188, 3.038280");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523368",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523368",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523368",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523368",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523368");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_2644*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.464694, 0.724323, 0.996195, 1.453075, 2.366835",\
+ "0.494620, 0.754249, 1.026121, 1.483001, 2.396760",\
+ "0.566358, 0.825987, 1.097859, 1.554739, 2.468498",\
+ "0.822810, 1.082439, 1.354311, 1.811191, 2.724950",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.552799, 0.811857, 1.083726, 1.539791, 2.452769",\
+ "0.582724, 0.841782, 1.113652, 1.569716, 2.482694",\
+ "0.654463, 0.913521, 1.185390, 1.641454, 2.554432",\
+ "0.910915, 1.169973, 1.441842, 1.897906, 2.810884",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.640829, 0.900823, 1.171690, 1.627413, 2.539724",\
+ "0.670754, 0.930748, 1.201616, 1.657339, 2.569649",\
+ "0.742493, 1.002486, 1.273354, 1.729077, 2.641387",\
+ "0.998945, 1.258938, 1.529806, 1.985529, 2.897839",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.703050, 0.966436, 1.235828, 1.691327, 2.603233",\
+ "0.732976, 0.996362, 1.265754, 1.721252, 2.633158",\
+ "0.804714, 1.068100, 1.337492, 1.792991, 2.704896",\
+ "1.061166, 1.324552, 1.593944, 2.049443, 2.961348",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.030438, 1.330511, 1.587575, 2.040628, 2.948689",\
+ "1.060363, 1.360437, 1.617501, 2.070553, 2.978614",\
+ "1.132102, 1.432175, 1.689239, 2.142292, 3.050352",\
+ "1.388554, 1.688627, 1.945691, 2.398743, 3.306804",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716279, 0.716276, 0.716270",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716279, 0.716276, 0.716270",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716279, 0.716276, 0.716270",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716279, 0.716276, 0.716270",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046136",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224142, 0.224142, 0.224142, 0.224142",\
+ "0.716281, 0.716280, 0.716279, 0.716276, 0.716270",\
+ "2.463890, 2.463889, 2.463888, 2.463885, 2.463879");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.399672, 0.582213, 0.778468, 1.087685, 1.682981",\
+ "0.424046, 0.606587, 0.802842, 1.112059, 1.707356",\
+ "0.474901, 0.657442, 0.853696, 1.162914, 1.758210",\
+ "0.641336, 0.823877, 1.020132, 1.329349, 1.924644",\
+ "1.228057, 1.410598, 1.606853, 1.916069, 2.511364",\
+ "0.487092, 0.669598, 0.865960, 1.174990, 1.770335",\
+ "0.511466, 0.693972, 0.890334, 1.199364, 1.794710",\
+ "0.562321, 0.744827, 0.941189, 1.250219, 1.845564",\
+ "0.728756, 0.911263, 1.107625, 1.416654, 2.011998",\
+ "1.315477, 1.497983, 1.694345, 2.003374, 2.598717",\
+ "0.567959, 0.749935, 0.945987, 1.255018, 1.850366",\
+ "0.592334, 0.774309, 0.970361, 1.279393, 1.874741",\
+ "0.643188, 0.825164, 1.021216, 1.330247, 1.925596",\
+ "0.809624, 0.991600, 1.187652, 1.496683, 2.092030",\
+ "1.396344, 1.578320, 1.774372, 2.083403, 2.678749",\
+ "0.625598, 0.807484, 1.003531, 1.312263, 1.907014",\
+ "0.649972, 0.831858, 1.027905, 1.336638, 1.931389",\
+ "0.700827, 0.882712, 1.078760, 1.387492, 1.982243",\
+ "0.867263, 1.049148, 1.245196, 1.553928, 2.148677",\
+ "1.453983, 1.635868, 1.831916, 2.140648, 2.735396",\
+ "0.927693, 1.112710, 1.307165, 1.615278, 2.208861",\
+ "0.952068, 1.137084, 1.331539, 1.639653, 2.233236",\
+ "1.002922, 1.187939, 1.382394, 1.690507, 2.284090",\
+ "1.169358, 1.354374, 1.548830, 1.856943, 2.450524",\
+ "1.756078, 1.941095, 2.135550, 2.443663, 3.037243");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523367",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523367",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523367",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523367",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073620, 0.073619, 0.073617",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523367");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_2587*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.556978, 0.735404, 0.915665, 1.201871, 1.752988",\
+ "0.586903, 0.765330, 0.945590, 1.231797, 1.782914",\
+ "0.658642, 0.837068, 1.017329, 1.303535, 1.854652",\
+ "0.915094, 1.093521, 1.273781, 1.559987, 2.111104",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.641916, 0.820677, 1.001580, 1.287791, 1.839366",\
+ "0.671842, 0.850602, 1.031505, 1.317717, 1.869292",\
+ "0.743580, 0.922341, 1.103244, 1.389455, 1.941030",\
+ "1.000032, 1.178793, 1.359696, 1.645907, 2.197482",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.717822, 0.896120, 1.076389, 1.362388, 1.913539",\
+ "0.747748, 0.926046, 1.106314, 1.392314, 1.943465",\
+ "0.819486, 0.997784, 1.178053, 1.464052, 2.015203",\
+ "1.075938, 1.254236, 1.434505, 1.720504, 2.271655",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.772174, 0.950632, 1.131040, 1.416928, 1.967856",\
+ "0.802100, 0.980558, 1.160965, 1.446854, 1.997782",\
+ "0.873838, 1.052296, 1.232704, 1.518592, 2.069520",\
+ "1.130290, 1.308748, 1.489156, 1.775044, 2.325972",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.053596, 1.235859, 1.414990, 1.700654, 2.251134",\
+ "1.083522, 1.265785, 1.444916, 1.730580, 2.281059",\
+ "1.155260, 1.337523, 1.516654, 1.802318, 2.352798",\
+ "1.411712, 1.593975, 1.773107, 2.058770, 2.609250",\
+ "2.323924, 2.506187, 2.685318, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.046137, 0.046137, 0.046137, 0.046137, 0.046137",\
+ "0.092740, 0.092740, 0.092740, 0.092740, 0.092740",\
+ "0.224143, 0.224143, 0.224143, 0.224143, 0.224143",\
+ "0.716280, 0.716280, 0.716280, 0.716280, 0.716280",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.416944, 0.682114, 0.941316, 1.377498, 2.249863",\
+ "0.441318, 0.706488, 0.965690, 1.401872, 2.274237",\
+ "0.492173, 0.757343, 1.016545, 1.452727, 2.325092",\
+ "0.658609, 0.923779, 1.182980, 1.619163, 2.491528",\
+ "1.245329, 1.510499, 1.769700, 2.205883, 3.078248",\
+ "0.505610, 0.770189, 1.029957, 1.465727, 2.337268",\
+ "0.529984, 0.794563, 1.054331, 1.490101, 2.361642",\
+ "0.580839, 0.845418, 1.105186, 1.540956, 2.412497",\
+ "0.747274, 1.011853, 1.271621, 1.707392, 2.578933",\
+ "1.333995, 1.598574, 1.858341, 2.294112, 3.165653",\
+ "0.598417, 0.863312, 1.121682, 1.557891, 2.430310",\
+ "0.622791, 0.887686, 1.146056, 1.582265, 2.454684",\
+ "0.673645, 0.938541, 1.196911, 1.633120, 2.505539",\
+ "0.840081, 1.104976, 1.363346, 1.799556, 2.671975",\
+ "1.426801, 1.691697, 1.950067, 2.386276, 3.258695",\
+ "0.664139, 0.931846, 1.188702, 1.624742, 2.496821",\
+ "0.688513, 0.956220, 1.213076, 1.649116, 2.521195",\
+ "0.739368, 1.007075, 1.263931, 1.699970, 2.572050",\
+ "0.905804, 1.173511, 1.430366, 1.866406, 2.738486",\
+ "1.492524, 1.760231, 2.017087, 2.453126, 3.325206",\
+ "1.009929, 1.312345, 1.559332, 1.993873, 2.862955",\
+ "1.034303, 1.336719, 1.583706, 2.018247, 2.887329",\
+ "1.085157, 1.387573, 1.634561, 2.069102, 2.938183",\
+ "1.251593, 1.554009, 1.800997, 2.235537, 3.104619",\
+ "1.838313, 2.140729, 2.387717, 2.822258, 3.691339");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370",\
+ "0.044458, 0.044458, 0.044458, 0.044458, 0.044458",\
+ "0.073621, 0.073621, 0.073621, 0.073621, 0.073620",\
+ "0.149757, 0.149757, 0.149757, 0.149757, 0.149757",\
+ "0.447950, 0.447950, 0.447950, 0.447950, 0.447950",\
+ "1.523369, 1.523369, 1.523369, 1.523369, 1.523370");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_2527*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.324251, 0.354177, 0.425915, 0.682368, 1.594576",\
+ "0.411642, 0.441568, 0.513306, 0.769759, 1.681967",\
+ "0.492561, 0.522487, 0.594225, 0.850678, 1.762885",\
+ "0.550301, 0.580227, 0.651966, 0.908419, 1.820624",\
+ "0.853007, 0.882932, 0.954672, 1.211125, 2.123326");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.046138, 0.092741, 0.224144, 0.716261, 2.463871",\
+ "0.046138, 0.092741, 0.224221, 0.716261, 2.463871",\
+ "0.046138, 0.092741, 0.224454, 0.716261, 2.463871",\
+ "0.046138, 0.092741, 0.224454, 0.716261, 2.463871",\
+ "0.046298, 0.092766, 0.224788, 0.716274, 2.463884");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.296828, 0.321202, 0.372057, 0.538492, 1.125213",\
+ "0.384221, 0.408595, 0.459449, 0.625885, 1.212605",\
+ "0.465090, 0.489464, 0.540319, 0.706755, 1.293475",\
+ "0.522739, 0.547113, 0.597968, 0.764403, 1.351124",\
+ "0.825878, 0.850484, 0.901694, 1.068525, 1.654935");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.044458, 0.073621, 0.149762, 0.447950, 1.524119",\
+ "0.044458, 0.073621, 0.149762, 0.447950, 1.524119",\
+ "0.044458, 0.073621, 0.149762, 0.447950, 1.523993",\
+ "0.044458, 0.073621, 0.149762, 0.447950, 1.523757",\
+ "0.044456, 0.073554, 0.149762, 0.447945, 1.523369");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.507754, 0.687868, 0.875446, 1.177426, 1.760522",\
+ "0.536697, 0.716810, 0.904389, 1.206369, 1.789465",\
+ "0.607845, 0.787958, 0.975537, 1.277516, 1.860613",\
+ "0.863570, 1.043684, 1.231262, 1.533242, 2.116338",\
+ "1.774034, 1.954148, 2.141726, 2.443706, 3.026802",\
+ "0.592692, 0.772703, 0.960516, 1.262932, 1.846900",\
+ "0.621635, 0.801646, 0.989459, 1.291875, 1.875843",\
+ "0.692783, 0.872794, 1.060607, 1.363023, 1.946991",\
+ "0.948508, 1.128520, 1.316332, 1.618748, 2.202716",\
+ "1.858973, 2.038984, 2.226796, 2.529212, 3.113181",\
+ "0.668604, 0.848147, 1.035325, 1.337529, 1.921072",\
+ "0.697547, 0.877090, 1.064268, 1.366472, 1.950015",\
+ "0.768695, 0.948237, 1.135416, 1.437619, 2.021163",\
+ "1.024420, 1.203963, 1.391141, 1.693345, 2.276889",\
+ "1.934885, 2.114427, 2.301605, 2.603809, 3.187353",\
+ "0.722973, 0.902898, 1.090214, 1.392134, 1.975390",\
+ "0.751916, 0.931841, 1.119157, 1.421077, 2.004333",\
+ "0.823064, 1.002989, 1.190305, 1.492225, 2.075481",\
+ "1.078790, 1.258714, 1.446030, 1.747951, 2.331206",\
+ "1.989254, 2.169178, 2.356494, 2.658415, 3.241670",\
+ "1.004568, 1.188463, 1.374389, 1.675861, 2.258667",\
+ "1.033511, 1.217406, 1.403332, 1.704803, 2.287610",\
+ "1.104659, 1.288554, 1.474480, 1.775951, 2.358758",\
+ "1.360384, 1.544279, 1.730205, 2.031677, 2.614483",\
+ "2.270849, 2.454743, 2.640669, 2.942141, 3.524948");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.043180, 0.043180, 0.043180, 0.043180, 0.043180",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043180",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043180",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043180",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043180",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.389691, 0.657302, 0.918703, 1.358480, 2.237641",\
+ "0.411640, 0.679251, 0.940643, 1.380389, 2.259487",\
+ "0.459656, 0.727267, 0.988659, 1.428405, 2.307503",\
+ "0.624965, 0.892576, 1.153968, 1.593714, 2.472812",\
+ "1.214409, 1.482020, 1.743420, 2.183197, 3.062358",\
+ "0.478395, 0.745377, 1.007344, 1.446709, 2.325046",\
+ "0.500344, 0.767326, 1.029284, 1.468618, 2.346892",\
+ "0.548360, 0.815342, 1.077300, 1.516634, 2.394908",\
+ "0.713669, 0.980651, 1.242609, 1.681943, 2.560217",\
+ "1.303113, 1.570095, 1.832061, 2.271426, 3.149764",\
+ "0.571337, 0.838697, 1.099388, 1.538955, 2.418088",\
+ "0.593287, 0.860646, 1.121328, 1.560864, 2.439934",\
+ "0.641303, 0.908662, 1.169344, 1.608880, 2.487950",\
+ "0.806611, 1.073971, 1.334653, 1.774188, 2.653259",\
+ "1.396055, 1.663415, 1.924106, 2.363672, 3.242805",\
+ "0.637181, 0.907261, 1.166444, 1.605966, 2.485009",\
+ "0.659130, 0.929210, 1.188385, 1.627875, 2.506856",\
+ "0.707146, 0.977226, 1.236400, 1.675891, 2.554872",\
+ "0.872455, 1.142535, 1.401709, 1.841200, 2.720181",\
+ "1.461899, 1.731979, 1.991162, 2.430684, 3.309727",\
+ "0.983703, 1.288097, 1.537115, 1.975192, 2.851345",\
+ "1.005652, 1.310046, 1.559055, 1.997100, 2.873191",\
+ "1.053668, 1.358062, 1.607071, 2.045116, 2.921207",\
+ "1.218976, 1.523371, 1.772380, 2.210425, 3.086516",\
+ "1.808420, 2.112815, 2.361833, 2.799909, 3.676063");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_min_2469*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.415862, 0.679394, 0.955513, 1.423645, 2.358649",\
+ "0.444805, 0.708336, 0.984456, 1.452588, 2.387592",\
+ "0.515953, 0.779484, 1.055604, 1.523736, 2.458740",\
+ "0.771678, 1.035210, 1.311329, 1.779461, 2.714465",\
+ "1.682143, 1.945674, 2.221793, 2.689925, 3.624929",\
+ "0.504057, 0.766934, 1.043080, 1.510360, 2.444582",\
+ "0.532999, 0.795877, 1.072023, 1.539303, 2.473526",\
+ "0.604147, 0.867025, 1.143171, 1.610451, 2.544673",\
+ "0.859873, 1.122750, 1.398896, 1.866176, 2.800399",\
+ "1.770337, 2.033214, 2.309360, 2.776640, 3.710862",\
+ "0.592373, 0.855914, 1.131045, 1.598000, 2.531538",\
+ "0.621315, 0.884856, 1.159988, 1.626943, 2.560481",\
+ "0.692463, 0.956004, 1.231135, 1.698091, 2.631628",\
+ "0.948189, 1.211730, 1.486861, 1.953817, 2.887354",\
+ "1.858653, 2.122194, 2.397325, 2.864281, 3.797817",\
+ "0.654869, 0.921547, 1.195184, 1.662089, 2.595047",\
+ "0.683811, 0.950490, 1.224127, 1.691032, 2.623990",\
+ "0.754959, 1.021638, 1.295275, 1.762180, 2.695137",\
+ "1.010685, 1.277363, 1.551000, 2.017905, 2.950863",\
+ "1.921149, 2.187827, 2.461465, 2.928370, 3.861326",\
+ "0.983994, 1.285862, 1.547048, 2.011533, 2.940503",\
+ "1.012937, 1.314805, 1.575991, 2.040476, 2.969446",\
+ "1.084085, 1.385953, 1.647139, 2.111624, 3.040593",\
+ "1.339811, 1.641678, 1.902864, 2.367349, 3.296319",\
+ "2.250275, 2.552142, 2.813329, 3.277813, 4.206782");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.043180, 0.043180, 0.043181, 0.043181, 0.043182",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712248",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.043180, 0.043180, 0.043181, 0.043181, 0.043182",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712248",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.043180, 0.043180, 0.043181, 0.043181, 0.043182",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712248",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.043180, 0.043180, 0.043181, 0.043181, 0.043182",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712248",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.043180, 0.043181, 0.043181, 0.043181, 0.043182",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712248",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.372646, 0.554704, 0.750937, 1.060114, 1.654586",\
+ "0.394593, 0.576651, 0.772784, 1.081916, 1.676369",\
+ "0.442609, 0.624667, 0.820800, 1.129932, 1.724385",\
+ "0.607918, 0.789976, 0.986109, 1.295241, 1.889696",\
+ "1.197364, 1.379422, 1.575655, 1.884836, 2.479319",\
+ "0.460061, 0.642022, 0.838218, 1.147419, 1.741940",\
+ "0.482008, 0.663970, 0.860065, 1.169221, 1.763722",\
+ "0.530024, 0.711986, 0.908081, 1.217237, 1.811739",\
+ "0.695333, 0.877294, 1.073389, 1.382546, 1.977050",\
+ "1.284779, 1.466740, 1.662936, 1.972141, 2.566672",\
+ "0.540937, 0.722359, 0.918245, 1.227448, 1.821971",\
+ "0.562884, 0.744306, 0.940092, 1.249249, 1.843754",\
+ "0.610900, 0.792322, 0.988108, 1.297265, 1.891770",\
+ "0.776209, 0.957631, 1.153416, 1.462574, 2.057081",\
+ "1.365655, 1.547077, 1.742963, 2.052169, 2.646704",\
+ "0.598584, 0.780196, 0.975981, 1.284918, 1.879067",\
+ "0.620531, 0.802143, 0.997827, 1.306720, 1.900850",\
+ "0.668547, 0.850159, 1.045843, 1.354736, 1.948866",\
+ "0.833856, 1.015468, 1.211152, 1.520045, 2.114177",\
+ "1.423301, 1.604914, 1.800699, 2.109640, 2.703799",\
+ "0.900791, 1.085573, 1.279644, 1.588125, 2.181385",\
+ "0.922739, 1.107520, 1.301491, 1.609926, 2.203168",\
+ "0.970755, 1.155536, 1.349506, 1.657943, 2.251184",\
+ "1.136063, 1.320845, 1.514815, 1.823252, 2.416495",\
+ "1.725509, 1.910291, 2.104362, 2.412847, 3.006117");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.035869, 0.035869, 0.035869, 0.035869, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443446",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443446",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443446",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443446",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443446",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_min_2391*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.411884, 0.671443, 0.943078, 1.399240, 2.310408",\
+ "0.440827, 0.700386, 0.972021, 1.428183, 2.339350",\
+ "0.511975, 0.771534, 1.043169, 1.499331, 2.410498",\
+ "0.767700, 1.027260, 1.298895, 1.755056, 2.666224",\
+ "1.678164, 1.937724, 2.209359, 2.665520, 3.576688",\
+ "0.499989, 0.758976, 1.030607, 1.485955, 2.396341",\
+ "0.528932, 0.787919, 1.059550, 1.514898, 2.425284",\
+ "0.600080, 0.859067, 1.130698, 1.586046, 2.496432",\
+ "0.855805, 1.114792, 1.386424, 1.841771, 2.752157",\
+ "1.766269, 2.025257, 2.296888, 2.752235, 3.662621",\
+ "0.588019, 0.847941, 1.118572, 1.573594, 2.483296",\
+ "0.616962, 0.876883, 1.147514, 1.602537, 2.512239",\
+ "0.688110, 0.948031, 1.218662, 1.673685, 2.583387",\
+ "0.943835, 1.203757, 1.474388, 1.929410, 2.839113",\
+ "1.854300, 2.114221, 2.384852, 2.839874, 3.749576",\
+ "0.650240, 0.913552, 1.182709, 1.637669, 2.546805",\
+ "0.679183, 0.942495, 1.211652, 1.666611, 2.575748",\
+ "0.750331, 1.013643, 1.282800, 1.737759, 2.646896",\
+ "1.006057, 1.269368, 1.538526, 1.993485, 2.902622",\
+ "1.916521, 2.179832, 2.448990, 2.903949, 3.813085",\
+ "0.977628, 1.277600, 1.534452, 1.987055, 2.892262",\
+ "1.006571, 1.306543, 1.563395, 2.015998, 2.921204",\
+ "1.077719, 1.377691, 1.634543, 2.087146, 2.992352",\
+ "1.333444, 1.633417, 1.890268, 2.342871, 3.248078",\
+ "2.243908, 2.543881, 2.800732, 3.253335, 4.158542");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.043180, 0.043181, 0.043181, 0.043181, 0.043183",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712247",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.043180, 0.043181, 0.043181, 0.043181, 0.043183",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712247",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.043180, 0.043181, 0.043181, 0.043181, 0.043183",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712247",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.043180, 0.043181, 0.043181, 0.043181, 0.043183",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712247",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.043180, 0.043181, 0.043181, 0.043181, 0.043183",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090366",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712249, 0.712249, 0.712247",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.370982, 0.553150, 0.749248, 1.058587, 1.653547",\
+ "0.392932, 0.575099, 0.771096, 1.080389, 1.675331",\
+ "0.440948, 0.623115, 0.819112, 1.128405, 1.723348",\
+ "0.606257, 0.788424, 0.984421, 1.293715, 1.888659",\
+ "1.195700, 1.377868, 1.573966, 1.883303, 2.478263",\
+ "0.458403, 0.640469, 0.836529, 1.145892, 1.740901",\
+ "0.480352, 0.662418, 0.858377, 1.167694, 1.762685",\
+ "0.528368, 0.710434, 0.906393, 1.215710, 1.810701",\
+ "0.693677, 0.875743, 1.071702, 1.381020, 1.976012",\
+ "1.283120, 1.465186, 1.661247, 1.970608, 2.565616",\
+ "0.539270, 0.720805, 0.916556, 1.225920, 1.820932",\
+ "0.561219, 0.742755, 0.938404, 1.247723, 1.842716",\
+ "0.609235, 0.790771, 0.986420, 1.295739, 1.890733",\
+ "0.774544, 0.956080, 1.151728, 1.461048, 2.056044",\
+ "1.363988, 1.545523, 1.741274, 2.050637, 2.645648",\
+ "0.596909, 0.778642, 0.974291, 1.283391, 1.878029",\
+ "0.618858, 0.800592, 0.996139, 1.305194, 1.899813",\
+ "0.666874, 0.848608, 1.044155, 1.353210, 1.947829",\
+ "0.832183, 1.013916, 1.209464, 1.518519, 2.113140",\
+ "1.421627, 1.603360, 1.799009, 2.108108, 2.702744",\
+ "0.899004, 1.084021, 1.277955, 1.586599, 2.180348",\
+ "0.920954, 1.105970, 1.299802, 1.608401, 2.202132",\
+ "0.968969, 1.153986, 1.347818, 1.656417, 2.250149",\
+ "1.134278, 1.319295, 1.513127, 1.821727, 2.415460",\
+ "1.723722, 1.908738, 2.102673, 2.411315, 3.005064");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443448",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443448",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443448",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443448",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712",\
+ "0.035869, 0.035869, 0.035869, 0.035870, 0.035870",\
+ "0.064692, 0.064692, 0.064692, 0.064693, 0.064694",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142527",\
+ "0.443427, 0.443427, 0.443428, 0.443434, 0.443448",\
+ "1.518709, 1.518709, 1.518710, 1.518710, 1.518712");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_min_2332*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.504167, 0.682507, 0.862854, 1.149040, 1.699793",\
+ "0.533110, 0.711450, 0.891797, 1.177983, 1.728736",\
+ "0.604258, 0.782598, 0.962945, 1.249131, 1.799884",\
+ "0.859984, 1.038323, 1.218670, 1.504856, 2.055609",\
+ "1.770448, 1.948787, 2.129134, 2.415321, 2.966074",\
+ "0.589106, 0.767343, 0.947924, 1.234547, 1.786172",\
+ "0.618049, 0.796286, 0.976867, 1.263489, 1.815114",\
+ "0.689197, 0.867433, 1.048015, 1.334637, 1.886262",\
+ "0.944922, 1.123159, 1.303740, 1.590363, 2.141988",\
+ "1.855386, 2.033623, 2.214204, 2.500827, 3.052452",\
+ "0.665012, 0.842786, 1.022733, 1.309143, 1.860344",\
+ "0.693955, 0.871729, 1.051676, 1.338086, 1.889287",\
+ "0.765103, 0.942877, 1.122823, 1.409234, 1.960435",\
+ "1.020828, 1.198602, 1.378549, 1.664959, 2.216160",\
+ "1.931292, 2.109066, 2.289013, 2.575424, 3.126625",\
+ "0.719364, 0.897532, 1.077598, 1.363737, 1.914661",\
+ "0.748307, 0.926474, 1.106541, 1.392680, 1.943604",\
+ "0.819455, 0.997622, 1.177689, 1.463828, 2.014752",\
+ "1.075180, 1.253348, 1.433414, 1.719553, 2.270478",\
+ "1.985644, 2.163812, 2.343878, 2.630017, 3.180942",\
+ "1.000786, 1.183049, 1.361751, 1.647463, 2.197939",\
+ "1.029729, 1.211992, 1.390694, 1.676406, 2.226882",\
+ "1.100877, 1.283140, 1.461842, 1.747554, 2.298030",\
+ "1.356602, 1.538865, 1.717567, 2.003279, 2.553755",\
+ "2.267066, 2.449329, 2.628031, 2.913743, 3.464219");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.043180, 0.043180, 0.043180, 0.043180, 0.043181",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043181",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043181",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043181",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.043180, 0.043180, 0.043180, 0.043180, 0.043181",\
+ "0.090365, 0.090365, 0.090365, 0.090365, 0.090365",\
+ "0.222668, 0.222668, 0.222668, 0.222668, 0.222668",\
+ "0.712250, 0.712250, 0.712250, 0.712250, 0.712250",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.388255, 0.653254, 0.912284, 1.348548, 2.220695",\
+ "0.410204, 0.675204, 0.934223, 1.370453, 2.242530",\
+ "0.458220, 0.723220, 0.982239, 1.418469, 2.290546",\
+ "0.623529, 0.888528, 1.147548, 1.583778, 2.455855",\
+ "1.212973, 1.477972, 1.737002, 2.173266, 3.045412",\
+ "0.476921, 0.741329, 1.000925, 1.436777, 2.308100",\
+ "0.498870, 0.763278, 1.022864, 1.458682, 2.329936",\
+ "0.546886, 0.811294, 1.070880, 1.506698, 2.377952",\
+ "0.712195, 0.976603, 1.236189, 1.672007, 2.543260",\
+ "1.301638, 1.566047, 1.825642, 2.261495, 3.132817",\
+ "0.569727, 0.834623, 1.092960, 1.529020, 2.401142",\
+ "0.591677, 0.856572, 1.114899, 1.550925, 2.422977",\
+ "0.639693, 0.904588, 1.162915, 1.598941, 2.470994",\
+ "0.805001, 1.069897, 1.328224, 1.764250, 2.636302",\
+ "1.394445, 1.659341, 1.917678, 2.353738, 3.225859",\
+ "0.635450, 0.903157, 1.160015, 1.596027, 2.468051",\
+ "0.657399, 0.925106, 1.181954, 1.617932, 2.489887",\
+ "0.705415, 0.973122, 1.229970, 1.665948, 2.537903",\
+ "0.870724, 1.138431, 1.395279, 1.831257, 2.703212",\
+ "1.460168, 1.727875, 1.984733, 2.420745, 3.292769",\
+ "0.981239, 1.283655, 1.530653, 1.965228, 2.834378",\
+ "1.003189, 1.305605, 1.552592, 1.987133, 2.856214",\
+ "1.051205, 1.353621, 1.600608, 2.035149, 2.904230",\
+ "1.216513, 1.518929, 1.765917, 2.200458, 3.069539",\
+ "1.805957, 2.108373, 2.355371, 2.789946, 3.659096");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443428",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443429",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710",\
+ "0.035869, 0.035869, 0.035869, 0.035869, 0.035869",\
+ "0.064692, 0.064692, 0.064692, 0.064692, 0.064692",\
+ "0.142526, 0.142526, 0.142526, 0.142526, 0.142526",\
+ "0.443427, 0.443427, 0.443427, 0.443428, 0.443429",\
+ "1.518709, 1.518709, 1.518709, 1.518709, 1.518710");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_min_2273*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.141721, 0.170980, 0.242593, 0.498866, 1.411098",\
+ "0.229906, 0.259165, 0.330790, 0.587108, 1.499024",\
+ "0.318231, 0.347489, 0.419118, 0.675627, 1.587106",\
+ "0.380823, 0.410078, 0.481658, 0.738460, 1.650402",\
+ "0.710704, 0.739954, 0.811356, 1.068597, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.043180, 0.090365, 0.222668, 0.712250, 2.448223",\
+ "0.043180, 0.090365, 0.222668, 0.712250, 2.448223",\
+ "0.043180, 0.090365, 0.222668, 0.712250, 2.448223",\
+ "0.043180, 0.090365, 0.222668, 0.712250, 2.448223",\
+ "0.043180, 0.090365, 0.222668, 0.712250, 2.448223");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.179981, 0.202635, 0.251659, 0.417360, 1.003853",\
+ "0.267384, 0.290039, 0.339062, 0.504764, 1.091257",\
+ "0.348282, 0.370934, 0.419962, 0.585668, 1.172170",\
+ "0.405945, 0.428592, 0.477629, 0.643342, 1.229861",\
+ "0.708302, 0.730939, 0.780004, 0.945787, 1.532477");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.035869, 0.064690, 0.142524, 0.442595, 1.516425",\
+ "0.035869, 0.064690, 0.142524, 0.442595, 1.516425",\
+ "0.035869, 0.064690, 0.142524, 0.442641, 1.516425",\
+ "0.035869, 0.064690, 0.142524, 0.442726, 1.516425",\
+ "0.035869, 0.064691, 0.142524, 0.443427, 1.516425");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.146678, 0.146678, 0.146678, 0.146678, 0.146678",\
+ "0.165298, 0.165298, 0.165298, 0.165298, 0.165298",\
+ "0.241802, 0.241802, 0.241802, 0.241802, 0.241802",\
+ "0.367706, 0.367706, 0.367706, 0.367706, 0.367706",\
+ "0.946794, 0.946794, 0.946794, 0.946794, 0.946794");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.412191, 0.412191, 0.412191, 0.412191, 0.412191",\
+ "0.424880, 0.424880, 0.424880, 0.424880, 0.424880",\
+ "0.479563, 0.479563, 0.479563, 0.479563, 0.479563",\
+ "0.581996, 0.581996, 0.581996, 0.581996, 0.581996",\
+ "1.256928, 1.256928, 1.256928, 1.256928, 1.256928");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.138937, -0.138937, -0.138937, -0.138937, -0.138937",\
+ "-0.155751, -0.155751, -0.155751, -0.155751, -0.155751",\
+ "-0.234216, -0.234216, -0.234216, -0.234216, -0.234216",\
+ "-0.360721, -0.360721, -0.360721, -0.360721, -0.360721",\
+ "-0.939265, -0.939265, -0.939265, -0.939265, -0.939265");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.408326, -0.408326, -0.408326, -0.408326, -0.408326",\
+ "-0.417967, -0.417967, -0.417967, -0.417967, -0.417967",\
+ "-0.475689, -0.475689, -0.475689, -0.475689, -0.475689",\
+ "-0.578062, -0.578062, -0.578062, -0.578062, -0.578062",\
+ "-1.250684, -1.250684, -1.250684, -1.250684, -1.250684");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[9]_cghr*/
+
+ timing () {
+ related_pin : "padmux2ast_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.088963, 0.118659, 0.189985, 0.445909, 1.359203",\
+ "0.176595, 0.206339, 0.277538, 0.533662, 1.444562",\
+ "0.274330, 0.305634, 0.377516, 0.633363, 1.547694",\
+ "0.452110, 0.487212, 0.561030, 0.816620, 1.732299",\
+ "0.755237, 0.801656, 0.884430, 1.139988, 2.048527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.044962, 0.091670, 0.223831, 0.718456, 2.481454",\
+ "0.045846, 0.091918, 0.223831, 0.720074, 2.481454",\
+ "0.052795, 0.096494, 0.223831, 0.720074, 2.481454",\
+ "0.070125, 0.108925, 0.227741, 0.720074, 2.481454",\
+ "0.113963, 0.145559, 0.246252, 0.720074, 2.481454");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.127301, 0.151950, 0.203155, 0.369998, 0.957371",\
+ "0.206362, 0.230972, 0.282119, 0.448933, 1.035102",\
+ "0.309711, 0.336083, 0.388248, 0.554957, 1.142995",\
+ "0.487304, 0.519754, 0.577312, 0.745501, 1.332624",\
+ "0.775221, 0.823575, 0.896452, 1.070131, 1.655247");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.044715, 0.073858, 0.149782, 0.448303, 1.525169",\
+ "0.044715, 0.073858, 0.149782, 0.448303, 1.525169",\
+ "0.053324, 0.079575, 0.152471, 0.448303, 1.525169",\
+ "0.080832, 0.102703, 0.166343, 0.450943, 1.525169",\
+ "0.138432, 0.160382, 0.212572, 0.461516, 1.526821");
+ }
+
+ } /* end of arc padmux2ast_i[1]_obs_ctrl_o[9]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.084586, 0.113378, 0.184446, 0.440600, 1.352120",\
+ "0.171768, 0.200846, 0.271799, 0.528276, 1.439207",\
+ "0.268285, 0.298195, 0.369868, 0.625566, 1.536303",\
+ "0.442396, 0.476138, 0.548327, 0.804981, 1.718362",\
+ "0.738546, 0.782374, 0.862671, 1.116124, 2.025527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.042344, 0.090303, 0.222464, 0.709820, 2.440521",\
+ "0.043472, 0.090646, 0.222464, 0.709820, 2.440521",\
+ "0.049500, 0.094474, 0.223126, 0.712718, 2.449750",\
+ "0.065555, 0.105654, 0.227159, 0.712718, 2.460771",\
+ "0.105524, 0.141324, 0.243057, 0.716552, 2.462313");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.093008, 0.115079, 0.163442, 0.328951, 0.916956",\
+ "0.178087, 0.200175, 0.248558, 0.413891, 1.001128",\
+ "0.277566, 0.302239, 0.352189, 0.517358, 1.105026",\
+ "0.446802, 0.478509, 0.534068, 0.699312, 1.285539",\
+ "0.721986, 0.770109, 0.842702, 1.014834, 1.597599");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001432, 0.004671, 0.013253, 0.044568, 0.156168");
+ values ( "0.036627, 0.065671, 0.143118, 0.443055, 1.519637",\
+ "0.037498, 0.065879, 0.143311, 0.444331, 1.520249",\
+ "0.048608, 0.074072, 0.147057, 0.444933, 1.520249",\
+ "0.075730, 0.097335, 0.160558, 0.448031, 1.520263",\
+ "0.132420, 0.154310, 0.206677, 0.457722, 1.522974");
+ }
+
+ } /* end of arc padmux2ast_i[1]_obs_ctrl_o[9]_una_min*/
+
+} /* end of pin obs_ctrl_o[9] */
+
+pin("obs_ctrl_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001401 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.560256, 0.740460, 0.927949, 1.229942, 1.813454",\
+ "0.590229, 0.770432, 0.957922, 1.259915, 1.843426",\
+ "0.661974, 0.842177, 1.029667, 1.331659, 1.915171",\
+ "0.918426, 1.098629, 1.286119, 1.588112, 2.171624",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.645195, 0.825743, 1.013958, 1.315954, 1.899832",\
+ "0.675168, 0.855715, 1.043931, 1.345927, 1.929805",\
+ "0.746912, 0.927460, 1.115675, 1.417671, 2.001549",\
+ "1.003365, 1.183912, 1.372128, 1.674124, 2.258002",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.721107, 0.901186, 1.088767, 1.390551, 1.974005",\
+ "0.751079, 0.931159, 1.118740, 1.420524, 2.003977",\
+ "0.822824, 1.002903, 1.190484, 1.492268, 2.075722",\
+ "1.079277, 1.259356, 1.446937, 1.748721, 2.332174",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244640",\
+ "0.775476, 0.955698, 1.143418, 1.445091, 2.028322",\
+ "0.805449, 0.985670, 1.173391, 1.475063, 2.058295",\
+ "0.877193, 1.057415, 1.245135, 1.546808, 2.130039",\
+ "1.133646, 1.313868, 1.501588, 1.803261, 2.386492",\
+ "2.046112, 2.226333, 2.414054, 2.715726, 3.298958",\
+ "1.057071, 1.240966, 1.427369, 1.728817, 2.311599",\
+ "1.087044, 1.270938, 1.457341, 1.758790, 2.341572",\
+ "1.158788, 1.342683, 1.529086, 1.830534, 2.413317",\
+ "1.415241, 1.599136, 1.785538, 2.086987, 2.669769",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.418156, 0.685942, 0.947522, 1.387219, 2.266614",\
+ "0.442597, 0.710383, 0.971963, 1.411660, 2.291055",\
+ "0.493471, 0.761257, 1.022837, 1.462534, 2.341929",\
+ "0.659908, 0.927694, 1.189274, 1.628971, 2.508366",\
+ "1.246791, 1.514577, 1.776157, 2.215854, 3.095249",\
+ "0.506860, 0.774017, 1.036163, 1.475448, 2.354019",\
+ "0.531302, 0.798458, 1.060604, 1.499889, 2.378460",\
+ "0.582175, 0.849332, 1.111478, 1.550763, 2.429334",\
+ "0.748612, 1.015769, 1.277915, 1.717200, 2.595771",\
+ "1.335496, 1.602652, 1.864798, 2.304084, 3.182654",\
+ "0.599803, 0.867162, 1.127888, 1.567612, 2.447061",\
+ "0.624244, 0.891603, 1.152330, 1.592054, 2.471502",\
+ "0.675117, 0.942477, 1.203203, 1.642927, 2.522376",\
+ "0.841555, 1.108914, 1.369640, 1.809364, 2.688813",\
+ "1.428438, 1.695797, 1.956524, 2.396248, 3.275696",\
+ "0.665646, 0.935726, 1.194908, 1.634463, 2.513572",\
+ "0.690087, 0.960168, 1.219349, 1.658904, 2.538013",\
+ "0.740961, 1.011041, 1.270223, 1.709777, 2.588887",\
+ "0.907398, 1.177478, 1.436660, 1.876215, 2.755324",\
+ "1.494281, 1.764362, 2.023544, 2.463098, 3.342207",\
+ "1.012168, 1.316562, 1.565571, 2.003616, 2.879708",\
+ "1.036609, 1.341003, 1.590012, 2.028058, 2.904149",\
+ "1.087482, 1.391877, 1.640886, 2.078931, 2.955022",\
+ "1.253920, 1.558314, 1.807323, 2.245368, 3.121460",\
+ "1.840803, 2.145197, 2.394207, 2.832252, 3.708343");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_2698*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.468362, 0.731935, 1.008208, 1.476938, 2.414397",\
+ "0.498334, 0.761908, 1.038180, 1.506910, 2.444369",\
+ "0.570079, 0.833652, 1.109925, 1.578655, 2.516114",\
+ "0.826532, 1.090105, 1.366378, 1.835107, 2.772566",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.556556, 0.819476, 1.095776, 1.563653, 2.500330",\
+ "0.586529, 0.849449, 1.125748, 1.593625, 2.530303",\
+ "0.658273, 0.921193, 1.197493, 1.665370, 2.602047",\
+ "0.914726, 1.177646, 1.453945, 1.921822, 2.858500",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.644872, 0.908457, 1.183741, 1.651275, 2.587286",\
+ "0.674845, 0.938429, 1.213713, 1.681248, 2.617258",\
+ "0.746589, 1.010174, 1.285458, 1.752992, 2.689003",\
+ "1.003042, 1.266626, 1.541910, 2.009445, 2.945455",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.707368, 0.974091, 1.247880, 1.715189, 2.650795",\
+ "0.737341, 1.004064, 1.277853, 1.745162, 2.680767",\
+ "0.809085, 1.075809, 1.349597, 1.816906, 2.752512",\
+ "1.065538, 1.332261, 1.606050, 2.073359, 3.008964",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.036494, 1.338422, 1.599747, 2.064539, 2.996251",\
+ "1.066466, 1.368395, 1.629720, 2.094511, 3.026223",\
+ "1.138211, 1.440139, 1.701465, 2.166256, 3.097968",\
+ "1.394664, 1.696592, 1.957917, 2.422708, 3.354420",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715792, 0.715788",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715792, 0.715788",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715792, 0.715788",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715792, 0.715788",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715792, 0.715788",\
+ "2.463890, 2.463890, 2.463889, 2.463887, 2.463883");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.401109, 0.583541, 0.779933, 1.088987, 1.683794",\
+ "0.425551, 0.607982, 0.804374, 1.113428, 1.708236",\
+ "0.476424, 0.658856, 0.855248, 1.164301, 1.759109",\
+ "0.642861, 0.825293, 1.021685, 1.330738, 1.925545",\
+ "1.229745, 1.412177, 1.608569, 1.917621, 2.512428",\
+ "0.488524, 0.670927, 0.867426, 1.176292, 1.771148",\
+ "0.512965, 0.695368, 0.891868, 1.200733, 1.795590",\
+ "0.563839, 0.746242, 0.942741, 1.251606, 1.846463",\
+ "0.730276, 0.912679, 1.109178, 1.418043, 2.012899",\
+ "1.317160, 1.499562, 1.696062, 2.004926, 2.599781",\
+ "0.569400, 0.751263, 0.947453, 1.256320, 1.851179",\
+ "0.593842, 0.775705, 0.971894, 1.280761, 1.875621",\
+ "0.644715, 0.826578, 1.022768, 1.331635, 1.926494",\
+ "0.811152, 0.993015, 1.189205, 1.498072, 2.092930",\
+ "1.398036, 1.579899, 1.776089, 2.084955, 2.679813",\
+ "0.627047, 0.808812, 1.004997, 1.313565, 1.907827",\
+ "0.651488, 0.833253, 1.029438, 1.338006, 1.932269",\
+ "0.702362, 0.884127, 1.080312, 1.388880, 1.983142",\
+ "0.868799, 1.050564, 1.246749, 1.555317, 2.149578",\
+ "1.455682, 1.637447, 1.833632, 2.142200, 2.736460",\
+ "0.929255, 1.114036, 1.308631, 1.616580, 2.209674",\
+ "0.953696, 1.138477, 1.333072, 1.641021, 2.234116",\
+ "1.004569, 1.189351, 1.383945, 1.691895, 2.284989",\
+ "1.171007, 1.355788, 1.550383, 1.858332, 2.451425",\
+ "1.757890, 1.942672, 2.137266, 2.445215, 3.038307");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523417",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523417",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523417",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523417",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523417");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_2629*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.464386, 0.724016, 0.995888, 1.452767, 2.366527",\
+ "0.494359, 0.753988, 1.025861, 1.482740, 2.396500",\
+ "0.566104, 0.825733, 1.097605, 1.554485, 2.468244",\
+ "0.822556, 1.082185, 1.354057, 1.810937, 2.724696",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.552491, 0.811549, 1.083418, 1.539483, 2.452461",\
+ "0.582464, 0.841522, 1.113391, 1.569456, 2.482434",\
+ "0.654208, 0.913266, 1.185135, 1.641200, 2.554178",\
+ "0.910661, 1.169719, 1.441588, 1.897652, 2.810630",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.640521, 0.900515, 1.171383, 1.627106, 2.539416",\
+ "0.670494, 0.930488, 1.201355, 1.657078, 2.569389",\
+ "0.742239, 1.002232, 1.273100, 1.728823, 2.641133",\
+ "0.998691, 1.258685, 1.529552, 1.985275, 2.897585",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.702743, 0.966129, 1.235520, 1.691019, 2.602925",\
+ "0.732715, 0.996101, 1.265493, 1.720992, 2.632898",\
+ "0.804460, 1.067846, 1.337237, 1.792736, 2.704642",\
+ "1.060912, 1.324298, 1.593690, 2.049189, 2.961094",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.030130, 1.330203, 1.587268, 2.040320, 2.948381",\
+ "1.060103, 1.360176, 1.617240, 2.070293, 2.978354",\
+ "1.131847, 1.431921, 1.688985, 2.142037, 3.050098",\
+ "1.388300, 1.688373, 1.945437, 2.398489, 3.306550",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715790, 0.715784",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715790, 0.715784",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715790, 0.715784",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715790, 0.715784",\
+ "2.463890, 2.463890, 2.463888, 2.463885, 2.463879",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045709",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223656, 0.223656",\
+ "0.715794, 0.715794, 0.715793, 0.715790, 0.715784",\
+ "2.463890, 2.463889, 2.463888, 2.463885, 2.463879");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.399448, 0.581989, 0.778244, 1.087461, 1.682757",\
+ "0.423889, 0.606430, 0.802685, 1.111902, 1.707199",\
+ "0.474763, 0.657304, 0.853558, 1.162776, 1.758072",\
+ "0.641200, 0.823741, 1.019996, 1.329213, 1.924508",\
+ "1.228083, 1.410624, 1.606879, 1.916096, 2.511390",\
+ "0.486868, 0.669374, 0.865736, 1.174766, 1.770111",\
+ "0.511309, 0.693815, 0.890178, 1.199207, 1.794553",\
+ "0.562183, 0.744689, 0.941051, 1.250081, 1.845426",\
+ "0.728620, 0.911126, 1.107488, 1.416518, 2.011862",\
+ "1.315503, 1.498010, 1.694372, 2.003401, 2.598744",\
+ "0.567735, 0.749711, 0.945763, 1.254794, 1.850142",\
+ "0.592177, 0.774152, 0.970205, 1.279236, 1.874584",\
+ "0.643050, 0.825026, 1.021078, 1.330109, 1.925457",\
+ "0.809487, 0.991463, 1.187515, 1.496546, 2.091893",\
+ "1.396371, 1.578347, 1.774399, 2.083429, 2.678775",\
+ "0.625374, 0.807260, 1.003307, 1.312040, 1.906790",\
+ "0.649816, 0.831701, 1.027748, 1.336481, 1.931232",\
+ "0.700689, 0.882574, 1.078622, 1.387354, 1.982105",\
+ "0.867126, 1.049011, 1.245059, 1.553791, 2.148541",\
+ "1.454010, 1.635895, 1.831943, 2.140674, 2.735423",\
+ "0.927469, 1.112486, 1.306941, 1.615054, 2.208637",\
+ "0.951911, 1.136927, 1.331383, 1.639496, 2.233079",\
+ "1.002784, 1.187801, 1.382256, 1.690369, 2.283952",\
+ "1.169221, 1.354238, 1.548693, 1.856806, 2.450387",\
+ "1.756105, 1.941121, 2.135577, 2.443689, 3.037270");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523416",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523416",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523416",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523416",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073392, 0.073390",\
+ "0.149511, 0.149511, 0.149511, 0.149511, 0.149511",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523416");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_2576*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.556670, 0.735097, 0.915357, 1.201564, 1.752681",\
+ "0.586643, 0.765069, 0.945330, 1.231536, 1.782653",\
+ "0.658387, 0.836814, 1.017074, 1.303281, 1.854398",\
+ "0.914840, 1.093267, 1.273527, 1.559734, 2.110850",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.641609, 0.820369, 1.001272, 1.287484, 1.839059",\
+ "0.671581, 0.850342, 1.031245, 1.317456, 1.869031",\
+ "0.743326, 0.922086, 1.102990, 1.389201, 1.940776",\
+ "0.999778, 1.178539, 1.359442, 1.645654, 2.197229",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.717515, 0.895813, 1.076081, 1.362081, 1.913231",\
+ "0.747487, 0.925785, 1.106054, 1.392053, 1.943204",\
+ "0.819232, 0.997530, 1.177799, 1.463798, 2.014948",\
+ "1.075685, 1.253982, 1.434251, 1.720250, 2.271401",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.771867, 0.950324, 1.130732, 1.416620, 1.967548",\
+ "0.801839, 0.980297, 1.160705, 1.446593, 1.997521",\
+ "0.873584, 1.052042, 1.232450, 1.518338, 2.069266",\
+ "1.130037, 1.308494, 1.488902, 1.774790, 2.325718",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.053289, 1.235552, 1.414683, 1.700347, 2.250826",\
+ "1.083261, 1.265524, 1.444655, 1.730319, 2.280799",\
+ "1.155006, 1.337269, 1.516400, 1.802064, 2.352543",\
+ "1.411458, 1.593722, 1.772853, 2.058517, 2.608996",\
+ "2.323924, 2.506187, 2.685318, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890",\
+ "0.045710, 0.045710, 0.045710, 0.045710, 0.045710",\
+ "0.092269, 0.092269, 0.092269, 0.092269, 0.092269",\
+ "0.223657, 0.223657, 0.223657, 0.223657, 0.223657",\
+ "0.715794, 0.715794, 0.715794, 0.715794, 0.715794",\
+ "2.463890, 2.463890, 2.463890, 2.463890, 2.463890");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.416720, 0.681890, 0.941092, 1.377274, 2.249640",\
+ "0.441162, 0.706331, 0.965533, 1.401715, 2.274081",\
+ "0.492035, 0.757205, 1.016407, 1.452589, 2.324954",\
+ "0.658472, 0.923642, 1.182844, 1.619026, 2.491391",\
+ "1.245356, 1.510525, 1.769727, 2.205910, 3.078275",\
+ "0.505386, 0.769965, 1.029733, 1.465503, 2.337044",\
+ "0.529827, 0.794406, 1.054174, 1.489944, 2.361485",\
+ "0.580701, 0.845280, 1.105047, 1.540818, 2.412359",\
+ "0.747138, 1.011717, 1.271485, 1.707255, 2.578796",\
+ "1.334021, 1.598600, 1.858368, 2.294138, 3.165680",\
+ "0.598193, 0.863088, 1.121458, 1.557667, 2.430086",\
+ "0.622634, 0.887529, 1.145899, 1.582108, 2.454527",\
+ "0.673507, 0.938403, 1.196773, 1.632982, 2.505401",\
+ "0.839945, 1.104840, 1.363210, 1.799419, 2.671838",\
+ "1.426828, 1.691723, 1.950093, 2.386303, 3.258722",\
+ "0.663915, 0.931622, 1.188478, 1.624518, 2.496598",\
+ "0.688356, 0.956063, 1.212919, 1.648959, 2.521039",\
+ "0.739230, 1.006937, 1.263793, 1.699832, 2.571912",\
+ "0.905667, 1.173374, 1.430230, 1.866270, 2.738349",\
+ "1.492550, 1.760257, 2.017113, 2.453153, 3.325233",\
+ "1.009705, 1.312121, 1.559108, 1.993649, 2.862731",\
+ "1.034146, 1.336562, 1.583549, 2.018090, 2.887172",\
+ "1.085019, 1.387435, 1.634423, 2.068964, 2.938045",\
+ "1.251456, 1.553873, 1.800860, 2.235401, 3.104483",\
+ "1.838340, 2.140756, 2.387743, 2.822284, 3.691366");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419",\
+ "0.044220, 0.044220, 0.044220, 0.044220, 0.044220",\
+ "0.073393, 0.073393, 0.073393, 0.073393, 0.073393",\
+ "0.149510, 0.149510, 0.149510, 0.149510, 0.149510",\
+ "0.447701, 0.447701, 0.447701, 0.447701, 0.447701",\
+ "1.523418, 1.523418, 1.523418, 1.523418, 1.523419");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_2513*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.323944, 0.353916, 0.425661, 0.682114, 1.594576",\
+ "0.411334, 0.441307, 0.513052, 0.769505, 1.681967",\
+ "0.492253, 0.522226, 0.593971, 0.850424, 1.762885",\
+ "0.549994, 0.579967, 0.651712, 0.908165, 1.820624",\
+ "0.852699, 0.882672, 0.954417, 1.210871, 2.123326");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.045711, 0.092269, 0.223658, 0.715775, 2.463871",\
+ "0.045711, 0.092269, 0.223735, 0.715775, 2.463871",\
+ "0.045711, 0.092269, 0.223968, 0.715775, 2.463871",\
+ "0.045711, 0.092270, 0.223968, 0.715775, 2.463871",\
+ "0.045873, 0.092295, 0.224303, 0.715788, 2.463884");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.296604, 0.321045, 0.371919, 0.538356, 1.125239",\
+ "0.383997, 0.408438, 0.459311, 0.625749, 1.212632",\
+ "0.464866, 0.489307, 0.540181, 0.706618, 1.293501",\
+ "0.522515, 0.546956, 0.597830, 0.764267, 1.351150",\
+ "0.825652, 0.850326, 0.901556, 1.068388, 1.654962");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.044220, 0.073393, 0.149516, 0.447701, 1.524168",\
+ "0.044220, 0.073393, 0.149516, 0.447701, 1.524168",\
+ "0.044220, 0.073393, 0.149516, 0.447701, 1.524042",\
+ "0.044220, 0.073393, 0.149516, 0.447701, 1.523806",\
+ "0.044219, 0.073327, 0.149516, 0.447696, 1.523418");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.507461, 0.687575, 0.875153, 1.177133, 1.760229",\
+ "0.536439, 0.716552, 0.904131, 1.206110, 1.789207",\
+ "0.607591, 0.787705, 0.975283, 1.277263, 1.860359",\
+ "0.863316, 1.043430, 1.231008, 1.532988, 2.116084",\
+ "1.774034, 1.954148, 2.141726, 2.443706, 3.026802",\
+ "0.592400, 0.772411, 0.960223, 1.262639, 1.846608",\
+ "0.621377, 0.801388, 0.989201, 1.291617, 1.875585",\
+ "0.692529, 0.872540, 1.060353, 1.362769, 1.946737",\
+ "0.948255, 1.128266, 1.316078, 1.618494, 2.202463",\
+ "1.858973, 2.038984, 2.226796, 2.529212, 3.113181",\
+ "0.668312, 0.847854, 1.035032, 1.337236, 1.920780",\
+ "0.697289, 0.876831, 1.064010, 1.366214, 1.949757",\
+ "0.768441, 0.947984, 1.135162, 1.437366, 2.020910",\
+ "1.024167, 1.203709, 1.390887, 1.693091, 2.276635",\
+ "1.934885, 2.114427, 2.301605, 2.603809, 3.187353",\
+ "0.722681, 0.902605, 1.089921, 1.391842, 1.975097",\
+ "0.751658, 0.931583, 1.118899, 1.420819, 2.004075",\
+ "0.822811, 1.002735, 1.190051, 1.491971, 2.075227",\
+ "1.078536, 1.258460, 1.445776, 1.747697, 2.330952",\
+ "1.989254, 2.169178, 2.356494, 2.658415, 3.241670",\
+ "1.004276, 1.188170, 1.374097, 1.675568, 2.258375",\
+ "1.033253, 1.217148, 1.403074, 1.704545, 2.287352",\
+ "1.104405, 1.288300, 1.474226, 1.775698, 2.358505",\
+ "1.360131, 1.544025, 1.729952, 2.031423, 2.614230",\
+ "2.270849, 2.454743, 2.640669, 2.942141, 3.524948");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.389483, 0.657094, 0.918495, 1.358271, 2.237432",\
+ "0.411493, 0.679104, 0.940496, 1.380242, 2.259341",\
+ "0.459519, 0.727130, 0.988522, 1.428268, 2.307366",\
+ "0.624827, 0.892438, 1.153830, 1.593576, 2.472674",\
+ "1.214436, 1.482046, 1.743447, 2.183224, 3.062385",\
+ "0.478187, 0.745169, 1.007135, 1.446501, 2.324838",\
+ "0.500198, 0.767179, 1.029137, 1.468471, 2.346746",\
+ "0.548223, 0.815205, 1.077163, 1.516497, 2.394772",\
+ "0.713532, 0.980513, 1.242471, 1.681805, 2.560080",\
+ "1.303140, 1.570121, 1.832088, 2.271453, 3.149790",\
+ "0.571129, 0.838489, 1.099180, 1.538746, 2.417880",\
+ "0.593140, 0.860499, 1.121182, 1.560717, 2.439788",\
+ "0.641166, 0.908525, 1.169207, 1.608743, 2.487813",\
+ "0.806474, 1.073833, 1.334516, 1.774051, 2.653121",\
+ "1.396082, 1.663441, 1.924133, 2.363699, 3.242832",\
+ "0.636973, 0.907053, 1.166236, 1.605758, 2.484801",\
+ "0.658983, 0.929063, 1.188238, 1.627728, 2.506709",\
+ "0.707009, 0.977089, 1.236264, 1.675754, 2.554735",\
+ "0.872317, 1.142398, 1.401572, 1.841062, 2.720043",\
+ "1.461926, 1.732006, 1.991189, 2.430710, 3.309754",\
+ "0.983494, 1.287889, 1.536907, 1.974983, 2.851137",\
+ "1.005505, 1.309899, 1.558908, 1.996953, 2.873044",\
+ "1.053531, 1.357925, 1.606934, 2.044979, 2.921070",\
+ "1.218839, 1.523233, 1.772242, 2.210288, 3.086378",\
+ "1.808447, 2.112841, 2.361860, 2.799936, 3.676089");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_min_2454*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.415570, 0.679101, 0.955220, 1.423352, 2.358356",\
+ "0.444547, 0.708078, 0.984198, 1.452330, 2.387333",\
+ "0.515699, 0.779231, 1.055350, 1.523482, 2.458486",\
+ "0.771425, 1.034956, 1.311076, 1.779207, 2.714211",\
+ "1.682143, 1.945674, 2.221793, 2.689925, 3.624929",\
+ "0.503764, 0.766641, 1.042787, 1.510067, 2.444290",\
+ "0.532741, 0.795619, 1.071764, 1.539045, 2.473267",\
+ "0.603894, 0.866771, 1.142917, 1.610197, 2.544420",\
+ "0.859619, 1.122496, 1.398642, 1.865922, 2.800145",\
+ "1.770337, 2.033214, 2.309360, 2.776640, 3.710862",\
+ "0.592080, 0.855621, 1.130752, 1.597708, 2.531245",\
+ "0.621057, 0.884598, 1.159729, 1.626685, 2.560222",\
+ "0.692210, 0.955751, 1.230882, 1.697837, 2.631375",\
+ "0.947935, 1.211476, 1.486607, 1.953563, 2.887100",\
+ "1.858653, 2.122194, 2.397325, 2.864281, 3.797817",\
+ "0.654576, 0.921255, 1.194892, 1.661796, 2.594754",\
+ "0.683553, 0.950232, 1.223869, 1.690774, 2.623731",\
+ "0.754706, 1.021384, 1.295022, 1.761926, 2.694884",\
+ "1.010431, 1.277110, 1.550747, 2.017652, 2.950609",\
+ "1.921149, 2.187827, 2.461465, 2.928370, 3.861326",\
+ "0.983702, 1.285569, 1.546756, 2.011240, 2.940210",\
+ "1.012679, 1.314547, 1.575733, 2.040218, 2.969187",\
+ "1.083832, 1.385699, 1.646886, 2.111370, 3.040340",\
+ "1.339557, 1.641424, 1.902611, 2.367095, 3.296065",\
+ "2.250275, 2.552142, 2.813329, 3.277813, 4.206782");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.042748, 0.042748, 0.042748, 0.042748, 0.042749",\
+ "0.089888, 0.089888, 0.089888, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222180",\
+ "0.711766, 0.711766, 0.711766, 0.711765, 0.711764",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042749",\
+ "0.089888, 0.089888, 0.089888, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222180",\
+ "0.711766, 0.711766, 0.711766, 0.711765, 0.711764",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042749",\
+ "0.089888, 0.089888, 0.089888, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222180",\
+ "0.711766, 0.711766, 0.711766, 0.711765, 0.711764",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042749",\
+ "0.089888, 0.089888, 0.089888, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222180",\
+ "0.711766, 0.711766, 0.711766, 0.711765, 0.711764",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042749",\
+ "0.089888, 0.089888, 0.089888, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222180",\
+ "0.711766, 0.711766, 0.711766, 0.711765, 0.711764",\
+ "2.448223, 2.448223, 2.448224, 2.448226, 2.448230");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.372438, 0.554496, 0.750729, 1.059908, 1.654385",\
+ "0.394447, 0.576504, 0.772637, 1.081769, 1.676222",\
+ "0.442472, 0.624530, 0.820663, 1.129795, 1.724248",\
+ "0.607781, 0.789838, 0.985971, 1.295103, 1.889559",\
+ "1.197391, 1.379448, 1.575682, 1.884862, 2.479345",\
+ "0.459853, 0.641814, 0.838010, 1.147213, 1.741738",\
+ "0.481861, 0.663823, 0.859918, 1.169074, 1.763576",\
+ "0.529887, 0.711849, 0.907944, 1.217100, 1.811602",\
+ "0.695195, 0.877157, 1.073252, 1.382408, 1.976912",\
+ "1.284805, 1.466767, 1.662963, 1.972167, 2.566699",\
+ "0.540729, 0.722151, 0.918037, 1.227241, 1.821770",\
+ "0.562738, 0.744159, 0.939945, 1.249102, 1.843607",\
+ "0.610763, 0.792185, 0.987971, 1.297128, 1.891634",\
+ "0.776072, 0.957493, 1.153279, 1.462437, 2.056944",\
+ "1.365682, 1.547103, 1.742990, 2.052196, 2.646730",\
+ "0.598376, 0.779988, 0.975773, 1.284712, 1.878866",\
+ "0.620384, 0.801996, 0.997680, 1.306573, 1.900703",\
+ "0.668410, 0.850022, 1.045706, 1.354599, 1.948729",\
+ "0.833718, 1.015330, 1.211014, 1.519907, 2.114039",\
+ "1.423328, 1.604940, 1.800725, 2.109667, 2.703826",\
+ "0.900583, 1.085365, 1.279436, 1.587919, 2.181184",\
+ "0.922592, 1.107373, 1.301344, 1.609780, 2.203021",\
+ "0.970618, 1.155399, 1.349370, 1.657806, 2.251047",\
+ "1.135926, 1.320707, 1.514678, 1.823114, 2.416358",\
+ "1.725536, 1.910317, 2.104389, 2.412873, 3.006144");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064461",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443183, 0.443195",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064461",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443183, 0.443195",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064461",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443183, 0.443195",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064461",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443183, 0.443196",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064461",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443183, 0.443196",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_min_2376*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.411592, 0.671151, 0.942786, 1.398947, 2.310115",\
+ "0.440569, 0.700128, 0.971763, 1.427925, 2.339092",\
+ "0.511721, 0.771281, 1.042916, 1.499077, 2.410245",\
+ "0.767447, 1.027006, 1.298641, 1.754802, 2.665970",\
+ "1.678164, 1.937724, 2.209359, 2.665520, 3.576688",\
+ "0.499696, 0.758684, 1.030315, 1.485663, 2.396049",\
+ "0.528674, 0.787661, 1.059292, 1.514640, 2.425026",\
+ "0.599826, 0.858813, 1.130445, 1.585792, 2.496178",\
+ "0.855551, 1.114539, 1.386170, 1.841518, 2.751904",\
+ "1.766269, 2.025257, 2.296888, 2.752235, 3.662621",\
+ "0.587726, 0.847648, 1.118279, 1.573302, 2.483004",\
+ "0.616704, 0.876625, 1.147256, 1.602279, 2.511981",\
+ "0.687856, 0.947778, 1.218409, 1.673431, 2.583133",\
+ "0.943582, 1.203503, 1.474134, 1.929157, 2.838859",\
+ "1.854300, 2.114221, 2.384852, 2.839874, 3.749576",\
+ "0.649948, 0.913259, 1.182417, 1.637376, 2.546513",\
+ "0.678925, 0.942237, 1.211394, 1.666353, 2.575490",\
+ "0.750077, 1.013389, 1.282547, 1.737506, 2.646642",\
+ "1.005803, 1.269114, 1.538272, 1.993231, 2.902368",\
+ "1.916521, 2.179832, 2.448990, 2.903949, 3.813085",\
+ "0.977335, 1.277308, 1.534159, 1.986762, 2.891969",\
+ "1.006312, 1.306285, 1.563137, 2.015740, 2.920946",\
+ "1.077465, 1.377437, 1.634289, 2.086892, 2.992099",\
+ "1.333190, 1.633163, 1.890014, 2.342618, 3.247824",\
+ "2.243908, 2.543881, 2.800732, 3.253335, 4.158542");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.042748, 0.042748, 0.042748, 0.042749, 0.042750",\
+ "0.089888, 0.089888, 0.089889, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222180, 0.222180",\
+ "0.711766, 0.711766, 0.711765, 0.711765, 0.711763",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.042748, 0.042748, 0.042748, 0.042749, 0.042750",\
+ "0.089888, 0.089888, 0.089889, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222180, 0.222180",\
+ "0.711766, 0.711766, 0.711765, 0.711765, 0.711763",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.042748, 0.042748, 0.042748, 0.042749, 0.042750",\
+ "0.089888, 0.089888, 0.089889, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222180, 0.222180",\
+ "0.711766, 0.711766, 0.711765, 0.711765, 0.711763",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.042748, 0.042748, 0.042748, 0.042749, 0.042750",\
+ "0.089888, 0.089888, 0.089889, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222180, 0.222180",\
+ "0.711766, 0.711766, 0.711765, 0.711765, 0.711763",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234",\
+ "0.042748, 0.042748, 0.042748, 0.042749, 0.042750",\
+ "0.089888, 0.089888, 0.089889, 0.089889, 0.089889",\
+ "0.222179, 0.222179, 0.222179, 0.222180, 0.222180",\
+ "0.711766, 0.711766, 0.711765, 0.711765, 0.711763",\
+ "2.448223, 2.448223, 2.448225, 2.448228, 2.448234");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.370774, 0.552942, 0.749040, 1.058378, 1.653339",\
+ "0.392785, 0.574952, 0.770949, 1.080242, 1.675184",\
+ "0.440811, 0.622978, 0.818975, 1.128268, 1.723211",\
+ "0.606119, 0.788286, 0.984283, 1.293577, 1.888521",\
+ "1.195727, 1.377894, 1.573993, 1.883330, 2.478289",\
+ "0.458194, 0.640260, 0.836321, 1.145683, 1.740692",\
+ "0.480205, 0.662271, 0.858230, 1.167547, 1.762538",\
+ "0.528231, 0.710297, 0.906256, 1.215573, 1.810564",\
+ "0.693539, 0.875605, 1.071564, 1.380882, 1.975875",\
+ "1.283147, 1.465213, 1.661273, 1.970635, 2.565643",\
+ "0.539062, 0.720597, 0.916348, 1.225712, 1.820724",\
+ "0.561073, 0.742608, 0.938257, 1.247576, 1.842569",\
+ "0.609098, 0.790634, 0.986283, 1.295602, 1.890596",\
+ "0.774407, 0.955942, 1.151591, 1.460911, 2.055906",\
+ "1.364015, 1.545550, 1.741300, 2.050663, 2.645674",\
+ "0.596701, 0.778434, 0.974083, 1.283183, 1.877821",\
+ "0.618712, 0.800445, 0.995992, 1.305047, 1.899666",\
+ "0.666737, 0.848471, 1.044018, 1.353073, 1.947692",\
+ "0.832046, 1.013779, 1.209326, 1.518381, 2.113003",\
+ "1.421654, 1.603387, 1.799036, 2.108135, 2.702771",\
+ "0.898796, 1.083812, 1.277747, 1.586390, 2.180140",\
+ "0.920807, 1.105823, 1.299656, 1.608254, 2.201985",\
+ "0.968832, 1.153849, 1.347681, 1.656280, 2.250011",\
+ "1.134141, 1.319157, 1.512989, 1.821589, 2.415322",\
+ "1.723749, 1.908765, 2.102699, 2.411342, 3.005090");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064462",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443184, 0.443197",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064462",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443184, 0.443197",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064462",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443184, 0.443197",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064462",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443184, 0.443197",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064462",\
+ "0.142275, 0.142275, 0.142275, 0.142276, 0.142277",\
+ "0.443177, 0.443177, 0.443178, 0.443184, 0.443197",\
+ "1.518758, 1.518758, 1.518758, 1.518759, 1.518761");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_min_2318*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.503875, 0.682214, 0.862561, 1.148748, 1.699501",\
+ "0.532852, 0.711192, 0.891538, 1.177725, 1.728478",\
+ "0.604005, 0.782344, 0.962691, 1.248877, 1.799630",\
+ "0.859730, 1.038069, 1.218416, 1.504603, 2.055356",\
+ "1.770448, 1.948787, 2.129134, 2.415321, 2.966074",\
+ "0.588813, 0.767050, 0.947631, 1.234254, 1.785879",\
+ "0.617791, 0.796027, 0.976608, 1.263231, 1.814857",\
+ "0.688943, 0.867180, 1.047761, 1.334384, 1.886009",\
+ "0.944668, 1.122905, 1.303486, 1.590109, 2.141734",\
+ "1.855386, 2.033623, 2.214204, 2.500827, 3.052452",\
+ "0.664719, 0.842493, 1.022440, 1.308851, 1.860052",\
+ "0.693697, 0.871471, 1.051417, 1.337828, 1.889029",\
+ "0.764849, 0.942623, 1.122570, 1.408980, 1.960181",\
+ "1.020574, 1.198349, 1.378295, 1.664706, 2.215907",\
+ "1.931292, 2.109066, 2.289013, 2.575424, 3.126625",\
+ "0.719071, 0.897239, 1.077305, 1.363444, 1.914369",\
+ "0.748049, 0.926216, 1.106283, 1.392421, 1.943346",\
+ "0.819201, 0.997369, 1.177435, 1.463574, 2.014498",\
+ "1.074926, 1.253094, 1.433160, 1.719299, 2.270224",\
+ "1.985644, 2.163812, 2.343878, 2.630017, 3.180942",\
+ "1.000493, 1.182756, 1.361458, 1.647171, 2.197646",\
+ "1.029471, 1.211734, 1.390436, 1.676148, 2.226624",\
+ "1.100623, 1.282886, 1.461588, 1.747300, 2.297776",\
+ "1.356348, 1.538611, 1.717313, 2.003026, 2.553502",\
+ "2.267066, 2.449329, 2.628031, 2.913743, 3.464219");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223",\
+ "0.042748, 0.042748, 0.042748, 0.042748, 0.042748",\
+ "0.089888, 0.089888, 0.089888, 0.089888, 0.089888",\
+ "0.222179, 0.222179, 0.222179, 0.222179, 0.222179",\
+ "0.711766, 0.711766, 0.711766, 0.711766, 0.711766",\
+ "2.448223, 2.448223, 2.448223, 2.448223, 2.448223");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.388047, 0.653046, 0.912076, 1.348340, 2.220486",\
+ "0.410058, 0.675057, 0.934076, 1.370306, 2.242383",\
+ "0.458083, 0.723083, 0.982102, 1.418332, 2.290410",\
+ "0.623392, 0.888391, 1.147410, 1.583640, 2.455718",\
+ "1.213000, 1.477999, 1.737028, 2.173293, 3.045439",\
+ "0.476712, 0.741121, 1.000716, 1.436569, 2.307892",\
+ "0.498723, 0.763132, 1.022717, 1.458535, 2.329789",\
+ "0.546749, 0.811157, 1.070743, 1.506561, 2.377815",\
+ "0.712057, 0.976466, 1.236051, 1.671869, 2.543123",\
+ "1.301665, 1.566074, 1.825669, 2.261521, 3.132844",\
+ "0.569519, 0.834415, 1.092752, 1.528812, 2.400934",\
+ "0.591530, 0.856425, 1.114753, 1.550778, 2.422831",\
+ "0.639556, 0.904451, 1.162778, 1.598804, 2.470856",\
+ "0.804864, 1.069759, 1.328087, 1.764112, 2.636164",\
+ "1.394472, 1.659367, 1.917704, 2.353765, 3.225886",\
+ "0.635242, 0.902949, 1.159807, 1.595819, 2.467843",\
+ "0.657252, 0.924959, 1.181808, 1.617785, 2.489740",\
+ "0.705278, 0.972985, 1.229833, 1.665811, 2.537766",\
+ "0.870586, 1.138293, 1.395142, 1.831119, 2.703074",\
+ "1.460194, 1.727901, 1.984760, 2.420771, 3.292796",\
+ "0.981031, 1.283447, 1.530445, 1.965020, 2.834170",\
+ "1.003042, 1.305458, 1.552445, 1.986986, 2.856067",\
+ "1.051068, 1.353484, 1.600471, 2.035012, 2.904093",\
+ "1.216376, 1.518792, 1.765779, 2.200320, 3.069401",\
+ "1.805984, 2.108400, 2.355398, 2.789973, 3.659123");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758",\
+ "0.035640, 0.035640, 0.035640, 0.035640, 0.035640",\
+ "0.064460, 0.064460, 0.064460, 0.064460, 0.064460",\
+ "0.142275, 0.142275, 0.142275, 0.142275, 0.142275",\
+ "0.443177, 0.443177, 0.443177, 0.443177, 0.443178",\
+ "1.518758, 1.518758, 1.518758, 1.518758, 1.518758");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_min_2260*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.141425, 0.170720, 0.242339, 0.498612, 1.411098",\
+ "0.229610, 0.258905, 0.330536, 0.586854, 1.499024",\
+ "0.317934, 0.347229, 0.418864, 0.675374, 1.587106",\
+ "0.380526, 0.409818, 0.481403, 0.738206, 1.650402",\
+ "0.710407, 0.739695, 0.811101, 1.068343, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.042748, 0.089888, 0.222179, 0.711766, 2.448223",\
+ "0.042748, 0.089888, 0.222179, 0.711766, 2.448223",\
+ "0.042748, 0.089888, 0.222179, 0.711766, 2.448223",\
+ "0.042748, 0.089888, 0.222179, 0.711766, 2.448223",\
+ "0.042748, 0.089888, 0.222179, 0.711766, 2.448223");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.179776, 0.202485, 0.251521, 0.417224, 1.003880",\
+ "0.267179, 0.289888, 0.338925, 0.504627, 1.091283",\
+ "0.348077, 0.370784, 0.419825, 0.585531, 1.172197",\
+ "0.405741, 0.428442, 0.477491, 0.643206, 1.229887",\
+ "0.708098, 0.730789, 0.779867, 0.945650, 1.532504");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.035639, 0.064458, 0.142274, 0.442345, 1.516474",\
+ "0.035639, 0.064458, 0.142274, 0.442345, 1.516474",\
+ "0.035639, 0.064458, 0.142274, 0.442391, 1.516474",\
+ "0.035639, 0.064458, 0.142274, 0.442476, 1.516474",\
+ "0.035639, 0.064458, 0.142274, 0.443177, 1.516474");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.454726, 0.454726, 0.454726, 0.454726, 0.454726",\
+ "0.473076, 0.473076, 0.473076, 0.473076, 0.473076",\
+ "0.545703, 0.545703, 0.545703, 0.545703, 0.545703",\
+ "0.640171, 0.640171, 0.640171, 0.640171, 0.640171",\
+ "1.087704, 1.087704, 1.087704, 1.087704, 1.087704");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.201983, 0.201983, 0.201983, 0.201983, 0.201983",\
+ "0.219410, 0.219410, 0.219410, 0.219410, 0.219410",\
+ "0.296741, 0.296741, 0.296741, 0.296741, 0.296741",\
+ "0.405665, 0.405665, 0.405665, 0.405665, 0.405665",\
+ "0.925258, 0.925258, 0.925258, 0.925258, 0.925258");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.450859, -0.450859, -0.450859, -0.450859, -0.450859",\
+ "-0.467474, -0.467474, -0.467474, -0.467474, -0.467474",\
+ "-0.541835, -0.541835, -0.541835, -0.541835, -0.541835",\
+ "-0.636302, -0.636302, -0.636302, -0.636302, -0.636302",\
+ "-1.083807, -1.083807, -1.083807, -1.083807, -1.083807");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.194280, -0.194280, -0.194280, -0.194280, -0.194280",\
+ "-0.207626, -0.207626, -0.207626, -0.207626, -0.207626",\
+ "-0.289038, -0.289038, -0.289038, -0.289038, -0.289038",\
+ "-0.398036, -0.398036, -0.398036, -0.398036, -0.398036",\
+ "-0.918416, -0.918416, -0.918416, -0.918416, -0.918416");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[8]_cghr*/
+
+ timing () {
+ related_pin : "padmux2ast_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.088658, 0.118400, 0.189731, 0.445655, 1.359203",\
+ "0.176289, 0.206081, 0.277284, 0.533409, 1.444562",\
+ "0.273999, 0.305373, 0.377262, 0.633109, 1.547694",\
+ "0.451720, 0.486942, 0.560777, 0.816366, 1.732299",\
+ "0.754684, 0.801348, 0.884176, 1.139736, 2.048527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.044533, 0.091199, 0.223344, 0.717968, 2.481454",\
+ "0.045427, 0.091448, 0.223344, 0.719590, 2.481454",\
+ "0.052404, 0.096040, 0.223344, 0.719590, 2.481454",\
+ "0.069791, 0.108505, 0.227261, 0.719590, 2.481454",\
+ "0.113693, 0.145215, 0.245785, 0.719590, 2.481454");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.127074, 0.151791, 0.203016, 0.369861, 0.957397",\
+ "0.206135, 0.230814, 0.281980, 0.448797, 1.035129",\
+ "0.309463, 0.335921, 0.388109, 0.554820, 1.143022",\
+ "0.486985, 0.519573, 0.577173, 0.745365, 1.332651",\
+ "0.774720, 0.823340, 0.896308, 1.069995, 1.655274");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.044476, 0.073631, 0.149535, 0.448052, 1.525218",\
+ "0.044476, 0.073631, 0.149535, 0.448052, 1.525218",\
+ "0.053117, 0.079360, 0.152226, 0.448052, 1.525218",\
+ "0.080664, 0.102519, 0.166108, 0.450694, 1.525218",\
+ "0.138236, 0.160233, 0.212368, 0.461268, 1.526869");
+ }
+
+ } /* end of arc padmux2ast_i[0]_obs_ctrl_o[8]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.084296, 0.113120, 0.184192, 0.440347, 1.352120",\
+ "0.171472, 0.200589, 0.271545, 0.528022, 1.439207",\
+ "0.267978, 0.297935, 0.369614, 0.625313, 1.536303",\
+ "0.442024, 0.475873, 0.548072, 0.804727, 1.718362",\
+ "0.738029, 0.782075, 0.862420, 1.115871, 2.025527");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.041900, 0.089823, 0.221979, 0.709338, 2.440521",\
+ "0.043039, 0.090167, 0.221979, 0.709338, 2.440521",\
+ "0.049089, 0.094012, 0.222641, 0.712232, 2.449750",\
+ "0.065208, 0.105222, 0.226678, 0.712232, 2.460771",\
+ "0.105185, 0.140977, 0.242589, 0.716067, 2.462313");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.092809, 0.114931, 0.163305, 0.328814, 0.916983",\
+ "0.177889, 0.200026, 0.248421, 0.413754, 1.001155",\
+ "0.277335, 0.302085, 0.352052, 0.517221, 1.105053",\
+ "0.446489, 0.478335, 0.533931, 0.699176, 1.285565",\
+ "0.721488, 0.769874, 0.842559, 1.014698, 1.597625");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001401, 0.004640, 0.013222, 0.044537, 0.156168");
+ values ( "0.036394, 0.065440, 0.142870, 0.442805, 1.519686",\
+ "0.037274, 0.065647, 0.143061, 0.444080, 1.520298",\
+ "0.048413, 0.073856, 0.146810, 0.444683, 1.520298",\
+ "0.075564, 0.097153, 0.160320, 0.447782, 1.520312",\
+ "0.132225, 0.154160, 0.206470, 0.457474, 1.523023");
+ }
+
+ } /* end of arc padmux2ast_i[0]_obs_ctrl_o[8]_una_min*/
+
+} /* end of pin obs_ctrl_o[8] */
+
+pin("obs_ctrl_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.094370 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001120 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.560132, 0.740335, 0.927825, 1.229818, 1.813330",\
+ "0.598058, 0.778261, 0.965751, 1.267744, 1.851256",\
+ "0.679713, 0.859917, 1.047406, 1.349399, 1.932911",\
+ "0.950162, 1.130366, 1.317855, 1.619848, 2.203360",\
+ "1.836798, 2.017001, 2.204491, 2.506483, 3.089995",\
+ "0.645071, 0.825618, 1.013834, 1.315830, 1.899708",\
+ "0.682997, 0.863544, 1.051760, 1.353756, 1.937634",\
+ "0.764652, 0.945200, 1.133415, 1.435411, 2.019289",\
+ "1.035101, 1.215649, 1.403864, 1.705860, 2.289738",\
+ "1.921736, 2.102284, 2.290499, 2.592495, 3.176373",\
+ "0.720983, 0.901062, 1.088643, 1.390427, 1.973880",\
+ "0.758909, 0.938988, 1.126569, 1.428353, 2.011806",\
+ "0.840564, 1.020643, 1.208224, 1.510008, 2.093462",\
+ "1.111013, 1.291092, 1.478673, 1.780457, 2.363911",\
+ "1.997648, 2.177727, 2.365308, 2.667092, 3.250545",\
+ "0.775352, 0.955573, 1.143294, 1.444967, 2.028198",\
+ "0.813278, 0.993499, 1.181220, 1.482893, 2.066123",\
+ "0.894933, 1.075155, 1.262875, 1.564548, 2.147779",\
+ "1.165382, 1.345604, 1.533324, 1.834997, 2.418228",\
+ "2.052018, 2.232239, 2.419959, 2.721632, 3.304862",\
+ "1.056947, 1.240841, 1.427244, 1.728693, 2.311475",\
+ "1.094873, 1.278767, 1.465170, 1.766619, 2.349401",\
+ "1.176528, 1.360423, 1.546826, 1.848274, 2.431056",\
+ "1.446977, 1.630872, 1.817275, 2.118723, 2.701505",\
+ "2.333612, 2.517507, 2.703910, 3.005358, 3.588140");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.442149, 0.709934, 0.971514, 1.411211, 2.290606",\
+ "0.473003, 0.740789, 1.002369, 1.442066, 2.321460",\
+ "0.534512, 0.802297, 1.063877, 1.503574, 2.382968",\
+ "0.730402, 0.998188, 1.259768, 1.699465, 2.578859",\
+ "1.368610, 1.636396, 1.897976, 2.337672, 3.217067",\
+ "0.530853, 0.798009, 1.060155, 1.499440, 2.378011",\
+ "0.561708, 0.828864, 1.091010, 1.530295, 2.408865",\
+ "0.623216, 0.890372, 1.152518, 1.591803, 2.470374",\
+ "0.819106, 1.086263, 1.348409, 1.787694, 2.666264",\
+ "1.457314, 1.724471, 1.986617, 2.425902, 3.304472",\
+ "0.623795, 0.891154, 1.151881, 1.591604, 2.471052",\
+ "0.654650, 0.922009, 1.182735, 1.622459, 2.501907",\
+ "0.716158, 0.983517, 1.244244, 1.683967, 2.563416",\
+ "0.912048, 1.179408, 1.440134, 1.879858, 2.759306",\
+ "1.550256, 1.817616, 2.078342, 2.518066, 3.397514",\
+ "0.689639, 0.959719, 1.218900, 1.658455, 2.537564",\
+ "0.720493, 0.990574, 1.249755, 1.689310, 2.568418",\
+ "0.782001, 1.052082, 1.311263, 1.750818, 2.629927",\
+ "0.977892, 1.247972, 1.507154, 1.946708, 2.825817",\
+ "1.616100, 1.886180, 2.145362, 2.584916, 3.464025",\
+ "1.036160, 1.340554, 1.589563, 2.027608, 2.903699",\
+ "1.067015, 1.371409, 1.620418, 2.058463, 2.934554",\
+ "1.128523, 1.432917, 1.681926, 2.119972, 2.996062",\
+ "1.324414, 1.628808, 1.877817, 2.315862, 3.191953",\
+ "1.962622, 2.267016, 2.516025, 2.954070, 3.830161");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_2746*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.468238, 0.731811, 1.008084, 1.476814, 2.414274",\
+ "0.506163, 0.769737, 1.046010, 1.514740, 2.452199",\
+ "0.587819, 0.851392, 1.127665, 1.596395, 2.533855",\
+ "0.858268, 1.121841, 1.398114, 1.866844, 2.804303",\
+ "1.744903, 2.008476, 2.284747, 2.753474, 3.690928",\
+ "0.556432, 0.819352, 1.095652, 1.563529, 2.500207",\
+ "0.594358, 0.857278, 1.133578, 1.601455, 2.538133",\
+ "0.676013, 0.938933, 1.215233, 1.683110, 2.619789",\
+ "0.946462, 1.209382, 1.485682, 1.953559, 2.890237",\
+ "1.833097, 2.096017, 2.372314, 2.840189, 3.776862",\
+ "0.644748, 0.908332, 1.183617, 1.651152, 2.587162",\
+ "0.682674, 0.946258, 1.221542, 1.689077, 2.625088",\
+ "0.764329, 1.027914, 1.303198, 1.770733, 2.706744",\
+ "1.034778, 1.298362, 1.573647, 2.041182, 2.977192",\
+ "1.921414, 2.184997, 2.460279, 2.927812, 3.863817",\
+ "0.707244, 0.973967, 1.247756, 1.715065, 2.650671",\
+ "0.745170, 1.011893, 1.285682, 1.752991, 2.688597",\
+ "0.826825, 1.093549, 1.367337, 1.834647, 2.770253",\
+ "1.097274, 1.363997, 1.637786, 2.105095, 3.040701",\
+ "1.983909, 2.250632, 2.524419, 2.991725, 3.927326",\
+ "1.036370, 1.338298, 1.599624, 2.064415, 2.996128",\
+ "1.074296, 1.376224, 1.637549, 2.102341, 3.034053",\
+ "1.155951, 1.457879, 1.719205, 2.183996, 3.115709",\
+ "1.426400, 1.728328, 1.989653, 2.454445, 3.386157",\
+ "2.313035, 2.614962, 2.876286, 3.341075, 4.272782");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268819",\
+ "0.790040, 0.790040, 0.790040, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268819",\
+ "0.790040, 0.790040, 0.790040, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268819",\
+ "0.790040, 0.790040, 0.790040, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268819",\
+ "0.790040, 0.790040, 0.790040, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268819",\
+ "0.790040, 0.790040, 0.790040, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.425102, 0.607534, 0.803925, 1.112984, 1.707807",\
+ "0.455957, 0.638388, 0.834779, 1.143839, 1.738662",\
+ "0.517465, 0.699897, 0.896288, 1.205346, 1.800168",\
+ "0.713355, 0.895787, 1.092178, 1.401236, 1.996057",\
+ "1.351563, 1.533995, 1.730386, 2.039446, 2.634272",\
+ "0.512517, 0.694919, 0.891418, 1.200289, 1.795161",\
+ "0.543371, 0.725774, 0.922273, 1.231144, 1.826015",\
+ "0.604879, 0.787282, 0.983781, 1.292651, 1.887522",\
+ "0.800770, 0.983173, 1.179671, 1.488541, 2.083410",\
+ "1.438978, 1.621381, 1.817879, 2.126751, 2.721625",\
+ "0.593393, 0.775256, 0.971445, 1.280318, 1.875192",\
+ "0.624248, 0.806111, 1.002299, 1.311172, 1.906047",\
+ "0.685756, 0.867619, 1.063808, 1.372680, 1.967553",\
+ "0.881646, 1.063509, 1.259698, 1.568570, 2.163442",\
+ "1.519854, 1.701717, 1.897906, 2.206779, 2.801657",\
+ "0.651039, 0.832804, 1.028988, 1.337563, 1.931840",\
+ "0.681894, 0.863659, 1.059843, 1.368417, 1.962695",\
+ "0.743402, 0.925167, 1.121351, 1.429925, 2.024201",\
+ "0.939293, 1.121058, 1.317242, 1.625815, 2.220089",\
+ "1.577501, 1.759266, 1.955450, 2.264025, 2.858304",\
+ "0.953247, 1.138029, 1.332622, 1.640577, 2.233686",\
+ "0.984102, 1.168883, 1.363477, 1.671432, 2.264541",\
+ "1.045610, 1.230392, 1.424985, 1.732940, 2.326047",\
+ "1.241500, 1.426282, 1.620876, 1.928830, 2.521936",\
+ "1.879708, 2.064490, 2.259084, 2.567039, 3.160151");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092504",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549208, 0.549211",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718751",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092504",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549208, 0.549211",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718751",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092504",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549208, 0.549211",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718751",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092504",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549208, 0.549211",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718751",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092504",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549208, 0.549211",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718751");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_2673*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.464262, 0.723892, 0.995764, 1.452644, 2.366404",\
+ "0.502188, 0.761817, 1.033690, 1.490570, 2.404330",\
+ "0.583843, 0.843473, 1.115345, 1.572225, 2.485985",\
+ "0.854292, 1.113922, 1.385794, 1.842674, 2.756433",\
+ "1.740928, 2.000556, 2.272425, 2.729303, 3.643060",\
+ "0.552367, 0.811425, 1.083295, 1.539359, 2.452338",\
+ "0.590293, 0.849351, 1.121220, 1.577285, 2.490263",\
+ "0.671948, 0.931006, 1.202876, 1.658941, 2.571919",\
+ "0.942397, 1.201455, 1.473325, 1.929389, 2.842367",\
+ "1.829032, 2.088089, 2.359956, 2.816019, 3.728994",\
+ "0.640397, 0.900391, 1.171259, 1.626982, 2.539293",\
+ "0.678323, 0.938317, 1.209185, 1.664908, 2.577219",\
+ "0.759978, 1.019972, 1.290840, 1.746563, 2.658874",\
+ "1.030427, 1.290421, 1.561289, 2.017012, 2.929322",\
+ "1.917063, 2.177055, 2.447920, 2.903641, 3.815949",\
+ "0.702618, 0.966004, 1.235397, 1.690896, 2.602802",\
+ "0.740544, 1.003930, 1.273322, 1.728822, 2.640728",\
+ "0.822200, 1.085586, 1.354978, 1.810477, 2.722383",\
+ "1.092649, 1.356035, 1.625427, 2.080925, 2.992831",\
+ "1.979284, 2.242668, 2.512058, 2.967555, 3.879458",\
+ "1.030006, 1.330079, 1.587144, 2.040197, 2.948258",\
+ "1.067932, 1.368005, 1.625070, 2.078122, 2.986184",\
+ "1.149587, 1.449661, 1.706725, 2.159778, 3.067839",\
+ "1.420036, 1.720109, 1.977174, 2.430226, 3.338287",\
+ "2.306671, 2.606743, 2.863805, 3.316856, 4.224914");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268819, 0.268818",\
+ "0.790040, 0.790040, 0.790039, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268819, 0.268818",\
+ "0.790040, 0.790040, 0.790039, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268819, 0.268818",\
+ "0.790040, 0.790040, 0.790039, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268819, 0.268818",\
+ "0.790040, 0.790040, 0.790039, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268819, 0.268818",\
+ "0.790040, 0.790040, 0.790039, 0.790039, 0.790038",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468304");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.423440, 0.605981, 0.802235, 1.111459, 1.706773",\
+ "0.454295, 0.636836, 0.833090, 1.142314, 1.737628",\
+ "0.515803, 0.698344, 0.894598, 1.203821, 1.799134",\
+ "0.711694, 0.894235, 1.090489, 1.399711, 1.995022",\
+ "1.349902, 1.532443, 1.728697, 2.037921, 2.633238",\
+ "0.510860, 0.693367, 0.889728, 1.198764, 1.794126",\
+ "0.541715, 0.724221, 0.920583, 1.229619, 1.824981",\
+ "0.603223, 0.785730, 0.982091, 1.291126, 1.886487",\
+ "0.799114, 0.981620, 1.177981, 1.487016, 2.082375",\
+ "1.437322, 1.619828, 1.816189, 2.125226, 2.720591",\
+ "0.591728, 0.773704, 0.969755, 1.278793, 1.874158",\
+ "0.622583, 0.804558, 1.000610, 1.309647, 1.905013",\
+ "0.684091, 0.866066, 1.062118, 1.371155, 1.966519",\
+ "0.879981, 1.061957, 1.258008, 1.567045, 2.162407",\
+ "1.518189, 1.700165, 1.896216, 2.205255, 2.800623",\
+ "0.649367, 0.831252, 1.027299, 1.336038, 1.930805",\
+ "0.680222, 0.862107, 1.058154, 1.366893, 1.961660",\
+ "0.741730, 0.923615, 1.119662, 1.428400, 2.023166",\
+ "0.937620, 1.119505, 1.315552, 1.624290, 2.219054",\
+ "1.575828, 1.757713, 1.953760, 2.262500, 2.857270",\
+ "0.951462, 1.136478, 1.330933, 1.639053, 2.232652",\
+ "0.982317, 1.167333, 1.361788, 1.669907, 2.263507",\
+ "1.043825, 1.228841, 1.423296, 1.731415, 2.325013",\
+ "1.239715, 1.424732, 1.619186, 1.927305, 2.520901",\
+ "1.877923, 2.062940, 2.257394, 2.565515, 3.159117");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092505",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549209, 0.549212",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718753",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092505",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549209, 0.549212",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718753",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092505",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549209, 0.549212",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718753",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092505",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549209, 0.549212",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718753",\
+ "0.050922, 0.050922, 0.050922, 0.050923, 0.050926",\
+ "0.092496, 0.092496, 0.092497, 0.092499, 0.092505",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193182",\
+ "0.549207, 0.549207, 0.549207, 0.549209, 0.549212",\
+ "1.718736, 1.718736, 1.718736, 1.718741, 1.718753");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_2611*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.556546, 0.734973, 0.915233, 1.201439, 1.752556",\
+ "0.594472, 0.772898, 0.953159, 1.239365, 1.790482",\
+ "0.676127, 0.854554, 1.034814, 1.321021, 1.872138",\
+ "0.946576, 1.125003, 1.305263, 1.591470, 2.142586",\
+ "1.833212, 2.011638, 2.191898, 2.478105, 3.029221",\
+ "0.641484, 0.820245, 1.001148, 1.287360, 1.838935",\
+ "0.679410, 0.858171, 1.039074, 1.325286, 1.876861",\
+ "0.761066, 0.939826, 1.120729, 1.406941, 1.958516",\
+ "1.031515, 1.210275, 1.391178, 1.677390, 2.228965",\
+ "1.918150, 2.096910, 2.277814, 2.564025, 3.115599",\
+ "0.717390, 0.895688, 1.075957, 1.361957, 1.913107",\
+ "0.755316, 0.933614, 1.113883, 1.399882, 1.951033",\
+ "0.836972, 1.015270, 1.195538, 1.481538, 2.032688",\
+ "1.107421, 1.285719, 1.465987, 1.751987, 2.303137",\
+ "1.994056, 2.172354, 2.352623, 2.638622, 3.189771",\
+ "0.771742, 0.950200, 1.130608, 1.416496, 1.967424",\
+ "0.809668, 0.988126, 1.168534, 1.454422, 2.005350",\
+ "0.891324, 1.069781, 1.250189, 1.536077, 2.087006",\
+ "1.161773, 1.340230, 1.520638, 1.806526, 2.357455",\
+ "2.048408, 2.226866, 2.407274, 2.693161, 3.244089",\
+ "1.053164, 1.235427, 1.414559, 1.700223, 2.250702",\
+ "1.091090, 1.273353, 1.452485, 1.738148, 2.288628",\
+ "1.172746, 1.355009, 1.534140, 1.819804, 2.370283",\
+ "1.443195, 1.625458, 1.804589, 2.090253, 2.640732",\
+ "2.329830, 2.512093, 2.691224, 2.976888, 3.527366");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303",\
+ "0.060311, 0.060311, 0.060311, 0.060311, 0.060311",\
+ "0.120043, 0.120043, 0.120043, 0.120043, 0.120043",\
+ "0.268820, 0.268820, 0.268820, 0.268820, 0.268820",\
+ "0.790040, 0.790040, 0.790040, 0.790040, 0.790040",\
+ "2.468303, 2.468303, 2.468303, 2.468303, 2.468303");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.440713, 0.705883, 0.965084, 1.401266, 2.273631",\
+ "0.471568, 0.736737, 0.995939, 1.432121, 2.304486",\
+ "0.533076, 0.798245, 1.057447, 1.493629, 2.365994",\
+ "0.728966, 0.994136, 1.253338, 1.689520, 2.561884",\
+ "1.367174, 1.632344, 1.891546, 2.327728, 3.200092",\
+ "0.529378, 0.793957, 1.053725, 1.489495, 2.361036",\
+ "0.560233, 0.824812, 1.084580, 1.520350, 2.391891",\
+ "0.621741, 0.886320, 1.146088, 1.581858, 2.453399",\
+ "0.817632, 1.082211, 1.341978, 1.777749, 2.649290",\
+ "1.455840, 1.720419, 1.980186, 2.415956, 3.287497",\
+ "0.622185, 0.887080, 1.145450, 1.581659, 2.454078",\
+ "0.653040, 0.917935, 1.176305, 1.612514, 2.484932",\
+ "0.714548, 0.979443, 1.237813, 1.674022, 2.546441",\
+ "0.910438, 1.175334, 1.433704, 1.869913, 2.742332",\
+ "1.548646, 1.813542, 2.071912, 2.508121, 3.380539",\
+ "0.687908, 0.955615, 1.212470, 1.648510, 2.520589",\
+ "0.718762, 0.986469, 1.243325, 1.679364, 2.551444",\
+ "0.780270, 1.047977, 1.304833, 1.740873, 2.612952",\
+ "0.976161, 1.243868, 1.500724, 1.936763, 2.808843",\
+ "1.614369, 1.882076, 2.138932, 2.574971, 3.447050",\
+ "1.033697, 1.336113, 1.583101, 2.017641, 2.886722",\
+ "1.064552, 1.366968, 1.613955, 2.048496, 2.917577",\
+ "1.126060, 1.428476, 1.675463, 2.110004, 2.979085",\
+ "1.321950, 1.624366, 1.871354, 2.305894, 3.174975",\
+ "1.960158, 2.262574, 2.509562, 2.944102, 3.813183");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736",\
+ "0.050922, 0.050922, 0.050922, 0.050922, 0.050922",\
+ "0.092496, 0.092496, 0.092496, 0.092496, 0.092497",\
+ "0.193181, 0.193181, 0.193181, 0.193181, 0.193181",\
+ "0.549207, 0.549207, 0.549207, 0.549207, 0.549207",\
+ "1.718736, 1.718736, 1.718736, 1.718736, 1.718736");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_2557*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380001.875000, 380001.906250, 380002.000000, 380002.250000, 380003.156250",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.343750, 380003.250000",\
+ "380002.031250, 380002.062500, 380002.156250, 380002.406250, 380003.312500",\
+ "380002.093750, 380002.125000, 380002.218750, 380002.468750, 380003.375000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.781250, 380003.687500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.060312, 0.120043, 0.268889, 0.790048, 2.471058",\
+ "0.060312, 0.120043, 0.268889, 0.790048, 2.471058",\
+ "0.060312, 0.120043, 0.268889, 0.790048, 2.471058",\
+ "0.060311, 0.120043, 0.268889, 0.790048, 2.471058",\
+ "0.060311, 0.120043, 0.268889, 0.790048, 2.468313");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380003.906250, 380003.937500, 380004.000000, 380004.187500, 380004.843750",\
+ "380004.000000, 380004.031250, 380004.093750, 380004.281250, 380004.937500",\
+ "380004.093750, 380004.125000, 380004.187500, 380004.375000, 380005.031250",\
+ "380004.156250, 380004.187500, 380004.250000, 380004.437500, 380005.093750",\
+ "380004.500000, 380004.531250, 380004.593750, 380004.781250, 380005.437500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.050922, 0.092579, 0.193181, 0.549207, 1.721959",\
+ "0.050922, 0.092579, 0.193181, 0.549207, 1.721959",\
+ "0.050922, 0.092579, 0.193181, 0.549207, 1.721959",\
+ "0.050922, 0.092579, 0.193181, 0.549207, 1.721959",\
+ "0.050984, 0.092651, 0.193203, 0.549286, 1.721959");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.544292, 0.724406, 0.911984, 1.213964, 1.797060",\
+ "0.582447, 0.762561, 0.950139, 1.252119, 1.835215",\
+ "0.664874, 0.844988, 1.032566, 1.334546, 1.917642",\
+ "0.936033, 1.116146, 1.303725, 1.605704, 2.188801",\
+ "1.821919, 2.002032, 2.189611, 2.491591, 3.074687",\
+ "0.629231, 0.809242, 0.997054, 1.299470, 1.883439",\
+ "0.667386, 0.847397, 1.035209, 1.337625, 1.921593",\
+ "0.749812, 0.929824, 1.117636, 1.420052, 2.004020",\
+ "1.020971, 1.200982, 1.388795, 1.691211, 2.275179",\
+ "1.906857, 2.086868, 2.274681, 2.577097, 3.161065",\
+ "0.705143, 0.884685, 1.071863, 1.374067, 1.957611",\
+ "0.743298, 0.922840, 1.110018, 1.412222, 1.995766",\
+ "0.825724, 1.005267, 1.192445, 1.494649, 2.078193",\
+ "1.096883, 1.276425, 1.463604, 1.765808, 2.349351",\
+ "1.982769, 2.162312, 2.349490, 2.651694, 3.235237",\
+ "0.759512, 0.939436, 1.126752, 1.428673, 2.011928",\
+ "0.797667, 0.977591, 1.164907, 1.466828, 2.050083",\
+ "0.880094, 1.060018, 1.247334, 1.549255, 2.132510",\
+ "1.151252, 1.331177, 1.518492, 1.820413, 2.403668",\
+ "2.037138, 2.217063, 2.404379, 2.706299, 3.289555",\
+ "1.041107, 1.225001, 1.410928, 1.712399, 2.295206",\
+ "1.079262, 1.263156, 1.449083, 1.750554, 2.333361",\
+ "1.161688, 1.345583, 1.531509, 1.832981, 2.415788",\
+ "1.432847, 1.616742, 1.802668, 2.104139, 2.686946",\
+ "2.318733, 2.502628, 2.688554, 2.990026, 3.572832");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446672",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446672",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446672",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446672",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446672");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.363069, 0.630679, 0.892080, 1.331857, 2.211017",\
+ "0.391013, 0.658624, 0.920025, 1.359801, 2.238962",\
+ "0.450465, 0.718075, 0.979476, 1.419253, 2.298413",\
+ "0.646065, 0.913676, 1.175077, 1.614853, 2.494013",\
+ "1.283402, 1.551012, 1.812413, 2.252190, 3.131351",\
+ "0.451773, 0.718754, 0.980721, 1.420086, 2.298422",\
+ "0.479717, 0.746699, 1.008666, 1.448030, 2.326367",\
+ "0.539169, 0.806150, 1.068117, 1.507482, 2.385818",\
+ "0.734769, 1.001751, 1.263718, 1.703082, 2.581419",\
+ "1.372106, 1.639087, 1.901054, 2.340420, 3.218756",\
+ "0.544715, 0.812075, 1.072766, 1.512332, 2.391464",\
+ "0.572660, 0.840019, 1.100710, 1.540276, 2.419409",\
+ "0.632111, 0.899470, 1.160161, 1.599728, 2.478860",\
+ "0.827712, 1.095071, 1.355762, 1.795328, 2.674460",\
+ "1.465048, 1.732408, 1.993099, 2.432665, 3.311798",\
+ "0.610559, 0.880639, 1.139822, 1.579343, 2.458386",\
+ "0.638503, 0.908583, 1.167766, 1.607288, 2.486331",\
+ "0.697955, 0.968035, 1.227218, 1.666739, 2.545782",\
+ "0.893555, 1.163635, 1.422818, 1.862339, 2.741382",\
+ "1.530892, 1.800972, 2.060155, 2.499676, 3.378720",\
+ "0.957080, 1.261474, 1.510493, 1.948569, 2.824721",\
+ "0.985025, 1.289419, 1.538437, 1.976513, 2.852666",\
+ "1.044476, 1.348870, 1.597888, 2.035964, 2.912117",\
+ "1.240077, 1.544471, 1.793489, 2.231565, 3.107717",\
+ "1.877413, 2.181808, 2.430826, 2.868902, 3.745055");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_min_2500*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.452401, 0.715932, 0.992051, 1.460182, 2.395185",\
+ "0.490556, 0.754087, 1.030206, 1.498337, 2.433340",\
+ "0.572982, 0.836514, 1.112633, 1.580764, 2.515767",\
+ "0.844141, 1.107672, 1.383791, 1.851923, 2.786925",\
+ "1.730027, 1.993558, 2.269678, 2.737809, 3.672812",\
+ "0.540595, 0.803472, 1.079618, 1.546898, 2.481119",\
+ "0.578750, 0.841627, 1.117773, 1.585052, 2.519274",\
+ "0.661177, 0.924054, 1.200200, 1.667479, 2.601700",\
+ "0.932335, 1.195213, 1.471358, 1.938638, 2.872859",\
+ "1.818222, 2.081099, 2.357244, 2.824524, 3.758746",\
+ "0.628911, 0.892452, 1.167583, 1.634538, 2.568074",\
+ "0.667066, 0.930607, 1.205738, 1.672693, 2.606229",\
+ "0.749493, 1.013034, 1.288164, 1.755120, 2.688655",\
+ "1.020651, 1.284192, 1.559323, 2.026278, 2.959814",\
+ "1.906538, 2.170078, 2.445210, 2.912164, 3.845701",\
+ "0.691407, 0.958086, 1.231722, 1.698627, 2.631583",\
+ "0.729562, 0.996240, 1.269877, 1.736781, 2.669738",\
+ "0.811989, 1.078667, 1.352304, 1.819208, 2.752164",\
+ "1.083147, 1.349826, 1.623463, 2.090367, 3.023323",\
+ "1.969034, 2.235712, 2.509349, 2.976254, 3.909210",\
+ "1.020533, 1.322400, 1.583586, 2.048070, 2.977039",\
+ "1.058688, 1.360555, 1.621741, 2.086226, 3.015194",\
+ "1.141114, 1.442982, 1.704168, 2.168652, 3.097620",\
+ "1.412273, 1.714141, 1.975327, 2.439811, 3.368779",\
+ "2.298159, 2.600027, 2.861213, 3.325697, 4.254666");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446670, 2.446672, 2.446677, 2.446682, 2.446693",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446670, 2.446672, 2.446677, 2.446682, 2.446693",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446670, 2.446672, 2.446677, 2.446682, 2.446693",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446670, 2.446672, 2.446677, 2.446682, 2.446693",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446670, 2.446673, 2.446677, 2.446682, 2.446693");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.346024, 0.528081, 0.724314, 1.033489, 1.627960",\
+ "0.373968, 0.556026, 0.752258, 1.061434, 1.655906",\
+ "0.433420, 0.615477, 0.811710, 1.120886, 1.715360",\
+ "0.629020, 0.811078, 1.007310, 1.316483, 1.910951",\
+ "1.266357, 1.448414, 1.644648, 1.953829, 2.548313",\
+ "0.433439, 0.615400, 0.811595, 1.120794, 1.715314",\
+ "0.461383, 0.643345, 0.839539, 1.148739, 1.743259",\
+ "0.520834, 0.702796, 0.898991, 1.208191, 1.802713",\
+ "0.716435, 0.898396, 1.094591, 1.403789, 1.998304",\
+ "1.353772, 1.535733, 1.731929, 2.041134, 2.635666",\
+ "0.514315, 0.695737, 0.891622, 1.200823, 1.795345",\
+ "0.542259, 0.723681, 0.919566, 1.228768, 1.823291",\
+ "0.601711, 0.783132, 0.979018, 1.288220, 1.882745",\
+ "0.797311, 0.978733, 1.174618, 1.483817, 2.078336",\
+ "1.434648, 1.616070, 1.811956, 2.121162, 2.715698",\
+ "0.571961, 0.753573, 0.949357, 1.258293, 1.852441",\
+ "0.599906, 0.781518, 0.977302, 1.286238, 1.880386",\
+ "0.659357, 0.840969, 1.036753, 1.345690, 1.939840",\
+ "0.854958, 1.036570, 1.232353, 1.541288, 2.135431",\
+ "1.492294, 1.673906, 1.869692, 2.178633, 2.772793",\
+ "0.874169, 1.058951, 1.253021, 1.561500, 2.154759",\
+ "0.902114, 1.086895, 1.280965, 1.589445, 2.182705",\
+ "0.961565, 1.146346, 1.340417, 1.648897, 2.242158",\
+ "1.157166, 1.341947, 1.536017, 1.844495, 2.437749",\
+ "1.794502, 1.979284, 2.173355, 2.481840, 3.075111");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186770",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543845",\
+ "1.713838, 1.713838, 1.713836, 1.713827, 1.713805",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186770",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543845",\
+ "1.713838, 1.713838, 1.713836, 1.713827, 1.713805",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186770",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543845",\
+ "1.713838, 1.713838, 1.713836, 1.713827, 1.713805",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186770",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543845",\
+ "1.713838, 1.713838, 1.713836, 1.713827, 1.713805",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186770",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543845",\
+ "1.713838, 1.713838, 1.713836, 1.713827, 1.713805");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_min_2425*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.448423, 0.707982, 0.979616, 1.435777, 2.346942",\
+ "0.486578, 0.746137, 1.017771, 1.473932, 2.385097",\
+ "0.569004, 0.828563, 1.100198, 1.556358, 2.467524",\
+ "0.840163, 1.099722, 1.371357, 1.827517, 2.738683",\
+ "1.726049, 1.985608, 2.257243, 2.713404, 3.624570",\
+ "0.536527, 0.795515, 1.067145, 1.522492, 2.432876",\
+ "0.574682, 0.833670, 1.105300, 1.560647, 2.471031",\
+ "0.657109, 0.916096, 1.187727, 1.643074, 2.553458",\
+ "0.928268, 1.187255, 1.458886, 1.914232, 2.824616",\
+ "1.814154, 2.073141, 2.344772, 2.800119, 3.710504",\
+ "0.624558, 0.884479, 1.155110, 1.610131, 2.519831",\
+ "0.662712, 0.922634, 1.193264, 1.648286, 2.557986",\
+ "0.745139, 1.005061, 1.275691, 1.730713, 2.640413",\
+ "1.016298, 1.276219, 1.546850, 2.001871, 2.911571",\
+ "1.902184, 2.162105, 2.432736, 2.887758, 3.797459",\
+ "0.686779, 0.950090, 1.219247, 1.674205, 2.583340",\
+ "0.724934, 0.988245, 1.257402, 1.712360, 2.621495",\
+ "0.807361, 1.070672, 1.339829, 1.794787, 2.703922",\
+ "1.078519, 1.341830, 1.610988, 2.065946, 2.975080",\
+ "1.964405, 2.227717, 2.496874, 2.951832, 3.860968",\
+ "1.014166, 1.314139, 1.570990, 2.023592, 2.928796",\
+ "1.052321, 1.352293, 1.609145, 2.061747, 2.966951",\
+ "1.134748, 1.434720, 1.691572, 2.144174, 3.049378",\
+ "1.405907, 1.705879, 1.962730, 2.415332, 3.320536",\
+ "2.291793, 2.591765, 2.848617, 3.301219, 4.206424");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446674, 2.446680, 2.446683, 2.446690",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446674, 2.446680, 2.446683, 2.446690",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446674, 2.446680, 2.446683, 2.446690",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446674, 2.446680, 2.446683, 2.446690",\
+ "0.050112, 0.050112, 0.050112, 0.050111, 0.050111",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112174",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446675, 2.446680, 2.446683, 2.446690");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.344360, 0.526527, 0.722625, 1.031957, 1.626903",\
+ "0.372305, 0.554472, 0.750569, 1.059901, 1.654848",\
+ "0.431756, 0.613923, 0.810021, 1.119354, 1.714302",\
+ "0.627357, 0.809524, 1.005621, 1.314951, 1.909892",\
+ "1.264693, 1.446861, 1.642959, 1.952297, 2.547257",\
+ "0.431780, 0.613846, 0.809906, 1.119262, 1.714256",\
+ "0.459725, 0.641791, 0.837850, 1.147207, 1.742202",\
+ "0.519176, 0.701242, 0.897302, 1.206659, 1.801656",\
+ "0.714777, 0.896843, 1.092902, 1.402256, 1.997246",\
+ "1.352113, 1.534179, 1.730240, 2.039602, 2.634611",\
+ "0.512648, 0.694183, 0.889933, 1.199290, 1.794288",\
+ "0.540592, 0.722128, 0.917877, 1.227235, 1.822234",\
+ "0.600044, 0.781579, 0.977328, 1.286687, 1.881687",\
+ "0.795644, 0.977180, 1.172929, 1.482284, 2.077278",\
+ "1.432981, 1.614516, 1.810267, 2.119630, 2.714642",\
+ "0.570287, 0.752020, 0.947668, 1.256761, 1.851384",\
+ "0.598231, 0.779964, 0.975612, 1.284706, 1.879330",\
+ "0.657682, 0.839416, 1.035064, 1.344158, 1.938784",\
+ "0.853283, 1.035016, 1.230664, 1.539755, 2.134374",\
+ "1.490620, 1.672353, 1.868002, 2.177101, 2.771739",\
+ "0.872382, 1.057398, 1.251331, 1.559969, 2.153704",\
+ "0.900326, 1.085343, 1.279276, 1.587914, 2.181649",\
+ "0.959778, 1.144794, 1.338727, 1.647366, 2.241103",\
+ "1.155378, 1.340395, 1.534328, 1.842963, 2.436693",\
+ "1.792715, 1.977731, 2.171666, 2.480309, 3.074058");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186769",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543846",\
+ "1.713838, 1.713838, 1.713836, 1.713826, 1.713802",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186769",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543846",\
+ "1.713838, 1.713838, 1.713836, 1.713826, 1.713802",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186769",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543846",\
+ "1.713838, 1.713838, 1.713836, 1.713826, 1.713802",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186769",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543846",\
+ "1.713838, 1.713838, 1.713836, 1.713826, 1.713802",\
+ "0.040709, 0.040709, 0.040708, 0.040708, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186773, 0.186772, 0.186769",\
+ "0.543828, 0.543828, 0.543829, 0.543834, 0.543846",\
+ "1.713838, 1.713838, 1.713836, 1.713826, 1.713802");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_min_2354*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.540706, 0.719045, 0.899392, 1.185579, 1.736332",\
+ "0.578861, 0.757200, 0.937547, 1.223734, 1.774487",\
+ "0.661288, 0.839627, 1.019974, 1.306160, 1.856914",\
+ "0.932446, 1.110786, 1.291132, 1.577319, 2.128072",\
+ "1.818332, 1.996672, 2.177019, 2.463205, 3.013958",\
+ "0.625644, 0.803881, 0.984462, 1.271085, 1.822710",\
+ "0.663799, 0.842036, 1.022617, 1.309240, 1.860865",\
+ "0.746226, 0.924463, 1.105044, 1.391667, 1.943292",\
+ "1.017385, 1.195621, 1.376203, 1.662825, 2.214450",\
+ "1.903271, 2.081508, 2.262089, 2.548712, 3.100337",\
+ "0.701550, 0.879325, 1.059271, 1.345682, 1.896883",\
+ "0.739705, 0.917479, 1.097426, 1.383837, 1.935037",\
+ "0.822132, 0.999906, 1.179853, 1.466263, 2.017464",\
+ "1.093291, 1.271065, 1.451011, 1.737422, 2.288623",\
+ "1.979177, 2.156951, 2.336898, 2.623308, 3.174509",\
+ "0.755902, 0.934070, 1.114136, 1.400275, 1.951200",\
+ "0.794057, 0.972225, 1.152291, 1.438430, 1.989355",\
+ "0.876484, 1.054652, 1.234718, 1.520857, 2.071782",\
+ "1.147643, 1.325810, 1.505877, 1.792016, 2.342940",\
+ "2.033529, 2.211697, 2.391763, 2.677902, 3.228827",\
+ "1.037324, 1.219587, 1.398289, 1.684002, 2.234478",\
+ "1.075479, 1.257742, 1.436444, 1.722157, 2.272632",\
+ "1.157906, 1.340169, 1.518871, 1.804583, 2.355059",\
+ "1.429065, 1.611328, 1.790030, 2.075742, 2.626218",\
+ "2.314951, 2.497214, 2.675916, 2.961628, 3.512104");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446673",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446673",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446673",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446673",\
+ "0.050112, 0.050112, 0.050112, 0.050112, 0.050112",\
+ "0.112175, 0.112175, 0.112175, 0.112175, 0.112175",\
+ "0.264098, 0.264098, 0.264098, 0.264098, 0.264098",\
+ "0.776079, 0.776079, 0.776079, 0.776079, 0.776079",\
+ "2.446671, 2.446671, 2.446671, 2.446671, 2.446673");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.361633, 0.626632, 0.885661, 1.321925, 2.194071",\
+ "0.389577, 0.654577, 0.913606, 1.349870, 2.222015",\
+ "0.449029, 0.714028, 0.973057, 1.409321, 2.281467",\
+ "0.644629, 0.909628, 1.168658, 1.604922, 2.477067",\
+ "1.281966, 1.546965, 1.805995, 2.242259, 3.114405",\
+ "0.450298, 0.714707, 0.974302, 1.410154, 2.281476",\
+ "0.478243, 0.742651, 1.002247, 1.438099, 2.309421",\
+ "0.537694, 0.802103, 1.061698, 1.497550, 2.368872",\
+ "0.733295, 0.997703, 1.257299, 1.693150, 2.564472",\
+ "1.370631, 1.635040, 1.894635, 2.330488, 3.201810",\
+ "0.543105, 0.808000, 1.066338, 1.502398, 2.374518",\
+ "0.571050, 0.835945, 1.094282, 1.530342, 2.402462",\
+ "0.630501, 0.895396, 1.153733, 1.589793, 2.461914",\
+ "0.826102, 1.090997, 1.349334, 1.785394, 2.657514",\
+ "1.463438, 1.728334, 1.986671, 2.422731, 3.294852",\
+ "0.608828, 0.876535, 1.133393, 1.569404, 2.441428",\
+ "0.636772, 0.904479, 1.161337, 1.597349, 2.469372",\
+ "0.696223, 0.963930, 1.220788, 1.656800, 2.528824",\
+ "0.891824, 1.159531, 1.416389, 1.852400, 2.724424",\
+ "1.529161, 1.796868, 2.053726, 2.489738, 3.361762",\
+ "0.954617, 1.257033, 1.504031, 1.938605, 2.807755",\
+ "0.982561, 1.284978, 1.531975, 1.966550, 2.835699",\
+ "1.042013, 1.344429, 1.591426, 2.026001, 2.895151",\
+ "1.237613, 1.540030, 1.787027, 2.221601, 3.090751",\
+ "1.874950, 2.177366, 2.424364, 2.858939, 3.728089");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836",\
+ "0.040709, 0.040709, 0.040709, 0.040709, 0.040708",\
+ "0.082941, 0.082941, 0.082941, 0.082941, 0.082941",\
+ "0.186774, 0.186774, 0.186774, 0.186774, 0.186773",\
+ "0.543828, 0.543828, 0.543828, 0.543829, 0.543829",\
+ "1.713838, 1.713838, 1.713838, 1.713837, 1.713836");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_min_2300*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.138985, 0.175019, 0.256111, 0.526543, 1.410212",\
+ "0.227168, 0.263197, 0.344286, 0.614601, 1.498111",\
+ "0.315465, 0.351510, 0.432605, 0.702794, 1.585954",\
+ "0.378070, 0.414099, 0.495228, 0.765687, 1.648712",\
+ "0.707467, 0.743520, 0.824710, 1.095700, 1.978611");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.049671, 0.111941, 0.264026, 0.776079, 2.446670",\
+ "0.049671, 0.111941, 0.264026, 0.776079, 2.446670",\
+ "0.049671, 0.111941, 0.264026, 0.776079, 2.446670",\
+ "0.049683, 0.111941, 0.264026, 0.776079, 2.446670",\
+ "0.050112, 0.112175, 0.264026, 0.776079, 2.446670");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.157324, 0.185053, 0.244293, 0.439369, 1.077476",\
+ "0.244729, 0.272457, 0.331698, 0.526774, 1.164879",\
+ "0.325583, 0.353311, 0.412545, 0.607616, 1.245783",\
+ "0.383167, 0.410894, 0.470117, 0.665176, 1.303456",\
+ "0.684927, 0.712665, 0.771862, 0.966921, 1.606322");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.040467, 0.082696, 0.186546, 0.543770, 1.713948",\
+ "0.040467, 0.082696, 0.186546, 0.543770, 1.713948",\
+ "0.040467, 0.082696, 0.186546, 0.543770, 1.713916",\
+ "0.040467, 0.082696, 0.186546, 0.543770, 1.713853",\
+ "0.040452, 0.082696, 0.186546, 0.543770, 1.713838");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[7]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380001.750000, 380001.781250, 380001.875000, 380002.125000, 380003.031250",\
+ "380001.843750, 380001.875000, 380001.968750, 380002.218750, 380003.125000",\
+ "380001.937500, 380001.968750, 380002.062500, 380002.312500, 380003.218750",\
+ "380002.093750, 380002.125000, 380002.218750, 380002.468750, 380003.375000",\
+ "380002.343750, 380002.375000, 380002.468750, 380002.718750, 380003.625000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.060263, 0.120010, 0.268885, 0.784134, 2.468360",\
+ "0.060263, 0.120010, 0.268885, 0.784134, 2.468360",\
+ "0.060263, 0.120010, 0.268885, 0.784134, 2.468360",\
+ "0.060263, 0.120010, 0.268885, 0.784134, 2.468360",\
+ "0.060263, 0.120010, 0.268885, 0.784134, 2.468360");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380003.812500, 380003.843750, 380003.906250, 380004.093750, 380004.750000",\
+ "380003.906250, 380003.937500, 380004.000000, 380004.187500, 380004.843750",\
+ "380004.031250, 380004.062500, 380004.125000, 380004.312500, 380004.968750",\
+ "380004.218750, 380004.250000, 380004.312500, 380004.500000, 380005.156250",\
+ "380004.531250, 380004.562500, 380004.625000, 380004.812500, 380005.468750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.050461, 0.092299, 0.192599, 0.548730, 1.719198",\
+ "0.050461, 0.092299, 0.192599, 0.548730, 1.719198",\
+ "0.050461, 0.092299, 0.192599, 0.548730, 1.719198",\
+ "0.050461, 0.092299, 0.192599, 0.548730, 1.719198",\
+ "0.050461, 0.092299, 0.192599, 0.548730, 1.719198");
+ }
+
+ } /* end of arc padmux2ast_i[4]_obs_ctrl_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380001.718750, 380001.781250, 380001.843750, 380002.125000, 380003.000000",\
+ "380001.812500, 380001.875000, 380001.937500, 380002.218750, 380003.093750",\
+ "380001.875000, 380001.937500, 380002.000000, 380002.281250, 380003.156250",\
+ "380002.031250, 380002.093750, 380002.156250, 380002.437500, 380003.312500",\
+ "380002.250000, 380002.312500, 380002.375000, 380002.656250, 380003.531250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.057179, 0.117947, 0.268265, 0.782312, 2.467599",\
+ "0.057179, 0.117947, 0.268265, 0.782312, 2.467599",\
+ "0.057179, 0.117947, 0.268265, 0.782312, 2.467599",\
+ "0.057179, 0.117947, 0.268265, 0.782312, 2.467599",\
+ "0.057179, 0.117947, 0.268265, 0.782312, 2.467599");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "380003.781250, 380003.812500, 380003.875000, 380004.062500, 380004.718750",\
+ "380003.875000, 380003.906250, 380003.968750, 380004.156250, 380004.812500",\
+ "380003.968750, 380004.000000, 380004.062500, 380004.250000, 380004.906250",\
+ "380004.156250, 380004.187500, 380004.250000, 380004.437500, 380005.093750",\
+ "380004.406250, 380004.437500, 380004.500000, 380004.687500, 380005.343750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.044680, 0.086652, 0.188447, 0.546028, 1.713947",\
+ "0.044680, 0.086652, 0.188447, 0.546028, 1.713947",\
+ "0.044680, 0.086652, 0.188447, 0.546028, 1.713947",\
+ "0.044680, 0.086652, 0.188447, 0.546028, 1.713947",\
+ "0.044680, 0.086652, 0.188447, 0.546028, 1.713947");
+ }
+
+ } /* end of arc padmux2ast_i[4]_obs_ctrl_o[7]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.138119, 0.177193, 0.260095, 0.531430, 1.418639",\
+ "0.215767, 0.254860, 0.337696, 0.608981, 1.495289",\
+ "0.308294, 0.348212, 0.431364, 0.702849, 1.589224",\
+ "0.484710, 0.527128, 0.611576, 0.883003, 1.767226",\
+ "0.797982, 0.847958, 0.937201, 1.208546, 2.091260");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.060518, 0.120076, 0.268511, 0.784628, 2.471116",\
+ "0.060518, 0.120081, 0.268991, 0.784628, 2.471116",\
+ "0.064343, 0.122204, 0.269307, 0.784628, 2.471116",\
+ "0.074832, 0.129870, 0.272085, 0.785309, 2.471116",\
+ "0.105095, 0.152930, 0.282207, 0.790964, 2.471949");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.152585, 0.183883, 0.246071, 0.443151, 1.081549",\
+ "0.241411, 0.272612, 0.334887, 0.531878, 1.170082",\
+ "0.351515, 0.383367, 0.445997, 0.642143, 1.279910",\
+ "0.559588, 0.595140, 0.660416, 0.857529, 1.494932",\
+ "0.931509, 0.975339, 1.048816, 1.248062, 1.886353");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.051005, 0.093001, 0.193536, 0.550167, 1.721145",\
+ "0.051005, 0.093079, 0.193536, 0.550167, 1.721145",\
+ "0.053874, 0.094487, 0.193931, 0.550167, 1.721145",\
+ "0.067061, 0.106340, 0.200874, 0.550167, 1.721145",\
+ "0.100525, 0.137944, 0.221526, 0.555674, 1.721145");
+ }
+
+ } /* end of arc padmux2ast_i[7]_obs_ctrl_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.132088, 0.170250, 0.252738, 0.523558, 1.410267",\
+ "0.209647, 0.247859, 0.330344, 0.601532, 1.487547",\
+ "0.301602, 0.340448, 0.423118, 0.694391, 1.578063",\
+ "0.475914, 0.516815, 0.600289, 0.871567, 1.757498",\
+ "0.784086, 0.831711, 0.918475, 1.188577, 2.072675");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.057008, 0.117873, 0.266652, 0.780708, 2.463387",\
+ "0.057108, 0.118176, 0.268442, 0.782366, 2.463387",\
+ "0.060610, 0.120100, 0.268442, 0.782366, 2.463387",\
+ "0.069995, 0.126826, 0.271258, 0.783468, 2.466000",\
+ "0.096521, 0.148240, 0.280183, 0.788214, 2.471217");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.124161, 0.153974, 0.214961, 0.411830, 1.047717",\
+ "0.215312, 0.245079, 0.306058, 0.501475, 1.140252",\
+ "0.327970, 0.358765, 0.420242, 0.616480, 1.254494",\
+ "0.533590, 0.569301, 0.634108, 0.830328, 1.467817",\
+ "0.890972, 0.936721, 1.011690, 1.210135, 1.847934");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001120, 0.003635, 0.009556, 0.029416, 0.094370");
+ values ( "0.045487, 0.087234, 0.188597, 0.544901, 1.712083",\
+ "0.045487, 0.087327, 0.189348, 0.546097, 1.714089",\
+ "0.050060, 0.090091, 0.189686, 0.546097, 1.714380",\
+ "0.065339, 0.103967, 0.197580, 0.546097, 1.714380",\
+ "0.095856, 0.132931, 0.220241, 0.552890, 1.714380");
+ }
+
+ } /* end of arc padmux2ast_i[7]_obs_ctrl_o[7]_una_min*/
+
+} /* end of pin obs_ctrl_o[7] */
+
+pin("obs_ctrl_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000997 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.556254, 0.736457, 0.923947, 1.225939, 1.809451",\
+ "0.586838, 0.767041, 0.954531, 1.256524, 1.840036",\
+ "0.658665, 0.838868, 1.026358, 1.328351, 1.911863",\
+ "0.915124, 1.095327, 1.282817, 1.584810, 2.168322",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.641192, 0.821740, 1.009955, 1.311951, 1.895829",\
+ "0.671777, 0.852324, 1.040540, 1.342536, 1.926414",\
+ "0.743604, 0.924151, 1.112367, 1.414363, 1.998241",\
+ "1.000063, 1.180610, 1.368826, 1.670822, 2.254700",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.717104, 0.897183, 1.084764, 1.386548, 1.970002",\
+ "0.747689, 0.927768, 1.115349, 1.417133, 2.000586",\
+ "0.819516, 0.999595, 1.187176, 1.488960, 2.072413",\
+ "1.075975, 1.256054, 1.443635, 1.745419, 2.328872",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244641",\
+ "0.771473, 0.951695, 1.139415, 1.441088, 2.024319",\
+ "0.802058, 0.982279, 1.170000, 1.471673, 2.054904",\
+ "0.873885, 1.054106, 1.241827, 1.543499, 2.126730",\
+ "1.130344, 1.310565, 1.498286, 1.799959, 2.383190",\
+ "2.046112, 2.226333, 2.414054, 2.715727, 3.298958",\
+ "1.053068, 1.236963, 1.423366, 1.724814, 2.307597",\
+ "1.083653, 1.267547, 1.453950, 1.755399, 2.338181",\
+ "1.155480, 1.339374, 1.525777, 1.827226, 2.410008",\
+ "1.411939, 1.595834, 1.782236, 2.083685, 2.666467",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217337, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217337, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217337, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217337, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217337, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.426883, 0.694669, 0.956249, 1.395946, 2.275341",\
+ "0.452678, 0.720463, 0.982044, 1.421741, 2.301136",\
+ "0.504089, 0.771875, 1.033455, 1.473152, 2.352547",\
+ "0.670899, 0.938685, 1.200265, 1.639962, 2.519357",\
+ "1.261153, 1.528939, 1.790519, 2.230216, 3.109611",\
+ "0.515587, 0.782744, 1.044890, 1.484175, 2.362746",\
+ "0.541382, 0.808538, 1.070684, 1.509970, 2.388541",\
+ "0.592793, 0.859950, 1.122096, 1.561381, 2.439952",\
+ "0.759603, 1.026760, 1.288906, 1.728191, 2.606762",\
+ "1.349858, 1.617014, 1.879160, 2.318445, 3.197016",\
+ "0.608530, 0.875889, 1.136616, 1.576339, 2.455788",\
+ "0.634324, 0.901683, 1.162410, 1.602134, 2.481582",\
+ "0.685735, 0.953095, 1.213821, 1.653545, 2.532994",\
+ "0.852545, 1.119905, 1.380631, 1.820355, 2.699804",\
+ "1.442800, 1.710159, 1.970885, 2.410609, 3.290058",\
+ "0.674373, 0.944453, 1.203635, 1.643190, 2.522299",\
+ "0.700168, 0.970248, 1.229430, 1.668984, 2.548094",\
+ "0.751579, 1.021659, 1.280841, 1.720395, 2.599505",\
+ "0.918389, 1.188469, 1.447651, 1.887205, 2.766315",\
+ "1.508643, 1.778723, 2.037905, 2.477460, 3.356569",\
+ "1.020895, 1.325289, 1.574298, 2.012344, 2.888435",\
+ "1.046689, 1.351083, 1.600093, 2.038138, 2.914229",\
+ "1.098100, 1.402495, 1.651504, 2.089549, 2.965641",\
+ "1.264910, 1.569304, 1.818314, 2.256359, 3.132450",\
+ "1.855165, 2.159559, 2.408568, 2.846614, 3.722705");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_2739*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.464359, 0.727932, 1.004205, 1.472935, 2.410394",\
+ "0.494943, 0.758517, 1.034790, 1.503519, 2.440979",\
+ "0.566770, 0.830344, 1.106616, 1.575346, 2.512805",\
+ "0.823229, 1.086803, 1.363075, 1.831805, 2.769264",\
+ "1.738998, 2.002571, 2.278845, 2.747575, 3.685036",\
+ "0.552553, 0.815473, 1.091773, 1.559650, 2.496328",\
+ "0.583138, 0.846058, 1.122357, 1.590235, 2.526912",\
+ "0.654965, 0.917885, 1.194184, 1.662061, 2.598739",\
+ "0.911424, 1.174344, 1.450643, 1.918520, 2.855197",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.640869, 0.904454, 1.179738, 1.647273, 2.583283",\
+ "0.671454, 0.935038, 1.210322, 1.677857, 2.613867",\
+ "0.743281, 1.006865, 1.282149, 1.749684, 2.685694",\
+ "0.999740, 1.263324, 1.538608, 2.006143, 2.942153",\
+ "1.915508, 2.179093, 2.454377, 2.921913, 3.857924",\
+ "0.703365, 0.970089, 1.243877, 1.711186, 2.646792",\
+ "0.733950, 1.000673, 1.274462, 1.741771, 2.677376",\
+ "0.805777, 1.072500, 1.346289, 1.813598, 2.749203",\
+ "1.062236, 1.328959, 1.602748, 2.070056, 3.005661",\
+ "1.978004, 2.244728, 2.518517, 2.985826, 3.921433",\
+ "1.032491, 1.334419, 1.595745, 2.060536, 2.992248",\
+ "1.063076, 1.365004, 1.626329, 2.091120, 3.022832",\
+ "1.134902, 1.436831, 1.698156, 2.162947, 3.094659",\
+ "1.391361, 1.693290, 1.954615, 2.419406, 3.351118",\
+ "2.307130, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217335",\
+ "0.715483, 0.715483, 0.715482, 0.715478, 0.715471",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217335",\
+ "0.715483, 0.715483, 0.715481, 0.715478, 0.715471",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217335",\
+ "0.715483, 0.715483, 0.715481, 0.715478, 0.715471",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217335",\
+ "0.715483, 0.715483, 0.715481, 0.715478, 0.715471",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217335",\
+ "0.715483, 0.715483, 0.715481, 0.715478, 0.715471",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.409837, 0.592268, 0.788660, 1.097713, 1.692519",\
+ "0.435631, 0.618063, 0.814455, 1.123508, 1.718315",\
+ "0.487042, 0.669474, 0.865866, 1.174919, 1.769726",\
+ "0.653852, 0.836284, 1.032676, 1.341729, 1.936536",\
+ "1.244107, 1.426538, 1.622930, 1.931983, 2.526791",\
+ "0.497251, 0.679654, 0.876154, 1.185018, 1.779872",\
+ "0.523046, 0.705448, 0.901948, 1.210813, 1.805669",\
+ "0.574457, 0.756860, 0.953359, 1.262224, 1.857080",\
+ "0.741267, 0.923669, 1.120169, 1.429034, 2.023889",\
+ "1.331521, 1.513924, 1.710423, 2.019289, 2.614144",\
+ "0.578128, 0.759990, 0.956180, 1.265047, 1.859904",\
+ "0.603922, 0.785785, 0.981975, 1.290841, 1.885700",\
+ "0.655333, 0.837196, 1.033386, 1.342253, 1.937111",\
+ "0.822143, 1.004006, 1.200196, 1.509062, 2.103921",\
+ "1.412398, 1.594260, 1.790450, 2.099317, 2.694176",\
+ "0.635774, 0.817539, 1.013724, 1.322292, 1.916552",\
+ "0.661568, 0.843333, 1.039518, 1.348086, 1.942348",\
+ "0.712980, 0.894745, 1.090930, 1.399498, 1.993759",\
+ "0.879789, 1.061554, 1.257740, 1.566308, 2.160568",\
+ "1.470044, 1.651809, 1.847994, 2.156562, 2.750823",\
+ "0.937982, 1.122763, 1.317358, 1.625306, 2.218398",\
+ "0.963776, 1.148558, 1.343152, 1.651101, 2.244195",\
+ "1.015187, 1.199969, 1.394563, 1.702512, 2.295605",\
+ "1.181997, 1.366779, 1.561373, 1.869322, 2.462415",\
+ "1.772252, 1.957033, 2.151628, 2.459577, 3.052670");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523857",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523857",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523857",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523857",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523857");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_2665*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.460384, 0.720013, 0.991885, 1.448765, 2.362525",\
+ "0.490968, 0.750597, 1.022470, 1.479349, 2.393109",\
+ "0.562795, 0.822424, 1.094296, 1.551176, 2.464936",\
+ "0.819254, 1.078883, 1.350755, 1.807635, 2.721394",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.548488, 0.807546, 1.079415, 1.535480, 2.448458",\
+ "0.579073, 0.838131, 1.110000, 1.566065, 2.479043",\
+ "0.650900, 0.909958, 1.181827, 1.637892, 2.550869",\
+ "0.907359, 1.166417, 1.438286, 1.894350, 2.807328",\
+ "1.823127, 2.082186, 2.354055, 2.810120, 3.723099",\
+ "0.636518, 0.896512, 1.167380, 1.623103, 2.535413",\
+ "0.667103, 0.927097, 1.197964, 1.653687, 2.565998",\
+ "0.738930, 0.998924, 1.269791, 1.725514, 2.637825",\
+ "0.995389, 1.255383, 1.526250, 1.981973, 2.894283",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.698740, 0.962126, 1.231518, 1.687016, 2.598922",\
+ "0.729324, 0.992710, 1.262102, 1.717601, 2.629507",\
+ "0.801151, 1.064537, 1.333929, 1.789428, 2.701334",\
+ "1.057610, 1.320996, 1.590388, 2.045887, 2.957792",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.026127, 1.326200, 1.583265, 2.036317, 2.944378",\
+ "1.056712, 1.356785, 1.613849, 2.066902, 2.974963",\
+ "1.128539, 1.428612, 1.685676, 2.138729, 3.046790",\
+ "1.384998, 1.685071, 1.942135, 2.395187, 3.303248",\
+ "2.300766, 2.600840, 2.857905, 3.310958, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715480, 0.715474, 0.715462",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715480, 0.715474, 0.715462",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715480, 0.715474, 0.715462",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715480, 0.715474, 0.715462",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040151",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217336, 0.217336, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715480, 0.715474, 0.715462",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.408175, 0.590716, 0.786971, 1.096187, 1.691482",\
+ "0.433969, 0.616510, 0.812765, 1.121982, 1.717278",\
+ "0.485381, 0.667922, 0.864176, 1.173393, 1.768689",\
+ "0.652191, 0.834732, 1.030986, 1.340203, 1.935498",\
+ "1.242445, 1.424986, 1.621241, 1.930458, 2.525753",\
+ "0.495595, 0.678101, 0.874464, 1.183492, 1.778835",\
+ "0.521389, 0.703896, 0.900258, 1.209287, 1.804631",\
+ "0.572801, 0.755307, 0.951669, 1.260698, 1.856043",\
+ "0.739611, 0.922117, 1.118479, 1.427508, 2.022852",\
+ "1.329865, 1.512371, 1.708734, 2.017763, 2.613107",\
+ "0.576463, 0.758438, 0.954491, 1.263521, 1.858867",\
+ "0.602257, 0.784232, 0.980285, 1.289316, 1.884663",\
+ "0.653668, 0.835644, 1.031696, 1.340727, 1.936074",\
+ "0.820478, 1.002454, 1.198506, 1.507537, 2.102884",\
+ "1.410733, 1.592708, 1.788760, 2.097791, 2.693139",\
+ "0.634101, 0.815987, 1.012035, 1.320766, 1.915514",\
+ "0.659896, 0.841781, 1.037829, 1.346561, 1.941311",\
+ "0.711307, 0.893192, 1.089240, 1.397972, 1.992722",\
+ "0.878117, 1.060002, 1.256050, 1.564782, 2.159531",\
+ "1.468371, 1.650257, 1.846304, 2.155036, 2.749786",\
+ "0.936197, 1.121213, 1.315669, 1.623781, 2.217361",\
+ "0.961991, 1.147007, 1.341463, 1.649576, 2.243157",\
+ "1.013402, 1.198419, 1.392874, 1.700987, 2.294569",\
+ "1.180212, 1.365229, 1.559684, 1.867797, 2.461378",\
+ "1.770467, 1.955483, 2.149939, 2.458051, 3.051633");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523858",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523858",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523858",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523858",\
+ "0.040587, 0.040587, 0.040587, 0.040588, 0.040588",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145760",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523854, 1.523858");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_2605*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.552667, 0.731094, 0.911354, 1.197561, 1.748678",\
+ "0.583252, 0.761679, 0.941939, 1.228145, 1.779262",\
+ "0.655079, 0.833506, 1.013766, 1.299972, 1.851089",\
+ "0.911538, 1.089965, 1.270225, 1.556431, 2.107548",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.637606, 0.816366, 0.997269, 1.283481, 1.835056",\
+ "0.668190, 0.846951, 1.027854, 1.314066, 1.865641",\
+ "0.740017, 0.918778, 1.099681, 1.385893, 1.937468",\
+ "0.996476, 1.175237, 1.356140, 1.642352, 2.193927",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.713512, 0.891810, 1.072078, 1.358078, 1.909228",\
+ "0.744096, 0.922394, 1.102663, 1.388662, 1.939813",\
+ "0.815923, 0.994221, 1.174490, 1.460489, 2.011640",\
+ "1.072382, 1.250680, 1.430949, 1.716949, 2.268099",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.767864, 0.946321, 1.126729, 1.412617, 1.963546",\
+ "0.798448, 0.976906, 1.157314, 1.443202, 1.994130",\
+ "0.870275, 1.048733, 1.229141, 1.515029, 2.065957",\
+ "1.126734, 1.305192, 1.485600, 1.771488, 2.322416",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.049286, 1.231549, 1.410680, 1.696344, 2.246823",\
+ "1.079870, 1.262133, 1.441265, 1.726928, 2.277408",\
+ "1.151697, 1.333960, 1.513092, 1.798755, 2.349235",\
+ "1.408157, 1.590420, 1.769551, 2.055214, 2.605694",\
+ "2.323925, 2.506187, 2.685319, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040152, 0.040152, 0.040152, 0.040152, 0.040152",\
+ "0.086136, 0.086136, 0.086136, 0.086136, 0.086136",\
+ "0.217337, 0.217337, 0.217337, 0.217336, 0.217336",\
+ "0.715483, 0.715483, 0.715483, 0.715483, 0.715483",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.425447, 0.690617, 0.949819, 1.386001, 2.258367",\
+ "0.451242, 0.716412, 0.975613, 1.411796, 2.284161",\
+ "0.502653, 0.767823, 1.027025, 1.463207, 2.335572",\
+ "0.669463, 0.934633, 1.193834, 1.630017, 2.502382",\
+ "1.259717, 1.524887, 1.784089, 2.220271, 3.092637",\
+ "0.514113, 0.778692, 1.038460, 1.474230, 2.345772",\
+ "0.539907, 0.804487, 1.064254, 1.500025, 2.371566",\
+ "0.591319, 0.855898, 1.115665, 1.551436, 2.422977",\
+ "0.758128, 1.022708, 1.282475, 1.718246, 2.589787",\
+ "1.348383, 1.612962, 1.872730, 2.308500, 3.180042",\
+ "0.606920, 0.871815, 1.130185, 1.566394, 2.438814",\
+ "0.632714, 0.897609, 1.155979, 1.592189, 2.464608",\
+ "0.684125, 0.949021, 1.207391, 1.643600, 2.516019",\
+ "0.850935, 1.115831, 1.374201, 1.810410, 2.682829",\
+ "1.441190, 1.706085, 1.964455, 2.400664, 3.273083",\
+ "0.672642, 0.940349, 1.197205, 1.633245, 2.505325",\
+ "0.698436, 0.966144, 1.222999, 1.659039, 2.531119",\
+ "0.749848, 1.017555, 1.274411, 1.710450, 2.582530",\
+ "0.916658, 1.184365, 1.441221, 1.877260, 2.749340",\
+ "1.506912, 1.774619, 2.031475, 2.467515, 3.339595",\
+ "1.018432, 1.320848, 1.567835, 2.002376, 2.871458",\
+ "1.044226, 1.346642, 1.593630, 2.028170, 2.897252",\
+ "1.095637, 1.398053, 1.645041, 2.079582, 2.948663",\
+ "1.262447, 1.564863, 1.811851, 2.246391, 3.115473",\
+ "1.852702, 2.155118, 2.402105, 2.836646, 3.705728");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852",\
+ "0.040587, 0.040587, 0.040587, 0.040587, 0.040587",\
+ "0.069933, 0.069933, 0.069933, 0.069933, 0.069933",\
+ "0.145759, 0.145759, 0.145759, 0.145759, 0.145759",\
+ "0.443908, 0.443908, 0.443908, 0.443908, 0.443908",\
+ "1.523853, 1.523853, 1.523853, 1.523852, 1.523852");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_2550*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.319941, 0.350525, 0.422353, 0.678812, 1.594576",\
+ "0.407332, 0.437916, 0.509743, 0.766203, 1.681967",\
+ "0.488251, 0.518835, 0.590662, 0.847122, 1.762885",\
+ "0.545991, 0.576576, 0.648403, 0.904863, 1.820624",\
+ "0.849304, 0.879623, 0.951109, 1.207569, 2.123717");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.040153, 0.086136, 0.217338, 0.715446, 2.463218",\
+ "0.040153, 0.086136, 0.217409, 0.715446, 2.463218",\
+ "0.040153, 0.086136, 0.217647, 0.715446, 2.463317",\
+ "0.040153, 0.086137, 0.217647, 0.715446, 2.463317",\
+ "0.040344, 0.086164, 0.217985, 0.715471, 2.463779");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.305331, 0.331125, 0.382537, 0.549347, 1.139601",\
+ "0.392724, 0.418518, 0.469929, 0.636739, 1.226994",\
+ "0.473593, 0.499388, 0.550799, 0.717609, 1.307863",\
+ "0.531242, 0.557036, 0.608448, 0.775257, 1.365512",\
+ "0.833898, 0.859693, 0.911104, 1.077914, 1.668168");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.040587, 0.069933, 0.145759, 0.443908, 1.524252",\
+ "0.040587, 0.069933, 0.145759, 0.443908, 1.524252",\
+ "0.040587, 0.069933, 0.145759, 0.443908, 1.524252",\
+ "0.040587, 0.069933, 0.145759, 0.443908, 1.524252",\
+ "0.040602, 0.069933, 0.145764, 0.443908, 1.524252");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.513147, 0.693261, 0.880839, 1.182819, 1.765915",\
+ "0.542599, 0.722713, 0.910291, 1.212271, 1.795367",\
+ "0.613669, 0.793782, 0.981361, 1.283341, 1.866437",\
+ "0.869896, 1.050010, 1.237589, 1.539568, 2.122664",\
+ "1.786688, 1.966802, 2.154380, 2.456360, 3.039456",\
+ "0.598086, 0.778097, 0.965909, 1.268325, 1.852293",\
+ "0.627537, 0.807548, 0.995361, 1.297777, 1.881745",\
+ "0.698607, 0.878618, 1.066431, 1.368847, 1.952815",\
+ "0.954835, 1.134846, 1.322659, 1.625075, 2.209043",\
+ "1.871626, 2.051637, 2.239450, 2.541866, 3.125834",\
+ "0.673998, 0.853540, 1.040718, 1.342922, 1.926466",\
+ "0.703449, 0.882992, 1.070170, 1.372374, 1.955918",\
+ "0.774519, 0.954062, 1.141240, 1.443444, 2.026988",\
+ "1.030747, 1.210289, 1.397468, 1.699671, 2.283215",\
+ "1.947538, 2.127081, 2.314259, 2.616463, 3.200007",\
+ "0.728367, 0.908291, 1.095607, 1.397528, 1.980783",\
+ "0.757819, 0.937743, 1.125059, 1.426980, 2.010235",\
+ "0.828888, 1.008813, 1.196129, 1.498049, 2.081305",\
+ "1.085116, 1.265041, 1.452356, 1.754277, 2.337533",\
+ "2.001908, 2.181832, 2.369148, 2.671069, 3.254324",\
+ "1.009962, 1.193856, 1.379783, 1.681254, 2.264061",\
+ "1.039413, 1.223308, 1.409234, 1.710706, 2.293513",\
+ "1.110483, 1.294378, 1.480304, 1.781775, 2.364582",\
+ "1.366711, 1.550606, 1.736532, 2.038003, 2.620810",\
+ "2.283502, 2.467397, 2.653323, 2.954795, 3.537601");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705773, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705773, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705773, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705773, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705773, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.386312, 0.653923, 0.915324, 1.355101, 2.234262",\
+ "0.410188, 0.677799, 0.939200, 1.378977, 2.258138",\
+ "0.459747, 0.727358, 0.988759, 1.428536, 2.307697",\
+ "0.625673, 0.893283, 1.154685, 1.594462, 2.473623",\
+ "1.214481, 1.482092, 1.743493, 2.183270, 3.062431",\
+ "0.475016, 0.741998, 1.003965, 1.443330, 2.321667",\
+ "0.498892, 0.765874, 1.027841, 1.467206, 2.345543",\
+ "0.548452, 0.815433, 1.077400, 1.516765, 2.395102",\
+ "0.714377, 0.981359, 1.243325, 1.682691, 2.561028",\
+ "1.303185, 1.570167, 1.832134, 2.271499, 3.149836",\
+ "0.567959, 0.835318, 1.096009, 1.535576, 2.414709",\
+ "0.591835, 0.859194, 1.119885, 1.559452, 2.438585",\
+ "0.641394, 0.908753, 1.169445, 1.609011, 2.488144",\
+ "0.807319, 1.074679, 1.335370, 1.774936, 2.654070",\
+ "1.396127, 1.663487, 1.924178, 2.363745, 3.242877",\
+ "0.633802, 0.903882, 1.163065, 1.602587, 2.481630",\
+ "0.657678, 0.927758, 1.186941, 1.626463, 2.505507",\
+ "0.707237, 0.977318, 1.236501, 1.676022, 2.555066",\
+ "0.873163, 1.143243, 1.402426, 1.841948, 2.720992",\
+ "1.461971, 1.732051, 1.991234, 2.430756, 3.309799",\
+ "0.980324, 1.284718, 1.533736, 1.971813, 2.847966",\
+ "1.004200, 1.308594, 1.557612, 1.995689, 2.871842",\
+ "1.053759, 1.358153, 1.607171, 2.045248, 2.921401",\
+ "1.219684, 1.524079, 1.773097, 2.211174, 3.087327",\
+ "1.808493, 2.112887, 2.361905, 2.799982, 3.676135");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439342, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439342, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439342, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439342, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_min_2492*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.421256, 0.684787, 0.960907, 1.429039, 2.364044",\
+ "0.450707, 0.714239, 0.990358, 1.458491, 2.393496",\
+ "0.521777, 0.785309, 1.061428, 1.529561, 2.464566",\
+ "0.778005, 1.041536, 1.317656, 1.785789, 2.720794",\
+ "1.694797, 1.958328, 2.234447, 2.702580, 3.637585",\
+ "0.509450, 0.772327, 1.048474, 1.515754, 2.449978",\
+ "0.538902, 0.801779, 1.077925, 1.545206, 2.479430",\
+ "0.609972, 0.872849, 1.148995, 1.616276, 2.550500",\
+ "0.866199, 1.129077, 1.405223, 1.872504, 2.806728",\
+ "1.782991, 2.045868, 2.322014, 2.789295, 3.723519",\
+ "0.597766, 0.861307, 1.136438, 1.603395, 2.536933",\
+ "0.627218, 0.890759, 1.165890, 1.632846, 2.566385",\
+ "0.698288, 0.961829, 1.236960, 1.703916, 2.637455",\
+ "0.954515, 1.218056, 1.493188, 1.960144, 2.893683",\
+ "1.871307, 2.134848, 2.409979, 2.876935, 3.810474",\
+ "0.660262, 0.926941, 1.200578, 1.667483, 2.600442",\
+ "0.689714, 0.956392, 1.230030, 1.696935, 2.629894",\
+ "0.760784, 1.027462, 1.301100, 1.768005, 2.700964",\
+ "1.017011, 1.283690, 1.557327, 2.024233, 2.957192",\
+ "1.933803, 2.200481, 2.474119, 2.941024, 3.873983",\
+ "0.989388, 1.291255, 1.552442, 2.016927, 2.945898",\
+ "1.018839, 1.320707, 1.581894, 2.046379, 2.975350",\
+ "1.089909, 1.391777, 1.652964, 2.117449, 3.046420",\
+ "1.346137, 1.648005, 1.909191, 2.373677, 3.302648",\
+ "2.262928, 2.564796, 2.825983, 3.290468, 4.219439");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.036606, 0.036606, 0.036606, 0.036607, 0.036607",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705775, 0.705777, 0.705782",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036607",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705775, 0.705777, 0.705782",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036607",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705775, 0.705777, 0.705782",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036607",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705775, 0.705777, 0.705782",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036607",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705775, 0.705777, 0.705782",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.369267, 0.551325, 0.747559, 1.056740, 1.651224",\
+ "0.393143, 0.575201, 0.771435, 1.080616, 1.675100",\
+ "0.442703, 0.624760, 0.820994, 1.130175, 1.724659",\
+ "0.608628, 0.790685, 0.986919, 1.296102, 1.890590",\
+ "1.197436, 1.379494, 1.575727, 1.884908, 2.479391",\
+ "0.456682, 0.638644, 0.834839, 1.144045, 1.738577",\
+ "0.480558, 0.662519, 0.858715, 1.167921, 1.762453",\
+ "0.530117, 0.712079, 0.908275, 1.217480, 1.812012",\
+ "0.696043, 0.878004, 1.074200, 1.383407, 1.977943",\
+ "1.284851, 1.466812, 1.663008, 1.972213, 2.566744",\
+ "0.537558, 0.718980, 0.914866, 1.224073, 1.818609",\
+ "0.561434, 0.742856, 0.938742, 1.247949, 1.842485",\
+ "0.610994, 0.792415, 0.988301, 1.297508, 1.892044",\
+ "0.776919, 0.958341, 1.154227, 1.463436, 2.057975",\
+ "1.365727, 1.547149, 1.743035, 2.052242, 2.646776",\
+ "0.595205, 0.776817, 0.972602, 1.281544, 1.875705",\
+ "0.619081, 0.800693, 0.996478, 1.305420, 1.899580",\
+ "0.668640, 0.850252, 1.046037, 1.354979, 1.949140",\
+ "0.834565, 1.016178, 1.211963, 1.520906, 2.115070",\
+ "1.423374, 1.604986, 1.800771, 2.109712, 2.703871",\
+ "0.897412, 1.082194, 1.276265, 1.584751, 2.178023",\
+ "0.921288, 1.106070, 1.300141, 1.608627, 2.201899",\
+ "0.970848, 1.155629, 1.349701, 1.658186, 2.251458",\
+ "1.136773, 1.321555, 1.515626, 1.824113, 2.417389",\
+ "1.725581, 1.910363, 2.104434, 2.412919, 3.006190");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.032797, 0.032797, 0.032797, 0.032797, 0.032797",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439321, 0.439321, 0.439321, 0.439321, 0.439321",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032797, 0.032797, 0.032797, 0.032797, 0.032797",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439321, 0.439321, 0.439321, 0.439321, 0.439321",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032797, 0.032797, 0.032797, 0.032797, 0.032797",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439321, 0.439321, 0.439321, 0.439321, 0.439321",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032797, 0.032797, 0.032797, 0.032797, 0.032797",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439321, 0.439321, 0.439321, 0.439321, 0.439321",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032797, 0.032797, 0.032797, 0.032797, 0.032797",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439321, 0.439321, 0.439321, 0.439321, 0.439321",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_min_2414*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.417278, 0.676837, 0.948472, 1.404635, 2.315804",\
+ "0.446729, 0.706289, 0.977924, 1.434087, 2.345256",\
+ "0.517799, 0.777359, 1.048994, 1.505156, 2.416326",\
+ "0.774027, 1.033586, 1.305222, 1.761384, 2.672554",\
+ "1.690818, 1.950378, 2.222013, 2.678176, 3.589346",\
+ "0.505382, 0.764370, 1.036001, 1.491350, 2.401738",\
+ "0.534834, 0.793822, 1.065453, 1.520802, 2.431190",\
+ "0.605904, 0.864891, 1.136523, 1.591872, 2.502260",\
+ "0.862132, 1.121119, 1.392751, 1.848100, 2.758488",\
+ "1.778923, 2.037910, 2.309542, 2.764891, 3.675279",\
+ "0.593413, 0.853334, 1.123966, 1.578989, 2.488693",\
+ "0.622864, 0.882786, 1.153417, 1.608441, 2.518145",\
+ "0.693934, 0.953856, 1.224487, 1.679511, 2.589215",\
+ "0.950162, 1.210083, 1.480715, 1.935739, 2.845443",\
+ "1.866953, 2.126875, 2.397506, 2.852530, 3.762234",\
+ "0.655634, 0.918945, 1.188103, 1.643063, 2.552202",\
+ "0.685085, 0.948397, 1.217555, 1.672515, 2.581654",\
+ "0.756155, 1.019467, 1.288625, 1.743585, 2.652724",\
+ "1.012383, 1.275695, 1.544853, 1.999813, 2.908952",\
+ "1.929174, 2.192486, 2.461644, 2.916605, 3.825743",\
+ "0.983021, 1.282994, 1.539846, 1.992450, 2.897658",\
+ "1.012473, 1.312446, 1.569298, 2.021902, 2.927110",\
+ "1.083543, 1.383515, 1.640368, 2.092972, 2.998180",\
+ "1.339770, 1.639743, 1.896595, 2.349199, 3.254408",\
+ "2.256562, 2.556535, 2.813387, 3.265991, 4.171200");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.036606, 0.036606, 0.036606, 0.036607, 0.036608",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705776, 0.705780, 0.705788",\
+ "2.456797, 2.456796, 2.456792, 2.456784, 2.456766",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036608",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705776, 0.705780, 0.705788",\
+ "2.456797, 2.456796, 2.456792, 2.456784, 2.456766",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036608",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705776, 0.705780, 0.705788",\
+ "2.456797, 2.456796, 2.456792, 2.456784, 2.456766",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036608",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705776, 0.705780, 0.705788",\
+ "2.456797, 2.456796, 2.456792, 2.456784, 2.456766",\
+ "0.036606, 0.036606, 0.036606, 0.036607, 0.036608",\
+ "0.083622, 0.083622, 0.083622, 0.083623, 0.083623",\
+ "0.215854, 0.215855, 0.215855, 0.215855, 0.215856",\
+ "0.705773, 0.705774, 0.705776, 0.705780, 0.705788",\
+ "2.456797, 2.456796, 2.456792, 2.456784, 2.456766");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.367604, 0.549771, 0.745869, 1.055208, 1.650168",\
+ "0.391480, 0.573647, 0.769745, 1.079083, 1.674044",\
+ "0.441039, 0.623206, 0.819305, 1.128643, 1.723603",\
+ "0.606964, 0.789132, 0.985230, 1.294570, 1.889535",\
+ "1.195773, 1.377940, 1.574038, 1.883376, 2.478335",\
+ "0.455024, 0.637090, 0.833150, 1.142513, 1.737522",\
+ "0.478900, 0.660966, 0.857026, 1.166389, 1.761397",\
+ "0.528459, 0.710525, 0.906585, 1.215948, 1.810957",\
+ "0.694384, 0.876450, 1.072511, 1.381875, 1.976888",\
+ "1.283193, 1.465259, 1.661319, 1.970681, 2.565688",\
+ "0.535891, 0.717427, 0.913177, 1.222541, 1.817554",\
+ "0.559767, 0.741302, 0.937053, 1.246417, 1.841429",\
+ "0.609326, 0.790862, 0.986612, 1.295976, 1.890988",\
+ "0.775252, 0.956787, 1.152538, 1.461904, 2.056920",\
+ "1.364060, 1.545596, 1.741346, 2.050709, 2.645720",\
+ "0.593530, 0.775263, 0.970912, 1.280012, 1.874650",\
+ "0.617406, 0.799139, 0.994788, 1.303888, 1.898526",\
+ "0.666965, 0.848699, 1.044348, 1.353447, 1.948085",\
+ "0.832891, 1.014624, 1.210274, 1.519375, 2.114016",\
+ "1.421699, 1.603432, 1.799081, 2.108180, 2.702816",\
+ "0.895625, 1.080642, 1.274576, 1.583220, 2.176970",\
+ "0.919501, 1.104518, 1.298452, 1.607095, 2.200845",\
+ "0.969060, 1.154077, 1.348011, 1.656655, 2.250404",\
+ "1.134986, 1.320002, 1.513937, 1.822582, 2.416336",\
+ "1.723794, 1.908811, 2.102745, 2.411388, 3.005136");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.032796, 0.032796, 0.032796, 0.032796, 0.032796",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439319, 0.439319, 0.439319, 0.439319, 0.439319",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032796, 0.032796, 0.032796, 0.032796, 0.032796",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439319, 0.439319, 0.439319, 0.439319, 0.439319",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032796, 0.032796, 0.032796, 0.032796, 0.032796",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439319, 0.439319, 0.439319, 0.439319, 0.439319",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032796, 0.032796, 0.032796, 0.032796, 0.032796",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439319, 0.439319, 0.439319, 0.439319, 0.439319",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844",\
+ "0.032796, 0.032796, 0.032796, 0.032796, 0.032796",\
+ "0.061344, 0.061344, 0.061344, 0.061345, 0.061345",\
+ "0.138997, 0.138997, 0.138997, 0.138997, 0.138997",\
+ "0.439319, 0.439319, 0.439319, 0.439319, 0.439319",\
+ "1.518841, 1.518841, 1.518841, 1.518842, 1.518844");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_min_2348*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.509561, 0.687900, 0.868247, 1.154434, 1.705187",\
+ "0.539012, 0.717352, 0.897699, 1.183885, 1.734638",\
+ "0.610082, 0.788422, 0.968769, 1.254955, 1.805708",\
+ "0.866310, 1.044649, 1.224996, 1.511183, 2.061936",\
+ "1.783102, 1.961441, 2.141788, 2.427974, 2.978728",\
+ "0.594499, 0.772736, 0.953317, 1.239940, 1.791565",\
+ "0.623951, 0.802188, 0.982769, 1.269392, 1.821017",\
+ "0.695021, 0.873258, 1.053839, 1.340461, 1.892087",\
+ "0.951248, 1.129485, 1.310066, 1.596689, 2.148314",\
+ "1.868040, 2.046277, 2.226858, 2.513481, 3.065106",\
+ "0.670405, 0.848179, 1.028126, 1.314537, 1.865738",\
+ "0.699857, 0.877631, 1.057578, 1.343988, 1.895189",\
+ "0.770927, 0.948701, 1.128648, 1.415058, 1.966259",\
+ "1.027155, 1.204929, 1.384875, 1.671286, 2.222487",\
+ "1.943946, 2.121720, 2.301667, 2.588078, 3.139278",\
+ "0.724757, 0.902925, 1.082991, 1.369130, 1.920055",\
+ "0.754209, 0.932377, 1.112443, 1.398582, 1.949507",\
+ "0.825279, 1.003447, 1.183513, 1.469652, 2.020576",\
+ "1.081507, 1.259674, 1.439741, 1.725880, 2.276804",\
+ "1.998298, 2.176466, 2.356532, 2.642671, 3.193595",\
+ "1.006179, 1.188442, 1.367144, 1.652857, 2.203332",\
+ "1.035631, 1.217894, 1.396596, 1.682308, 2.232784",\
+ "1.106701, 1.288964, 1.467666, 1.753378, 2.303854",\
+ "1.362929, 1.545192, 1.723894, 2.009606, 2.560082",\
+ "2.279720, 2.461983, 2.640685, 2.926397, 3.476873");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705774, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705774, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705774, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705774, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036606, 0.036606, 0.036606, 0.036606, 0.036606",\
+ "0.083622, 0.083622, 0.083622, 0.083622, 0.083622",\
+ "0.215854, 0.215854, 0.215854, 0.215854, 0.215855",\
+ "0.705773, 0.705773, 0.705773, 0.705774, 0.705774",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.384876, 0.649875, 0.908905, 1.345169, 2.217316",\
+ "0.408752, 0.673751, 0.932781, 1.369045, 2.241192",\
+ "0.458311, 0.723311, 0.982340, 1.418604, 2.290751",\
+ "0.624237, 0.889236, 1.148266, 1.584530, 2.456676",\
+ "1.213045, 1.478044, 1.737074, 2.173338, 3.045485",\
+ "0.473542, 0.737950, 0.997546, 1.433398, 2.304721",\
+ "0.497418, 0.761826, 1.021422, 1.457274, 2.328597",\
+ "0.546977, 0.811386, 1.070981, 1.506833, 2.378156",\
+ "0.712902, 0.977311, 1.236907, 1.672759, 2.544082",\
+ "1.301711, 1.566119, 1.825715, 2.261567, 3.132890",\
+ "0.566349, 0.831244, 1.089581, 1.525641, 2.397763",\
+ "0.590225, 0.855120, 1.113457, 1.549517, 2.421639",\
+ "0.639784, 0.904679, 1.163016, 1.599077, 2.471198",\
+ "0.805709, 1.070605, 1.328942, 1.765002, 2.637124",\
+ "1.394518, 1.659413, 1.917750, 2.353810, 3.225932",\
+ "0.632071, 0.899778, 1.156636, 1.592648, 2.464673",\
+ "0.655947, 0.923654, 1.180512, 1.616524, 2.488548",\
+ "0.705506, 0.973213, 1.230071, 1.666083, 2.538108",\
+ "0.871432, 1.139139, 1.395997, 1.832009, 2.704033",\
+ "1.460240, 1.727947, 1.984805, 2.420817, 3.292841",\
+ "0.977860, 1.280277, 1.527274, 1.961849, 2.830999",\
+ "1.001736, 1.304152, 1.551150, 1.985725, 2.854876",\
+ "1.051296, 1.353712, 1.600709, 2.035285, 2.904435",\
+ "1.217221, 1.519637, 1.766635, 2.201210, 3.070360",\
+ "1.806029, 2.108445, 2.355443, 2.790018, 3.659168");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841",\
+ "0.032798, 0.032798, 0.032798, 0.032798, 0.032798",\
+ "0.061344, 0.061344, 0.061344, 0.061344, 0.061344",\
+ "0.138998, 0.138998, 0.138998, 0.138998, 0.138998",\
+ "0.439342, 0.439342, 0.439343, 0.439343, 0.439343",\
+ "1.518841, 1.518841, 1.518841, 1.518841, 1.518841");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_min_2294*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.137566, 0.167336, 0.239033, 0.495310, 1.411098",\
+ "0.225751, 0.255520, 0.327229, 0.583553, 1.499024",\
+ "0.314076, 0.343844, 0.415554, 0.672074, 1.587106",\
+ "0.376665, 0.406437, 0.478090, 0.734905, 1.650403",\
+ "0.706539, 0.736325, 0.807782, 1.065036, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.036606, 0.083622, 0.215854, 0.705773, 2.456797",\
+ "0.036606, 0.083622, 0.215854, 0.705773, 2.456797",\
+ "0.036606, 0.083622, 0.215854, 0.705773, 2.456797",\
+ "0.036606, 0.083622, 0.215854, 0.705773, 2.456797",\
+ "0.036606, 0.083622, 0.215854, 0.705773, 2.456797");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.176657, 0.200194, 0.249429, 0.415146, 1.003925",\
+ "0.264061, 0.287598, 0.336833, 0.502550, 1.091329",\
+ "0.344959, 0.368493, 0.417732, 0.583454, 1.172242",\
+ "0.402624, 0.426151, 0.475399, 0.641128, 1.229933",\
+ "0.704984, 0.728497, 0.777773, 0.943572, 1.532550");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.032799, 0.061344, 0.138999, 0.438536, 1.518306",\
+ "0.032799, 0.061344, 0.138999, 0.438535, 1.518306",\
+ "0.032799, 0.061344, 0.138999, 0.438535, 1.518105",\
+ "0.032799, 0.061344, 0.138999, 0.438535, 1.517729",\
+ "0.032799, 0.061344, 0.138998, 0.438535, 1.516557");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[6]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.078864, 0.108975, 0.180232, 0.436421, 1.354955",\
+ "0.161216, 0.191623, 0.263062, 0.519150, 1.434794",\
+ "0.248912, 0.281774, 0.353596, 0.609294, 1.527520",\
+ "0.395567, 0.436700, 0.511657, 0.767118, 1.680857",\
+ "0.628444, 0.688613, 0.779970, 1.032241, 1.943170");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.039377, 0.084977, 0.216447, 0.713042, 2.472405",\
+ "0.040943, 0.085824, 0.216786, 0.713478, 2.472405",\
+ "0.053222, 0.092507, 0.217591, 0.713478, 2.472405",\
+ "0.083456, 0.114560, 0.223431, 0.713478, 2.472405",\
+ "0.146897, 0.173026, 0.257773, 0.713478, 2.472405");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.111091, 0.136344, 0.187602, 0.354583, 0.943175",\
+ "0.190778, 0.216967, 0.268153, 0.434275, 1.024748",\
+ "0.290508, 0.318338, 0.371105, 0.537415, 1.127562",\
+ "0.459624, 0.495257, 0.553492, 0.720404, 1.308180",\
+ "0.729304, 0.783232, 0.859550, 1.032706, 1.617889");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.039826, 0.069221, 0.145259, 0.444902, 1.525117",\
+ "0.040254, 0.069221, 0.145259, 0.444902, 1.525117",\
+ "0.050781, 0.076552, 0.148038, 0.444902, 1.525117",\
+ "0.080540, 0.101538, 0.163724, 0.445523, 1.525117",\
+ "0.141255, 0.162992, 0.212369, 0.458214, 1.525117");
+ }
+
+ } /* end of arc padmux2ast_i[6]_obs_ctrl_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.074357, 0.103835, 0.175088, 0.430040, 1.346996",\
+ "0.156284, 0.185798, 0.256925, 0.512689, 1.426492",\
+ "0.240577, 0.272242, 0.343453, 0.599199, 1.515415",\
+ "0.383466, 0.422274, 0.495817, 0.750018, 1.664121",\
+ "0.607663, 0.663725, 0.751347, 1.002896, 1.912977");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.036939, 0.083563, 0.215464, 0.698603, 2.446539",\
+ "0.038445, 0.084260, 0.215464, 0.704042, 2.446539",\
+ "0.049297, 0.090259, 0.216941, 0.705803, 2.446539",\
+ "0.076679, 0.110998, 0.222061, 0.706283, 2.457507",\
+ "0.134063, 0.165740, 0.252770, 0.710864, 2.457507");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.080261, 0.102858, 0.151114, 0.316434, 0.906304",\
+ "0.165732, 0.188510, 0.236836, 0.401880, 0.995903",\
+ "0.261156, 0.287506, 0.337668, 0.502550, 1.091127",\
+ "0.420973, 0.455458, 0.511965, 0.676394, 1.262831",\
+ "0.677498, 0.731290, 0.807033, 0.979368, 1.563209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000997, 0.004236, 0.012818, 0.044133, 0.156168");
+ values ( "0.032396, 0.061186, 0.138642, 0.440176, 1.520011",\
+ "0.033582, 0.061465, 0.138784, 0.440176, 1.520011",\
+ "0.046234, 0.071020, 0.142472, 0.440176, 1.520011",\
+ "0.075362, 0.096304, 0.158284, 0.443536, 1.520011",\
+ "0.135524, 0.156881, 0.206007, 0.453845, 1.520011");
+ }
+
+ } /* end of arc padmux2ast_i[6]_obs_ctrl_o[6]_una_min*/
+
+} /* end of pin obs_ctrl_o[6] */
+
+pin("obs_ctrl_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001502 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.561257, 0.741460, 0.928950, 1.230943, 1.814455",\
+ "0.591077, 0.771280, 0.958770, 1.260762, 1.844274",\
+ "0.662801, 0.843004, 1.030494, 1.332487, 1.915998",\
+ "0.919252, 1.099455, 1.286945, 1.588937, 2.172449",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.646196, 0.826743, 1.014959, 1.316955, 1.900833",\
+ "0.676015, 0.856563, 1.044779, 1.346775, 1.930653",\
+ "0.747739, 0.928287, 1.116503, 1.418499, 2.002377",\
+ "1.004190, 1.184738, 1.372953, 1.674950, 2.258828",\
+ "1.915830, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.722108, 0.902187, 1.089768, 1.391552, 1.975005",\
+ "0.751927, 0.932006, 1.119587, 1.421371, 2.004825",\
+ "0.823651, 1.003731, 1.191312, 1.493096, 2.076549",\
+ "1.080102, 1.260181, 1.447762, 1.749547, 2.333000",\
+ "1.991742, 2.171822, 2.359402, 2.661187, 3.244640",\
+ "0.776477, 0.956699, 1.144419, 1.446092, 2.029323",\
+ "0.806297, 0.986518, 1.174238, 1.475911, 2.059142",\
+ "0.878021, 1.058242, 1.245963, 1.547635, 2.130867",\
+ "1.134472, 1.314693, 1.502414, 1.804086, 2.387317",\
+ "2.046112, 2.226333, 2.414053, 2.715726, 3.298958",\
+ "1.058072, 1.241966, 1.428370, 1.729818, 2.312600",\
+ "1.087891, 1.271786, 1.458189, 1.759638, 2.342420",\
+ "1.159616, 1.343510, 1.529913, 1.831362, 2.414144",\
+ "1.416066, 1.599961, 1.786364, 2.087812, 2.670595",\
+ "2.327706, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.431434, 0.699219, 0.960799, 1.400496, 2.279891",\
+ "0.455832, 0.723618, 0.985198, 1.424895, 2.304290",\
+ "0.506856, 0.774642, 1.036222, 1.475919, 2.355314",\
+ "0.673635, 0.941421, 1.203001, 1.642698, 2.522093",\
+ "1.261229, 1.529015, 1.790595, 2.230292, 3.109687",\
+ "0.520138, 0.787294, 1.049440, 1.488726, 2.367296",\
+ "0.544536, 0.811693, 1.073839, 1.513124, 2.391695",\
+ "0.595560, 0.862717, 1.124863, 1.564148, 2.442719",\
+ "0.762339, 1.029496, 1.291642, 1.730927, 2.609498",\
+ "1.349933, 1.617090, 1.879236, 2.318521, 3.197092",\
+ "0.613080, 0.880439, 1.141166, 1.580890, 2.460338",\
+ "0.637479, 0.904838, 1.165565, 1.605289, 2.484737",\
+ "0.688503, 0.955862, 1.216588, 1.656312, 2.535761",\
+ "0.855281, 1.122641, 1.383367, 1.823091, 2.702539",\
+ "1.442875, 1.710235, 1.970961, 2.410685, 3.290133",\
+ "0.678924, 0.949004, 1.208186, 1.647740, 2.526850",\
+ "0.703322, 0.973402, 1.232584, 1.672139, 2.551248",\
+ "0.754346, 1.024426, 1.283608, 1.723163, 2.602272",\
+ "0.921125, 1.191205, 1.450387, 1.889941, 2.769051",\
+ "1.508719, 1.778799, 2.037981, 2.477535, 3.356645",\
+ "1.025445, 1.329839, 1.578848, 2.016894, 2.892985",\
+ "1.049844, 1.354238, 1.603247, 2.041293, 2.917384",\
+ "1.100868, 1.405262, 1.654271, 2.092317, 2.968408",\
+ "1.267646, 1.572041, 1.821050, 2.259095, 3.135186",\
+ "1.855240, 2.159635, 2.408644, 2.846689, 3.722780");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_2732*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.469363, 0.732936, 1.009209, 1.477938, 2.415398",\
+ "0.499182, 0.762756, 1.039028, 1.507758, 2.445217",\
+ "0.570906, 0.834480, 1.110752, 1.579482, 2.516941",\
+ "0.827357, 1.090931, 1.367203, 1.835933, 2.773392",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.557557, 0.820477, 1.096777, 1.564654, 2.501331",\
+ "0.587376, 0.850296, 1.126596, 1.594473, 2.531151",\
+ "0.659100, 0.922021, 1.198320, 1.666197, 2.602875",\
+ "0.915551, 1.178471, 1.454771, 1.922648, 2.859325",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.645873, 0.909457, 1.184741, 1.652276, 2.588286",\
+ "0.675692, 0.939277, 1.214561, 1.682096, 2.618106",\
+ "0.747417, 1.011001, 1.286285, 1.753820, 2.689830",\
+ "1.003868, 1.267452, 1.542736, 2.010271, 2.946280",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.708369, 0.975092, 1.248881, 1.716190, 2.651795",\
+ "0.738189, 1.004912, 1.278701, 1.746009, 2.681615",\
+ "0.809913, 1.076636, 1.350425, 1.817733, 2.753339",\
+ "1.066364, 1.333087, 1.606875, 2.074184, 3.009789",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.037495, 1.339423, 1.600748, 2.065540, 2.997252",\
+ "1.067314, 1.369243, 1.630568, 2.095359, 3.027071",\
+ "1.139038, 1.440967, 1.702292, 2.167083, 3.098795",\
+ "1.395489, 1.697417, 1.958743, 2.423534, 3.355246",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723330, 0.723327, 0.723319",\
+ "2.463217, 2.463217, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723330, 0.723327, 0.723319",\
+ "2.463217, 2.463217, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723330, 0.723327, 0.723319",\
+ "2.463217, 2.463217, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723330, 0.723327, 0.723319",\
+ "2.463217, 2.463217, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723330, 0.723327, 0.723319",\
+ "2.463217, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.414387, 0.596819, 0.793211, 1.102263, 1.697070",\
+ "0.438785, 0.621217, 0.817609, 1.126662, 1.721470",\
+ "0.489809, 0.672241, 0.868633, 1.177686, 1.772493",\
+ "0.656588, 0.839020, 1.035412, 1.344465, 1.939272",\
+ "1.244182, 1.426614, 1.623006, 1.932059, 2.526866",\
+ "0.501801, 0.684204, 0.880704, 1.189568, 1.784423",\
+ "0.526200, 0.708603, 0.905102, 1.213968, 1.808823",\
+ "0.577224, 0.759627, 0.956126, 1.264991, 1.859847",\
+ "0.744003, 0.926405, 1.122905, 1.431770, 2.026625",\
+ "1.331597, 1.513999, 1.710499, 2.019364, 2.614220",\
+ "0.582678, 0.764541, 0.960731, 1.269597, 1.864455",\
+ "0.607077, 0.788939, 0.985129, 1.293996, 1.888855",\
+ "0.658100, 0.839963, 1.036153, 1.345020, 1.939878",\
+ "0.824879, 1.006742, 1.202932, 1.511798, 2.106657",\
+ "1.412473, 1.594336, 1.790526, 2.099392, 2.694252",\
+ "0.640324, 0.822089, 1.018274, 1.326842, 1.921102",\
+ "0.664723, 0.846488, 1.042673, 1.351241, 1.945503",\
+ "0.715747, 0.897512, 1.093697, 1.402265, 1.996526",\
+ "0.882525, 1.064290, 1.260476, 1.569043, 2.163304",\
+ "1.470119, 1.651884, 1.848070, 2.156638, 2.750899",\
+ "0.942532, 1.127314, 1.321908, 1.629857, 2.222949",\
+ "0.966931, 1.151712, 1.346307, 1.654256, 2.247349",\
+ "1.017955, 1.202736, 1.397331, 1.705280, 2.298373",\
+ "1.184733, 1.369515, 1.564109, 1.872058, 2.465151",\
+ "1.772327, 1.957109, 2.151703, 2.459652, 3.052746");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523992, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523992, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523992, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523992, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523992, 1.523996");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_2657*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.465387, 0.725016, 0.996889, 1.453768, 2.367528",\
+ "0.495207, 0.754836, 1.026708, 1.483588, 2.397348",\
+ "0.566931, 0.826560, 1.098432, 1.555312, 2.469071",\
+ "0.823382, 1.083011, 1.354883, 1.811763, 2.725522",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637165",\
+ "0.553492, 0.812550, 1.084419, 1.540484, 2.453462",\
+ "0.583312, 0.842370, 1.114239, 1.570303, 2.483281",\
+ "0.655036, 0.914094, 1.185963, 1.642027, 2.555005",\
+ "0.911487, 1.170545, 1.442413, 1.898478, 2.811456",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.641522, 0.901516, 1.172383, 1.628106, 2.540417",\
+ "0.671342, 0.931335, 1.202203, 1.657926, 2.570236",\
+ "0.743066, 1.003059, 1.273927, 1.729650, 2.641960",\
+ "0.999517, 1.259510, 1.530378, 1.986101, 2.898411",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.703743, 0.967129, 1.236521, 1.692020, 2.603926",\
+ "0.733563, 0.996949, 1.266341, 1.721840, 2.633745",\
+ "0.805287, 1.068673, 1.338065, 1.793564, 2.705469",\
+ "1.061738, 1.325124, 1.594516, 2.050014, 2.961920",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.031131, 1.331204, 1.588269, 2.041321, 2.949382",\
+ "1.060951, 1.361024, 1.618088, 2.071141, 2.979202",\
+ "1.132675, 1.432748, 1.689812, 2.142864, 3.050925",\
+ "1.389125, 1.689199, 1.946263, 2.399315, 3.307376",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723332, 0.723329, 0.723323, 0.723311",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723331, 0.723329, 0.723323, 0.723311",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723331, 0.723329, 0.723323, 0.723311",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723331, 0.723329, 0.723323, 0.723311",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047099, 0.047099, 0.047099, 0.047099",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225236",\
+ "0.723332, 0.723331, 0.723329, 0.723323, 0.723311",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.412725, 0.595266, 0.791521, 1.100738, 1.696032",\
+ "0.437124, 0.619665, 0.815920, 1.125137, 1.720433",\
+ "0.488148, 0.670689, 0.866944, 1.176161, 1.771456",\
+ "0.654926, 0.837467, 1.033722, 1.342939, 1.938234",\
+ "1.242520, 1.425061, 1.621316, 1.930533, 2.525829",\
+ "0.500145, 0.682652, 0.879014, 1.188043, 1.783386",\
+ "0.524544, 0.707050, 0.903413, 1.212442, 1.807786",\
+ "0.575568, 0.758074, 0.954436, 1.263466, 1.858810",\
+ "0.742347, 0.924853, 1.121215, 1.430244, 2.025588",\
+ "1.329941, 1.512447, 1.708809, 2.017838, 2.613183",\
+ "0.581013, 0.762988, 0.959041, 1.268071, 1.863418",\
+ "0.605412, 0.787387, 0.983440, 1.292470, 1.887818",\
+ "0.656435, 0.838411, 1.034463, 1.343494, 1.938841",\
+ "0.823214, 1.005190, 1.201242, 1.510273, 2.105619",\
+ "1.410808, 1.592784, 1.788836, 2.097867, 2.693214",\
+ "0.638652, 0.820537, 1.016585, 1.325316, 1.920065",\
+ "0.663050, 0.844936, 1.040983, 1.349715, 1.944465",\
+ "0.714074, 0.895960, 1.092007, 1.400739, 1.995489",\
+ "0.880853, 1.062738, 1.258786, 1.567518, 2.162267",\
+ "1.468447, 1.650332, 1.846380, 2.155112, 2.749862",\
+ "0.940747, 1.125763, 1.320219, 1.628331, 2.221912",\
+ "0.965146, 1.150162, 1.344617, 1.652730, 2.246312",\
+ "1.016169, 1.201186, 1.395641, 1.703754, 2.297336",\
+ "1.182948, 1.367965, 1.562420, 1.870533, 2.464114",\
+ "1.770542, 1.955559, 2.150014, 2.458127, 3.051709");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523993, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523993, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523993, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523993, 1.523996",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523993, 1.523996");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_2600*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.557671, 0.736098, 0.916358, 1.202564, 1.753681",\
+ "0.587491, 0.765917, 0.946178, 1.232384, 1.783501",\
+ "0.659215, 0.837641, 1.017902, 1.304108, 1.855225",\
+ "0.915666, 1.094092, 1.274353, 1.560559, 2.111676",\
+ "1.827306, 2.005732, 2.185993, 2.472199, 3.023316",\
+ "0.642609, 0.821370, 1.002273, 1.288485, 1.840060",\
+ "0.672429, 0.851190, 1.032093, 1.318304, 1.869879",\
+ "0.744153, 0.922914, 1.103817, 1.390028, 1.941603",\
+ "1.000604, 1.179365, 1.360268, 1.646479, 2.198054",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.718516, 0.896813, 1.077082, 1.363081, 1.914232",\
+ "0.748335, 0.926633, 1.106902, 1.392901, 1.944052",\
+ "0.820059, 0.998357, 1.178626, 1.464625, 2.015776",\
+ "1.076510, 1.254808, 1.435077, 1.721076, 2.272227",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.772868, 0.951325, 1.131733, 1.417621, 1.968549",\
+ "0.802687, 0.981145, 1.161553, 1.447441, 1.998369",\
+ "0.874411, 1.052869, 1.233277, 1.519165, 2.070093",\
+ "1.130862, 1.309320, 1.489728, 1.775616, 2.326544",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.054290, 1.236552, 1.415684, 1.701348, 2.251827",\
+ "1.084109, 1.266372, 1.445503, 1.731167, 2.281647",\
+ "1.155833, 1.338096, 1.517227, 1.802891, 2.353371",\
+ "1.412284, 1.594547, 1.773678, 2.059342, 2.609822",\
+ "2.323924, 2.506187, 2.685318, 2.970982, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.047100, 0.047100, 0.047100, 0.047100, 0.047100",\
+ "0.093802, 0.093802, 0.093802, 0.093802, 0.093802",\
+ "0.225237, 0.225237, 0.225237, 0.225237, 0.225237",\
+ "0.723332, 0.723332, 0.723332, 0.723332, 0.723332",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.429998, 0.695167, 0.954369, 1.390552, 2.262917",\
+ "0.454396, 0.719566, 0.978768, 1.414950, 2.287315",\
+ "0.505420, 0.770590, 1.029792, 1.465974, 2.338339",\
+ "0.672199, 0.937369, 1.196570, 1.632753, 2.505118",\
+ "1.259793, 1.524963, 1.784164, 2.220347, 3.092712",\
+ "0.518663, 0.783242, 1.043010, 1.478781, 2.350322",\
+ "0.543062, 0.807641, 1.067409, 1.503179, 2.374721",\
+ "0.594086, 0.858665, 1.118433, 1.554203, 2.425745",\
+ "0.760864, 1.025444, 1.285211, 1.720982, 2.592523",\
+ "1.348459, 1.613038, 1.872805, 2.308576, 3.180117",\
+ "0.611470, 0.876365, 1.134735, 1.570945, 2.443364",\
+ "0.635869, 0.900764, 1.159134, 1.595343, 2.467762",\
+ "0.686893, 0.951788, 1.210158, 1.646367, 2.518786",\
+ "0.853671, 1.118567, 1.376937, 1.813146, 2.685565",\
+ "1.441265, 1.706161, 1.964531, 2.400740, 3.273159",\
+ "0.677192, 0.944899, 1.201755, 1.637795, 2.509875",\
+ "0.701591, 0.969298, 1.226154, 1.662194, 2.534274",\
+ "0.752615, 1.020322, 1.277178, 1.713217, 2.585298",\
+ "0.919394, 1.187101, 1.443956, 1.879996, 2.752076",\
+ "1.506988, 1.774695, 2.031551, 2.467590, 3.339670",\
+ "1.022982, 1.325398, 1.572386, 2.006926, 2.876008",\
+ "1.047381, 1.349797, 1.596784, 2.031325, 2.900407",\
+ "1.098405, 1.400820, 1.647808, 2.082349, 2.951431",\
+ "1.265183, 1.567599, 1.814587, 2.249127, 3.118209",\
+ "1.852777, 2.155193, 2.402181, 2.836721, 3.705803");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991",\
+ "0.045359, 0.045359, 0.045359, 0.045359, 0.045359",\
+ "0.074479, 0.074479, 0.074479, 0.074479, 0.074479",\
+ "0.150687, 0.150687, 0.150687, 0.150687, 0.150687",\
+ "0.448891, 0.448891, 0.448891, 0.448891, 0.448891",\
+ "1.523991, 1.523991, 1.523991, 1.523991, 1.523991");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_2542*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.324944, 0.354764, 0.426488, 0.682940, 1.594576",\
+ "0.412335, 0.442155, 0.513879, 0.770331, 1.681967",\
+ "0.493254, 0.523074, 0.594798, 0.851250, 1.762885",\
+ "0.550995, 0.580814, 0.652539, 0.908991, 1.820623",\
+ "0.854260, 0.883835, 0.955245, 1.211697, 2.123717");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.047100, 0.093803, 0.225238, 0.723294, 2.463217",\
+ "0.047100, 0.093803, 0.225317, 0.723294, 2.463217",\
+ "0.047100, 0.093803, 0.225549, 0.723294, 2.463317",\
+ "0.047101, 0.093803, 0.225549, 0.723294, 2.463317",\
+ "0.047256, 0.093828, 0.225883, 0.723320, 2.463779");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.309881, 0.334280, 0.385304, 0.552083, 1.139677",\
+ "0.397274, 0.421673, 0.472696, 0.639475, 1.227069",\
+ "0.478143, 0.502542, 0.553566, 0.720345, 1.307939",\
+ "0.535792, 0.560191, 0.611215, 0.777993, 1.365587",\
+ "0.838449, 0.862847, 0.913871, 1.080650, 1.668244");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.045359, 0.074479, 0.150693, 0.448891, 1.524390",\
+ "0.045359, 0.074479, 0.150693, 0.448891, 1.524390",\
+ "0.045359, 0.074479, 0.150693, 0.448891, 1.524264",\
+ "0.045359, 0.074479, 0.150693, 0.448891, 1.524028",\
+ "0.045353, 0.074413, 0.150693, 0.448886, 1.523991");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.517919, 0.698033, 0.885611, 1.187591, 1.770688",\
+ "0.546784, 0.726898, 0.914476, 1.216456, 1.799552",\
+ "0.617826, 0.797940, 0.985519, 1.287498, 1.870595",\
+ "0.874029, 1.054142, 1.241721, 1.543701, 2.126797",\
+ "1.786688, 1.966801, 2.154380, 2.456360, 3.039456",\
+ "0.602858, 0.782869, 0.970682, 1.273098, 1.857066",\
+ "0.631723, 0.811734, 0.999546, 1.301962, 1.885931",\
+ "0.702765, 0.882776, 1.070589, 1.373005, 1.956973",\
+ "0.958967, 1.138978, 1.326791, 1.629207, 2.213175",\
+ "1.871626, 2.051637, 2.239450, 2.541866, 3.125834",\
+ "0.678770, 0.858312, 1.045491, 1.347694, 1.931238",\
+ "0.707635, 0.887177, 1.074355, 1.376559, 1.960103",\
+ "0.778677, 0.958219, 1.145398, 1.447601, 2.031145",\
+ "1.034879, 1.214422, 1.401600, 1.703804, 2.287347",\
+ "1.947538, 2.127081, 2.314259, 2.616463, 3.200006",\
+ "0.733139, 0.913064, 1.100379, 1.402300, 1.985556",\
+ "0.762004, 0.941928, 1.129244, 1.431165, 2.014421",\
+ "0.833046, 1.012970, 1.200286, 1.502207, 2.085463",\
+ "1.089248, 1.269173, 1.456489, 1.758409, 2.341665",\
+ "2.001907, 2.181832, 2.369148, 2.671068, 3.254324",\
+ "1.014734, 1.198629, 1.384555, 1.686026, 2.268833",\
+ "1.043599, 1.227494, 1.413420, 1.714891, 2.297698",\
+ "1.114641, 1.298536, 1.484462, 1.785933, 2.368740",\
+ "1.370843, 1.554738, 1.740664, 2.042135, 2.624942",\
+ "2.283502, 2.467397, 2.653323, 2.954794, 3.537601");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.390477, 0.658088, 0.919489, 1.359266, 2.238427",\
+ "0.413219, 0.680829, 0.942230, 1.382007, 2.261168",\
+ "0.462500, 0.730110, 0.991511, 1.431288, 2.310449",\
+ "0.628402, 0.896013, 1.157414, 1.597191, 2.476352",\
+ "1.214556, 1.482167, 1.743568, 2.183345, 3.062506",\
+ "0.479181, 0.746163, 1.008130, 1.447495, 2.325832",\
+ "0.501923, 0.768904, 1.030871, 1.470236, 2.348573",\
+ "0.551204, 0.818185, 1.080152, 1.519517, 2.397854",\
+ "0.717106, 0.984088, 1.246055, 1.685420, 2.563757",\
+ "1.303261, 1.570242, 1.832209, 2.271574, 3.149911",\
+ "0.572124, 0.839483, 1.100174, 1.539741, 2.418874",\
+ "0.594865, 0.862224, 1.122916, 1.562482, 2.441615",\
+ "0.644146, 0.911506, 1.172197, 1.611763, 2.490896",\
+ "0.810049, 1.077408, 1.338099, 1.777666, 2.656799",\
+ "1.396203, 1.663562, 1.924254, 2.363820, 3.242953",\
+ "0.637967, 0.908047, 1.167230, 1.606752, 2.485795",\
+ "0.660708, 0.930789, 1.189972, 1.629493, 2.508537",\
+ "0.709990, 0.980070, 1.239253, 1.678774, 2.557818",\
+ "0.875892, 1.145972, 1.405155, 1.844677, 2.723721",\
+ "1.462046, 1.732126, 1.991310, 2.430831, 3.309875",\
+ "0.984489, 1.288883, 1.537901, 1.975978, 2.852131",\
+ "1.007230, 1.311624, 1.560642, 1.998719, 2.874872",\
+ "1.056511, 1.360905, 1.609924, 2.048000, 2.924153",\
+ "1.222414, 1.526808, 1.775826, 2.213903, 3.090056",\
+ "1.808568, 2.112962, 2.361980, 2.800057, 3.676210");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_min_2483*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.426028, 0.689559, 0.965679, 1.433811, 2.368817",\
+ "0.454893, 0.718424, 0.994544, 1.462676, 2.397682",\
+ "0.525935, 0.789466, 1.065586, 1.533718, 2.468724",\
+ "0.782137, 1.045668, 1.321788, 1.789921, 2.724926",\
+ "1.694796, 1.958328, 2.234447, 2.702580, 3.637585",\
+ "0.514222, 0.777100, 1.053246, 1.520527, 2.454750",\
+ "0.543087, 0.805965, 1.082111, 1.549392, 2.483615",\
+ "0.614129, 0.877007, 1.153153, 1.620434, 2.554657",\
+ "0.870331, 1.133209, 1.409355, 1.876636, 2.810860",\
+ "1.782991, 2.045868, 2.322014, 2.789295, 3.723519",\
+ "0.602538, 0.866079, 1.141211, 1.608167, 2.541705",\
+ "0.631403, 0.894944, 1.170076, 1.637032, 2.570570",\
+ "0.702445, 0.965986, 1.241118, 1.708074, 2.641613",\
+ "0.958647, 1.222188, 1.497320, 1.964276, 2.897815",\
+ "1.871307, 2.134848, 2.409979, 2.876935, 3.810474",\
+ "0.665034, 0.931713, 1.205350, 1.672256, 2.605214",\
+ "0.693899, 0.960578, 1.234215, 1.701121, 2.634079",\
+ "0.764941, 1.031620, 1.305257, 1.772163, 2.705122",\
+ "1.021144, 1.287822, 1.561460, 2.028365, 2.961324",\
+ "1.933803, 2.200481, 2.474119, 2.941024, 3.873983",\
+ "0.994160, 1.296028, 1.557214, 2.021699, 2.950670",\
+ "1.023025, 1.324893, 1.586079, 2.050565, 2.979536",\
+ "1.094067, 1.395935, 1.657121, 2.121607, 3.050578",\
+ "1.350269, 1.652137, 1.913324, 2.377809, 3.306780",\
+ "2.262928, 2.564796, 2.825983, 3.290468, 4.219439");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.043742, 0.043742, 0.043742, 0.043742, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223754, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713687, 0.713690, 0.713695",\
+ "2.456796, 2.456796, 2.456794, 2.456788, 2.456778",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223754, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713687, 0.713690, 0.713695",\
+ "2.456796, 2.456796, 2.456794, 2.456788, 2.456778",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223754, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713687, 0.713690, 0.713695",\
+ "2.456796, 2.456796, 2.456794, 2.456788, 2.456778",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223754, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713687, 0.713690, 0.713695",\
+ "2.456796, 2.456796, 2.456794, 2.456788, 2.456778",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223754, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713687, 0.713690, 0.713695",\
+ "2.456796, 2.456796, 2.456794, 2.456788, 2.456778");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.373432, 0.555490, 0.751724, 1.060905, 1.655389",\
+ "0.396174, 0.578231, 0.774465, 1.083646, 1.678130",\
+ "0.445455, 0.627512, 0.823746, 1.132927, 1.727411",\
+ "0.611357, 0.793415, 0.989649, 1.298831, 1.893319",\
+ "1.197512, 1.379569, 1.575803, 1.884983, 2.479466",\
+ "0.460847, 0.642809, 0.839005, 1.148210, 1.742743",\
+ "0.483588, 0.665550, 0.861746, 1.170951, 1.765483",\
+ "0.532870, 0.714831, 0.911027, 1.220232, 1.814765",\
+ "0.698772, 0.880733, 1.076930, 1.386137, 1.980672",\
+ "1.284926, 1.466888, 1.663084, 1.972288, 2.566819",\
+ "0.541724, 0.723145, 0.919032, 1.228239, 1.822774",\
+ "0.564465, 0.745886, 0.941773, 1.250980, 1.845515",\
+ "0.613746, 0.795168, 0.991054, 1.300261, 1.894796",\
+ "0.779648, 0.961070, 1.156957, 1.466165, 2.060704",\
+ "1.365803, 1.547224, 1.743111, 2.052317, 2.646851",\
+ "0.599370, 0.780982, 0.976767, 1.285709, 1.879870",\
+ "0.622111, 0.803723, 0.999508, 1.308450, 1.902611",\
+ "0.671392, 0.853004, 1.048790, 1.357731, 1.951892",\
+ "0.837295, 1.018907, 1.214692, 1.523636, 2.117800",\
+ "1.423449, 1.605061, 1.800846, 2.109787, 2.703947",\
+ "0.901578, 1.086359, 1.280431, 1.588916, 2.182188",\
+ "0.924319, 1.109100, 1.303172, 1.611657, 2.204929",\
+ "0.973600, 1.158382, 1.352453, 1.660938, 2.254210",\
+ "1.139503, 1.324284, 1.518356, 1.826843, 2.420118",\
+ "1.725657, 1.910438, 2.104510, 2.412994, 3.006265");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444332, 0.444332, 0.444332, 0.444332, 0.444332",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518981",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444332, 0.444332, 0.444332, 0.444332, 0.444332",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518981",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444332, 0.444332, 0.444332, 0.444332, 0.444332",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518981",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444332, 0.444332, 0.444332, 0.444332, 0.444332",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518981",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444332, 0.444332, 0.444332, 0.444332, 0.444332",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518981");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_min_2405*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.422050, 0.681609, 0.953245, 1.409407, 2.320577",\
+ "0.450915, 0.710474, 0.982110, 1.438272, 2.349442",\
+ "0.521957, 0.781516, 1.053152, 1.509314, 2.420484",\
+ "0.778159, 1.037718, 1.309354, 1.765517, 2.676687",\
+ "1.690818, 1.950378, 2.222013, 2.678175, 3.589345",\
+ "0.510155, 0.769142, 1.040774, 1.496122, 2.406510",\
+ "0.539020, 0.798007, 1.069638, 1.524987, 2.435376",\
+ "0.610062, 0.869049, 1.140681, 1.596030, 2.506418",\
+ "0.866264, 1.125251, 1.396883, 1.852232, 2.762620",\
+ "1.778923, 2.037910, 2.309542, 2.764891, 3.675279",\
+ "0.598185, 0.858106, 1.128738, 1.583761, 2.493465",\
+ "0.627050, 0.886971, 1.157603, 1.612626, 2.522331",\
+ "0.698092, 0.958013, 1.228645, 1.683668, 2.593373",\
+ "0.954294, 1.214216, 1.484847, 1.939871, 2.849576",\
+ "1.866953, 2.126875, 2.397506, 2.852530, 3.762234",\
+ "0.660406, 0.923718, 1.192876, 1.647836, 2.556974",\
+ "0.689271, 0.952582, 1.221740, 1.676701, 2.585840",\
+ "0.760313, 1.023625, 1.292783, 1.747743, 2.656882",\
+ "1.016515, 1.279827, 1.548985, 2.003945, 2.913085",\
+ "1.929174, 2.192486, 2.461644, 2.916604, 3.825743",\
+ "0.987793, 1.287766, 1.544618, 1.997222, 2.902431",\
+ "1.016658, 1.316631, 1.573483, 2.026087, 2.931296",\
+ "1.087700, 1.387673, 1.644525, 2.097129, 3.002338",\
+ "1.343903, 1.643875, 1.900728, 2.353332, 3.258541",\
+ "2.256562, 2.556535, 2.813386, 3.265991, 4.171199");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.043742, 0.043742, 0.043742, 0.043743, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223755, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713688, 0.713692, 0.713700",\
+ "2.456796, 2.456795, 2.456792, 2.456783, 2.456766",\
+ "0.043742, 0.043742, 0.043742, 0.043743, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223755, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713688, 0.713692, 0.713700",\
+ "2.456796, 2.456795, 2.456792, 2.456783, 2.456766",\
+ "0.043742, 0.043742, 0.043742, 0.043743, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223755, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713688, 0.713692, 0.713700",\
+ "2.456796, 2.456795, 2.456792, 2.456783, 2.456766",\
+ "0.043742, 0.043742, 0.043742, 0.043743, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223755, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713688, 0.713692, 0.713700",\
+ "2.456796, 2.456795, 2.456792, 2.456783, 2.456766",\
+ "0.043742, 0.043742, 0.043742, 0.043743, 0.043743",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091389",\
+ "0.223754, 0.223754, 0.223755, 0.223755, 0.223756",\
+ "0.713686, 0.713686, 0.713688, 0.713692, 0.713700",\
+ "2.456796, 2.456795, 2.456792, 2.456783, 2.456766");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.371769, 0.553936, 0.750035, 1.059373, 1.654333",\
+ "0.394510, 0.576677, 0.772776, 1.082114, 1.677074",\
+ "0.443791, 0.625958, 0.822057, 1.131395, 1.726356",\
+ "0.609694, 0.791861, 0.987960, 1.297299, 1.892264",\
+ "1.195848, 1.378015, 1.574114, 1.883451, 2.478410",\
+ "0.459189, 0.641255, 0.837315, 1.146678, 1.741687",\
+ "0.481930, 0.663996, 0.860057, 1.169419, 1.764428",\
+ "0.531211, 0.713277, 0.909338, 1.218700, 1.813709",\
+ "0.697114, 0.879180, 1.075240, 1.384604, 1.979617",\
+ "1.283268, 1.465334, 1.661394, 1.970756, 2.565764",\
+ "0.540056, 0.721592, 0.917342, 1.226706, 1.821719",\
+ "0.562797, 0.744333, 0.940084, 1.249447, 1.844460",\
+ "0.612079, 0.793614, 0.989365, 1.298728, 1.893741",\
+ "0.777981, 0.959517, 1.155267, 1.464633, 2.059649",\
+ "1.364136, 1.545671, 1.741421, 2.050785, 2.645795",\
+ "0.597695, 0.779428, 0.975078, 1.284177, 1.878815",\
+ "0.620436, 0.802170, 0.997819, 1.306918, 1.901556",\
+ "0.669718, 0.851451, 1.047100, 1.356200, 1.950837",\
+ "0.835620, 1.017353, 1.213003, 1.522104, 2.116745",\
+ "1.421774, 1.603508, 1.799157, 2.108255, 2.702892",\
+ "0.899790, 1.084807, 1.278741, 1.587385, 2.181135",\
+ "0.922531, 1.107548, 1.301482, 1.610126, 2.203876",\
+ "0.971813, 1.156829, 1.350764, 1.659407, 2.253157",\
+ "1.137715, 1.322732, 1.516666, 1.825311, 2.419065",\
+ "1.723870, 1.908886, 2.102820, 2.411463, 3.005211");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444330, 0.444330, 0.444330, 0.444330, 0.444330",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518982",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444330, 0.444330, 0.444330, 0.444330, 0.444330",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518982",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444330, 0.444330, 0.444330, 0.444330, 0.444330",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518982",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444330, 0.444330, 0.444330, 0.444330, 0.444330",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518982",\
+ "0.037337, 0.037337, 0.037337, 0.037337, 0.037337",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066009",\
+ "0.143976, 0.143976, 0.143976, 0.143976, 0.143976",\
+ "0.444330, 0.444330, 0.444330, 0.444330, 0.444330",\
+ "1.518979, 1.518979, 1.518979, 1.518980, 1.518982");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_min_2343*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.514333, 0.692672, 0.873019, 1.159206, 1.709959",\
+ "0.543198, 0.721537, 0.901884, 1.188071, 1.738824",\
+ "0.614240, 0.792579, 0.972926, 1.259113, 1.809866",\
+ "0.870442, 1.048782, 1.229129, 1.515315, 2.066068",\
+ "1.783101, 1.961441, 2.141788, 2.427974, 2.978728",\
+ "0.599271, 0.777508, 0.958089, 1.244712, 1.796337",\
+ "0.628136, 0.806373, 0.986954, 1.273577, 1.825202",\
+ "0.699178, 0.877415, 1.057996, 1.344619, 1.896244",\
+ "0.955381, 1.133618, 1.314199, 1.600821, 2.152447",\
+ "1.868040, 2.046277, 2.226858, 2.513480, 3.065106",\
+ "0.675178, 0.852952, 1.032898, 1.319309, 1.870510",\
+ "0.704042, 0.881817, 1.061763, 1.348174, 1.899375",\
+ "0.775084, 0.952859, 1.132805, 1.419216, 1.970417",\
+ "1.031287, 1.209061, 1.389008, 1.675418, 2.226619",\
+ "1.943946, 2.121720, 2.301667, 2.588077, 3.139278",\
+ "0.729530, 0.907697, 1.087764, 1.373903, 1.924827",\
+ "0.758394, 0.936562, 1.116628, 1.402767, 1.953692",\
+ "0.829437, 1.007604, 1.187670, 1.473809, 2.024734",\
+ "1.085639, 1.263806, 1.443873, 1.730012, 2.280936",\
+ "1.998298, 2.176466, 2.356532, 2.642671, 3.193595",\
+ "1.010952, 1.193215, 1.371917, 1.657629, 2.208105",\
+ "1.039816, 1.222079, 1.400781, 1.686494, 2.236969",\
+ "1.110858, 1.293122, 1.471824, 1.757536, 2.308012",\
+ "1.367061, 1.549324, 1.728026, 2.013738, 2.564214",\
+ "2.279720, 2.461983, 2.640685, 2.926397, 3.476873");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796",\
+ "0.043742, 0.043742, 0.043742, 0.043742, 0.043742",\
+ "0.091388, 0.091388, 0.091388, 0.091388, 0.091388",\
+ "0.223754, 0.223754, 0.223754, 0.223754, 0.223754",\
+ "0.713686, 0.713686, 0.713686, 0.713686, 0.713686",\
+ "2.456796, 2.456796, 2.456796, 2.456796, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.389041, 0.654041, 0.913070, 1.349334, 2.221481",\
+ "0.411783, 0.676782, 0.935811, 1.372076, 2.244222",\
+ "0.461064, 0.726063, 0.985092, 1.421357, 2.293503",\
+ "0.626966, 0.891965, 1.150995, 1.587259, 2.459406",\
+ "1.213121, 1.478120, 1.737149, 2.173413, 3.045560",\
+ "0.477707, 0.742116, 1.001711, 1.437563, 2.308886",\
+ "0.500448, 0.764857, 1.024452, 1.460304, 2.331627",\
+ "0.549729, 0.814138, 1.073733, 1.509586, 2.380908",\
+ "0.715632, 0.980040, 1.239636, 1.675488, 2.546811",\
+ "1.301786, 1.566195, 1.825790, 2.261642, 3.132965",\
+ "0.570514, 0.835409, 1.093746, 1.529807, 2.401928",\
+ "0.593255, 0.858150, 1.116487, 1.552548, 2.424669",\
+ "0.642536, 0.907431, 1.165769, 1.601829, 2.473950",\
+ "0.808439, 1.073334, 1.331671, 1.767732, 2.639853",\
+ "1.394593, 1.659488, 1.917825, 2.353886, 3.226007",\
+ "0.636236, 0.903943, 1.160801, 1.596813, 2.468838",\
+ "0.658977, 0.926684, 1.183542, 1.619554, 2.491579",\
+ "0.708259, 0.975966, 1.232824, 1.668836, 2.540860",\
+ "0.874161, 1.141868, 1.398726, 1.834738, 2.706763",\
+ "1.460315, 1.728022, 1.984880, 2.420892, 3.292917",\
+ "0.982026, 1.284442, 1.531439, 1.966014, 2.835165",\
+ "1.004767, 1.307183, 1.554181, 1.988755, 2.857906",\
+ "1.054048, 1.356464, 1.603462, 2.038037, 2.907187",\
+ "1.219950, 1.522366, 1.769364, 2.203939, 3.073090",\
+ "1.806105, 2.108521, 2.355518, 2.790093, 3.659244");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979",\
+ "0.037338, 0.037338, 0.037338, 0.037338, 0.037338",\
+ "0.066008, 0.066008, 0.066008, 0.066008, 0.066008",\
+ "0.143978, 0.143978, 0.143978, 0.143978, 0.143978",\
+ "0.444353, 0.444353, 0.444354, 0.444354, 0.444354",\
+ "1.518979, 1.518979, 1.518979, 1.518979, 1.518979");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_min_2288*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.142389, 0.171566, 0.243166, 0.499437, 1.411098",\
+ "0.230574, 0.259751, 0.331362, 0.587680, 1.499024",\
+ "0.318899, 0.348075, 0.419691, 0.676199, 1.587106",\
+ "0.381491, 0.410664, 0.482232, 0.739031, 1.650402",\
+ "0.711374, 0.740537, 0.811930, 1.069170, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.043742, 0.091388, 0.223754, 0.713686, 2.456796",\
+ "0.043742, 0.091388, 0.223754, 0.713686, 2.456796",\
+ "0.043742, 0.091388, 0.223754, 0.713686, 2.456796",\
+ "0.043742, 0.091388, 0.223754, 0.713686, 2.456796",\
+ "0.043742, 0.091388, 0.223754, 0.713686, 2.456796");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.180754, 0.203203, 0.252178, 0.417875, 1.004001",\
+ "0.268158, 0.290607, 0.339581, 0.505279, 1.091404",\
+ "0.349055, 0.371502, 0.420481, 0.586183, 1.172317",\
+ "0.406718, 0.429160, 0.478148, 0.643857, 1.230008",\
+ "0.709074, 0.731508, 0.780524, 0.946302, 1.532625");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.037339, 0.066008, 0.143979, 0.443541, 1.518445",\
+ "0.037339, 0.066008, 0.143979, 0.443540, 1.518445",\
+ "0.037339, 0.066008, 0.143979, 0.443540, 1.518243",\
+ "0.037339, 0.066008, 0.143979, 0.443540, 1.517867",\
+ "0.037339, 0.066008, 0.143978, 0.443540, 1.516694");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[5]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.083777, 0.113177, 0.184363, 0.440561, 1.354954",\
+ "0.166191, 0.195837, 0.267192, 0.523277, 1.434794",\
+ "0.254428, 0.286014, 0.357719, 0.613433, 1.527519",\
+ "0.402853, 0.441150, 0.515777, 0.771236, 1.680856",\
+ "0.639529, 0.694162, 0.784036, 1.036347, 1.943170");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.046241, 0.092638, 0.224458, 0.720967, 2.472405",\
+ "0.047673, 0.093421, 0.224642, 0.721323, 2.472405",\
+ "0.058846, 0.099756, 0.225481, 0.721323, 2.472405",\
+ "0.087693, 0.120786, 0.231211, 0.721323, 2.472405",\
+ "0.150701, 0.177706, 0.265097, 0.721323, 2.472405");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.115523, 0.139488, 0.190373, 0.357311, 0.943250",\
+ "0.195424, 0.220107, 0.270909, 0.437012, 1.024824",\
+ "0.295483, 0.321586, 0.373863, 0.540151, 1.127638",\
+ "0.466222, 0.498877, 0.556261, 0.723129, 1.308255",\
+ "0.739560, 0.788071, 0.862427, 1.035419, 1.617964");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.044606, 0.073777, 0.150227, 0.449909, 1.525255",\
+ "0.044880, 0.073777, 0.150227, 0.449909, 1.525255",\
+ "0.054859, 0.080811, 0.152895, 0.449909, 1.525255",\
+ "0.083786, 0.105188, 0.168383, 0.450518, 1.525255",\
+ "0.145006, 0.165847, 0.216404, 0.463154, 1.525255");
+ }
+
+ } /* end of arc padmux2ast_i[5]_obs_ctrl_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.079158, 0.108043, 0.179215, 0.434173, 1.346996",\
+ "0.161067, 0.189991, 0.261053, 0.516828, 1.426491",\
+ "0.245841, 0.276441, 0.347577, 0.603328, 1.515415",\
+ "0.390269, 0.426632, 0.499915, 0.754138, 1.664120",\
+ "0.617992, 0.669105, 0.755401, 1.006998, 1.912977");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.043983, 0.091336, 0.223341, 0.706536, 2.446538",\
+ "0.045333, 0.091976, 0.223341, 0.711950, 2.446538",\
+ "0.055328, 0.097699, 0.224823, 0.713717, 2.446538",\
+ "0.081572, 0.117377, 0.229870, 0.714277, 2.457507",\
+ "0.139013, 0.170652, 0.260149, 0.718737, 2.457507");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.084172, 0.105801, 0.153856, 0.319168, 0.906380",\
+ "0.169681, 0.191458, 0.239573, 0.404634, 0.995979",\
+ "0.265868, 0.290580, 0.340403, 0.505279, 1.091202",\
+ "0.427357, 0.458965, 0.514692, 0.679112, 1.262906",\
+ "0.687739, 0.736091, 0.809895, 0.982075, 1.563284");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.001502, 0.004741, 0.013323, 0.044638, 0.156168");
+ values ( "0.037000, 0.065831, 0.143664, 0.445190, 1.520147",\
+ "0.037985, 0.066094, 0.143861, 0.445190, 1.520147",\
+ "0.050092, 0.075267, 0.147407, 0.445190, 1.520147",\
+ "0.078605, 0.099932, 0.163006, 0.448532, 1.520147",\
+ "0.139198, 0.159714, 0.210091, 0.458787, 1.520147");
+ }
+
+ } /* end of arc padmux2ast_i[5]_obs_ctrl_o[5]_una_min*/
+
+} /* end of pin obs_ctrl_o[5] */
+
+pin("obs_ctrl_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.156168 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000989 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.556168, 0.736371, 0.923861, 1.225854, 1.809366",\
+ "0.586766, 0.766969, 0.954459, 1.256451, 1.839963",\
+ "0.658595, 0.838798, 1.026288, 1.328280, 1.911792",\
+ "0.915054, 1.095257, 1.282747, 1.584739, 2.168251",\
+ "1.830892, 2.011095, 2.198585, 2.500578, 3.084090",\
+ "0.641107, 0.821654, 1.009870, 1.311866, 1.895744",\
+ "0.671704, 0.852252, 1.040468, 1.342464, 1.926342",\
+ "0.743533, 0.924081, 1.112296, 1.414292, 1.998170",\
+ "0.999992, 1.180540, 1.368755, 1.670752, 2.254630",\
+ "1.915831, 2.096378, 2.284594, 2.586590, 3.170468",\
+ "0.717019, 0.897098, 1.084679, 1.386463, 1.969916",\
+ "0.747616, 0.927695, 1.115276, 1.417060, 2.000514",\
+ "0.819445, 0.999524, 1.187105, 1.488889, 2.072343",\
+ "1.075904, 1.255983, 1.443564, 1.745348, 2.328802",\
+ "1.991743, 2.171822, 2.359403, 2.661187, 3.244640",\
+ "0.771388, 0.951609, 1.139330, 1.441003, 2.024234",\
+ "0.801986, 0.982207, 1.169927, 1.471600, 2.054831",\
+ "0.873814, 1.054036, 1.241756, 1.543429, 2.126660",\
+ "1.130274, 1.310495, 1.498215, 1.799888, 2.383119",\
+ "2.046112, 2.226333, 2.414054, 2.715726, 3.298958",\
+ "1.052983, 1.236877, 1.423280, 1.724729, 2.307511",\
+ "1.083580, 1.267475, 1.453878, 1.755327, 2.338109",\
+ "1.155409, 1.339304, 1.525707, 1.827155, 2.409937",\
+ "1.411868, 1.595763, 1.782166, 2.083614, 2.666397",\
+ "2.327707, 2.511601, 2.698004, 2.999453, 3.582235");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.426989, 0.694775, 0.956355, 1.396052, 2.275447",\
+ "0.452751, 0.720537, 0.982117, 1.421814, 2.301209",\
+ "0.504153, 0.771939, 1.033519, 1.473216, 2.352611",\
+ "0.670963, 0.938748, 1.200328, 1.640025, 2.519420",\
+ "1.261262, 1.529048, 1.790628, 2.230325, 3.109720",\
+ "0.515693, 0.782850, 1.044996, 1.484281, 2.362852",\
+ "0.541455, 0.808612, 1.070758, 1.510043, 2.388614",\
+ "0.592858, 0.860014, 1.122160, 1.561445, 2.440016",\
+ "0.759667, 1.026823, 1.288969, 1.728255, 2.606825",\
+ "1.349967, 1.617123, 1.879269, 2.318554, 3.197125",\
+ "0.608636, 0.875995, 1.136721, 1.576445, 2.455894",\
+ "0.634398, 0.901757, 1.162483, 1.602207, 2.481656",\
+ "0.685800, 0.953159, 1.213886, 1.653610, 2.533058",\
+ "0.852609, 1.119968, 1.380695, 1.820419, 2.699867",\
+ "1.442909, 1.710268, 1.970994, 2.410718, 3.290167",\
+ "0.674479, 0.944559, 1.203741, 1.643296, 2.522405",\
+ "0.700241, 0.970321, 1.229503, 1.669058, 2.548167",\
+ "0.751643, 1.021724, 1.280905, 1.720460, 2.599569",\
+ "0.918453, 1.188533, 1.447715, 1.887269, 2.766378",\
+ "1.508752, 1.778832, 2.038014, 2.477569, 3.356678",\
+ "1.021001, 1.325395, 1.574404, 2.012450, 2.888541",\
+ "1.046763, 1.351157, 1.600166, 2.038211, 2.914303",\
+ "1.098165, 1.402559, 1.651568, 2.089614, 2.965705",\
+ "1.264974, 1.569368, 1.818377, 2.256423, 3.132514",\
+ "1.855274, 2.159668, 2.408677, 2.846723, 3.722814");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_2724*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.464273, 0.727847, 1.004120, 1.472849, 2.410309",\
+ "0.494871, 0.758445, 1.034717, 1.503447, 2.440906",\
+ "0.566700, 0.830273, 1.106546, 1.575275, 2.512735",\
+ "0.823159, 1.086733, 1.363005, 1.831734, 2.769193",\
+ "1.738997, 2.002571, 2.278844, 2.747575, 3.685036",\
+ "0.552468, 0.815388, 1.091687, 1.559565, 2.496242",\
+ "0.583065, 0.845985, 1.122285, 1.590162, 2.526840",\
+ "0.654894, 0.917814, 1.194114, 1.661991, 2.598668",\
+ "0.911353, 1.174273, 1.450573, 1.918450, 2.855127",\
+ "1.827192, 2.090112, 2.366412, 2.834290, 3.770969",\
+ "0.640784, 0.904368, 1.179652, 1.647187, 2.583197",\
+ "0.671381, 0.934966, 1.210250, 1.677785, 2.613795",\
+ "0.743210, 1.006795, 1.282079, 1.749613, 2.685623",\
+ "0.999669, 1.263254, 1.538538, 2.006072, 2.942082",\
+ "1.915508, 2.179092, 2.454377, 2.921913, 3.857924",\
+ "0.703280, 0.970003, 1.243792, 1.711101, 2.646706",\
+ "0.733877, 1.000601, 1.274390, 1.741699, 2.677304",\
+ "0.805706, 1.072430, 1.346218, 1.813527, 2.749132",\
+ "1.062165, 1.328889, 1.602677, 2.069986, 3.005591",\
+ "1.978004, 2.244727, 2.518517, 2.985826, 3.921433",\
+ "1.032405, 1.334334, 1.595659, 2.060451, 2.992162",\
+ "1.063003, 1.364932, 1.626257, 2.091048, 3.022760",\
+ "1.134832, 1.436760, 1.698085, 2.162877, 3.094589",\
+ "1.391291, 1.693219, 1.954545, 2.419336, 3.351047",\
+ "2.307129, 2.609058, 2.870384, 3.335176, 4.266890");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715347, 0.715344, 0.715337",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715347, 0.715344, 0.715337",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715347, 0.715344, 0.715337",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715347, 0.715344, 0.715337",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715347, 0.715344, 0.715337",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.409942, 0.592374, 0.788766, 1.097819, 1.692625",\
+ "0.435704, 0.618136, 0.814528, 1.123581, 1.718389",\
+ "0.487107, 0.669538, 0.865930, 1.174984, 1.769791",\
+ "0.653916, 0.836348, 1.032740, 1.341792, 1.936599",\
+ "1.244215, 1.426647, 1.623039, 1.932092, 2.526900",\
+ "0.497357, 0.679760, 0.876259, 1.185124, 1.779979",\
+ "0.523119, 0.705522, 0.902021, 1.210886, 1.805742",\
+ "0.574521, 0.756924, 0.953424, 1.262289, 1.857144",\
+ "0.741330, 0.923733, 1.120233, 1.429098, 2.023953",\
+ "1.331630, 1.514033, 1.710532, 2.019397, 2.614253",\
+ "0.578233, 0.760096, 0.956286, 1.265153, 1.860010",\
+ "0.603995, 0.785858, 0.982048, 1.290915, 1.885774",\
+ "0.655398, 0.837260, 1.033450, 1.342317, 1.937176",\
+ "0.822207, 1.004070, 1.200260, 1.509126, 2.103984",\
+ "1.412507, 1.594369, 1.790559, 2.099426, 2.694285",\
+ "0.635880, 0.817645, 1.013830, 1.322398, 1.916658",\
+ "0.661642, 0.843407, 1.039592, 1.348160, 1.942421",\
+ "0.713044, 0.894809, 1.090994, 1.399562, 1.993823",\
+ "0.879853, 1.061618, 1.257803, 1.566371, 2.160632",\
+ "1.470153, 1.651918, 1.848103, 2.156671, 2.750932",\
+ "0.938088, 1.122869, 1.317464, 1.625412, 2.218504",\
+ "0.963849, 1.148631, 1.343226, 1.651175, 2.244268",\
+ "1.015252, 1.200033, 1.394628, 1.702577, 2.295670",\
+ "1.182061, 1.366843, 1.561437, 1.869386, 2.462479",\
+ "1.772361, 1.957142, 2.151737, 2.459686, 3.052779");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524057",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524057",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524057",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524057",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524057");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_2651*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.460298, 0.719927, 0.991800, 1.448679, 2.362439",\
+ "0.490896, 0.750525, 1.022397, 1.479277, 2.393037",\
+ "0.562724, 0.822354, 1.094226, 1.551105, 2.464865",\
+ "0.819184, 1.078813, 1.350685, 1.807564, 2.721324",\
+ "1.735022, 1.994652, 2.266525, 2.723405, 3.637166",\
+ "0.548403, 0.807461, 1.079330, 1.535395, 2.448373",\
+ "0.579001, 0.838059, 1.109928, 1.565992, 2.478970",\
+ "0.650829, 0.909887, 1.181756, 1.637821, 2.550799",\
+ "0.907289, 1.166346, 1.438215, 1.894280, 2.807258",\
+ "1.823127, 2.082185, 2.354055, 2.810120, 3.723099",\
+ "0.636433, 0.896427, 1.167294, 1.623017, 2.535328",\
+ "0.667031, 0.927024, 1.197892, 1.653615, 2.565925",\
+ "0.738859, 0.998853, 1.269721, 1.725444, 2.637754",\
+ "0.995319, 1.255312, 1.526180, 1.981903, 2.894213",\
+ "1.911157, 2.171151, 2.442019, 2.897743, 3.810054",\
+ "0.698654, 0.962040, 1.231432, 1.686931, 2.598837",\
+ "0.729252, 0.992638, 1.262030, 1.717529, 2.629434",\
+ "0.801081, 1.064467, 1.333858, 1.789357, 2.701263",\
+ "1.057540, 1.320926, 1.590317, 2.045816, 2.957722",\
+ "1.973378, 2.236765, 2.506157, 2.961657, 3.873563",\
+ "1.026042, 1.326115, 1.583179, 2.036232, 2.944293",\
+ "1.056639, 1.356713, 1.613777, 2.066829, 2.974890",\
+ "1.128468, 1.428541, 1.685606, 2.138658, 3.046719",\
+ "1.384927, 1.685001, 1.942065, 2.395117, 3.303178",\
+ "2.300766, 2.600840, 2.857904, 3.310957, 4.219019");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715346, 0.715340, 0.715328",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217201, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715346, 0.715340, 0.715328",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217201, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715346, 0.715340, 0.715328",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217201, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715346, 0.715340, 0.715328",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217201, 0.217201, 0.217201, 0.217201",\
+ "0.715349, 0.715349, 0.715346, 0.715340, 0.715328",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.408281, 0.590822, 0.787077, 1.096293, 1.691588",\
+ "0.434043, 0.616584, 0.812839, 1.122056, 1.717351",\
+ "0.485445, 0.667986, 0.864241, 1.173458, 1.768753",\
+ "0.652254, 0.834795, 1.031050, 1.340267, 1.935562",\
+ "1.242554, 1.425095, 1.621350, 1.930567, 2.525863",\
+ "0.495701, 0.678207, 0.874570, 1.183598, 1.778941",\
+ "0.521463, 0.703969, 0.900331, 1.209361, 1.804705",\
+ "0.572865, 0.755371, 0.951734, 1.260763, 1.856107",\
+ "0.739674, 0.922180, 1.118543, 1.427572, 2.022916",\
+ "1.329974, 1.512480, 1.708843, 2.017872, 2.613216",\
+ "0.576569, 0.758544, 0.954597, 1.263627, 1.858973",\
+ "0.602330, 0.784306, 0.980358, 1.289389, 1.884737",\
+ "0.653733, 0.835708, 1.031761, 1.340791, 1.936139",\
+ "0.820542, 1.002517, 1.198570, 1.507600, 2.102947",\
+ "1.410842, 1.592817, 1.788870, 2.097900, 2.693248",\
+ "0.634207, 0.816093, 1.012141, 1.320872, 1.915620",\
+ "0.659969, 0.841854, 1.037902, 1.346634, 1.941384",\
+ "0.711372, 0.893257, 1.089304, 1.398036, 1.992786",\
+ "0.878181, 1.060066, 1.256114, 1.564846, 2.159595",\
+ "1.468480, 1.650366, 1.846413, 2.155146, 2.749895",\
+ "0.936303, 1.121319, 1.315774, 1.623887, 2.217467",\
+ "0.962064, 1.147081, 1.341536, 1.649649, 2.243231",\
+ "1.013467, 1.198483, 1.392939, 1.701051, 2.294633",\
+ "1.180276, 1.365292, 1.559748, 1.867860, 2.461442",\
+ "1.770576, 1.955592, 2.150048, 2.458160, 3.051742");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524058",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524058",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524058",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524058",\
+ "0.040698, 0.040698, 0.040698, 0.040699, 0.040699",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070039",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524054, 1.524058");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_2594*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.552582, 0.731009, 0.911269, 1.197475, 1.748592",\
+ "0.583180, 0.761606, 0.941867, 1.228073, 1.779190",\
+ "0.655008, 0.833435, 1.013695, 1.299902, 1.851019",\
+ "0.911468, 1.089894, 1.270155, 1.556361, 2.107478",\
+ "1.827306, 2.005733, 2.185993, 2.472199, 3.023317",\
+ "0.637520, 0.816281, 0.997184, 1.283396, 1.834971",\
+ "0.668118, 0.846879, 1.027782, 1.313993, 1.865568",\
+ "0.739947, 0.918707, 1.099610, 1.385822, 1.937397",\
+ "0.996406, 1.175167, 1.356070, 1.642281, 2.193856",\
+ "1.912244, 2.091005, 2.271908, 2.558120, 3.109695",\
+ "0.713426, 0.891724, 1.071993, 1.357992, 1.909143",\
+ "0.744024, 0.922322, 1.102591, 1.388590, 1.939741",\
+ "0.815853, 0.994151, 1.174419, 1.460419, 2.011569",\
+ "1.072312, 1.250610, 1.430879, 1.716878, 2.268029",\
+ "1.988150, 2.166448, 2.346717, 2.632716, 3.183867",\
+ "0.767778, 0.946236, 1.126644, 1.412532, 1.963460",\
+ "0.798376, 0.976834, 1.157242, 1.443130, 1.994058",\
+ "0.870205, 1.048662, 1.229070, 1.514959, 2.065886",\
+ "1.126664, 1.305122, 1.485530, 1.771418, 2.322346",\
+ "2.042502, 2.220960, 2.401368, 2.687256, 3.238184",\
+ "1.049200, 1.231463, 1.410595, 1.696259, 2.246738",\
+ "1.079798, 1.262061, 1.441192, 1.726856, 2.277336",\
+ "1.151627, 1.333890, 1.513021, 1.798685, 2.349164",\
+ "1.408086, 1.590349, 1.769480, 2.055144, 2.605623",\
+ "2.323924, 2.506187, 2.685318, 2.970983, 3.521462");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218",\
+ "0.040033, 0.040033, 0.040033, 0.040033, 0.040033",\
+ "0.086005, 0.086005, 0.086005, 0.086005, 0.086005",\
+ "0.217202, 0.217202, 0.217202, 0.217202, 0.217202",\
+ "0.715349, 0.715349, 0.715349, 0.715349, 0.715349",\
+ "2.463218, 2.463218, 2.463218, 2.463218, 2.463218");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.425553, 0.690723, 0.949925, 1.386107, 2.258472",\
+ "0.451315, 0.716485, 0.975687, 1.411869, 2.284234",\
+ "0.502717, 0.767887, 1.027089, 1.463271, 2.335637",\
+ "0.669527, 0.934696, 1.193898, 1.630080, 2.502446",\
+ "1.259826, 1.524996, 1.784198, 2.220380, 3.092745",\
+ "0.514219, 0.778798, 1.038566, 1.474336, 2.345878",\
+ "0.539981, 0.804560, 1.064327, 1.500098, 2.371639",\
+ "0.591383, 0.855962, 1.115730, 1.551500, 2.423042",\
+ "0.758192, 1.022771, 1.282539, 1.718309, 2.589851",\
+ "1.348492, 1.613071, 1.872839, 2.308609, 3.180151",\
+ "0.607026, 0.871921, 1.130291, 1.566500, 2.438920",\
+ "0.632787, 0.897683, 1.156053, 1.592262, 2.464681",\
+ "0.684190, 0.949085, 1.207455, 1.643664, 2.516083",\
+ "0.850999, 1.115894, 1.374264, 1.810474, 2.682893",\
+ "1.441299, 1.706194, 1.964564, 2.400774, 3.273192",\
+ "0.672748, 0.940455, 1.197311, 1.633351, 2.505431",\
+ "0.698510, 0.966217, 1.223073, 1.659112, 2.531192",\
+ "0.749912, 1.017619, 1.274475, 1.710515, 2.582595",\
+ "0.916721, 1.184428, 1.441284, 1.877324, 2.749404",\
+ "1.507021, 1.774728, 2.031584, 2.467624, 3.339704",\
+ "1.018538, 1.320954, 1.567941, 2.002482, 2.871564",\
+ "1.044299, 1.346715, 1.593703, 2.028244, 2.897326",\
+ "1.095702, 1.398118, 1.645105, 2.079646, 2.948728",\
+ "1.262511, 1.564927, 1.811914, 2.246455, 3.115537",\
+ "1.852811, 2.155227, 2.402214, 2.836755, 3.705837");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052",\
+ "0.040698, 0.040698, 0.040698, 0.040698, 0.040698",\
+ "0.070039, 0.070039, 0.070039, 0.070039, 0.070038",\
+ "0.145874, 0.145874, 0.145874, 0.145874, 0.145874",\
+ "0.444024, 0.444024, 0.444024, 0.444024, 0.444024",\
+ "1.524052, 1.524052, 1.524052, 1.524052, 1.524052");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_2534*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.319855, 0.350453, 0.422282, 0.678742, 1.594576",\
+ "0.407246, 0.437844, 0.509673, 0.766133, 1.681967",\
+ "0.488165, 0.518763, 0.590592, 0.847052, 1.762885",\
+ "0.545906, 0.576503, 0.648333, 0.904793, 1.820624",\
+ "0.849219, 0.879552, 0.951038, 1.207499, 2.123717");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.040034, 0.086005, 0.217203, 0.715311, 2.463217",\
+ "0.040034, 0.086005, 0.217274, 0.715311, 2.463217",\
+ "0.040034, 0.086006, 0.217512, 0.715311, 2.463317",\
+ "0.040035, 0.086006, 0.217512, 0.715311, 2.463317",\
+ "0.040226, 0.086033, 0.217850, 0.715337, 2.463779");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.305437, 0.331199, 0.382601, 0.549410, 1.139710",\
+ "0.392830, 0.418591, 0.469994, 0.636803, 1.227103",\
+ "0.473699, 0.499461, 0.550863, 0.717672, 1.307972",\
+ "0.531348, 0.557110, 0.608512, 0.775321, 1.365621",\
+ "0.834004, 0.859766, 0.911168, 1.077978, 1.668277");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.040698, 0.070039, 0.145874, 0.444024, 1.524451",\
+ "0.040698, 0.070039, 0.145874, 0.444024, 1.524451",\
+ "0.040698, 0.070039, 0.145874, 0.444024, 1.524451",\
+ "0.040698, 0.070039, 0.145874, 0.444024, 1.524451",\
+ "0.040713, 0.070039, 0.145879, 0.444024, 1.524451");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.513066, 0.693179, 0.880758, 1.182738, 1.765834",\
+ "0.542527, 0.722641, 0.910219, 1.212199, 1.795295",\
+ "0.613598, 0.793711, 0.981290, 1.283270, 1.866366",\
+ "0.869826, 1.049940, 1.237518, 1.539498, 2.122594",\
+ "1.786688, 1.966801, 2.154380, 2.456360, 3.039456",\
+ "0.598004, 0.778015, 0.965828, 1.268244, 1.852212",\
+ "0.627466, 0.807477, 0.995290, 1.297706, 1.881674",\
+ "0.698536, 0.878547, 1.066360, 1.368776, 1.952744",\
+ "0.954764, 1.134775, 1.322588, 1.625004, 2.208972",\
+ "1.871626, 2.051637, 2.239450, 2.541866, 3.125834",\
+ "0.673916, 0.853459, 1.040637, 1.342841, 1.926384",\
+ "0.703378, 0.882920, 1.070099, 1.372302, 1.955846",\
+ "0.774448, 0.953991, 1.141169, 1.443373, 2.026917",\
+ "1.030676, 1.210219, 1.397397, 1.699601, 2.283145",\
+ "1.947538, 2.127081, 2.314259, 2.616463, 3.200006",\
+ "0.728285, 0.908210, 1.095526, 1.397446, 1.980702",\
+ "0.757747, 0.937672, 1.124987, 1.426908, 2.010164",\
+ "0.828817, 1.008742, 1.196058, 1.497978, 2.081234",\
+ "1.085046, 1.264970, 1.452286, 1.754207, 2.337462",\
+ "2.001907, 2.181832, 2.369148, 2.671068, 3.254324",\
+ "1.009880, 1.193775, 1.379701, 1.681172, 2.263979",\
+ "1.039342, 1.223237, 1.409163, 1.710634, 2.293441",\
+ "1.110412, 1.294307, 1.480233, 1.781705, 2.364511",\
+ "1.366640, 1.550535, 1.736461, 2.037933, 2.620739",\
+ "2.283502, 2.467397, 2.653323, 2.954794, 3.537601");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456797, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.386409, 0.654020, 0.915421, 1.355198, 2.234359",\
+ "0.410259, 0.677869, 0.939270, 1.379047, 2.258208",\
+ "0.459812, 0.727422, 0.988823, 1.428600, 2.307761",\
+ "0.625736, 0.893347, 1.154748, 1.594525, 2.473686",\
+ "1.214590, 1.482201, 1.743601, 2.183378, 3.062539",\
+ "0.475113, 0.742095, 1.004062, 1.443427, 2.321764",\
+ "0.498963, 0.765944, 1.027911, 1.467276, 2.345613",\
+ "0.548516, 0.815497, 1.077464, 1.516829, 2.395166",\
+ "0.714441, 0.981422, 1.243389, 1.682754, 2.561091",\
+ "1.303294, 1.570276, 1.832242, 2.271607, 3.149944",\
+ "0.568056, 0.835415, 1.096106, 1.535673, 2.414806",\
+ "0.591905, 0.859264, 1.119956, 1.559522, 2.438655",\
+ "0.641458, 0.908817, 1.169509, 1.609075, 2.488208",\
+ "0.807383, 1.074742, 1.335433, 1.775000, 2.654133",\
+ "1.396236, 1.663596, 1.924287, 2.363853, 3.242986",\
+ "0.633899, 0.903979, 1.163162, 1.602684, 2.481728",\
+ "0.657749, 0.927829, 1.187012, 1.626534, 2.505577",\
+ "0.707301, 0.977382, 1.236565, 1.676086, 2.555130",\
+ "0.873226, 1.143306, 1.402490, 1.842011, 2.721055",\
+ "1.462080, 1.732160, 1.991343, 2.430865, 3.309908",\
+ "0.980421, 1.284815, 1.533833, 1.971910, 2.848063",\
+ "1.004270, 1.308664, 1.557683, 1.995759, 2.871912",\
+ "1.053823, 1.358217, 1.607235, 2.045312, 2.921465",\
+ "1.219748, 1.524142, 1.773160, 2.211237, 3.087390",\
+ "1.808601, 2.112996, 2.362014, 2.800090, 3.676243");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_min_2475*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.421174, 0.684705, 0.960825, 1.428958, 2.363963",\
+ "0.450636, 0.714167, 0.990287, 1.458419, 2.393425",\
+ "0.521706, 0.785238, 1.061357, 1.529490, 2.464495",\
+ "0.777934, 1.041466, 1.317585, 1.785718, 2.720724",\
+ "1.694796, 1.958328, 2.234447, 2.702580, 3.637585",\
+ "0.509368, 0.772246, 1.048392, 1.515673, 2.449897",\
+ "0.538830, 0.801708, 1.077854, 1.545135, 2.479358",\
+ "0.609900, 0.872778, 1.148924, 1.616205, 2.550429",\
+ "0.866129, 1.129006, 1.405152, 1.872433, 2.806657",\
+ "1.782991, 2.045868, 2.322014, 2.789295, 3.723519",\
+ "0.597685, 0.861225, 1.136357, 1.603313, 2.536852",\
+ "0.627146, 0.890687, 1.165819, 1.632775, 2.566314",\
+ "0.698217, 0.961758, 1.236889, 1.703845, 2.637384",\
+ "0.954445, 1.217986, 1.493117, 1.960074, 2.893612",\
+ "1.871307, 2.134848, 2.409979, 2.876935, 3.810474",\
+ "0.660181, 0.926859, 1.200497, 1.667402, 2.600361",\
+ "0.689642, 0.956321, 1.229958, 1.696864, 2.629822",\
+ "0.760713, 1.027391, 1.301029, 1.767934, 2.700893",\
+ "1.016941, 1.283619, 1.557257, 2.024162, 2.957121",\
+ "1.933803, 2.200481, 2.474119, 2.941024, 3.873983",\
+ "0.989306, 1.291174, 1.552361, 2.016846, 2.945817",\
+ "1.018768, 1.320636, 1.581822, 2.046308, 2.975279",\
+ "1.089838, 1.391706, 1.652893, 2.117378, 3.046349",\
+ "1.346066, 1.647934, 1.909121, 2.373606, 3.302577",\
+ "2.262928, 2.564796, 2.825983, 3.290468, 4.219439");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.036484, 0.036484, 0.036484, 0.036485, 0.036485",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705642, 0.705647",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036484, 0.036484, 0.036484, 0.036485, 0.036485",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705642, 0.705647",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036484, 0.036484, 0.036484, 0.036485, 0.036485",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705642, 0.705647",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036484, 0.036484, 0.036484, 0.036485, 0.036485",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705642, 0.705647",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778",\
+ "0.036484, 0.036484, 0.036484, 0.036485, 0.036485",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705642, 0.705647",\
+ "2.456797, 2.456796, 2.456794, 2.456789, 2.456778");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.369364, 0.551422, 0.747656, 1.056837, 1.651321",\
+ "0.393214, 0.575271, 0.771505, 1.080686, 1.675170",\
+ "0.442767, 0.624824, 0.821058, 1.130239, 1.724723",\
+ "0.608691, 0.790749, 0.986983, 1.296166, 1.890653",\
+ "1.197545, 1.379603, 1.575836, 1.885017, 2.479500",\
+ "0.456779, 0.638740, 0.834936, 1.144142, 1.738674",\
+ "0.480629, 0.662590, 0.858786, 1.167991, 1.762524",\
+ "0.530181, 0.712143, 0.908339, 1.217544, 1.812076",\
+ "0.696106, 0.878068, 1.074264, 1.383471, 1.978007",\
+ "1.284960, 1.466921, 1.663117, 1.972322, 2.566853",\
+ "0.537655, 0.719077, 0.914963, 1.224170, 1.818706",\
+ "0.561505, 0.742927, 0.938813, 1.248020, 1.842555",\
+ "0.611058, 0.792479, 0.988366, 1.297573, 1.892108",\
+ "0.776982, 0.958404, 1.154291, 1.463499, 2.058038",\
+ "1.365836, 1.547258, 1.743144, 2.052350, 2.646885",\
+ "0.595302, 0.776914, 0.972699, 1.281641, 1.875802",\
+ "0.619151, 0.800763, 0.996549, 1.305490, 1.899651",\
+ "0.668704, 0.850316, 1.046101, 1.355043, 1.949204",\
+ "0.834629, 1.016241, 1.212026, 1.520970, 2.115134",\
+ "1.423483, 1.605095, 1.800880, 2.109821, 2.703980",\
+ "0.897509, 1.082291, 1.276362, 1.584848, 2.178120",\
+ "0.921359, 1.106141, 1.300212, 1.608697, 2.201969",\
+ "0.970912, 1.155693, 1.349765, 1.658250, 2.251522",\
+ "1.136837, 1.321618, 1.515690, 1.824177, 2.417452",\
+ "1.725690, 1.910472, 2.104543, 2.413028, 3.006299");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439438, 0.439438, 0.439438, 0.439438, 0.439438",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519042",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439438, 0.439438, 0.439438, 0.439438, 0.439438",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519042",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439438, 0.439438, 0.439438, 0.439438, 0.439438",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519042",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439438, 0.439438, 0.439438, 0.439438, 0.439438",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519042",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439438, 0.439438, 0.439438, 0.439438, 0.439438",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519042");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_min_2397*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.417196, 0.676755, 0.948391, 1.404553, 2.315723",\
+ "0.446658, 0.706217, 0.977853, 1.434015, 2.345185",\
+ "0.517728, 0.777287, 1.048923, 1.505085, 2.416255",\
+ "0.773956, 1.033516, 1.305151, 1.761314, 2.672484",\
+ "1.690818, 1.950378, 2.222013, 2.678175, 3.589345",\
+ "0.505301, 0.764288, 1.035920, 1.491269, 2.401657",\
+ "0.534763, 0.793750, 1.065382, 1.520731, 2.431119",\
+ "0.605833, 0.864820, 1.136452, 1.591801, 2.502189",\
+ "0.862061, 1.121048, 1.392680, 1.848029, 2.758418",\
+ "1.778923, 2.037910, 2.309542, 2.764891, 3.675279",\
+ "0.593331, 0.853252, 1.123884, 1.578908, 2.488612",\
+ "0.622793, 0.882714, 1.153346, 1.608370, 2.518074",\
+ "0.693863, 0.953785, 1.224416, 1.679440, 2.589144",\
+ "0.950091, 1.210013, 1.480644, 1.935668, 2.845373",\
+ "1.866953, 2.126875, 2.397506, 2.852530, 3.762234",\
+ "0.655552, 0.918864, 1.188022, 1.642982, 2.552121",\
+ "0.685014, 0.948326, 1.217484, 1.672444, 2.581583",\
+ "0.756084, 1.019396, 1.288554, 1.743514, 2.652653",\
+ "1.012312, 1.275624, 1.544782, 1.999743, 2.908882",\
+ "1.929174, 2.192486, 2.461644, 2.916604, 3.825743",\
+ "0.982940, 1.282912, 1.539764, 1.992368, 2.897577",\
+ "1.012401, 1.312374, 1.569226, 2.021830, 2.927039",\
+ "1.083472, 1.383444, 1.640296, 2.092901, 2.998109",\
+ "1.339700, 1.639673, 1.896525, 2.349129, 3.254338",\
+ "2.256562, 2.556535, 2.813386, 3.265991, 4.171199");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.036484, 0.036484, 0.036485, 0.036485, 0.036486",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705645, 0.705653",\
+ "2.456797, 2.456796, 2.456792, 2.456783, 2.456766",\
+ "0.036484, 0.036484, 0.036485, 0.036485, 0.036486",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705645, 0.705653",\
+ "2.456797, 2.456796, 2.456792, 2.456783, 2.456766",\
+ "0.036484, 0.036484, 0.036485, 0.036485, 0.036486",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705645, 0.705653",\
+ "2.456797, 2.456796, 2.456792, 2.456783, 2.456766",\
+ "0.036484, 0.036484, 0.036485, 0.036485, 0.036486",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705640, 0.705645, 0.705653",\
+ "2.456797, 2.456796, 2.456792, 2.456783, 2.456766",\
+ "0.036484, 0.036484, 0.036485, 0.036485, 0.036486",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215721",\
+ "0.705638, 0.705639, 0.705641, 0.705645, 0.705653",\
+ "2.456797, 2.456795, 2.456792, 2.456783, 2.456766");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.367701, 0.549868, 0.745966, 1.055305, 1.650265",\
+ "0.391550, 0.573717, 0.769816, 1.079154, 1.674115",\
+ "0.441103, 0.623270, 0.819369, 1.128707, 1.723667",\
+ "0.607028, 0.789195, 0.985294, 1.294634, 1.889598",\
+ "1.195881, 1.378049, 1.574147, 1.883484, 2.478444",\
+ "0.455121, 0.637187, 0.833247, 1.142610, 1.737619",\
+ "0.478970, 0.661036, 0.857097, 1.166459, 1.761468",\
+ "0.528523, 0.710589, 0.906649, 1.216012, 1.811021",\
+ "0.694448, 0.876514, 1.072575, 1.381939, 1.976952",\
+ "1.283301, 1.465367, 1.661428, 1.970789, 2.565797",\
+ "0.535988, 0.717524, 0.913274, 1.222638, 1.817651",\
+ "0.559838, 0.741373, 0.937124, 1.246487, 1.841500",\
+ "0.609390, 0.790926, 0.986676, 1.296040, 1.891052",\
+ "0.775315, 0.956851, 1.152602, 1.461967, 2.056983",\
+ "1.364169, 1.545704, 1.741455, 2.050818, 2.645829",\
+ "0.593627, 0.775360, 0.971009, 1.280109, 1.874747",\
+ "0.617477, 0.799210, 0.994859, 1.303958, 1.898596",\
+ "0.667029, 0.848763, 1.044412, 1.353511, 1.948149",\
+ "0.832954, 1.014688, 1.210337, 1.519438, 2.114080",\
+ "1.421808, 1.603541, 1.799190, 2.108289, 2.702925",\
+ "0.895722, 1.080739, 1.274673, 1.583317, 2.177067",\
+ "0.919572, 1.104588, 1.298523, 1.607166, 2.200916",\
+ "0.969124, 1.154141, 1.348075, 1.656719, 2.250468",\
+ "1.135049, 1.320066, 1.514001, 1.822646, 2.416399",\
+ "1.723903, 1.908919, 2.102854, 2.411496, 3.005245");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061454",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439435, 0.439435, 0.439435, 0.439435, 0.439435",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519043",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061454",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439435, 0.439435, 0.439435, 0.439435, 0.439435",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519043",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061454",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439435, 0.439435, 0.439435, 0.439435, 0.439435",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519043",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061454",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439435, 0.439435, 0.439435, 0.439435, 0.439435",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519043",\
+ "0.032902, 0.032902, 0.032902, 0.032902, 0.032902",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061454",\
+ "0.139113, 0.139113, 0.139113, 0.139113, 0.139113",\
+ "0.439435, 0.439435, 0.439435, 0.439435, 0.439435",\
+ "1.519040, 1.519040, 1.519040, 1.519041, 1.519043");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_min_2338*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ related_output_pin : "obs_ctrl_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.509479, 0.687819, 0.868166, 1.154352, 1.705105",\
+ "0.538941, 0.717281, 0.897627, 1.183814, 1.734567",\
+ "0.610011, 0.788351, 0.968698, 1.254884, 1.805637",\
+ "0.866239, 1.044579, 1.224926, 1.511112, 2.061866",\
+ "1.783101, 1.961441, 2.141788, 2.427974, 2.978728",\
+ "0.594418, 0.772655, 0.953236, 1.239858, 1.791484",\
+ "0.623879, 0.802116, 0.982697, 1.269320, 1.820946",\
+ "0.694950, 0.873187, 1.053768, 1.340390, 1.892016",\
+ "0.951178, 1.129415, 1.309996, 1.596619, 2.148244",\
+ "1.868040, 2.046277, 2.226858, 2.513480, 3.065106",\
+ "0.670324, 0.848098, 1.028045, 1.314455, 1.865656",\
+ "0.699786, 0.877560, 1.057506, 1.343917, 1.895118",\
+ "0.770856, 0.948630, 1.128577, 1.414987, 1.966188",\
+ "1.027084, 1.204858, 1.384805, 1.671215, 2.222416",\
+ "1.943946, 2.121720, 2.301667, 2.588077, 3.139278",\
+ "0.724676, 0.902843, 1.082910, 1.369049, 1.919973",\
+ "0.754138, 0.932305, 1.112372, 1.398511, 1.949435",\
+ "0.825208, 1.003376, 1.183442, 1.469581, 2.020505",\
+ "1.081436, 1.259604, 1.439670, 1.725809, 2.276733",\
+ "1.998298, 2.176466, 2.356532, 2.642671, 3.193595",\
+ "1.006098, 1.188361, 1.367063, 1.652775, 2.203251",\
+ "1.035560, 1.217823, 1.396525, 1.682237, 2.232713",\
+ "1.106630, 1.288893, 1.467595, 1.753307, 2.303783",\
+ "1.362858, 1.545121, 1.723823, 2.009535, 2.560011",\
+ "2.279720, 2.461983, 2.640685, 2.926397, 3.476873");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456796, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456796, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456796, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456796, 2.456796",\
+ "0.036484, 0.036484, 0.036484, 0.036484, 0.036484",\
+ "0.083490, 0.083490, 0.083490, 0.083490, 0.083490",\
+ "0.215720, 0.215720, 0.215720, 0.215720, 0.215720",\
+ "0.705638, 0.705638, 0.705638, 0.705638, 0.705639",\
+ "2.456797, 2.456797, 2.456797, 2.456796, 2.456796");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.384973, 0.649972, 0.909002, 1.345266, 2.217413",\
+ "0.408823, 0.673822, 0.932851, 1.369116, 2.241262",\
+ "0.458376, 0.723375, 0.982404, 1.418669, 2.290815",\
+ "0.624300, 0.889300, 1.148329, 1.584594, 2.456740",\
+ "1.213154, 1.478153, 1.737183, 2.173447, 3.045593",\
+ "0.473639, 0.738047, 0.997643, 1.433495, 2.304818",\
+ "0.497488, 0.761897, 1.021492, 1.457345, 2.328667",\
+ "0.547041, 0.811450, 1.071045, 1.506897, 2.378220",\
+ "0.712966, 0.977375, 1.236970, 1.672822, 2.544145",\
+ "1.301819, 1.566228, 1.825824, 2.261676, 3.132998",\
+ "0.566446, 0.831341, 1.089678, 1.525738, 2.397860",\
+ "0.590295, 0.855190, 1.113528, 1.549588, 2.421709",\
+ "0.639848, 0.904743, 1.163080, 1.599141, 2.471262",\
+ "0.805773, 1.070668, 1.329005, 1.765066, 2.637187",\
+ "1.394626, 1.659522, 1.917859, 2.353919, 3.226040",\
+ "0.632168, 0.899875, 1.156733, 1.592745, 2.464769",\
+ "0.656018, 0.923725, 1.180583, 1.616595, 2.488619",\
+ "0.705570, 0.973277, 1.230135, 1.666147, 2.538172",\
+ "0.871495, 1.139202, 1.396060, 1.832072, 2.704097",\
+ "1.460349, 1.728056, 1.984914, 2.420926, 3.292950",\
+ "0.977957, 1.280373, 1.527371, 1.961946, 2.831096",\
+ "1.001807, 1.304223, 1.551221, 1.985796, 2.854946",\
+ "1.051360, 1.353776, 1.600773, 2.035348, 2.904499",\
+ "1.217285, 1.519701, 1.766698, 2.201273, 3.070424",\
+ "1.806138, 2.108554, 2.355552, 2.790127, 3.659277");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ index_3 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040",\
+ "0.032904, 0.032904, 0.032904, 0.032904, 0.032904",\
+ "0.061453, 0.061453, 0.061453, 0.061453, 0.061453",\
+ "0.139114, 0.139114, 0.139114, 0.139114, 0.139114",\
+ "0.439459, 0.439459, 0.439459, 0.439459, 0.439460",\
+ "1.519040, 1.519040, 1.519040, 1.519040, 1.519040");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_min_2281*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.137483, 0.167263, 0.238963, 0.495239, 1.411098",\
+ "0.225669, 0.255448, 0.327158, 0.583483, 1.499024",\
+ "0.313993, 0.343772, 0.415484, 0.672004, 1.587106",\
+ "0.376583, 0.406365, 0.478019, 0.734834, 1.650402",\
+ "0.706456, 0.736253, 0.807711, 1.064965, 1.982165");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.036484, 0.083490, 0.215720, 0.705638, 2.456797",\
+ "0.036484, 0.083490, 0.215720, 0.705638, 2.456797",\
+ "0.036484, 0.083490, 0.215720, 0.705638, 2.456797",\
+ "0.036484, 0.083490, 0.215720, 0.705638, 2.456797",\
+ "0.036484, 0.083490, 0.215720, 0.705638, 2.456797");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.176752, 0.200264, 0.249493, 0.415210, 1.004034",\
+ "0.264156, 0.287668, 0.336897, 0.502613, 1.091438",\
+ "0.345055, 0.368563, 0.417796, 0.583517, 1.172351",\
+ "0.402719, 0.426221, 0.475463, 0.641191, 1.230042",\
+ "0.705079, 0.728567, 0.777838, 0.943636, 1.532658");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.032905, 0.061452, 0.139114, 0.438652, 1.518506",\
+ "0.032905, 0.061452, 0.139114, 0.438651, 1.518506",\
+ "0.032905, 0.061452, 0.139114, 0.438651, 1.518304",\
+ "0.032905, 0.061452, 0.139114, 0.438651, 1.517928",\
+ "0.032905, 0.061452, 0.139114, 0.438651, 1.516755");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.078780, 0.108904, 0.180162, 0.436350, 1.354954",\
+ "0.161131, 0.191551, 0.262992, 0.519079, 1.434794",\
+ "0.248818, 0.281701, 0.353526, 0.609224, 1.527520",\
+ "0.395442, 0.436624, 0.511587, 0.767048, 1.680857",\
+ "0.628254, 0.688519, 0.779900, 1.032171, 1.943170");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.039260, 0.084846, 0.216310, 0.712907, 2.472405",\
+ "0.040828, 0.085695, 0.216652, 0.713345, 2.472405",\
+ "0.053126, 0.092383, 0.217457, 0.713345, 2.472405",\
+ "0.083384, 0.114454, 0.223298, 0.713345, 2.472405",\
+ "0.146832, 0.172946, 0.257648, 0.713345, 2.472405");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.111195, 0.136417, 0.187667, 0.354647, 0.943283",\
+ "0.190886, 0.217040, 0.268217, 0.434338, 1.024857",\
+ "0.290624, 0.318413, 0.371169, 0.537479, 1.127671",\
+ "0.459778, 0.495342, 0.553556, 0.720468, 1.308289",\
+ "0.729543, 0.783345, 0.859617, 1.032769, 1.617997");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.039937, 0.069327, 0.145375, 0.445019, 1.525316",\
+ "0.040361, 0.069327, 0.145375, 0.445019, 1.525316",\
+ "0.050876, 0.076651, 0.148151, 0.445019, 1.525316",\
+ "0.080615, 0.101623, 0.163833, 0.445639, 1.525316",\
+ "0.141343, 0.163058, 0.212463, 0.458329, 1.525316");
+ }
+
+ } /* end of arc padmux2ast_i[4]_obs_ctrl_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.074275, 0.103763, 0.175018, 0.429970, 1.346996",\
+ "0.156202, 0.185726, 0.256855, 0.512618, 1.426492",\
+ "0.240487, 0.272170, 0.343383, 0.599128, 1.515415",\
+ "0.383350, 0.422200, 0.495747, 0.749948, 1.664120",\
+ "0.607487, 0.663633, 0.751277, 1.002826, 1.912977");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.036818, 0.083430, 0.215329, 0.698468, 2.446538",\
+ "0.038327, 0.084129, 0.215329, 0.703907, 2.446538",\
+ "0.049194, 0.090132, 0.216807, 0.705668, 2.446538",\
+ "0.076596, 0.110889, 0.221927, 0.706146, 2.457507",\
+ "0.133978, 0.165656, 0.252644, 0.710730, 2.457507");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.080352, 0.102927, 0.151178, 0.316498, 0.906413",\
+ "0.165823, 0.188579, 0.236900, 0.401944, 0.996012",\
+ "0.261266, 0.287577, 0.337732, 0.502614, 1.091236",\
+ "0.421122, 0.455539, 0.512029, 0.676457, 1.262940",\
+ "0.677737, 0.731402, 0.807099, 0.979432, 1.563317");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000989, 0.004228, 0.012809, 0.044125, 0.156168");
+ values ( "0.032503, 0.061295, 0.138759, 0.440292, 1.520208",\
+ "0.033685, 0.061572, 0.138902, 0.440292, 1.520208",\
+ "0.046324, 0.071119, 0.142587, 0.440292, 1.520208",\
+ "0.075437, 0.096388, 0.158394, 0.443652, 1.520208",\
+ "0.135609, 0.156947, 0.206102, 0.453960, 1.520208");
+ }
+
+ } /* end of arc padmux2ast_i[4]_obs_ctrl_o[4]_una_min*/
+
+} /* end of pin obs_ctrl_o[4] */
+
+pin("obs_ctrl_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.644672 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001495 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.055709, 0.210088, 0.384212, 0.703085, 1.340832",\
+ "0.142647, 0.298162, 0.472853, 0.791314, 1.428237",\
+ "0.229323, 0.390455, 0.564578, 0.883479, 1.521279",\
+ "0.289539, 0.457859, 0.631598, 0.950329, 1.587790",\
+ "0.602001, 0.825705, 1.001142, 1.318707, 1.953837");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.024618, 0.296918, 0.628376, 1.238420, 2.458509",\
+ "0.028418, 0.296918, 0.628376, 1.238420, 2.458509",\
+ "0.041905, 0.299457, 0.628376, 1.238420, 2.458509",\
+ "0.054019, 0.302915, 0.628376, 1.238420, 2.458509",\
+ "0.127335, 0.341609, 0.634026, 1.242336, 2.458956");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.067216, 0.173388, 0.285052, 0.487701, 0.892999",\
+ "0.152154, 0.258224, 0.370122, 0.573207, 0.979377",\
+ "0.227820, 0.333667, 0.444931, 0.647804, 1.053549",\
+ "0.281475, 0.388179, 0.499582, 0.702344, 1.107867",\
+ "0.555896, 0.671760, 0.783533, 0.986070, 1.391144");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.022975, 0.185702, 0.382816, 0.754065, 1.496563",\
+ "0.022975, 0.186685, 0.385279, 0.756173, 1.496563",\
+ "0.023515, 0.186685, 0.385279, 0.756173, 1.496563",\
+ "0.025086, 0.186685, 0.385279, 0.756173, 1.496563",\
+ "0.040851, 0.190393, 0.385279, 0.756173, 1.496563");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.055709, 0.210088, 0.384212, 0.703085, 1.340832",\
+ "0.142647, 0.298162, 0.472853, 0.791314, 1.428237",\
+ "0.229323, 0.390455, 0.564578, 0.883479, 1.521279",\
+ "0.289539, 0.457859, 0.631598, 0.950329, 1.587790",\
+ "0.602001, 0.825705, 1.001142, 1.318707, 1.953837");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.024618, 0.296396, 0.626543, 1.236834, 2.455429",\
+ "0.028418, 0.296396, 0.626543, 1.236834, 2.455429",\
+ "0.041905, 0.299457, 0.628154, 1.237245, 2.455429",\
+ "0.054019, 0.302915, 0.628337, 1.238058, 2.457501",\
+ "0.127335, 0.341609, 0.634026, 1.242336, 2.458956");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.067216, 0.173388, 0.285052, 0.487701, 0.892999",\
+ "0.152154, 0.258224, 0.370122, 0.573207, 0.979377",\
+ "0.227820, 0.333667, 0.444931, 0.647804, 1.053549",\
+ "0.281475, 0.388179, 0.499582, 0.702344, 1.107867",\
+ "0.555896, 0.671760, 0.783533, 0.986070, 1.391144");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001495, 0.074796, 0.162290, 0.323084, 0.644672");
+ values ( "0.022975, 0.185506, 0.382814, 0.754047, 1.494909",\
+ "0.022975, 0.185506, 0.382814, 0.754047, 1.494909",\
+ "0.023515, 0.185506, 0.382814, 0.754047, 1.494909",\
+ "0.025086, 0.186032, 0.383438, 0.754322, 1.494909",\
+ "0.040851, 0.190393, 0.384028, 0.754322, 1.494909");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024618, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.205304, 0.155898, 0.121844, 0.108632, 0.118959",\
+ "0.213705, 0.164299, 0.130245, 0.117033, 0.127360",\
+ "0.286247, 0.236842, 0.202788, 0.189576, 0.199902",\
+ "0.377880, 0.328444, 0.294355, 0.281122, 0.291373",\
+ "0.826990, 0.777305, 0.742923, 0.729519, 0.739150");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022975, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.253248, 0.179609, 0.114078, 0.098860, 0.242765",\
+ "0.260428, 0.186789, 0.121258, 0.106040, 0.249945",\
+ "0.338311, 0.264672, 0.199141, 0.183923, 0.327828",\
+ "0.439285, 0.365564, 0.300030, 0.284860, 0.429362",\
+ "0.945572, 0.871138, 0.805582, 0.790828, 0.940493");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024618, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131653, -0.089547, -0.055448, -0.032345, 0.077315",\
+ "-0.140054, -0.097948, -0.063849, -0.040746, 0.068914",\
+ "-0.212597, -0.170490, -0.136392, -0.113288, -0.003629",\
+ "-0.304160, -0.262036, -0.227893, -0.204765, -0.095035",\
+ "-0.752635, -0.710363, -0.675857, -0.652532, -0.542218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022975, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.160975, -0.096153, -0.041987, -0.003573, 0.191467",\
+ "-0.168149, -0.103327, -0.049161, -0.010747, 0.184293",\
+ "-0.246073, -0.181251, -0.127085, -0.088671, 0.106369",\
+ "-0.346978, -0.282082, -0.227737, -0.189269, 0.005504",\
+ "-0.852619, -0.787096, -0.731202, -0.692284, -0.499800");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[3]_hldr*/
+
+} /* end of pin obs_ctrl_o[3] */
+
+pin("obs_ctrl_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001426 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.046598, 0.200037, 0.375695, 0.698745, 1.344843",\
+ "0.132827, 0.287212, 0.462802, 0.785460, 1.430777",\
+ "0.215641, 0.375341, 0.550758, 0.873083, 1.517732",\
+ "0.273163, 0.439738, 0.614874, 0.936996, 1.581241",\
+ "0.570794, 0.789601, 0.965263, 1.285741, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.021974, 0.297548, 0.631352, 1.248422, 2.482564",\
+ "0.026714, 0.298523, 0.633308, 1.248422, 2.482564",\
+ "0.039895, 0.300798, 0.633344, 1.248422, 2.482564",\
+ "0.051772, 0.304107, 0.633444, 1.248422, 2.482564",\
+ "0.126971, 0.342744, 0.639709, 1.250989, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.066407, 0.172211, 0.283842, 0.488142, 0.896743",\
+ "0.153827, 0.259530, 0.371123, 0.575447, 0.984097",\
+ "0.234160, 0.339867, 0.451150, 0.655476, 1.064128",\
+ "0.290795, 0.397415, 0.508694, 0.712721, 1.120776",\
+ "0.584007, 0.700750, 0.812328, 1.015736, 1.422553");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.023136, 0.186125, 0.386812, 0.759343, 1.504406",\
+ "0.023136, 0.186266, 0.387317, 0.759343, 1.504406",\
+ "0.024272, 0.186266, 0.387317, 0.759343, 1.504406",\
+ "0.026405, 0.186266, 0.387317, 0.759343, 1.504406",\
+ "0.045271, 0.190284, 0.387317, 0.759343, 1.504686");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.046598, 0.200037, 0.375695, 0.698745, 1.344843",\
+ "0.132827, 0.287212, 0.462802, 0.785460, 1.430777",\
+ "0.215641, 0.375341, 0.550758, 0.873083, 1.517732",\
+ "0.273163, 0.439738, 0.614874, 0.936996, 1.581241",\
+ "0.570794, 0.789601, 0.965263, 1.285741, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.021974, 0.297548, 0.631352, 1.247199, 2.473548",\
+ "0.026714, 0.298523, 0.633308, 1.247199, 2.473548",\
+ "0.039895, 0.300798, 0.633344, 1.247274, 2.473548",\
+ "0.051772, 0.304107, 0.633444, 1.248017, 2.473548",\
+ "0.126971, 0.342744, 0.639709, 1.250989, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.066407, 0.172211, 0.283842, 0.488142, 0.896743",\
+ "0.153827, 0.259530, 0.371123, 0.575447, 0.984097",\
+ "0.234160, 0.339867, 0.451150, 0.655476, 1.064128",\
+ "0.290795, 0.397415, 0.508694, 0.712721, 1.120776",\
+ "0.584007, 0.700750, 0.812328, 1.015736, 1.422553");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001426, 0.074424, 0.161572, 0.321718, 0.642011");
+ values ( "0.023136, 0.185331, 0.385307, 0.757114, 1.500729",\
+ "0.023136, 0.185331, 0.385307, 0.757114, 1.500729",\
+ "0.024272, 0.185331, 0.385307, 0.757114, 1.500729",\
+ "0.026405, 0.185943, 0.385763, 0.758015, 1.502520",\
+ "0.045271, 0.190284, 0.385833, 0.758784, 1.504686");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.021974, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215002, 0.169073, 0.138873, 0.127530, 0.141215",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023136, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.249950, 0.174629, 0.106470, 0.083503, 0.146416",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.021974, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.146929, -0.104512, -0.070025, -0.030602, 0.275445",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023136, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163106, -0.097191, -0.039532, 0.002429, 0.223037",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[2]_hldr*/
+
+} /* end of pin obs_ctrl_o[2] */
+
+pin("obs_ctrl_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001497 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.046791, 0.200181, 0.375803, 0.698817, 1.344843",\
+ "0.133030, 0.287356, 0.462909, 0.785532, 1.430777",\
+ "0.215892, 0.375484, 0.550866, 0.873154, 1.517732",\
+ "0.273461, 0.439881, 0.614982, 0.937068, 1.581241",\
+ "0.571381, 0.789745, 0.965369, 1.285812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.022232, 0.297820, 0.631558, 1.248559, 2.482564",\
+ "0.026946, 0.298797, 0.633513, 1.248559, 2.482564",\
+ "0.040098, 0.301070, 0.633549, 1.248559, 2.482564",\
+ "0.051979, 0.304374, 0.633649, 1.248559, 2.482564",\
+ "0.127230, 0.342977, 0.639913, 1.251125, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.066637, 0.172312, 0.283920, 0.488198, 0.896753",\
+ "0.154052, 0.259631, 0.371201, 0.575503, 0.984106",\
+ "0.234393, 0.339967, 0.451228, 0.655531, 1.064138",\
+ "0.291040, 0.397516, 0.508771, 0.712776, 1.120786",\
+ "0.584372, 0.700851, 0.812405, 1.015791, 1.422562");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.023343, 0.186306, 0.386954, 0.759444, 1.504424",\
+ "0.023343, 0.186447, 0.387459, 0.759444, 1.504424",\
+ "0.024480, 0.186447, 0.387459, 0.759444, 1.504424",\
+ "0.026601, 0.186447, 0.387459, 0.759444, 1.504424",\
+ "0.045445, 0.190459, 0.387459, 0.759444, 1.504704");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.046791, 0.200181, 0.375803, 0.698817, 1.344843",\
+ "0.133030, 0.287356, 0.462909, 0.785532, 1.430777",\
+ "0.215892, 0.375484, 0.550866, 0.873154, 1.517732",\
+ "0.273461, 0.439881, 0.614982, 0.937068, 1.581241",\
+ "0.571381, 0.789745, 0.965369, 1.285812, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.022232, 0.297820, 0.631558, 1.247336, 2.473548",\
+ "0.026946, 0.298797, 0.633513, 1.247336, 2.473548",\
+ "0.040098, 0.301070, 0.633549, 1.247411, 2.473548",\
+ "0.051979, 0.304374, 0.633649, 1.248154, 2.473548",\
+ "0.127230, 0.342977, 0.639913, 1.251125, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.066637, 0.172312, 0.283920, 0.488198, 0.896753",\
+ "0.154052, 0.259631, 0.371201, 0.575503, 0.984106",\
+ "0.234393, 0.339967, 0.451228, 0.655531, 1.064138",\
+ "0.291040, 0.397516, 0.508771, 0.712776, 1.120786",\
+ "0.584372, 0.700851, 0.812405, 1.015791, 1.422562");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001497, 0.074496, 0.161626, 0.321754, 0.642011");
+ values ( "0.023343, 0.185511, 0.385448, 0.757215, 1.500747",\
+ "0.023343, 0.185511, 0.385448, 0.757215, 1.500747",\
+ "0.024480, 0.185511, 0.385448, 0.757215, 1.500747",\
+ "0.026601, 0.186123, 0.385904, 0.758116, 1.502538",\
+ "0.045445, 0.190459, 0.385975, 0.758885, 1.504704");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022232, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215122, 0.169193, 0.138993, 0.127649, 0.141334",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023343, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250044, 0.174723, 0.106564, 0.083596, 0.146510",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022232, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147049, -0.104632, -0.070145, -0.030722, 0.275326",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.023343, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163200, -0.097285, -0.039626, 0.002335, 0.222943",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[1]_hldr*/
+
+} /* end of pin obs_ctrl_o[1] */
+
+pin("obs_ctrl_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.644672 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.001493 ;
+
+ /* Other user defined attributes. */
+ original_pin : obs_ctrl_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.055703, 0.210083, 0.384209, 0.703083, 1.340832",\
+ "0.142641, 0.298158, 0.472850, 0.791312, 1.428237",\
+ "0.229315, 0.390451, 0.564575, 0.883476, 1.521279",\
+ "0.289529, 0.457854, 0.631595, 0.950327, 1.587790",\
+ "0.601982, 0.825701, 1.001139, 1.318705, 1.953837");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.024610, 0.296910, 0.628369, 1.238416, 2.458509",\
+ "0.028411, 0.296910, 0.628369, 1.238416, 2.458509",\
+ "0.041899, 0.299449, 0.628369, 1.238416, 2.458509",\
+ "0.054012, 0.302907, 0.628369, 1.238416, 2.458509",\
+ "0.127326, 0.341602, 0.634020, 1.242332, 2.458956");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.067218, 0.173389, 0.285054, 0.487703, 0.893002",\
+ "0.152156, 0.258225, 0.370124, 0.573210, 0.979381",\
+ "0.227822, 0.333668, 0.444933, 0.647806, 1.053553",\
+ "0.281477, 0.388180, 0.499584, 0.702346, 1.107870",\
+ "0.555899, 0.671761, 0.783535, 0.986072, 1.391148");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.022977, 0.185704, 0.382820, 0.754070, 1.496570",\
+ "0.022977, 0.186687, 0.385282, 0.756178, 1.496570",\
+ "0.023517, 0.186687, 0.385282, 0.756178, 1.496570",\
+ "0.025088, 0.186687, 0.385282, 0.756178, 1.496570",\
+ "0.040853, 0.190395, 0.385282, 0.756178, 1.496570");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.055703, 0.210083, 0.384209, 0.703083, 1.340832",\
+ "0.142641, 0.298158, 0.472850, 0.791312, 1.428237",\
+ "0.229315, 0.390451, 0.564575, 0.883476, 1.521279",\
+ "0.289529, 0.457854, 0.631595, 0.950327, 1.587790",\
+ "0.601982, 0.825701, 1.001139, 1.318705, 1.953837");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.024610, 0.296388, 0.626537, 1.236829, 2.455429",\
+ "0.028411, 0.296388, 0.626537, 1.236829, 2.455429",\
+ "0.041899, 0.299449, 0.628148, 1.237241, 2.455429",\
+ "0.054012, 0.302907, 0.628330, 1.238054, 2.457501",\
+ "0.127326, 0.341602, 0.634020, 1.242332, 2.458956");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.067218, 0.173389, 0.285054, 0.487703, 0.893002",\
+ "0.152156, 0.258225, 0.370124, 0.573210, 0.979381",\
+ "0.227822, 0.333668, 0.444933, 0.647806, 1.053553",\
+ "0.281477, 0.388180, 0.499584, 0.702346, 1.107870",\
+ "0.555899, 0.671761, 0.783535, 0.986072, 1.391148");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.001493, 0.074794, 0.162288, 0.323083, 0.644672");
+ values ( "0.022977, 0.185508, 0.382818, 0.754052, 1.494916",\
+ "0.022977, 0.185508, 0.382818, 0.754052, 1.494916",\
+ "0.023517, 0.185508, 0.382818, 0.754052, 1.494916",\
+ "0.025088, 0.186034, 0.383442, 0.754326, 1.494916",\
+ "0.040853, 0.190395, 0.384031, 0.754326, 1.494916");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.205304, 0.155898, 0.121844, 0.108632, 0.118959",\
+ "0.213701, 0.164296, 0.130242, 0.117030, 0.127356",\
+ "0.286247, 0.236842, 0.202788, 0.189576, 0.199902",\
+ "0.377880, 0.328444, 0.294355, 0.281122, 0.291373",\
+ "0.826990, 0.777305, 0.742923, 0.729519, 0.739150");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022977, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.253248, 0.179609, 0.114078, 0.098860, 0.242765",\
+ "0.260429, 0.186790, 0.121259, 0.106041, 0.249946",\
+ "0.338311, 0.264672, 0.199141, 0.183923, 0.327828",\
+ "0.439285, 0.365564, 0.300030, 0.284860, 0.429362",\
+ "0.945572, 0.871138, 0.805582, 0.790828, 0.940493");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.131653, -0.089547, -0.055448, -0.032345, 0.077315",\
+ "-0.140051, -0.097944, -0.063846, -0.040742, 0.068917",\
+ "-0.212597, -0.170490, -0.136392, -0.113288, -0.003629",\
+ "-0.304160, -0.262036, -0.227893, -0.204765, -0.095035",\
+ "-0.752635, -0.710363, -0.675857, -0.652532, -0.542218");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.022977, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.160975, -0.096153, -0.041987, -0.003573, 0.191467",\
+ "-0.168150, -0.103328, -0.049162, -0.010747, 0.184292",\
+ "-0.246073, -0.181251, -0.127085, -0.088671, 0.106369",\
+ "-0.346978, -0.282082, -0.227737, -0.189269, 0.005504",\
+ "-0.852619, -0.787096, -0.731202, -0.692284, -0.499800");
+ }
+
+ } /* end of arc clk_ast_tlul_i_obs_ctrl_o[0]_hldr*/
+
+} /* end of pin obs_ctrl_o[0] */
+} /* end of bus obs_ctrl_o */
+bus ( padmux2ast_i ) {
+
+ bus_type : BUS9_type16 ;
+ direction : input ;
+
+pin("padmux2ast_i[8]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001547 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[8];
+} /* end of pin padmux2ast_i[8] */
+
+pin("padmux2ast_i[7]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001037 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[7];
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.599931, 0.560765, 0.510135, 0.511231, 0.524547",\
+ "0.684459, 0.645293, 0.594663, 0.595759, 0.609075",\
+ "0.775549, 0.736383, 0.685753, 0.686849, 0.700165",\
+ "0.937661, 0.898495, 0.847865, 0.848961, 0.862277",\
+ "1.209352, 1.170186, 1.119556, 1.120651, 1.133968");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.507406, 0.449725, 0.394624, 0.395719, 0.409035",\
+ "0.595359, 0.537678, 0.482576, 0.483672, 0.496988",\
+ "0.695327, 0.637646, 0.582544, 0.583640, 0.596956",\
+ "0.879705, 0.822024, 0.766922, 0.768018, 0.781334",\
+ "1.197915, 1.140234, 1.085132, 1.086228, 1.099544");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.288273, -0.255190, -0.196555, -0.182927, -0.017307",\
+ "-0.372801, -0.339718, -0.281083, -0.267455, -0.101836",\
+ "-0.463895, -0.430812, -0.372177, -0.358549, -0.192930",\
+ "-0.625950, -0.592867, -0.534232, -0.520604, -0.354985",\
+ "-0.897654, -0.864571, -0.805936, -0.792308, -0.626688");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-0.249551, -0.198552, -0.102091, -0.083944, 0.136600",\
+ "-0.337500, -0.286501, -0.190040, -0.171892, 0.048652",\
+ "-0.437474, -0.386475, -0.290014, -0.271866, -0.051323",\
+ "-0.621823, -0.570824, -0.474363, -0.456216, -0.235672",\
+ "-0.940049, -0.889050, -0.792589, -0.774441, -0.553897");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[7]_hldr*/
+
+} /* end of pin padmux2ast_i[7] */
+
+pin("padmux2ast_i[6]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001036 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[6];
+} /* end of pin padmux2ast_i[6] */
+
+pin("padmux2ast_i[5]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001070 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[5];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590008.937500, 590008.875000, 590008.812500, 590008.812500, 590008.812500",\
+ "590009.062500, 590009.000000, 590008.937500, 590008.937500, 590008.937500",\
+ "590009.062500, 590009.000000, 590008.937500, 590008.937500, 590008.937500",\
+ "590009.187500, 590009.125000, 590009.062500, 590009.062500, 590009.062500",\
+ "590009.437500, 590009.375000, 590009.312500, 590009.312500, 590009.312500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590007.187500, 590007.125000, 590007.062500, 590007.062500, 590007.062500",\
+ "590007.312500, 590007.250000, 590007.187500, 590007.187500, 590007.187500",\
+ "590007.437500, 590007.375000, 590007.312500, 590007.312500, 590007.312500",\
+ "590007.562500, 590007.500000, 590007.437500, 590007.437500, 590007.437500",\
+ "590007.937500, 590007.875000, 590007.812500, 590007.812500, 590007.812500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590008.312500, -590008.250000, -590008.250000, -590008.125000, -590007.875000",\
+ "-590008.312500, -590008.250000, -590008.250000, -590008.125000, -590007.875000",\
+ "-590008.437500, -590008.375000, -590008.375000, -590008.250000, -590008.000000",\
+ "-590008.562500, -590008.500000, -590008.500000, -590008.375000, -590008.125000",\
+ "-590008.812500, -590008.750000, -590008.750000, -590008.625000, -590008.375000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590006.625000, -590006.562500, -590006.500000, -590006.375000, -590006.250000",\
+ "-590006.750000, -590006.687500, -590006.625000, -590006.500000, -590006.375000",\
+ "-590006.875000, -590006.812500, -590006.750000, -590006.625000, -590006.500000",\
+ "-590007.000000, -590006.937500, -590006.875000, -590006.750000, -590006.625000",\
+ "-590007.250000, -590007.187500, -590007.125000, -590007.000000, -590006.875000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590008.812500, 590008.750000, 590008.750000, 590008.750000, 590008.750000",\
+ "590008.937500, 590008.875000, 590008.875000, 590008.875000, 590008.875000",\
+ "590008.937500, 590008.875000, 590008.875000, 590008.875000, 590008.875000",\
+ "590009.062500, 590009.000000, 590009.000000, 590009.000000, 590009.000000",\
+ "590009.312500, 590009.250000, 590009.250000, 590009.250000, 590009.250000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590007.312500, 590007.312500, 590007.250000, 590007.250000, 590007.312500",\
+ "590007.437500, 590007.437500, 590007.375000, 590007.375000, 590007.437500",\
+ "590007.562500, 590007.562500, 590007.500000, 590007.500000, 590007.562500",\
+ "590007.687500, 590007.687500, 590007.625000, 590007.625000, 590007.687500",\
+ "590008.062500, 590008.062500, 590008.000000, 590008.000000, 590008.062500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590007.250000, -590007.250000, -590007.187500, -590007.125000, -590007.000000",\
+ "-590007.250000, -590007.250000, -590007.187500, -590007.125000, -590007.000000",\
+ "-590007.375000, -590007.375000, -590007.312500, -590007.250000, -590007.125000",\
+ "-590007.500000, -590007.500000, -590007.437500, -590007.375000, -590007.250000",\
+ "-590007.750000, -590007.750000, -590007.687500, -590007.625000, -590007.500000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590007.125000, -590007.125000, -590007.062500, -590007.000000, -590006.875000",\
+ "-590007.250000, -590007.250000, -590007.187500, -590007.125000, -590007.000000",\
+ "-590007.375000, -590007.375000, -590007.312500, -590007.250000, -590007.125000",\
+ "-590007.500000, -590007.500000, -590007.437500, -590007.375000, -590007.250000",\
+ "-590007.750000, -590007.750000, -590007.687500, -590007.625000, -590007.500000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_remfr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590008.437500, 590008.437500, 590008.437500, 590008.500000, 590008.812500",\
+ "590008.562500, 590008.562500, 590008.562500, 590008.625000, 590008.937500",\
+ "590008.562500, 590008.562500, 590008.562500, 590008.625000, 590008.937500",\
+ "590008.687500, 590008.687500, 590008.687500, 590008.750000, 590009.062500",\
+ "590008.937500, 590008.937500, 590008.937500, 590009.000000, 590009.312500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590006.687500, 590006.687500, 590006.687500, 590006.687500, 590006.687500",\
+ "590006.812500, 590006.812500, 590006.812500, 590006.812500, 590006.812500",\
+ "590006.937500, 590006.937500, 590006.937500, 590006.937500, 590006.937500",\
+ "590007.062500, 590007.062500, 590007.062500, 590007.062500, 590007.062500",\
+ "590007.437500, 590007.437500, 590007.437500, 590007.437500, 590007.437500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_cgsr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590008.250000, 590008.250000, 590008.250000, 590008.250000, 590008.250000",\
+ "590008.375000, 590008.375000, 590008.375000, 590008.375000, 590008.375000",\
+ "590008.375000, 590008.375000, 590008.375000, 590008.375000, 590008.375000",\
+ "590008.500000, 590008.500000, 590008.500000, 590008.500000, 590008.500000",\
+ "590008.750000, 590008.750000, 590008.750000, 590008.750000, 590008.750000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "590006.562500, 590006.562500, 590006.562500, 590006.562500, 590006.562500",\
+ "590006.687500, 590006.687500, 590006.687500, 590006.687500, 590006.687500",\
+ "590006.812500, 590006.812500, 590006.812500, 590006.812500, 590006.812500",\
+ "590006.937500, 590006.937500, 590006.937500, 590006.937500, 590006.937500",\
+ "590007.312500, 590007.312500, 590007.312500, 590007.312500, 590007.312500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590008.250000, -590008.250000, -590008.250000, -590008.187500, -590008.062500",\
+ "-590008.250000, -590008.250000, -590008.250000, -590008.187500, -590008.062500",\
+ "-590008.375000, -590008.375000, -590008.375000, -590008.312500, -590008.187500",\
+ "-590008.500000, -590008.500000, -590008.500000, -590008.437500, -590008.312500",\
+ "-590008.750000, -590008.750000, -590008.750000, -590008.687500, -590008.562500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590006.562500, -590006.562500, -590006.437500, -590006.312500, -590006.062500",\
+ "-590006.687500, -590006.687500, -590006.562500, -590006.437500, -590006.187500",\
+ "-590006.812500, -590006.812500, -590006.687500, -590006.562500, -590006.312500",\
+ "-590006.937500, -590006.937500, -590006.812500, -590006.687500, -590006.437500",\
+ "-590007.187500, -590007.187500, -590007.062500, -590006.937500, -590006.687500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_cghr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590008.250000, -590008.250000, -590008.250000, -590008.250000, -590008.250000",\
+ "-590008.250000, -590008.250000, -590008.250000, -590008.250000, -590008.250000",\
+ "-590008.375000, -590008.375000, -590008.375000, -590008.375000, -590008.375000",\
+ "-590008.500000, -590008.500000, -590008.500000, -590008.500000, -590008.500000",\
+ "-590008.750000, -590008.750000, -590008.750000, -590008.750000, -590008.750000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-590006.562500, -590006.562500, -590006.562500, -590006.562500, -590006.562500",\
+ "-590006.687500, -590006.687500, -590006.687500, -590006.687500, -590006.687500",\
+ "-590006.812500, -590006.812500, -590006.812500, -590006.812500, -590006.812500",\
+ "-590006.937500, -590006.937500, -590006.937500, -590006.937500, -590006.937500",\
+ "-590007.187500, -590007.187500, -590007.187500, -590007.187500, -590007.187500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[5]_cghf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "590011.500000, 590010.062500, 590009.187500, 590008.812500, 590008.750000",\
+ "590011.625000, 590010.187500, 590009.312500, 590008.937500, 590008.875000",\
+ "590011.625000, 590010.187500, 590009.312500, 590008.937500, 590008.875000",\
+ "590011.750000, 590010.312500, 590009.437500, 590009.062500, 590009.000000",\
+ "590012.000000, 590010.562500, 590009.687500, 590009.312500, 590009.250000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[5]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-590006.562500, -590006.437500, -590006.375000, -590006.375000, -590006.312500",\
+ "-590006.562500, -590006.437500, -590006.375000, -590006.375000, -590006.312500",\
+ "-590006.687500, -590006.562500, -590006.500000, -590006.500000, -590006.437500",\
+ "-590006.812500, -590006.687500, -590006.625000, -590006.625000, -590006.562500",\
+ "-590007.062500, -590006.937500, -590006.875000, -590006.875000, -590006.812500");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[5]_remrr*/
+
+} /* end of pin padmux2ast_i[5] */
+
+pin("padmux2ast_i[4]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001489 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[4];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970007.437500, 970007.375000, 970007.312500, 970007.312500, 970007.312500",\
+ "970007.562500, 970007.500000, 970007.437500, 970007.437500, 970007.437500",\
+ "970007.562500, 970007.500000, 970007.437500, 970007.437500, 970007.437500",\
+ "970007.812500, 970007.750000, 970007.687500, 970007.687500, 970007.687500",\
+ "970008.062500, 970008.000000, 970007.937500, 970007.937500, 970007.937500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970010.562500, 970010.500000, 970010.437500, 970010.437500, 970010.437500",\
+ "970010.687500, 970010.625000, 970010.562500, 970010.562500, 970010.562500",\
+ "970010.812500, 970010.750000, 970010.687500, 970010.687500, 970010.687500",\
+ "970011.062500, 970011.000000, 970010.937500, 970010.937500, 970010.937500",\
+ "970011.312500, 970011.250000, 970011.187500, 970011.187500, 970011.187500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "380000.312500, 380000.312500, 380000.312500, 380000.312500, 380000.312500",\
+ "380000.406250, 380000.406250, 380000.406250, 380000.406250, 380000.406250",\
+ "380000.500000, 380000.500000, 380000.500000, 380000.500000, 380000.500000",\
+ "380000.656250, 380000.656250, 380000.656250, 380000.656250, 380000.656250",\
+ "380000.906250, 380000.906250, 380000.906250, 380000.906250, 380000.906250");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "380001.843750, 380001.843750, 380001.843750, 380001.843750, 380001.843750",\
+ "380001.937500, 380001.937500, 380001.937500, 380001.937500, 380001.937500",\
+ "380002.062500, 380002.062500, 380002.062500, 380002.062500, 380002.062500",\
+ "380002.250000, 380002.250000, 380002.250000, 380002.250000, 380002.250000",\
+ "380002.562500, 380002.562500, 380002.562500, 380002.562500, 380002.562500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_stupf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.375000, -380000.312500, -380000.281250, -380000.187500, -379999.906250",\
+ "-380000.468750, -380000.406250, -380000.375000, -380000.281250, -380000.000000",\
+ "-380000.531250, -380000.468750, -380000.437500, -380000.343750, -380000.062500",\
+ "-380000.687500, -380000.625000, -380000.593750, -380000.500000, -380000.218750",\
+ "-380000.906250, -380000.843750, -380000.812500, -380000.718750, -380000.437500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.750000, -380001.687500, -380001.656250, -380001.562500, -380001.375000",\
+ "-380001.843750, -380001.781250, -380001.750000, -380001.656250, -380001.468750",\
+ "-380001.937500, -380001.875000, -380001.843750, -380001.750000, -380001.562500",\
+ "-380002.125000, -380002.062500, -380002.031250, -380001.937500, -380001.750000",\
+ "-380002.375000, -380002.312500, -380002.281250, -380002.187500, -380002.000000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.281250, -380000.281250, -380000.281250, -380000.281250, -380000.281250",\
+ "-380000.375000, -380000.375000, -380000.375000, -380000.375000, -380000.375000",\
+ "-380000.437500, -380000.437500, -380000.437500, -380000.437500, -380000.437500",\
+ "-380000.593750, -380000.593750, -380000.593750, -380000.593750, -380000.593750",\
+ "-380000.812500, -380000.812500, -380000.812500, -380000.812500, -380000.812500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.750000, -380001.750000, -380001.750000, -380001.750000, -380001.750000",\
+ "-380001.843750, -380001.843750, -380001.843750, -380001.843750, -380001.843750",\
+ "-380001.937500, -380001.937500, -380001.937500, -380001.937500, -380001.937500",\
+ "-380002.125000, -380002.125000, -380002.125000, -380002.125000, -380002.125000",\
+ "-380002.375000, -380002.375000, -380002.375000, -380002.375000, -380002.375000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_hldf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970007.625000, 970007.562500, 970007.500000, 970007.500000, 970007.562500",\
+ "970007.750000, 970007.687500, 970007.625000, 970007.625000, 970007.687500",\
+ "970007.750000, 970007.687500, 970007.625000, 970007.625000, 970007.687500",\
+ "970008.000000, 970007.937500, 970007.875000, 970007.875000, 970007.937500",\
+ "970008.250000, 970008.187500, 970008.125000, 970008.125000, 970008.187500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970010.437500, 970010.375000, 970010.375000, 970010.375000, 970010.375000",\
+ "970010.562500, 970010.500000, 970010.500000, 970010.500000, 970010.500000",\
+ "970010.687500, 970010.625000, 970010.625000, 970010.625000, 970010.625000",\
+ "970010.937500, 970010.875000, 970010.875000, 970010.875000, 970010.875000",\
+ "970011.187500, 970011.125000, 970011.125000, 970011.125000, 970011.125000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "380000.500000, 380000.500000, 380000.500000, 380000.500000, 380000.500000",\
+ "380000.593750, 380000.593750, 380000.593750, 380000.593750, 380000.593750",\
+ "380000.687500, 380000.687500, 380000.687500, 380000.687500, 380000.687500",\
+ "380000.843750, 380000.843750, 380000.843750, 380000.843750, 380000.843750",\
+ "380001.093750, 380001.093750, 380001.093750, 380001.093750, 380001.093750");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_recrf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_falling ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "380001.937500, 380001.937500, 380001.937500, 380001.937500, 380001.937500",\
+ "380002.031250, 380002.031250, 380002.031250, 380002.031250, 380002.031250",\
+ "380002.156250, 380002.156250, 380002.156250, 380002.156250, 380002.156250",\
+ "380002.343750, 380002.343750, 380002.343750, 380002.343750, 380002.343750",\
+ "380002.656250, 380002.656250, 380002.656250, 380002.656250, 380002.656250");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_recff*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.375000, -380000.343750, -380000.281250, -380000.250000, -380000.125000",\
+ "-380000.468750, -380000.437500, -380000.375000, -380000.343750, -380000.218750",\
+ "-380000.531250, -380000.500000, -380000.437500, -380000.406250, -380000.281250",\
+ "-380000.687500, -380000.656250, -380000.593750, -380000.562500, -380000.437500",\
+ "-380000.906250, -380000.875000, -380000.812500, -380000.781250, -380000.656250");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.812500, -380001.781250, -380001.718750, -380001.687500, -380001.593750",\
+ "-380001.906250, -380001.875000, -380001.812500, -380001.781250, -380001.687500",\
+ "-380002.000000, -380001.968750, -380001.906250, -380001.875000, -380001.781250",\
+ "-380002.187500, -380002.156250, -380002.093750, -380002.062500, -380001.968750",\
+ "-380002.437500, -380002.406250, -380002.343750, -380002.312500, -380002.218750");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_remfr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.312500, -380000.312500, -380000.312500, -380000.312500, -380000.312500",\
+ "-380000.406250, -380000.406250, -380000.406250, -380000.406250, -380000.406250",\
+ "-380000.468750, -380000.468750, -380000.468750, -380000.468750, -380000.468750",\
+ "-380000.625000, -380000.625000, -380000.625000, -380000.625000, -380000.625000",\
+ "-380000.843750, -380000.843750, -380000.843750, -380000.843750, -380000.843750");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_remrf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_falling ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.750000, -380001.750000, -380001.750000, -380001.750000, -380001.750000",\
+ "-380001.843750, -380001.843750, -380001.843750, -380001.843750, -380001.843750",\
+ "-380001.937500, -380001.937500, -380001.937500, -380001.937500, -380001.937500",\
+ "-380002.125000, -380002.125000, -380002.125000, -380002.125000, -380002.125000",\
+ "-380002.375000, -380002.375000, -380002.375000, -380002.375000, -380002.375000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_remff*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970006.937500, 970006.937500, 970006.937500, 970006.937500, 970006.937500",\
+ "970007.062500, 970007.062500, 970007.062500, 970007.062500, 970007.062500",\
+ "970007.062500, 970007.062500, 970007.062500, 970007.062500, 970007.062500",\
+ "970007.312500, 970007.312500, 970007.312500, 970007.312500, 970007.312500",\
+ "970007.562500, 970007.562500, 970007.562500, 970007.562500, 970007.562500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970010.062500, 970010.062500, 970010.062500, 970010.125000, 970010.437500",\
+ "970010.187500, 970010.187500, 970010.187500, 970010.250000, 970010.562500",\
+ "970010.312500, 970010.312500, 970010.312500, 970010.375000, 970010.687500",\
+ "970010.562500, 970010.562500, 970010.562500, 970010.625000, 970010.937500",\
+ "970010.812500, 970010.812500, 970010.812500, 970010.875000, 970011.187500");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_cgsr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970006.812500, 970006.812500, 970006.812500, 970006.812500, 970006.812500",\
+ "970006.937500, 970006.937500, 970006.937500, 970006.937500, 970006.937500",\
+ "970006.937500, 970006.937500, 970006.937500, 970006.937500, 970006.937500",\
+ "970007.187500, 970007.187500, 970007.187500, 970007.187500, 970007.187500",\
+ "970007.437500, 970007.437500, 970007.437500, 970007.437500, 970007.437500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "970009.875000, 970009.875000, 970009.875000, 970009.875000, 970009.875000",\
+ "970010.000000, 970010.000000, 970010.000000, 970010.000000, 970010.000000",\
+ "970010.125000, 970010.125000, 970010.125000, 970010.125000, 970010.125000",\
+ "970010.375000, 970010.375000, 970010.375000, 970010.375000, 970010.375000",\
+ "970010.625000, 970010.625000, 970010.625000, 970010.625000, 970010.625000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_cgsf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.281250, -380000.218750, -380000.187500, -380000.125000, -380000.000000",\
+ "-380000.375000, -380000.312500, -380000.281250, -380000.218750, -380000.093750",\
+ "-380000.437500, -380000.375000, -380000.343750, -380000.281250, -380000.156250",\
+ "-380000.593750, -380000.531250, -380000.500000, -380000.437500, -380000.312500",\
+ "-380000.812500, -380000.750000, -380000.718750, -380000.656250, -380000.531250");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.718750, -380001.625000, -380001.531250, -380001.406250, -380001.125000",\
+ "-380001.812500, -380001.718750, -380001.625000, -380001.500000, -380001.218750",\
+ "-380001.906250, -380001.812500, -380001.718750, -380001.593750, -380001.312500",\
+ "-380002.093750, -380002.000000, -380001.906250, -380001.781250, -380001.500000",\
+ "-380002.343750, -380002.250000, -380002.156250, -380002.031250, -380001.750000");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_cghr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380000.312500, -380000.312500, -380000.312500, -380000.312500, -380000.312500",\
+ "-380000.406250, -380000.406250, -380000.406250, -380000.406250, -380000.406250",\
+ "-380000.468750, -380000.468750, -380000.468750, -380000.468750, -380000.468750",\
+ "-380000.625000, -380000.625000, -380000.625000, -380000.625000, -380000.625000",\
+ "-380000.843750, -380000.843750, -380000.843750, -380000.843750, -380000.843750");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.718750, -380001.718750, -380001.718750, -380001.718750, -380001.718750",\
+ "-380001.812500, -380001.812500, -380001.812500, -380001.812500, -380001.812500",\
+ "-380001.906250, -380001.906250, -380001.906250, -380001.906250, -380001.906250",\
+ "-380002.093750, -380002.093750, -380002.093750, -380002.093750, -380002.093750",\
+ "-380002.343750, -380002.343750, -380002.343750, -380002.343750, -380002.343750");
+ }
+
+ } /* end of arc clk_ast_ext_i_padmux2ast_i[4]_cghf*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380000.500000, 380000.468750, 380000.406250, 380000.406250, 380000.468750",\
+ "380000.593750, 380000.562500, 380000.500000, 380000.500000, 380000.562500",\
+ "380000.687500, 380000.656250, 380000.593750, 380000.593750, 380000.656250",\
+ "380000.843750, 380000.812500, 380000.750000, 380000.750000, 380000.812500",\
+ "380001.093750, 380001.062500, 380001.000000, 380001.000000, 380001.062500");
+ }
+
+ } /* end of arc clk_ast_rng_i_padmux2ast_i[4]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380001.968750, 380001.937500, 380001.875000, 380001.875000, 380001.937500",\
+ "380002.062500, 380002.031250, 380001.968750, 380001.968750, 380002.031250",\
+ "380002.187500, 380002.156250, 380002.093750, 380002.093750, 380002.156250",\
+ "380002.375000, 380002.343750, 380002.281250, 380002.281250, 380002.343750",\
+ "380002.687500, 380002.656250, 380002.593750, 380002.593750, 380002.656250");
+ }
+
+ } /* end of arc clk_ast_rng_i_padmux2ast_i[4]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380000.343750, -380000.312500, -380000.250000, -380000.218750, -380000.093750",\
+ "-380000.437500, -380000.406250, -380000.343750, -380000.312500, -380000.187500",\
+ "-380000.500000, -380000.468750, -380000.406250, -380000.375000, -380000.250000",\
+ "-380000.656250, -380000.625000, -380000.562500, -380000.531250, -380000.406250",\
+ "-380000.875000, -380000.843750, -380000.781250, -380000.750000, -380000.625000");
+ }
+
+ } /* end of arc clk_ast_rng_i_padmux2ast_i[4]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380001.812500, -380001.781250, -380001.718750, -380001.687500, -380001.562500",\
+ "-380001.906250, -380001.875000, -380001.812500, -380001.781250, -380001.656250",\
+ "-380002.000000, -380001.968750, -380001.906250, -380001.875000, -380001.750000",\
+ "-380002.187500, -380002.156250, -380002.093750, -380002.062500, -380001.937500",\
+ "-380002.437500, -380002.406250, -380002.343750, -380002.312500, -380002.187500");
+ }
+
+ } /* end of arc clk_ast_rng_i_padmux2ast_i[4]_remfr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "380000.843750, 380000.750000, 380000.687500, 380000.687500, 380000.656250",\
+ "380000.937500, 380000.843750, 380000.781250, 380000.781250, 380000.750000",\
+ "380001.031250, 380000.937500, 380000.875000, 380000.875000, 380000.843750",\
+ "380001.187500, 380001.093750, 380001.031250, 380001.031250, 380001.000000",\
+ "380001.437500, 380001.343750, 380001.281250, 380001.281250, 380001.250000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "380002.312500, 380002.218750, 380002.250000, 380002.343750, 380002.750000",\
+ "380002.406250, 380002.312500, 380002.343750, 380002.437500, 380002.843750",\
+ "380002.531250, 380002.437500, 380002.468750, 380002.562500, 380002.968750",\
+ "380002.718750, 380002.625000, 380002.656250, 380002.750000, 380003.156250",\
+ "380003.031250, 380002.937500, 380002.968750, 380003.062500, 380003.468750");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-380000.312500, -380000.281250, -380000.250000, -380000.218750, -380000.093750",\
+ "-380000.406250, -380000.375000, -380000.343750, -380000.312500, -380000.187500",\
+ "-380000.468750, -380000.437500, -380000.406250, -380000.375000, -380000.250000",\
+ "-380000.625000, -380000.593750, -380000.562500, -380000.531250, -380000.406250",\
+ "-380000.843750, -380000.812500, -380000.781250, -380000.750000, -380000.625000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-380001.781250, -380001.718750, -380001.656250, -380001.593750, -380001.375000",\
+ "-380001.875000, -380001.812500, -380001.750000, -380001.687500, -380001.468750",\
+ "-380001.968750, -380001.906250, -380001.843750, -380001.781250, -380001.562500",\
+ "-380002.156250, -380002.093750, -380002.031250, -380001.968750, -380001.750000",\
+ "-380002.406250, -380002.343750, -380002.281250, -380002.218750, -380002.000000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "380011.406250, 380010.000000, 380009.125000, 380008.718750, 380008.656250",\
+ "380011.500000, 380010.093750, 380009.218750, 380008.812500, 380008.750000",\
+ "380011.593750, 380010.187500, 380009.312500, 380008.906250, 380008.843750",\
+ "380011.750000, 380010.343750, 380009.468750, 380009.062500, 380009.000000",\
+ "380012.000000, 380010.593750, 380009.718750, 380009.312500, 380009.250000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "970013.125000, 970011.687500, 970010.875000, 970010.437500, 970010.375000",\
+ "970013.250000, 970011.812500, 970011.000000, 970010.562500, 970010.500000",\
+ "970013.375000, 970011.937500, 970011.125000, 970010.687500, 970010.625000",\
+ "970013.625000, 970012.187500, 970011.375000, 970010.937500, 970010.875000",\
+ "970013.875000, 970012.437500, 970011.625000, 970011.187500, 970011.125000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-380000.343750, -380000.312500, -380000.250000, -380000.187500, -379999.843750",\
+ "-380000.437500, -380000.406250, -380000.343750, -380000.281250, -379999.937500",\
+ "-380000.500000, -380000.468750, -380000.406250, -380000.343750, -380000.000000",\
+ "-380000.656250, -380000.625000, -380000.562500, -380000.500000, -380000.156250",\
+ "-380000.875000, -380000.843750, -380000.781250, -380000.718750, -380000.375000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-380001.812500, -380001.781250, -380001.687500, -380001.625000, -380001.281250",\
+ "-380001.906250, -380001.875000, -380001.781250, -380001.718750, -380001.375000",\
+ "-380002.000000, -380001.968750, -380001.875000, -380001.812500, -380001.468750",\
+ "-380002.187500, -380002.156250, -380002.062500, -380002.000000, -380001.656250",\
+ "-380002.437500, -380002.406250, -380002.312500, -380002.250000, -380001.906250");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_remfr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "380001.343750, 380001.343750, 380001.343750, 380001.343750, 380001.343750",\
+ "380001.437500, 380001.437500, 380001.437500, 380001.437500, 380001.437500",\
+ "380001.531250, 380001.531250, 380001.531250, 380001.531250, 380001.531250",\
+ "380001.687500, 380001.687500, 380001.687500, 380001.687500, 380001.687500",\
+ "380001.937500, 380001.937500, 380001.937500, 380001.937500, 380001.937500");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "380003.062500, 380003.062500, 380003.062500, 380003.062500, 380003.062500",\
+ "380003.156250, 380003.156250, 380003.156250, 380003.156250, 380003.156250",\
+ "380003.281250, 380003.281250, 380003.281250, 380003.281250, 380003.281250",\
+ "380003.468750, 380003.468750, 380003.468750, 380003.468750, 380003.468750",\
+ "380003.781250, 380003.781250, 380003.781250, 380003.781250, 380003.781250");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_cgsr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_falling ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380001.343750, -380001.343750, -380001.343750, -380001.343750, -380001.343750",\
+ "-380001.437500, -380001.437500, -380001.437500, -380001.437500, -380001.437500",\
+ "-380001.500000, -380001.500000, -380001.500000, -380001.500000, -380001.500000",\
+ "-380001.656250, -380001.656250, -380001.656250, -380001.656250, -380001.656250",\
+ "-380001.875000, -380001.875000, -380001.875000, -380001.875000, -380001.875000");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-380003.062500, -380003.062500, -380003.062500, -380003.062500, -380003.062500",\
+ "-380003.156250, -380003.156250, -380003.156250, -380003.156250, -380003.156250",\
+ "-380003.250000, -380003.250000, -380003.250000, -380003.250000, -380003.250000",\
+ "-380003.437500, -380003.437500, -380003.437500, -380003.437500, -380003.437500",\
+ "-380003.687500, -380003.687500, -380003.687500, -380003.687500, -380003.687500");
+ }
+
+ } /* end of arc clk_ast_tlul_i_padmux2ast_i[4]_cghf*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380002.218750, 380002.156250, 380002.125000, 380002.125000, 380002.125000",\
+ "380002.312500, 380002.250000, 380002.218750, 380002.218750, 380002.218750",\
+ "380002.406250, 380002.343750, 380002.312500, 380002.312500, 380002.312500",\
+ "380002.562500, 380002.500000, 380002.468750, 380002.468750, 380002.468750",\
+ "380002.812500, 380002.750000, 380002.718750, 380002.718750, 380002.718750");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380004.218750, 380004.156250, 380004.125000, 380004.125000, 380004.125000",\
+ "380004.312500, 380004.250000, 380004.218750, 380004.218750, 380004.218750",\
+ "380004.437500, 380004.375000, 380004.343750, 380004.343750, 380004.343750",\
+ "380004.625000, 380004.562500, 380004.531250, 380004.531250, 380004.531250",\
+ "380004.937500, 380004.875000, 380004.843750, 380004.843750, 380004.843750");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380001.781250, -380001.718750, -380001.625000, -380001.593750, -380001.375000",\
+ "-380001.875000, -380001.812500, -380001.718750, -380001.687500, -380001.468750",\
+ "-380001.937500, -380001.875000, -380001.781250, -380001.750000, -380001.531250",\
+ "-380002.093750, -380002.031250, -380001.937500, -380001.906250, -380001.687500",\
+ "-380002.312500, -380002.250000, -380002.156250, -380002.125000, -380001.906250");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380003.906250, -380003.843750, -380003.750000, -380003.718750, -380003.500000",\
+ "-380004.000000, -380003.937500, -380003.843750, -380003.812500, -380003.593750",\
+ "-380004.093750, -380004.031250, -380003.937500, -380003.906250, -380003.687500",\
+ "-380004.281250, -380004.218750, -380004.125000, -380004.093750, -380003.875000",\
+ "-380004.531250, -380004.468750, -380004.375000, -380004.343750, -380004.125000");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_hldr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380000.593750, 380000.562500, 380000.500000, 380000.500000, 380000.562500",\
+ "380000.687500, 380000.656250, 380000.593750, 380000.593750, 380000.656250",\
+ "380000.781250, 380000.750000, 380000.687500, 380000.687500, 380000.750000",\
+ "380000.937500, 380000.906250, 380000.843750, 380000.843750, 380000.906250",\
+ "380001.187500, 380001.156250, 380001.093750, 380001.093750, 380001.156250");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "380002.031250, 380002.000000, 380001.937500, 380001.937500, 380002.000000",\
+ "380002.125000, 380002.093750, 380002.031250, 380002.031250, 380002.093750",\
+ "380002.250000, 380002.218750, 380002.156250, 380002.156250, 380002.218750",\
+ "380002.437500, 380002.406250, 380002.343750, 380002.343750, 380002.406250",\
+ "380002.750000, 380002.718750, 380002.656250, 380002.656250, 380002.718750");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380000.437500, -380000.406250, -380000.343750, -380000.312500, -380000.187500",\
+ "-380000.531250, -380000.500000, -380000.437500, -380000.406250, -380000.281250",\
+ "-380000.593750, -380000.562500, -380000.500000, -380000.468750, -380000.343750",\
+ "-380000.750000, -380000.718750, -380000.656250, -380000.625000, -380000.500000",\
+ "-380000.968750, -380000.937500, -380000.875000, -380000.843750, -380000.718750");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_usb_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-380001.875000, -380001.843750, -380001.781250, -380001.750000, -380001.625000",\
+ "-380001.968750, -380001.937500, -380001.875000, -380001.843750, -380001.718750",\
+ "-380002.062500, -380002.031250, -380001.968750, -380001.937500, -380001.812500",\
+ "-380002.250000, -380002.218750, -380002.156250, -380002.125000, -380002.000000",\
+ "-380002.500000, -380002.468750, -380002.406250, -380002.375000, -380002.250000");
+ }
+
+ } /* end of arc clk_ast_usb_i_padmux2ast_i[4]_remfr*/
+
+} /* end of pin padmux2ast_i[4] */
+
+pin("padmux2ast_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001527 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[3];
+} /* end of pin padmux2ast_i[3] */
+
+pin("padmux2ast_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001451 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[2];
+} /* end of pin padmux2ast_i[2] */
+
+pin("padmux2ast_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.002579 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[1];
+} /* end of pin padmux2ast_i[1] */
+
+pin("padmux2ast_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001032 ;
+
+ /* Other user defined attributes. */
+ original_pin : padmux2ast_i[0];
+} /* end of pin padmux2ast_i[0] */
+} /* end of bus padmux2ast_i */
+bus ( ast2padmux_o ) {
+
+ bus_type : BUS9_type16 ;
+ direction : output ;
+
+pin("ast2padmux_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.159377 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380004.343750, 380004.375000, 380004.437500, 380004.718750, 380005.625000",\
+ "380004.437500, 380004.468750, 380004.531250, 380004.812500, 380005.718750",\
+ "380004.531250, 380004.562500, 380004.625000, 380004.906250, 380005.812500",\
+ "380004.593750, 380004.625000, 380004.687500, 380004.968750, 380005.875000",\
+ "380004.937500, 380004.968750, 380005.031250, 380005.312500, 380006.218750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380002.437500, 380002.468750, 380002.531250, 380002.687500, 380003.281250",\
+ "380002.531250, 380002.562500, 380002.625000, 380002.781250, 380003.375000",\
+ "380002.593750, 380002.625000, 380002.687500, 380002.843750, 380003.437500",\
+ "380002.656250, 380002.687500, 380002.750000, 380002.906250, 380003.500000",\
+ "380003.000000, 380003.031250, 380003.093750, 380003.250000, 380003.843750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027375, 0.057503, 0.133586, 0.436974, 1.549209");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.198420, 0.230953, 0.301455, 0.556384, 1.484645",\
+ "0.286701, 0.319234, 0.389735, 0.644664, 1.572926",\
+ "0.375268, 0.407801, 0.478303, 0.733232, 1.661493",\
+ "0.437972, 0.470506, 0.541007, 0.795935, 1.724196",\
+ "0.757115, 0.789659, 0.860255, 1.115081, 2.043332");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020935, 0.066607, 0.198712, 0.685847, 2.460401",\
+ "0.020935, 0.066607, 0.198712, 0.685847, 2.460401",\
+ "0.020935, 0.066607, 0.198712, 0.685847, 2.460401",\
+ "0.020935, 0.066607, 0.198712, 0.685847, 2.460401",\
+ "0.020935, 0.066607, 0.198712, 0.685847, 2.460401");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.211851, 0.238498, 0.286799, 0.453464, 1.060488",\
+ "0.299253, 0.325901, 0.374202, 0.540867, 1.147891",\
+ "0.380126, 0.406773, 0.455075, 0.621740, 1.228763",\
+ "0.437748, 0.464395, 0.512697, 0.679362, 1.286385",\
+ "0.739921, 0.766569, 0.814870, 0.981535, 1.588558");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020406, 0.050335, 0.128964, 0.434734, 1.543997",\
+ "0.020406, 0.050335, 0.128964, 0.434734, 1.543997",\
+ "0.020406, 0.050335, 0.128964, 0.434734, 1.543997",\
+ "0.020406, 0.050335, 0.128964, 0.434734, 1.543997",\
+ "0.020406, 0.050336, 0.128964, 0.434733, 1.544003");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[8]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.408924, 0.441470, 0.512070, 0.766936, 1.695386",\
+ "0.493120, 0.525666, 0.596266, 0.851132, 1.779583",\
+ "0.583441, 0.615988, 0.686587, 0.941453, 1.869904",\
+ "0.653401, 0.685947, 0.756547, 1.011413, 1.939865",\
+ "1.044013, 1.076560, 1.147159, 1.402024, 2.330486");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020948, 0.066625, 0.198722, 0.685958, 2.464075",\
+ "0.020948, 0.066625, 0.198722, 0.685958, 2.464075",\
+ "0.020948, 0.066625, 0.198722, 0.685958, 2.464075",\
+ "0.020948, 0.066625, 0.198723, 0.685958, 2.464075",\
+ "0.020946, 0.066625, 0.198725, 0.685957, 2.464076");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.438271, 0.469168, 0.519837, 0.687755, 1.292925",\
+ "0.526383, 0.557280, 0.607949, 0.775866, 1.381036",\
+ "0.628083, 0.658980, 0.709649, 0.877567, 1.482737",\
+ "0.819336, 0.850238, 0.900907, 1.068829, 1.674009",\
+ "1.156747, 1.187659, 1.238328, 1.406259, 2.011461");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.027368, 0.057498, 0.133582, 0.436963, 1.549160",\
+ "0.027368, 0.057498, 0.133582, 0.436963, 1.549160",\
+ "0.027368, 0.057498, 0.133582, 0.436963, 1.549160",\
+ "0.027371, 0.057501, 0.133584, 0.436969, 1.549186",\
+ "0.027379, 0.057507, 0.133588, 0.436980, 1.549240");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[8]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.398110, 0.430656, 0.501253, 0.756075, 1.684372",\
+ "0.482288, 0.514834, 0.585431, 0.840253, 1.768550",\
+ "0.572606, 0.605152, 0.675749, 0.930571, 1.858868",\
+ "0.642450, 0.674996, 0.745593, 1.000414, 1.928712",\
+ "1.032124, 1.064670, 1.135267, 1.390089, 2.318387");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020932, 0.066607, 0.198719, 0.685843, 2.463750",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.463750",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.463750",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.463750",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.463750");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.427883, 0.458770, 0.509441, 0.677352, 1.282498",\
+ "0.516006, 0.546892, 0.597564, 0.765475, 1.370620",\
+ "0.617659, 0.648546, 0.699217, 0.867128, 1.472274",\
+ "0.808079, 0.838969, 0.889641, 1.057554, 1.662708",\
+ "1.144522, 1.175420, 1.226092, 1.394011, 1.999181");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.027342, 0.057489, 0.133570, 0.436937, 1.549078",\
+ "0.027342, 0.057489, 0.133570, 0.436937, 1.549078",\
+ "0.027342, 0.057489, 0.133570, 0.436937, 1.549078",\
+ "0.027344, 0.057490, 0.133572, 0.436941, 1.549096",\
+ "0.027347, 0.057494, 0.133575, 0.436950, 1.549136");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[8]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380000.718750, 380000.750000, 380000.812500, 380001.093750, 380002.000000",\
+ "380000.812500, 380000.843750, 380000.906250, 380001.187500, 380002.093750",\
+ "380000.906250, 380000.937500, 380001.000000, 380001.281250, 380002.187500",\
+ "380001.062500, 380001.093750, 380001.156250, 380001.437500, 380002.343750",\
+ "380001.312500, 380001.343750, 380001.406250, 380001.687500, 380002.593750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380002.125000, 380002.156250, 380002.218750, 380002.375000, 380002.968750",\
+ "380002.218750, 380002.250000, 380002.312500, 380002.468750, 380003.062500",\
+ "380002.343750, 380002.375000, 380002.437500, 380002.593750, 380003.187500",\
+ "380002.531250, 380002.562500, 380002.625000, 380002.781250, 380003.375000",\
+ "380002.843750, 380002.875000, 380002.937500, 380003.093750, 380003.687500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[8]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380000.687500, 380000.718750, 380000.781250, 380001.062500, 380001.968750",\
+ "380000.781250, 380000.812500, 380000.875000, 380001.156250, 380002.062500",\
+ "380000.843750, 380000.875000, 380000.937500, 380001.218750, 380002.125000",\
+ "380001.000000, 380001.031250, 380001.093750, 380001.375000, 380002.281250",\
+ "380001.218750, 380001.250000, 380001.312500, 380001.593750, 380002.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380002.125000, 380002.156250, 380002.187500, 380002.375000, 380002.968750",\
+ "380002.218750, 380002.250000, 380002.281250, 380002.468750, 380003.062500",\
+ "380002.312500, 380002.343750, 380002.375000, 380002.562500, 380003.156250",\
+ "380002.500000, 380002.531250, 380002.562500, 380002.750000, 380003.343750",\
+ "380002.750000, 380002.781250, 380002.812500, 380003.000000, 380003.593750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[8]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380002.312500, 380002.343750, 380002.406250, 380002.562500, 380003.156250",\
+ "380002.406250, 380002.437500, 380002.500000, 380002.656250, 380003.250000",\
+ "380002.500000, 380002.531250, 380002.593750, 380002.750000, 380003.343750",\
+ "380002.656250, 380002.687500, 380002.750000, 380002.906250, 380003.500000",\
+ "380002.906250, 380002.937500, 380003.000000, 380003.156250, 380003.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163",\
+ "0.027368, 0.057498, 0.133582, 0.436964, 1.549163");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380004.250000, 380004.281250, 380004.343750, 380004.625000, 380005.531250",\
+ "380004.343750, 380004.375000, 380004.437500, 380004.718750, 380005.625000",\
+ "380004.468750, 380004.500000, 380004.562500, 380004.843750, 380005.750000",\
+ "380004.656250, 380004.687500, 380004.750000, 380005.031250, 380005.937500",\
+ "380004.968750, 380005.000000, 380005.062500, 380005.343750, 380006.250000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075",\
+ "0.021241, 0.066861, 0.199049, 0.687205, 2.464075");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[8]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380000.687500, 380000.718750, 380000.750000, 380000.937500, 380001.531250",\
+ "380000.781250, 380000.812500, 380000.843750, 380001.031250, 380001.625000",\
+ "380000.843750, 380000.875000, 380000.906250, 380001.093750, 380001.687500",\
+ "380001.000000, 380001.031250, 380001.062500, 380001.250000, 380001.843750",\
+ "380001.218750, 380001.250000, 380001.281250, 380001.468750, 380002.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080",\
+ "0.020492, 0.050440, 0.128935, 0.434235, 1.546080");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "380002.062500, 380002.093750, 380002.156250, 380002.437500, 380003.343750",\
+ "380002.156250, 380002.187500, 380002.250000, 380002.531250, 380003.437500",\
+ "380002.250000, 380002.281250, 380002.343750, 380002.625000, 380003.531250",\
+ "380002.437500, 380002.468750, 380002.531250, 380002.812500, 380003.718750",\
+ "380002.687500, 380002.718750, 380002.781250, 380003.062500, 380003.968750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.003266, 0.011949, 0.043724, 0.159377");
+ values ( "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022",\
+ "0.020932, 0.066607, 0.198719, 0.685843, 2.460022");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[8]_inv_min*/
+
+} /* end of pin ast2padmux_o[8] */
+
+pin("ast2padmux_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.437500, 380000.437500, 380000.468750, 380000.531250, 380000.718750",\
+ "380000.531250, 380000.531250, 380000.562500, 380000.625000, 380000.812500",\
+ "380000.593750, 380000.593750, 380000.625000, 380000.687500, 380000.875000",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.968750, 380000.968750, 380001.000000, 380001.062500, 380001.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[7]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[7]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[7]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.495682, 0.527114, 0.579822, 0.722175, 1.100772",\
+ "0.520857, 0.552289, 0.604997, 0.747350, 1.125947",\
+ "0.590847, 0.622279, 0.674987, 0.817340, 1.195937",\
+ "0.713975, 0.745406, 0.798114, 0.940467, 1.319064",\
+ "1.300896, 1.332327, 1.385036, 1.527389, 1.905985");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.673247, 0.740150, 0.856588, 1.176256, 2.031462",\
+ "0.693898, 0.760801, 0.877239, 1.196908, 2.052114",\
+ "0.752520, 0.819423, 0.935861, 1.255530, 2.110735",\
+ "0.862063, 0.928966, 1.045403, 1.365072, 2.220278",\
+ "1.621675, 1.688580, 1.805019, 2.124689, 2.979892");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073039, 0.188935, 0.391846, 0.949113, 2.441342");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.342569, 0.373981, 0.426627, 0.569042, 0.947686",\
+ "0.366027, 0.397440, 0.450085, 0.592500, 0.971144",\
+ "0.437124, 0.468537, 0.521182, 0.663597, 1.042241",\
+ "0.562321, 0.593734, 0.646379, 0.788794, 1.167438",\
+ "1.165783, 1.197195, 1.249841, 1.392256, 1.770899");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.657383, 0.724274, 0.840701, 1.160369, 2.015589",\
+ "0.673535, 0.740426, 0.856853, 1.176521, 2.031741",\
+ "0.736621, 0.803512, 0.919939, 1.239607, 2.094827",\
+ "0.845856, 0.912747, 1.029174, 1.348842, 2.204062",\
+ "1.602693, 1.669584, 1.786011, 2.105679, 2.960899");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.690094, 0.756997, 0.873435, 1.193104, 2.048309",\
+ "0.708444, 0.775347, 0.891784, 1.211453, 2.066659",\
+ "0.778290, 0.845193, 0.961630, 1.281299, 2.136505",\
+ "0.871001, 0.937904, 1.054342, 1.374010, 2.229216",\
+ "1.316481, 1.383384, 1.499822, 1.819491, 2.674696");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452197, 0.483629, 0.536337, 0.678690, 1.057287",\
+ "0.469625, 0.501056, 0.553764, 0.696117, 1.074714",\
+ "0.546991, 0.578423, 0.631131, 0.773484, 1.152081",\
+ "0.655363, 0.686795, 0.739503, 0.881856, 1.260453",\
+ "1.172095, 1.203526, 1.256235, 1.398588, 1.777184");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.682055, 0.748946, 0.865373, 1.185041, 2.040261",\
+ "0.698671, 0.765561, 0.881989, 1.201657, 2.056877",\
+ "0.770251, 0.837141, 0.953569, 1.273237, 2.128457",\
+ "0.862962, 0.929853, 1.046280, 1.365948, 2.221168",\
+ "1.308443, 1.375334, 1.491761, 1.811429, 2.666649");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.393282, 0.424695, 0.477340, 0.619755, 0.998399",\
+ "0.406628, 0.438041, 0.490686, 0.633102, 1.011745",\
+ "0.488076, 0.519489, 0.572134, 0.714549, 1.093193",\
+ "0.596558, 0.627970, 0.680616, 0.823031, 1.201674",\
+ "1.114468, 1.145880, 1.198526, 1.340941, 1.719585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.501059, 0.532491, 0.585199, 0.727552, 1.106149",\
+ "0.519617, 0.551049, 0.603757, 0.746110, 1.124707",\
+ "0.596986, 0.628417, 0.681126, 0.823478, 1.202075",\
+ "0.726207, 0.757638, 0.810347, 0.952700, 1.331296",\
+ "1.349983, 1.381414, 1.434123, 1.576475, 1.955072");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.672551, 0.739454, 0.855892, 1.175561, 2.030766",\
+ "0.690451, 0.757354, 0.873791, 1.193460, 2.048666",\
+ "0.751450, 0.818353, 0.934791, 1.254459, 2.109665",\
+ "0.853899, 0.920802, 1.037239, 1.356908, 2.212114",\
+ "1.570440, 1.637343, 1.753780, 2.073449, 2.928655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.403368, 0.434780, 0.487426, 0.629841, 1.008485",\
+ "0.420114, 0.451526, 0.504172, 0.646587, 1.025230",\
+ "0.499560, 0.530972, 0.583618, 0.726033, 1.104676",\
+ "0.629829, 0.661242, 0.713887, 0.856302, 1.234946",\
+ "1.257639, 1.289051, 1.341697, 1.484112, 1.862756");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.659894, 0.726785, 0.843212, 1.162880, 2.018100",\
+ "0.674063, 0.740954, 0.857382, 1.177050, 2.032269",\
+ "0.738792, 0.805683, 0.922111, 1.241779, 2.096998",\
+ "0.841228, 0.908118, 1.024546, 1.344214, 2.199434",\
+ "1.556835, 1.623726, 1.740153, 2.059821, 2.915041");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.701899, 0.768802, 0.885240, 1.204909, 2.060114",\
+ "0.720452, 0.787355, 0.903793, 1.223462, 2.078667",\
+ "0.793150, 0.860053, 0.976490, 1.296159, 2.151365",\
+ "0.888367, 0.955270, 1.071708, 1.391377, 2.246583",\
+ "1.341174, 1.408077, 1.524515, 1.844184, 2.699389");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.458590, 0.490021, 0.542729, 0.685082, 1.063679",\
+ "0.476132, 0.507563, 0.560272, 0.702625, 1.081221",\
+ "0.553461, 0.584892, 0.637601, 0.779954, 1.158551",\
+ "0.662931, 0.694363, 0.747071, 0.889424, 1.268021",\
+ "1.187512, 1.218943, 1.271652, 1.414004, 1.792601");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.693852, 0.760742, 0.877170, 1.196838, 2.052058",\
+ "0.710673, 0.777564, 0.893991, 1.213659, 2.068879",\
+ "0.785102, 0.851993, 0.968420, 1.288088, 2.143308",\
+ "0.880320, 0.947210, 1.063638, 1.383306, 2.238526",\
+ "1.333127, 1.400018, 1.516445, 1.836113, 2.691333");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.399735, 0.431148, 0.483793, 0.626208, 1.004852",\
+ "0.413192, 0.444604, 0.497250, 0.639665, 1.018308",\
+ "0.494607, 0.526019, 0.578665, 0.721080, 1.099723",\
+ "0.604175, 0.635587, 0.688233, 0.830648, 1.209292",\
+ "1.129895, 1.161308, 1.213953, 1.356368, 1.735012");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.496000, 0.527432, 0.580140, 0.722493, 1.101090",\
+ "0.514620, 0.546052, 0.598760, 0.741113, 1.119710",\
+ "0.591411, 0.622842, 0.675550, 0.817903, 1.196500",\
+ "0.717296, 0.748727, 0.801436, 0.943789, 1.322386",\
+ "1.315738, 1.347169, 1.399878, 1.542231, 1.920827");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.666141, 0.733044, 0.849482, 1.169151, 2.024356",\
+ "0.678814, 0.745717, 0.862155, 1.181824, 2.037030",\
+ "0.733584, 0.800487, 0.916924, 1.236593, 2.091799",\
+ "0.837061, 0.903964, 1.020401, 1.340070, 2.195276",\
+ "1.538248, 1.605151, 1.721588, 2.041257, 2.896463");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.398263, 0.429676, 0.482321, 0.624736, 1.003380",\
+ "0.415077, 0.446490, 0.499135, 0.641550, 1.020194",\
+ "0.493940, 0.525353, 0.577998, 0.720414, 1.099057",\
+ "0.620916, 0.652328, 0.704974, 0.847389, 1.226032",\
+ "1.223414, 1.254826, 1.307472, 1.449887, 1.828531");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692",\
+ "0.039011, 0.090734, 0.180376, 0.429203, 1.091692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.653476, 0.720367, 0.836794, 1.156462, 2.011682",\
+ "0.663102, 0.729992, 0.846420, 1.166088, 2.021308",\
+ "0.720914, 0.787805, 0.904232, 1.223900, 2.079120",\
+ "0.824356, 0.891247, 1.007674, 1.327342, 2.182562",\
+ "1.523659, 1.590550, 1.706977, 2.026645, 2.881865");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330",\
+ "0.073030, 0.188914, 0.391814, 0.949025, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[7]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[7]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[7]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[7]_ast2padmux_o[7]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[7]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[7]_ast2padmux_o[7]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[7]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[7]_inv_min*/
+
+} /* end of pin ast2padmux_o[7] */
+
+pin("ast2padmux_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.437500, 380000.437500, 380000.468750, 380000.531250, 380000.718750",\
+ "380000.531250, 380000.531250, 380000.562500, 380000.625000, 380000.812500",\
+ "380000.593750, 380000.593750, 380000.625000, 380000.687500, 380000.875000",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.968750, 380000.968750, 380001.000000, 380001.062500, 380001.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[6]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[6]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[6]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.401444, 0.432876, 0.485584, 0.627937, 1.006534",\
+ "0.426514, 0.457945, 0.510653, 0.653006, 1.031603",\
+ "0.495788, 0.527220, 0.579928, 0.722281, 1.100878",\
+ "0.620121, 0.651552, 0.704261, 0.846613, 1.225210",\
+ "1.225494, 1.256926, 1.309634, 1.451987, 1.830584");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.665410, 0.732314, 0.848751, 1.168420, 2.023626",\
+ "0.685984, 0.752887, 0.869324, 1.188993, 2.044199",\
+ "0.744648, 0.811551, 0.927989, 1.247657, 2.102863",\
+ "0.853883, 0.920786, 1.037224, 1.356892, 2.212098",\
+ "1.621675, 1.688580, 1.805019, 2.124689, 2.979892");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073039, 0.188935, 0.391846, 0.949113, 2.441342");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.345553, 0.376966, 0.429613, 0.572027, 0.950669",\
+ "0.369011, 0.400424, 0.453071, 0.595485, 0.974127",\
+ "0.440108, 0.471521, 0.524168, 0.666582, 1.045224",\
+ "0.565305, 0.596718, 0.649365, 0.791779, 1.170421",\
+ "1.171631, 1.203044, 1.255693, 1.398105, 1.776746");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039018, 0.090728, 0.180391, 0.429207, 1.091650");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.663782, 0.730673, 0.847101, 1.166770, 2.021989",\
+ "0.679934, 0.746826, 0.863254, 1.182922, 2.038141",\
+ "0.743020, 0.809911, 0.926339, 1.246007, 2.101227",\
+ "0.852255, 0.919146, 1.035574, 1.355242, 2.210462",\
+ "1.620317, 1.687211, 1.803640, 2.123309, 2.978526");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073030, 0.188915, 0.391817, 0.949051, 2.441332");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[6]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.690094, 0.756997, 0.873435, 1.193104, 2.048309",\
+ "0.708444, 0.775347, 0.891784, 1.211453, 2.066659",\
+ "0.778290, 0.845193, 0.961630, 1.281299, 2.136505",\
+ "0.871001, 0.937904, 1.054342, 1.374010, 2.229216",\
+ "1.316481, 1.383384, 1.499822, 1.819491, 2.674696");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452134, 0.483566, 0.536274, 0.678627, 1.057224",\
+ "0.469561, 0.500993, 0.553701, 0.696054, 1.074651",\
+ "0.546928, 0.578360, 0.631068, 0.773421, 1.152018",\
+ "0.655300, 0.686732, 0.739440, 0.881793, 1.260390",\
+ "1.172032, 1.203463, 1.256172, 1.398524, 1.777121");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.688464, 0.755356, 0.871784, 1.191452, 2.046671",\
+ "0.705080, 0.771971, 0.888399, 1.208067, 2.063287",\
+ "0.776660, 0.843551, 0.959979, 1.279647, 2.134867",\
+ "0.869371, 0.936263, 1.052691, 1.372359, 2.227578",\
+ "1.314852, 1.381744, 1.498172, 1.817840, 2.673059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.396265, 0.427678, 0.480325, 0.622739, 1.001381",\
+ "0.409612, 0.441025, 0.493672, 0.636085, 1.014728",\
+ "0.491059, 0.522472, 0.575119, 0.717533, 1.096175",\
+ "0.599541, 0.630954, 0.683601, 0.826015, 1.204657",\
+ "1.117451, 1.148864, 1.201511, 1.343925, 1.722567");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.701899, 0.768802, 0.885240, 1.204909, 2.060114",\
+ "0.720452, 0.787355, 0.903793, 1.223462, 2.078667",\
+ "0.793150, 0.860053, 0.976490, 1.296159, 2.151365",\
+ "0.888367, 0.955270, 1.071708, 1.391377, 2.246583",\
+ "1.341174, 1.408077, 1.524515, 1.844184, 2.699389");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.458526, 0.489958, 0.542666, 0.685019, 1.063616",\
+ "0.476069, 0.507500, 0.560208, 0.702561, 1.081158",\
+ "0.553398, 0.584829, 0.637537, 0.779890, 1.158487",\
+ "0.662868, 0.694299, 0.747008, 0.889361, 1.267957",\
+ "1.187448, 1.218880, 1.271588, 1.413941, 1.792538");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700268, 0.767160, 0.883588, 1.203256, 2.058475",\
+ "0.717089, 0.783981, 0.900409, 1.220077, 2.075296",\
+ "0.791519, 0.858410, 0.974838, 1.294506, 2.149726",\
+ "0.886736, 0.953628, 1.070056, 1.389724, 2.244943",\
+ "1.339543, 1.406435, 1.522863, 1.842531, 2.697751");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.402716, 0.434129, 0.486776, 0.629190, 1.007832",\
+ "0.416173, 0.447586, 0.500233, 0.642646, 1.021289",\
+ "0.497588, 0.529001, 0.581648, 0.724061, 1.102704",\
+ "0.607156, 0.638569, 0.691216, 0.833630, 1.212272",\
+ "1.132876, 1.164289, 1.216936, 1.359350, 1.737992");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[6]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[6]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[6]_ast2padmux_o[6]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[6]_ast2padmux_o[6]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[6]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[6]_inv_min*/
+
+} /* end of pin ast2padmux_o[6] */
+
+pin("ast2padmux_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.437500, 380000.437500, 380000.468750, 380000.531250, 380000.718750",\
+ "380000.531250, 380000.531250, 380000.562500, 380000.625000, 380000.812500",\
+ "380000.593750, 380000.593750, 380000.625000, 380000.687500, 380000.875000",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.968750, 380000.968750, 380001.000000, 380001.062500, 380001.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[5]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[5]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[5]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.401444, 0.432876, 0.485584, 0.627937, 1.006534",\
+ "0.426514, 0.457945, 0.510653, 0.653006, 1.031603",\
+ "0.495788, 0.527220, 0.579928, 0.722281, 1.100878",\
+ "0.620121, 0.651552, 0.704261, 0.846613, 1.225210",\
+ "1.225494, 1.256926, 1.309634, 1.451987, 1.830584");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.665410, 0.732314, 0.848751, 1.168420, 2.023626",\
+ "0.685984, 0.752887, 0.869324, 1.188993, 2.044199",\
+ "0.744648, 0.811551, 0.927989, 1.247657, 2.102863",\
+ "0.853883, 0.920786, 1.037224, 1.356892, 2.212098",\
+ "1.621675, 1.688580, 1.805019, 2.124689, 2.979892");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073039, 0.188935, 0.391846, 0.949113, 2.441342");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.345553, 0.376966, 0.429613, 0.572027, 0.950669",\
+ "0.369011, 0.400424, 0.453071, 0.595485, 0.974127",\
+ "0.440108, 0.471521, 0.524168, 0.666582, 1.045224",\
+ "0.565305, 0.596718, 0.649365, 0.791779, 1.170421",\
+ "1.171631, 1.203044, 1.255693, 1.398105, 1.776746");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039018, 0.090728, 0.180391, 0.429207, 1.091650");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.663782, 0.730673, 0.847101, 1.166770, 2.021989",\
+ "0.679934, 0.746826, 0.863254, 1.182922, 2.038141",\
+ "0.743020, 0.809911, 0.926339, 1.246007, 2.101227",\
+ "0.852255, 0.919146, 1.035574, 1.355242, 2.210462",\
+ "1.620317, 1.687211, 1.803640, 2.123309, 2.978526");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073030, 0.188915, 0.391817, 0.949051, 2.441332");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[5]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.690094, 0.756997, 0.873435, 1.193104, 2.048309",\
+ "0.708444, 0.775347, 0.891784, 1.211453, 2.066659",\
+ "0.778290, 0.845193, 0.961630, 1.281299, 2.136505",\
+ "0.871001, 0.937904, 1.054342, 1.374010, 2.229216",\
+ "1.316481, 1.383384, 1.499822, 1.819491, 2.674696");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452134, 0.483566, 0.536274, 0.678627, 1.057224",\
+ "0.469561, 0.500993, 0.553701, 0.696054, 1.074651",\
+ "0.546928, 0.578360, 0.631068, 0.773421, 1.152018",\
+ "0.655300, 0.686732, 0.739440, 0.881793, 1.260390",\
+ "1.172032, 1.203463, 1.256172, 1.398524, 1.777121");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.688464, 0.755356, 0.871784, 1.191452, 2.046671",\
+ "0.705080, 0.771971, 0.888399, 1.208067, 2.063287",\
+ "0.776660, 0.843551, 0.959979, 1.279647, 2.134867",\
+ "0.869371, 0.936263, 1.052691, 1.372359, 2.227578",\
+ "1.314852, 1.381744, 1.498172, 1.817840, 2.673059");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.396265, 0.427678, 0.480325, 0.622739, 1.001381",\
+ "0.409612, 0.441025, 0.493672, 0.636085, 1.014728",\
+ "0.491059, 0.522472, 0.575119, 0.717533, 1.096175",\
+ "0.599541, 0.630954, 0.683601, 0.826015, 1.204657",\
+ "1.117451, 1.148864, 1.201511, 1.343925, 1.722567");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.701899, 0.768802, 0.885240, 1.204909, 2.060114",\
+ "0.720452, 0.787355, 0.903793, 1.223462, 2.078667",\
+ "0.793150, 0.860053, 0.976490, 1.296159, 2.151365",\
+ "0.888367, 0.955270, 1.071708, 1.391377, 2.246583",\
+ "1.341174, 1.408077, 1.524515, 1.844184, 2.699389");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340",\
+ "0.073037, 0.188931, 0.391841, 0.949101, 2.441340");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.458526, 0.489958, 0.542666, 0.685019, 1.063616",\
+ "0.476069, 0.507500, 0.560208, 0.702561, 1.081158",\
+ "0.553398, 0.584829, 0.637537, 0.779890, 1.158487",\
+ "0.662868, 0.694299, 0.747008, 0.889361, 1.267957",\
+ "1.187448, 1.218880, 1.271588, 1.413941, 1.792538");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700268, 0.767160, 0.883588, 1.203256, 2.058475",\
+ "0.717089, 0.783981, 0.900409, 1.220077, 2.075296",\
+ "0.791519, 0.858410, 0.974838, 1.294506, 2.149726",\
+ "0.886736, 0.953628, 1.070056, 1.389724, 2.244943",\
+ "1.339543, 1.406435, 1.522863, 1.842531, 2.697751");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330",\
+ "0.073029, 0.188911, 0.391812, 0.949040, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.402716, 0.434129, 0.486776, 0.629190, 1.007832",\
+ "0.416173, 0.447586, 0.500233, 0.642646, 1.021289",\
+ "0.497588, 0.529001, 0.581648, 0.724061, 1.102704",\
+ "0.607156, 0.638569, 0.691216, 0.833630, 1.212272",\
+ "1.132876, 1.164289, 1.216936, 1.359350, 1.737992");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671",\
+ "0.039014, 0.090731, 0.180384, 0.429205, 1.091671");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[5]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[5]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[5]_ast2padmux_o[5]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[5]_ast2padmux_o[5]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[5]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[5]_inv_min*/
+
+} /* end of pin ast2padmux_o[5] */
+
+pin("ast2padmux_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[4];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.256137, 0.526101, 0.791807, 1.233240, 2.116106",\
+ "0.323038, 0.593004, 0.858715, 1.300159, 2.183047",\
+ "0.439474, 0.709441, 0.975156, 1.416609, 2.299516",\
+ "0.759143, 1.029110, 1.294825, 1.736279, 2.619187",\
+ "1.614351, 1.884316, 2.150025, 2.591466, 3.474348",\
+ "0.314712, 0.584612, 0.850579, 1.290946, 2.172213",\
+ "0.381613, 0.651515, 0.917487, 1.357865, 2.239154",\
+ "0.498049, 0.767952, 1.033928, 1.474316, 2.355623",\
+ "0.817718, 1.087621, 1.353598, 1.793986, 2.675294",\
+ "1.672926, 1.942827, 2.208797, 2.649173, 3.530455",\
+ "0.459188, 0.730385, 0.994470, 1.434701, 2.315946",\
+ "0.526089, 0.797288, 1.061378, 1.501621, 2.382887",\
+ "0.642525, 0.913725, 1.177819, 1.618071, 2.499355",\
+ "0.962194, 1.233394, 1.497489, 1.937741, 2.819027",\
+ "1.817402, 2.088600, 2.352689, 2.792928, 3.674187",\
+ "0.495112, 0.768133, 1.031389, 1.471493, 2.352504",\
+ "0.562013, 0.835036, 1.098297, 1.538412, 2.419445",\
+ "0.678449, 0.951473, 1.214738, 1.654862, 2.535913",\
+ "0.998118, 1.271142, 1.534407, 1.974532, 2.855585",\
+ "1.853326, 2.126348, 2.389607, 2.829719, 3.710746",\
+ "0.823805, 1.131731, 1.382980, 1.820732, 2.697960",\
+ "0.890706, 1.198635, 1.449888, 1.887651, 2.764901",\
+ "1.007142, 1.315072, 1.566330, 2.004102, 2.881370",\
+ "1.326811, 1.634741, 1.885999, 2.323771, 3.201041",\
+ "2.182019, 2.489947, 2.741199, 3.178958, 4.056201");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073036, 0.073037, 0.073041, 0.073049, 0.073065",\
+ "0.188928, 0.188931, 0.188940, 0.188959, 0.188997",\
+ "0.391836, 0.391840, 0.391853, 0.391881, 0.391936",\
+ "0.949092, 0.949099, 0.949128, 0.949187, 0.949305",\
+ "2.441339, 2.441340, 2.441345, 2.441355, 2.441374",\
+ "0.073036, 0.073037, 0.073041, 0.073049, 0.073065",\
+ "0.188928, 0.188931, 0.188940, 0.188959, 0.188997",\
+ "0.391836, 0.391840, 0.391853, 0.391881, 0.391936",\
+ "0.949092, 0.949099, 0.949128, 0.949187, 0.949305",\
+ "2.441339, 2.441340, 2.441345, 2.441355, 2.441374",\
+ "0.073036, 0.073037, 0.073041, 0.073049, 0.073065",\
+ "0.188928, 0.188931, 0.188940, 0.188959, 0.188997",\
+ "0.391836, 0.391840, 0.391853, 0.391881, 0.391936",\
+ "0.949092, 0.949100, 0.949128, 0.949187, 0.949305",\
+ "2.441339, 2.441340, 2.441345, 2.441355, 2.441374",\
+ "0.073036, 0.073037, 0.073041, 0.073049, 0.073065",\
+ "0.188928, 0.188931, 0.188940, 0.188959, 0.188997",\
+ "0.391836, 0.391840, 0.391853, 0.391881, 0.391936",\
+ "0.949092, 0.949100, 0.949128, 0.949187, 0.949305",\
+ "2.441339, 2.441340, 2.441345, 2.441355, 2.441374",\
+ "0.073036, 0.073037, 0.073041, 0.073049, 0.073065",\
+ "0.188928, 0.188932, 0.188940, 0.188959, 0.188997",\
+ "0.391836, 0.391842, 0.391854, 0.391881, 0.391936",\
+ "0.949092, 0.949103, 0.949129, 0.949187, 0.949305",\
+ "2.441339, 2.441340, 2.441345, 2.441355, 2.441374");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.300809, 0.483950, 0.676379, 0.983182, 1.575800",\
+ "0.332240, 0.515381, 0.707810, 1.014614, 1.607232",\
+ "0.384949, 0.568090, 0.760519, 1.067323, 1.659944",\
+ "0.527301, 0.710443, 0.902872, 1.209675, 1.802294",\
+ "0.905898, 1.089039, 1.281469, 1.588271, 2.180888",\
+ "0.360720, 0.543848, 0.736331, 1.042962, 1.635417",\
+ "0.392152, 0.575280, 0.767762, 1.074394, 1.666849",\
+ "0.444860, 0.627988, 0.820471, 1.127103, 1.719561",\
+ "0.587213, 0.770341, 0.962824, 1.269455, 1.861911",\
+ "0.965810, 1.148938, 1.341421, 1.648051, 2.240505",\
+ "0.493463, 0.676099, 0.868214, 1.174820, 1.767224",\
+ "0.524895, 0.707531, 0.899645, 1.206252, 1.798657",\
+ "0.577603, 0.760239, 0.952354, 1.258961, 1.851368",\
+ "0.719956, 0.902592, 1.094707, 1.401313, 1.993718",\
+ "1.098553, 1.281189, 1.473303, 1.779909, 2.372313",\
+ "0.526601, 0.709226, 0.901339, 1.207772, 1.799833",\
+ "0.558032, 0.740658, 0.932770, 1.239204, 1.831265",\
+ "0.610741, 0.793366, 0.985478, 1.291914, 1.883977",\
+ "0.753093, 0.935719, 1.127831, 1.434265, 2.026326",\
+ "1.131690, 1.314316, 1.506428, 1.812862, 2.404921",\
+ "0.827685, 1.014449, 1.204974, 1.510788, 2.101678",\
+ "0.859116, 1.045881, 1.236405, 1.542220, 2.133111",\
+ "0.911824, 1.098589, 1.289114, 1.594929, 2.185822",\
+ "1.054177, 1.240942, 1.431466, 1.737281, 2.328172",\
+ "1.432774, 1.619539, 1.810063, 2.115877, 2.706767");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[3]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.252605, 0.520760, 0.784538, 1.222585, 2.097608",\
+ "0.319496, 0.587651, 0.851435, 1.289491, 2.164534",\
+ "0.435923, 0.704079, 0.967867, 1.405931, 2.280990",\
+ "0.755591, 1.023747, 1.287535, 1.725600, 2.600661",\
+ "1.610811, 1.878966, 2.142749, 2.580802, 3.455839",\
+ "0.311166, 0.579267, 0.843303, 1.280291, 2.153714",\
+ "0.378057, 0.646158, 0.910200, 1.347198, 2.220641",\
+ "0.494484, 0.762586, 1.026632, 1.463638, 2.337097",\
+ "0.814152, 1.082254, 1.346300, 1.783307, 2.656768",\
+ "1.669372, 1.937473, 2.201514, 2.638509, 3.511946",\
+ "0.455502, 0.725014, 0.987191, 1.424095, 2.297447",\
+ "0.522393, 0.791906, 1.054087, 1.491001, 2.364373",\
+ "0.638820, 0.908334, 1.170519, 1.607441, 2.480830",\
+ "0.958488, 1.228002, 1.490188, 1.927111, 2.800500",\
+ "1.813708, 2.083220, 2.345402, 2.782313, 3.655679",\
+ "0.491381, 0.762750, 1.024109, 1.460966, 2.334005",\
+ "0.558271, 0.829641, 1.091006, 1.527872, 2.400932",\
+ "0.674699, 0.946069, 1.207438, 1.644312, 2.517388",\
+ "0.994367, 1.265738, 1.527106, 1.963982, 2.837059",\
+ "1.849586, 2.120956, 2.382320, 2.819183, 3.692237",\
+ "0.819578, 1.126098, 1.375669, 1.810266, 2.679461",\
+ "0.886469, 1.192990, 1.442565, 1.877173, 2.746387",\
+ "1.002896, 1.309418, 1.558997, 1.993613, 2.862844",\
+ "1.322564, 1.629086, 1.878666, 2.313282, 3.182515",\
+ "2.177784, 2.484305, 2.733880, 3.168484, 4.037693");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391816, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949034, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441331, 2.441334, 2.441343, 2.441361");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.262934, 0.448489, 0.641595, 0.948297, 1.539521",\
+ "0.294346, 0.479902, 0.673008, 0.979711, 1.570936",\
+ "0.346992, 0.532548, 0.725656, 1.032361, 1.623593",\
+ "0.489407, 0.674962, 0.868069, 1.174772, 1.765997",\
+ "0.868050, 1.053605, 1.246711, 1.553412, 2.144632",\
+ "0.322845, 0.508317, 0.701440, 1.008066, 1.599138",\
+ "0.354258, 0.539729, 0.732853, 1.039480, 1.630553",\
+ "0.406904, 0.592376, 0.785500, 1.092130, 1.683210",\
+ "0.549319, 0.734790, 0.927914, 1.234540, 1.825614",\
+ "0.927962, 1.113433, 1.306556, 1.613180, 2.204249",\
+ "0.455621, 0.640568, 0.833323, 1.139923, 1.730945",\
+ "0.487034, 0.671981, 0.864736, 1.171337, 1.762361",\
+ "0.539679, 0.724627, 0.917383, 1.223988, 1.815017",\
+ "0.682094, 0.867041, 1.059797, 1.366398, 1.957422",\
+ "1.060737, 1.245684, 1.438439, 1.745038, 2.336057",\
+ "0.488779, 0.673866, 0.866553, 1.173003, 1.763806",\
+ "0.520192, 0.705279, 0.897966, 1.204417, 1.795222",\
+ "0.572837, 0.757925, 0.950613, 1.257067, 1.847878",\
+ "0.715252, 0.900339, 1.093027, 1.399478, 1.990283",\
+ "1.093896, 1.278982, 1.471669, 1.778118, 2.368918",\
+ "0.790171, 0.979313, 1.170216, 1.476207, 2.066113",\
+ "0.821584, 1.010726, 1.201629, 1.507621, 2.097529",\
+ "0.874230, 1.063372, 1.254276, 1.560271, 2.150186",\
+ "1.016645, 1.205787, 1.396689, 1.702681, 2.292590",\
+ "1.395288, 1.584430, 1.775331, 2.081321, 2.671225");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039012, 0.039013, 0.039015, 0.039021, 0.039035",\
+ "0.090733, 0.090732, 0.090730, 0.090724, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180432",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091627, 1.091540",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039035",\
+ "0.090733, 0.090732, 0.090730, 0.090724, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180432",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091627, 1.091540",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039035",\
+ "0.090733, 0.090732, 0.090730, 0.090724, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180432",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091627, 1.091540",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039035",\
+ "0.090733, 0.090732, 0.090730, 0.090724, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180433",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091627, 1.091540",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039035",\
+ "0.090733, 0.090732, 0.090730, 0.090724, 0.090712",\
+ "0.180378, 0.180379, 0.180385, 0.180400, 0.180433",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091687, 1.091683, 1.091668, 1.091627, 1.091540");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970002.000000, 970002.062500, 970002.187500, 970002.500000, 970003.375000",\
+ "970002.125000, 970002.187500, 970002.312500, 970002.625000, 970003.500000",\
+ "970002.250000, 970002.312500, 970002.437500, 970002.750000, 970003.625000",\
+ "970002.250000, 970002.312500, 970002.437500, 970002.750000, 970003.625000",\
+ "970002.625000, 970002.687500, 970002.812500, 970003.125000, 970004.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970001.187500, 970001.187500, 970001.250000, 970001.437500, 970001.812500",\
+ "970001.312500, 970001.312500, 970001.375000, 970001.562500, 970001.937500",\
+ "970001.312500, 970001.312500, 970001.375000, 970001.562500, 970001.937500",\
+ "970001.437500, 970001.437500, 970001.500000, 970001.687500, 970002.062500",\
+ "970001.687500, 970001.687500, 970001.750000, 970001.937500, 970002.312500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231764, 0.298665, 0.415101, 0.734770, 1.589978",\
+ "0.323073, 0.389976, 0.506413, 0.826082, 1.681288",\
+ "0.433906, 0.500813, 0.617254, 0.936923, 1.792124",\
+ "0.514021, 0.580932, 0.697376, 1.017045, 1.872241",\
+ "0.917338, 0.984292, 1.100771, 1.420444, 2.275589");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073036, 0.188928, 0.391836, 0.949092, 2.441339",\
+ "0.073037, 0.188930, 0.391839, 0.949098, 2.441340",\
+ "0.073040, 0.188938, 0.391851, 0.949124, 2.441344",\
+ "0.073043, 0.188945, 0.391861, 0.949145, 2.441347",\
+ "0.073075, 0.189019, 0.391969, 0.949375, 2.441386");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.336061, 0.367493, 0.420201, 0.562554, 0.941151",\
+ "0.422827, 0.454258, 0.506967, 0.649320, 1.027916",\
+ "0.529568, 0.561000, 0.613708, 0.756061, 1.134658",\
+ "0.742022, 0.773454, 0.826162, 0.968515, 1.347112",\
+ "1.127927, 1.159358, 1.212067, 1.354419, 1.733016");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.221966, 0.288856, 0.405284, 0.724952, 1.580171",\
+ "0.311631, 0.378522, 0.494949, 0.814617, 1.669837",\
+ "0.414337, 0.481231, 0.597661, 0.917329, 1.772546",\
+ "0.488653, 0.555550, 0.671983, 0.991651, 1.846864",\
+ "0.868804, 0.935731, 1.052188, 1.371858, 2.227036");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188915, 0.391815, 0.949015, 2.441330",\
+ "0.073032, 0.188915, 0.391815, 0.949022, 2.441330",\
+ "0.073032, 0.188916, 0.391818, 0.949053, 2.441332",\
+ "0.073033, 0.188921, 0.391826, 0.949069, 2.441335",\
+ "0.073055, 0.188972, 0.391900, 0.949227, 2.441361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.247879, 0.279292, 0.331938, 0.474353, 0.852996",\
+ "0.337796, 0.369209, 0.421855, 0.564270, 0.942913",\
+ "0.451084, 0.482497, 0.535144, 0.677558, 1.056200",\
+ "0.662499, 0.693912, 0.746561, 0.888973, 1.267614",\
+ "1.032523, 1.063938, 1.116591, 1.258999, 1.637636");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180379, 0.429204, 1.091684",\
+ "0.039012, 0.090733, 0.180379, 0.429204, 1.091684",\
+ "0.039014, 0.090731, 0.180383, 0.429205, 1.091673",\
+ "0.039019, 0.090727, 0.180394, 0.429207, 1.091643",\
+ "0.039029, 0.090717, 0.180418, 0.429213, 1.091579");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[4]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[4]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.443642, 0.510546, 0.626985, 0.946654, 1.801858",\
+ "0.465905, 0.532810, 0.649248, 0.968917, 1.824121",\
+ "0.521995, 0.588899, 0.705338, 1.025007, 1.880211",\
+ "0.620162, 0.687066, 0.803505, 1.123173, 1.978378",\
+ "1.134534, 1.201443, 1.317885, 1.637554, 2.492753");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.490585, 0.522017, 0.574725, 0.717078, 1.095675",\
+ "0.512119, 0.543551, 0.596259, 0.738612, 1.117209",\
+ "0.579334, 0.610765, 0.663474, 0.805826, 1.184423",\
+ "0.689604, 0.721035, 0.773743, 0.916096, 1.294693",\
+ "1.246693, 1.278125, 1.330833, 1.473186, 1.851783");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.412827, 0.479717, 0.596144, 0.915812, 1.771032",\
+ "0.433604, 0.500495, 0.616922, 0.936590, 1.791810",\
+ "0.491196, 0.558086, 0.674513, 0.994181, 1.849401",\
+ "0.589141, 0.656031, 0.772458, 1.092126, 1.947346",\
+ "1.077990, 1.144880, 1.261307, 1.580975, 2.436195");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.392866, 0.424278, 0.476924, 0.619339, 0.997982",\
+ "0.410271, 0.441684, 0.494330, 0.636744, 1.015388",\
+ "0.482841, 0.514253, 0.566899, 0.709314, 1.087957",\
+ "0.595475, 0.626888, 0.679534, 0.821949, 1.200592",\
+ "1.122503, 1.153916, 1.206562, 1.348976, 1.727620");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437382, 0.468814, 0.521522, 0.663875, 1.042472",\
+ "0.462451, 0.493883, 0.546591, 0.688944, 1.067541",\
+ "0.531700, 0.563132, 0.615840, 0.758193, 1.136790",\
+ "0.655903, 0.687335, 0.740043, 0.882396, 1.260993",\
+ "1.286840, 1.318272, 1.370980, 1.513333, 1.891930");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.675759, 0.742664, 0.859102, 1.178771, 2.033976",\
+ "0.696234, 0.763138, 0.879577, 1.199246, 2.054450",\
+ "0.754790, 0.821694, 0.938133, 1.257802, 2.113006",\
+ "0.864334, 0.931238, 1.047677, 1.367346, 2.222550",\
+ "1.641748, 1.708657, 1.825099, 2.144769, 2.999968");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.284420, 0.315833, 0.368479, 0.510893, 0.889537",\
+ "0.308019, 0.339432, 0.392078, 0.534493, 0.913136",\
+ "0.380089, 0.411502, 0.464148, 0.606562, 0.985206",\
+ "0.506286, 0.537698, 0.590344, 0.732759, 1.111402",\
+ "1.081944, 1.113356, 1.166002, 1.308417, 1.687060");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.601029, 0.667919, 0.784346, 1.104014, 1.959234",\
+ "0.617835, 0.684726, 0.801153, 1.120821, 1.976041",\
+ "0.680343, 0.747234, 0.863661, 1.183329, 2.038548",\
+ "0.789694, 0.856584, 0.973011, 1.292679, 2.147899",\
+ "1.539211, 1.606101, 1.722528, 2.042196, 2.897416");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700503, 0.767407, 0.883846, 1.203515, 2.058719",\
+ "0.718853, 0.785757, 0.902195, 1.221864, 2.077069",\
+ "0.789289, 0.856194, 0.972632, 1.292301, 2.147506",\
+ "0.881295, 0.948199, 1.064638, 1.384307, 2.239511",\
+ "1.366874, 1.433786, 1.550230, 1.869900, 2.725095");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.488066, 0.519497, 0.572205, 0.714558, 1.093155",\
+ "0.505493, 0.536925, 0.589633, 0.731986, 1.110583",\
+ "0.582890, 0.614322, 0.667030, 0.809383, 1.187980",\
+ "0.691218, 0.722650, 0.775358, 0.917711, 1.296308",\
+ "1.240839, 1.272271, 1.324979, 1.467332, 1.845928");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.636502, 0.703393, 0.819820, 1.139488, 1.994708",\
+ "0.653118, 0.720008, 0.836435, 1.156103, 2.011323",\
+ "0.727479, 0.794369, 0.910796, 1.230464, 2.085684",\
+ "0.821960, 0.888850, 1.005277, 1.324945, 2.180165",\
+ "1.269718, 1.336608, 1.453035, 1.772703, 2.627923");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.340324, 0.371736, 0.424382, 0.566797, 0.945440",\
+ "0.353670, 0.385083, 0.437728, 0.580143, 0.958786",\
+ "0.435082, 0.466495, 0.519140, 0.661555, 1.040198",\
+ "0.544387, 0.575800, 0.628446, 0.770861, 1.149504",\
+ "1.068007, 1.099420, 1.152066, 1.294481, 1.673124");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.524400, 0.555831, 0.608540, 0.750893, 1.129489",\
+ "0.542749, 0.574181, 0.626889, 0.769242, 1.147839",\
+ "0.616605, 0.648037, 0.700745, 0.843098, 1.221695",\
+ "0.714879, 0.746311, 0.799019, 0.941372, 1.319969",\
+ "1.235698, 1.267130, 1.319839, 1.462191, 1.840788");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.651244, 0.718149, 0.834587, 1.154256, 2.009460",\
+ "0.663867, 0.730771, 0.847209, 1.166878, 2.022083",\
+ "0.718674, 0.785579, 0.902017, 1.221686, 2.076890",\
+ "0.820628, 0.887532, 1.003971, 1.323640, 2.178844",\
+ "1.548479, 1.615391, 1.731835, 2.051504, 2.906700");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.305082, 0.336495, 0.389141, 0.531556, 0.910199",\
+ "0.321682, 0.353095, 0.405741, 0.548156, 0.926799",\
+ "0.400692, 0.432104, 0.484750, 0.627165, 1.005808",\
+ "0.527571, 0.558983, 0.611629, 0.754044, 1.132687",\
+ "1.082115, 1.113528, 1.166173, 1.308588, 1.687232");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.456335, 0.523226, 0.639653, 0.959321, 1.814541",\
+ "0.469682, 0.536572, 0.652999, 0.972667, 1.827887",\
+ "0.547821, 0.614711, 0.731138, 1.050806, 1.906026",\
+ "0.649000, 0.715890, 0.832317, 1.151985, 2.007205",\
+ "1.120855, 1.187745, 1.304172, 1.623840, 2.479060");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.712314, 0.779218, 0.895657, 1.215326, 2.070530",\
+ "0.730867, 0.797771, 0.914210, 1.233879, 2.089083",\
+ "0.803565, 0.870469, 0.986908, 1.306577, 2.161781",\
+ "0.898790, 0.965694, 1.082133, 1.401802, 2.257006",\
+ "1.355292, 1.422199, 1.538640, 1.858309, 2.713511");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073040, 0.188938, 0.391851, 0.949122, 2.441344");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.494441, 0.525873, 0.578581, 0.720934, 1.099531",\
+ "0.511983, 0.543415, 0.596123, 0.738476, 1.117073",\
+ "0.589312, 0.620744, 0.673452, 0.815805, 1.194402",\
+ "0.698758, 0.730189, 0.782897, 0.925250, 1.303847",\
+ "1.224584, 1.256016, 1.308724, 1.451077, 1.829674");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.668630, 0.735520, 0.851947, 1.171615, 2.026835",\
+ "0.685451, 0.752341, 0.868768, 1.188436, 2.043656",\
+ "0.759882, 0.826773, 0.943200, 1.262868, 2.118088",\
+ "0.855138, 0.922028, 1.038455, 1.358123, 2.213343",\
+ "1.307789, 1.374679, 1.491106, 1.810774, 2.665994");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.361796, 0.393209, 0.445854, 0.588269, 0.966913",\
+ "0.375252, 0.406665, 0.459311, 0.601726, 0.980369",\
+ "0.456673, 0.488086, 0.540731, 0.683146, 1.061790",\
+ "0.566647, 0.598060, 0.650706, 0.793121, 1.171764",\
+ "1.092083, 1.123496, 1.176142, 1.318556, 1.697200");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.528266, 0.559698, 0.612406, 0.754759, 1.133356",\
+ "0.546819, 0.578250, 0.630959, 0.773312, 1.151908",\
+ "0.620877, 0.652309, 0.705017, 0.847370, 1.225967",\
+ "0.719978, 0.751410, 0.804118, 0.946471, 1.325068",\
+ "1.187533, 1.218965, 1.271673, 1.414026, 1.792623");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.604133, 0.671037, 0.787476, 1.107145, 1.962349",\
+ "0.616822, 0.683727, 0.800165, 1.119834, 1.975038",\
+ "0.671505, 0.738410, 0.854848, 1.174517, 2.029721",\
+ "0.774589, 0.841493, 0.957932, 1.277601, 2.132805",\
+ "1.473004, 1.539911, 1.656352, 1.976021, 2.831222");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073040, 0.188938, 0.391851, 0.949122, 2.441344");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.284809, 0.316222, 0.368868, 0.511283, 0.889926",\
+ "0.301623, 0.333036, 0.385681, 0.528096, 0.906739",\
+ "0.380088, 0.411501, 0.464146, 0.606561, 0.985205",\
+ "0.509697, 0.541110, 0.593756, 0.736170, 1.114814",\
+ "1.092277, 1.123690, 1.176336, 1.318751, 1.697394");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091686");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.463612, 0.530502, 0.646929, 0.966597, 1.821817",\
+ "0.477068, 0.543958, 0.660386, 0.980054, 1.835274",\
+ "0.555357, 0.622247, 0.738674, 1.058342, 1.913562",\
+ "0.655033, 0.721923, 0.838350, 1.158018, 2.013238",\
+ "1.119877, 1.186768, 1.303195, 1.622863, 2.478083");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[4]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[4]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[4]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[4]_ast2padmux_o[4]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970001.062500, 970001.062500, 970001.125000, 970001.312500, 970001.687500",\
+ "970001.187500, 970001.187500, 970001.250000, 970001.437500, 970001.812500",\
+ "970001.187500, 970001.187500, 970001.250000, 970001.437500, 970001.812500",\
+ "970001.437500, 970001.437500, 970001.500000, 970001.687500, 970002.062500",\
+ "970001.687500, 970001.687500, 970001.750000, 970001.937500, 970002.312500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970001.875000, 970001.937500, 970002.062500, 970002.375000, 970003.250000",\
+ "970002.000000, 970002.062500, 970002.187500, 970002.500000, 970003.375000",\
+ "970002.125000, 970002.187500, 970002.312500, 970002.625000, 970003.500000",\
+ "970002.375000, 970002.437500, 970002.562500, 970002.875000, 970003.750000",\
+ "970002.625000, 970002.687500, 970002.812500, 970003.125000, 970004.000000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[4]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[4]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590000.250000, 590000.312500, 590000.437500, 590000.750000, 590001.625000",\
+ "590000.375000, 590000.437500, 590000.562500, 590000.875000, 590001.750000",\
+ "590000.375000, 590000.437500, 590000.562500, 590000.875000, 590001.750000",\
+ "590000.500000, 590000.562500, 590000.687500, 590001.000000, 590001.875000",\
+ "590000.750000, 590000.812500, 590000.937500, 590001.250000, 590002.125000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590000.812500, 590000.812500, 590000.875000, 590001.062500, 590001.437500",\
+ "590000.937500, 590000.937500, 590001.000000, 590001.187500, 590001.562500",\
+ "590001.062500, 590001.062500, 590001.125000, 590001.312500, 590001.687500",\
+ "590001.187500, 590001.187500, 590001.250000, 590001.437500, 590001.812500",\
+ "590001.562500, 590001.562500, 590001.625000, 590001.812500, 590002.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast2padmux_o[4]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590000.187500, 590000.250000, 590000.375000, 590000.687500, 590001.562500",\
+ "590000.187500, 590000.250000, 590000.375000, 590000.687500, 590001.562500",\
+ "590000.312500, 590000.375000, 590000.500000, 590000.812500, 590001.687500",\
+ "590000.437500, 590000.500000, 590000.625000, 590000.937500, 590001.812500",\
+ "590000.687500, 590000.750000, 590000.875000, 590001.187500, 590002.062500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590000.812500, 590000.812500, 590000.875000, 590001.000000, 590001.437500",\
+ "590000.937500, 590000.937500, 590001.000000, 590001.125000, 590001.562500",\
+ "590001.062500, 590001.062500, 590001.125000, 590001.250000, 590001.687500",\
+ "590001.187500, 590001.187500, 590001.250000, 590001.375000, 590001.812500",\
+ "590001.437500, 590001.437500, 590001.500000, 590001.625000, 590002.062500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039013, 0.090351, 0.180124, 0.429131, 1.091682",\
+ "0.039013, 0.090351, 0.180124, 0.429131, 1.091682",\
+ "0.039013, 0.090351, 0.180124, 0.429131, 1.091682",\
+ "0.039013, 0.090351, 0.180124, 0.429131, 1.091682",\
+ "0.039013, 0.090351, 0.180124, 0.429131, 1.091682");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast2padmux_o[4]_una_min*/
+
+} /* end of pin ast2padmux_o[4] */
+
+pin("ast2padmux_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[3];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.257031, 0.528778, 0.797030, 1.242767, 2.134242",\
+ "0.323932, 0.595681, 0.863940, 1.309691, 2.201193",\
+ "0.440368, 0.712118, 0.980382, 1.426145, 2.317669",\
+ "0.760037, 1.031787, 1.300052, 1.745815, 2.637342",\
+ "1.615245, 1.886993, 2.155250, 2.600997, 3.492491",\
+ "0.315617, 0.587294, 0.855812, 1.300474, 2.190349",\
+ "0.382518, 0.654197, 0.922722, 1.367397, 2.257300",\
+ "0.498954, 0.770634, 1.039164, 1.483851, 2.373776",\
+ "0.818623, 1.090303, 1.358834, 1.803522, 2.693449",\
+ "1.673831, 1.945509, 2.214032, 2.658703, 3.548597",\
+ "0.460207, 0.733101, 0.999707, 1.444229, 2.334082",\
+ "0.527108, 0.800004, 1.066617, 1.511152, 2.401032",\
+ "0.643544, 0.916442, 1.183060, 1.627606, 2.517509",\
+ "0.963213, 1.236110, 1.502729, 1.947277, 2.837182",\
+ "1.818421, 2.091316, 2.357927, 2.802459, 3.692330",\
+ "0.496168, 0.770865, 1.036627, 1.481020, 2.370640",\
+ "0.563069, 0.837768, 1.103536, 1.547944, 2.437591",\
+ "0.679505, 0.954206, 1.219979, 1.664398, 2.554067",\
+ "0.999174, 1.273875, 1.539648, 1.984068, 2.873740",\
+ "1.854382, 2.129080, 2.394846, 2.839250, 3.728889",\
+ "0.825262, 1.134787, 1.388262, 1.830277, 2.716096",\
+ "0.892164, 1.201690, 1.455172, 1.897201, 2.783047",\
+ "1.008600, 1.318128, 1.571615, 2.013655, 2.899523",\
+ "1.328269, 1.637797, 1.891284, 2.333325, 3.219196",\
+ "2.183476, 2.493002, 2.746482, 3.188507, 4.074345");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073038, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188932, 0.188943, 0.188966, 0.189013",\
+ "0.391836, 0.391843, 0.391858, 0.391892, 0.391961",\
+ "0.949092, 0.949105, 0.949137, 0.949210, 0.949357",\
+ "2.441339, 2.441341, 2.441346, 2.441358, 2.441383");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.308725, 0.491796, 0.685627, 0.996163, 1.596700",\
+ "0.340157, 0.523228, 0.717058, 1.027595, 1.628132",\
+ "0.392865, 0.575936, 0.769767, 1.080304, 1.680844",\
+ "0.535218, 0.718289, 0.912119, 1.222656, 1.823194",\
+ "0.913815, 1.096886, 1.290716, 1.601252, 2.201788",\
+ "0.368637, 0.551695, 0.745581, 1.055944, 1.656317",\
+ "0.400068, 0.583126, 0.777012, 1.087376, 1.687749",\
+ "0.452777, 0.635835, 0.829721, 1.140085, 1.740461",\
+ "0.595130, 0.778187, 0.972073, 1.282437, 1.882811",\
+ "0.973727, 1.156784, 1.350670, 1.661033, 2.261405",\
+ "0.501379, 0.683946, 0.877464, 1.187801, 1.788124",\
+ "0.532811, 0.715378, 0.908895, 1.219233, 1.819557",\
+ "0.585519, 0.768086, 0.961603, 1.271942, 1.872268",\
+ "0.727872, 0.910439, 1.103956, 1.414294, 2.014618",\
+ "1.106469, 1.289036, 1.482553, 1.792891, 2.393212",\
+ "0.534516, 0.717073, 0.910588, 1.220754, 1.820733",\
+ "0.565947, 0.748505, 0.942020, 1.252186, 1.852165",\
+ "0.618656, 0.801213, 0.994728, 1.304895, 1.904876",\
+ "0.761009, 0.943566, 1.137081, 1.447247, 2.047226",\
+ "1.139605, 1.322163, 1.515678, 1.825843, 2.425821",\
+ "0.835592, 1.022294, 1.214223, 1.523770, 2.122581",\
+ "0.867023, 1.053726, 1.245655, 1.555202, 2.154014",\
+ "0.919731, 1.106434, 1.298363, 1.607911, 2.206725",\
+ "1.062084, 1.248787, 1.440716, 1.750263, 2.349075",\
+ "1.440681, 1.627384, 1.819313, 2.128859, 2.727669");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[2]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.252558, 0.520745, 0.784515, 1.222569, 2.097608",\
+ "0.319449, 0.587637, 0.851411, 1.289475, 2.164534",\
+ "0.435876, 0.704065, 0.967843, 1.405915, 2.280990",\
+ "0.755544, 1.023733, 1.287511, 1.725584, 2.600661",\
+ "1.610764, 1.878952, 2.142725, 2.580786, 3.455839",\
+ "0.311120, 0.579252, 0.843280, 1.280275, 2.153714",\
+ "0.378011, 0.646143, 0.910176, 1.347182, 2.220640",\
+ "0.494438, 0.762572, 1.026608, 1.463622, 2.337097",\
+ "0.814106, 1.082240, 1.346276, 1.783291, 2.656767",\
+ "1.669326, 1.937458, 2.201490, 2.638493, 3.511946",\
+ "0.455460, 0.724999, 0.987167, 1.424079, 2.297447",\
+ "0.522351, 0.791891, 1.054064, 1.490985, 2.364373",\
+ "0.638778, 0.908319, 1.170496, 1.607426, 2.480830",\
+ "0.958446, 1.227987, 1.490164, 1.927095, 2.800500",\
+ "1.813666, 2.083206, 2.345378, 2.782297, 3.655679",\
+ "0.491341, 0.762735, 1.024086, 1.460950, 2.334005",\
+ "0.558231, 0.829626, 1.090982, 1.527856, 2.400931",\
+ "0.674659, 0.946054, 1.207414, 1.644296, 2.517388",\
+ "0.994327, 1.265722, 1.527082, 1.963966, 2.837059",\
+ "1.849546, 2.120941, 2.382296, 2.819168, 3.692237",\
+ "0.819555, 1.126080, 1.375645, 1.810251, 2.679461",\
+ "0.886446, 1.192972, 1.442542, 1.877157, 2.746387",\
+ "1.002873, 1.309400, 1.558974, 1.993597, 2.862844",\
+ "1.322541, 1.629068, 1.878642, 2.313266, 3.182515",\
+ "2.177761, 2.484287, 2.733856, 3.168468, 4.037693");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391816, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949034, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441331, 2.441334, 2.441343, 2.441361");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.262934, 0.448489, 0.641595, 0.948064, 1.538713",\
+ "0.294346, 0.479902, 0.673008, 0.979478, 1.570129",\
+ "0.346992, 0.532548, 0.725656, 1.032128, 1.622785",\
+ "0.489407, 0.674962, 0.868069, 1.174539, 1.765190",\
+ "0.868050, 1.053605, 1.246711, 1.553179, 2.143825",\
+ "0.322845, 0.508317, 0.701440, 1.007833, 1.598330",\
+ "0.354258, 0.539729, 0.732853, 1.039247, 1.629746",\
+ "0.406904, 0.592376, 0.785500, 1.091897, 1.682402",\
+ "0.549319, 0.734790, 0.927914, 1.234307, 1.824806",\
+ "0.927962, 1.113433, 1.306556, 1.612947, 2.203442",\
+ "0.455621, 0.640568, 0.833323, 1.139690, 1.730137",\
+ "0.487034, 0.671981, 0.864736, 1.171104, 1.761553",\
+ "0.539679, 0.724627, 0.917383, 1.223754, 1.814209",\
+ "0.682094, 0.867041, 1.059797, 1.366165, 1.956614",\
+ "1.060737, 1.245684, 1.438439, 1.744805, 2.335249",\
+ "0.488779, 0.673866, 0.866553, 1.172770, 1.762998",\
+ "0.520192, 0.705279, 0.897966, 1.204184, 1.794413",\
+ "0.572837, 0.757925, 0.950613, 1.256834, 1.847070",\
+ "0.715252, 0.900339, 1.093027, 1.399244, 1.989474",\
+ "1.093896, 1.278982, 1.471669, 1.777884, 2.368110",\
+ "0.790171, 0.979313, 1.170216, 1.475973, 2.065303",\
+ "0.821584, 1.010726, 1.201629, 1.507387, 2.096719",\
+ "0.874230, 1.063372, 1.254276, 1.560037, 2.149375",\
+ "1.016645, 1.205787, 1.396689, 1.702447, 2.291780",\
+ "1.395288, 1.584430, 1.775331, 2.081088, 2.670415");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180378, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091687, 1.091683, 1.091668, 1.091628, 1.091545");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.562500, 380001.593750, 380001.656250, 380001.781250, 380002.156250",\
+ "380001.656250, 380001.687500, 380001.750000, 380001.875000, 380002.250000",\
+ "380001.750000, 380001.781250, 380001.843750, 380001.968750, 380002.343750",\
+ "380001.812500, 380001.843750, 380001.906250, 380002.031250, 380002.406250",\
+ "380002.156250, 380002.187500, 380002.250000, 380002.375000, 380002.750000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[3]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[3]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.443642, 0.510546, 0.626985, 0.946654, 1.801858",\
+ "0.465905, 0.532810, 0.649248, 0.968917, 1.824121",\
+ "0.522299, 0.589203, 0.705642, 1.025311, 1.880515",\
+ "0.620162, 0.687066, 0.803505, 1.123173, 1.978378",\
+ "1.134534, 1.201443, 1.317885, 1.637554, 2.492753");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.490585, 0.522017, 0.574725, 0.717078, 1.095675",\
+ "0.512119, 0.543551, 0.596259, 0.738612, 1.117209",\
+ "0.579305, 0.610737, 0.663445, 0.805798, 1.184395",\
+ "0.689604, 0.721035, 0.773743, 0.916096, 1.294693",\
+ "1.248357, 1.279789, 1.332497, 1.474850, 1.853447");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.412827, 0.479717, 0.596144, 0.915812, 1.771032",\
+ "0.433604, 0.500495, 0.616922, 0.936590, 1.791810",\
+ "0.491196, 0.558086, 0.674513, 0.994181, 1.849401",\
+ "0.589141, 0.656031, 0.772458, 1.092126, 1.947346",\
+ "1.077990, 1.144880, 1.261307, 1.580975, 2.436195");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.392762, 0.424174, 0.476820, 0.619235, 0.997878",\
+ "0.410167, 0.441580, 0.494226, 0.636641, 1.015284",\
+ "0.482737, 0.514149, 0.566795, 0.709210, 1.087853",\
+ "0.595371, 0.626784, 0.679430, 0.821845, 1.200488",\
+ "1.122399, 1.153812, 1.206458, 1.348872, 1.727516");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437382, 0.468814, 0.521522, 0.663875, 1.042472",\
+ "0.462451, 0.493883, 0.546591, 0.688944, 1.067541",\
+ "0.531672, 0.563103, 0.615812, 0.758164, 1.136761",\
+ "0.655903, 0.687335, 0.740043, 0.882396, 1.260993",\
+ "1.288504, 1.319936, 1.372644, 1.514997, 1.893594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.675759, 0.742664, 0.859102, 1.178771, 2.033976",\
+ "0.696234, 0.763138, 0.879577, 1.199246, 2.054450",\
+ "0.755094, 0.821998, 0.938437, 1.258106, 2.113310",\
+ "0.864334, 0.931238, 1.047677, 1.367346, 2.222550",\
+ "1.641748, 1.708657, 1.825099, 2.144769, 2.999968");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262392, 0.293804, 0.346450, 0.488865, 0.867508",\
+ "0.286002, 0.317414, 0.370060, 0.512475, 0.891118",\
+ "0.357340, 0.388753, 0.441399, 0.583814, 0.962457",\
+ "0.477148, 0.508560, 0.561206, 0.703621, 1.082264",\
+ "1.022245, 1.053658, 1.106303, 1.248718, 1.627362");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.582342, 0.649232, 0.765660, 1.085328, 1.940547",\
+ "0.599034, 0.665924, 0.782351, 1.102020, 1.957239",\
+ "0.661428, 0.728319, 0.844746, 1.164414, 2.019634",\
+ "0.770818, 0.837708, 0.954135, 1.273803, 2.129023",\
+ "1.507966, 1.574856, 1.691283, 2.010951, 2.866171");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700503, 0.767407, 0.883846, 1.203515, 2.058719",\
+ "0.718853, 0.785757, 0.902195, 1.221864, 2.077069",\
+ "0.789396, 0.856300, 0.972739, 1.292408, 2.147612",\
+ "0.881867, 0.948772, 1.065210, 1.384879, 2.240083",\
+ "1.366874, 1.433786, 1.550230, 1.869900, 2.725095");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.488066, 0.519497, 0.572205, 0.714558, 1.093155",\
+ "0.505493, 0.536925, 0.589633, 0.731986, 1.110583",\
+ "0.582890, 0.614322, 0.667030, 0.809383, 1.187980",\
+ "0.691204, 0.722635, 0.775344, 0.917696, 1.296293",\
+ "1.242374, 1.273805, 1.326514, 1.468867, 1.847463");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.636502, 0.703393, 0.819820, 1.139488, 1.994708",\
+ "0.653118, 0.720008, 0.836435, 1.156103, 2.011323",\
+ "0.727539, 0.794429, 0.910857, 1.230525, 2.085744",\
+ "0.821960, 0.888850, 1.005277, 1.324945, 2.180165",\
+ "1.269718, 1.336608, 1.453035, 1.772703, 2.627923");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.339768, 0.371181, 0.423827, 0.566242, 0.944885",\
+ "0.353114, 0.384527, 0.437173, 0.579588, 0.958231",\
+ "0.435092, 0.466504, 0.519150, 0.661565, 1.040208",\
+ "0.544311, 0.575724, 0.628370, 0.770784, 1.149428",\
+ "1.067931, 1.099343, 1.151989, 1.294404, 1.673047");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.524400, 0.555831, 0.608540, 0.750893, 1.129489",\
+ "0.542749, 0.574181, 0.626889, 0.769242, 1.147839",\
+ "0.616605, 0.648037, 0.700745, 0.843098, 1.221695",\
+ "0.714865, 0.746296, 0.799004, 0.941357, 1.319954",\
+ "1.237234, 1.268665, 1.321373, 1.463726, 1.842323");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.651244, 0.718149, 0.834587, 1.154256, 2.009460",\
+ "0.663867, 0.730771, 0.847209, 1.166878, 2.022083",\
+ "0.718781, 0.785685, 0.902124, 1.221793, 2.076997",\
+ "0.821201, 0.888105, 1.004544, 1.324213, 2.179417",\
+ "1.548479, 1.615391, 1.731835, 2.051504, 2.906700");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.267796, 0.299208, 0.351854, 0.494269, 0.872912",\
+ "0.284541, 0.315954, 0.368600, 0.511015, 0.889658",\
+ "0.362798, 0.394211, 0.446856, 0.589271, 0.967914",\
+ "0.486677, 0.518090, 0.570736, 0.713151, 1.091794",\
+ "1.055266, 1.086678, 1.139324, 1.281739, 1.660382");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.456335, 0.523226, 0.639653, 0.959321, 1.814541",\
+ "0.469682, 0.536572, 0.652999, 0.972667, 1.827887",\
+ "0.547821, 0.614711, 0.731138, 1.050806, 1.906026",\
+ "0.649000, 0.715890, 0.832317, 1.151985, 2.007205",\
+ "1.120855, 1.187745, 1.304172, 1.623840, 2.479060");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.712314, 0.779218, 0.895657, 1.215326, 2.070530",\
+ "0.730867, 0.797771, 0.914210, 1.233879, 2.089083",\
+ "0.803565, 0.870469, 0.986908, 1.306577, 2.161781",\
+ "0.898790, 0.965694, 1.082133, 1.401802, 2.257006",\
+ "1.358120, 1.425029, 1.541471, 1.861141, 2.716340");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.494441, 0.525873, 0.578581, 0.720934, 1.099531",\
+ "0.511983, 0.543415, 0.596123, 0.738476, 1.117073",\
+ "0.589312, 0.620744, 0.673452, 0.815805, 1.194402",\
+ "0.698758, 0.730189, 0.782897, 0.925250, 1.303847",\
+ "1.229663, 1.261095, 1.313803, 1.456156, 1.834753");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.668630, 0.735520, 0.851947, 1.171615, 2.026835",\
+ "0.685451, 0.752341, 0.868768, 1.188436, 2.043656",\
+ "0.759882, 0.826773, 0.943200, 1.262868, 2.118088",\
+ "0.855138, 0.922028, 1.038455, 1.358123, 2.213343",\
+ "1.307789, 1.374679, 1.491106, 1.810774, 2.665994");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.361699, 0.393111, 0.445757, 0.588172, 0.966815",\
+ "0.375155, 0.406568, 0.459214, 0.601628, 0.980272",\
+ "0.456576, 0.487988, 0.540634, 0.683049, 1.061692",\
+ "0.566550, 0.597963, 0.650609, 0.793024, 1.171667",\
+ "1.091986, 1.123399, 1.176044, 1.318459, 1.697102");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.528266, 0.559698, 0.612406, 0.754759, 1.133356",\
+ "0.546819, 0.578250, 0.630959, 0.773312, 1.151908",\
+ "0.620877, 0.652309, 0.705017, 0.847370, 1.225967",\
+ "0.719978, 0.751410, 0.804118, 0.946471, 1.325068",\
+ "1.192613, 1.224045, 1.276753, 1.419106, 1.797703");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.606303, 0.673207, 0.789646, 1.109315, 1.964519",\
+ "0.618992, 0.685897, 0.802335, 1.122004, 1.977208",\
+ "0.673763, 0.740668, 0.857106, 1.176775, 2.031980",\
+ "0.776802, 0.843707, 0.960145, 1.279814, 2.135018",\
+ "1.483718, 1.550627, 1.667069, 1.986738, 2.841937");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262699, 0.294112, 0.346758, 0.489173, 0.867816",\
+ "0.279513, 0.310926, 0.363572, 0.505987, 0.884630",\
+ "0.357852, 0.389264, 0.441910, 0.584325, 0.962968",\
+ "0.480383, 0.511796, 0.564441, 0.706856, 1.085500",\
+ "1.037548, 1.068961, 1.121607, 1.264022, 1.642665");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.463612, 0.530502, 0.646929, 0.966597, 1.821817",\
+ "0.477068, 0.543958, 0.660386, 0.980054, 1.835274",\
+ "0.555357, 0.622247, 0.738674, 1.058342, 1.913562",\
+ "0.655033, 0.721923, 0.838350, 1.158018, 2.013238",\
+ "1.119877, 1.186768, 1.303195, 1.622863, 2.478083");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[3]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[3]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[3]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[3]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[3]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "379999.875000, 379999.937500, 380000.062500, 380000.375000, 380001.218750",\
+ "379999.968750, 380000.031250, 380000.156250, 380000.468750, 380001.312500",\
+ "380000.062500, 380000.125000, 380000.250000, 380000.562500, 380001.406250",\
+ "380000.218750, 380000.281250, 380000.406250, 380000.718750, 380001.562500",\
+ "380000.468750, 380000.531250, 380000.656250, 380000.968750, 380001.812500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.468750, 380001.500000, 380001.562500, 380001.687500, 380002.062500",\
+ "380001.562500, 380001.593750, 380001.656250, 380001.781250, 380002.156250",\
+ "380001.687500, 380001.718750, 380001.781250, 380001.906250, 380002.281250",\
+ "380001.875000, 380001.906250, 380001.968750, 380002.093750, 380002.468750",\
+ "380002.187500, 380002.218750, 380002.281250, 380002.406250, 380002.781250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[3]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "379999.843750, 379999.906250, 380000.031250, 380000.343750, 380001.187500",\
+ "379999.937500, 380000.000000, 380000.125000, 380000.437500, 380001.281250",\
+ "380000.000000, 380000.062500, 380000.187500, 380000.500000, 380001.343750",\
+ "380000.156250, 380000.218750, 380000.343750, 380000.656250, 380001.500000",\
+ "380000.375000, 380000.437500, 380000.562500, 380000.875000, 380001.718750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.375000, 380001.406250, 380001.437500, 380001.593750, 380001.968750",\
+ "380001.468750, 380001.500000, 380001.531250, 380001.687500, 380002.062500",\
+ "380001.562500, 380001.593750, 380001.625000, 380001.781250, 380002.156250",\
+ "380001.750000, 380001.781250, 380001.812500, 380001.968750, 380002.343750",\
+ "380002.000000, 380002.031250, 380002.062500, 380002.218750, 380002.593750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[3]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[3]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[3]_inv_min*/
+
+} /* end of pin ast2padmux_o[3] */
+
+pin("ast2padmux_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[2];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.257031, 0.528778, 0.797030, 1.242767, 2.134242",\
+ "0.323932, 0.595681, 0.863940, 1.309691, 2.201193",\
+ "0.440368, 0.712118, 0.980382, 1.426145, 2.317669",\
+ "0.760037, 1.031787, 1.300052, 1.745815, 2.637342",\
+ "1.615245, 1.886993, 2.155250, 2.600997, 3.492491",\
+ "0.315617, 0.587294, 0.855812, 1.300474, 2.190349",\
+ "0.382518, 0.654197, 0.922722, 1.367397, 2.257300",\
+ "0.498954, 0.770634, 1.039164, 1.483851, 2.373776",\
+ "0.818623, 1.090303, 1.358834, 1.803522, 2.693449",\
+ "1.673831, 1.945509, 2.214032, 2.658703, 3.548597",\
+ "0.460207, 0.733101, 0.999707, 1.444229, 2.334082",\
+ "0.527108, 0.800004, 1.066617, 1.511152, 2.401032",\
+ "0.643544, 0.916442, 1.183060, 1.627606, 2.517509",\
+ "0.963213, 1.236110, 1.502729, 1.947277, 2.837182",\
+ "1.818421, 2.091316, 2.357927, 2.802459, 3.692330",\
+ "0.496168, 0.770865, 1.036627, 1.481020, 2.370640",\
+ "0.563069, 0.837768, 1.103536, 1.547944, 2.437591",\
+ "0.679505, 0.954206, 1.219979, 1.664398, 2.554067",\
+ "0.999174, 1.273875, 1.539648, 1.984068, 2.873740",\
+ "1.854382, 2.129080, 2.394846, 2.839250, 3.728889",\
+ "0.825262, 1.134787, 1.388262, 1.830277, 2.716096",\
+ "0.892164, 1.201690, 1.455172, 1.897201, 2.783047",\
+ "1.008600, 1.318128, 1.571615, 2.013655, 2.899523",\
+ "1.328269, 1.637797, 1.891284, 2.333325, 3.219196",\
+ "2.183476, 2.493002, 2.746482, 3.188507, 4.074345");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073038, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188932, 0.188943, 0.188966, 0.189013",\
+ "0.391836, 0.391843, 0.391858, 0.391892, 0.391961",\
+ "0.949092, 0.949105, 0.949137, 0.949210, 0.949357",\
+ "2.441339, 2.441341, 2.441346, 2.441358, 2.441383");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.308725, 0.491796, 0.685627, 0.996163, 1.596700",\
+ "0.340157, 0.523228, 0.717058, 1.027595, 1.628132",\
+ "0.392865, 0.575936, 0.769767, 1.080304, 1.680844",\
+ "0.535218, 0.718289, 0.912119, 1.222656, 1.823194",\
+ "0.913815, 1.096886, 1.290716, 1.601252, 2.201788",\
+ "0.368637, 0.551695, 0.745581, 1.055944, 1.656317",\
+ "0.400068, 0.583126, 0.777012, 1.087376, 1.687749",\
+ "0.452777, 0.635835, 0.829721, 1.140085, 1.740461",\
+ "0.595130, 0.778187, 0.972073, 1.282437, 1.882811",\
+ "0.973727, 1.156784, 1.350670, 1.661033, 2.261405",\
+ "0.501379, 0.683946, 0.877464, 1.187801, 1.788124",\
+ "0.532811, 0.715378, 0.908895, 1.219233, 1.819557",\
+ "0.585519, 0.768086, 0.961603, 1.271942, 1.872268",\
+ "0.727872, 0.910439, 1.103956, 1.414294, 2.014618",\
+ "1.106469, 1.289036, 1.482553, 1.792891, 2.393212",\
+ "0.534516, 0.717073, 0.910588, 1.220754, 1.820733",\
+ "0.565947, 0.748505, 0.942020, 1.252186, 1.852165",\
+ "0.618656, 0.801213, 0.994728, 1.304895, 1.904876",\
+ "0.761009, 0.943566, 1.137081, 1.447247, 2.047226",\
+ "1.139605, 1.322163, 1.515678, 1.825843, 2.425821",\
+ "0.835592, 1.022294, 1.214223, 1.523770, 2.122581",\
+ "0.867023, 1.053726, 1.245655, 1.555202, 2.154014",\
+ "0.919731, 1.106434, 1.298363, 1.607911, 2.206725",\
+ "1.062084, 1.248787, 1.440716, 1.750263, 2.349075",\
+ "1.440681, 1.627384, 1.819313, 2.128859, 2.727669");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[1]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.252558, 0.520745, 0.784515, 1.222569, 2.097608",\
+ "0.319449, 0.587637, 0.851411, 1.289475, 2.164534",\
+ "0.435876, 0.704065, 0.967843, 1.405915, 2.280990",\
+ "0.755544, 1.023733, 1.287511, 1.725584, 2.600661",\
+ "1.610764, 1.878952, 2.142725, 2.580786, 3.455839",\
+ "0.311120, 0.579252, 0.843280, 1.280275, 2.153714",\
+ "0.378011, 0.646143, 0.910176, 1.347182, 2.220640",\
+ "0.494438, 0.762572, 1.026608, 1.463622, 2.337097",\
+ "0.814106, 1.082240, 1.346276, 1.783291, 2.656767",\
+ "1.669326, 1.937458, 2.201490, 2.638493, 3.511946",\
+ "0.455460, 0.724999, 0.987167, 1.424079, 2.297447",\
+ "0.522351, 0.791891, 1.054064, 1.490985, 2.364373",\
+ "0.638778, 0.908319, 1.170496, 1.607426, 2.480830",\
+ "0.958446, 1.227987, 1.490164, 1.927095, 2.800500",\
+ "1.813666, 2.083206, 2.345378, 2.782297, 3.655679",\
+ "0.491341, 0.762735, 1.024086, 1.460950, 2.334005",\
+ "0.558231, 0.829626, 1.090982, 1.527856, 2.400931",\
+ "0.674659, 0.946054, 1.207414, 1.644296, 2.517388",\
+ "0.994327, 1.265722, 1.527082, 1.963966, 2.837059",\
+ "1.849546, 2.120941, 2.382296, 2.819168, 3.692237",\
+ "0.819555, 1.126080, 1.375645, 1.810251, 2.679461",\
+ "0.886446, 1.192972, 1.442542, 1.877157, 2.746387",\
+ "1.002873, 1.309400, 1.558974, 1.993597, 2.862844",\
+ "1.322541, 1.629068, 1.878642, 2.313266, 3.182515",\
+ "2.177761, 2.484287, 2.733856, 3.168468, 4.037693");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391816, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949034, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441331, 2.441334, 2.441343, 2.441361");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.262934, 0.448489, 0.641595, 0.948064, 1.538713",\
+ "0.294346, 0.479902, 0.673008, 0.979478, 1.570129",\
+ "0.346992, 0.532548, 0.725656, 1.032128, 1.622785",\
+ "0.489407, 0.674962, 0.868069, 1.174539, 1.765190",\
+ "0.868050, 1.053605, 1.246711, 1.553179, 2.143825",\
+ "0.322845, 0.508317, 0.701440, 1.007833, 1.598330",\
+ "0.354258, 0.539729, 0.732853, 1.039247, 1.629746",\
+ "0.406904, 0.592376, 0.785500, 1.091897, 1.682402",\
+ "0.549319, 0.734790, 0.927914, 1.234307, 1.824806",\
+ "0.927962, 1.113433, 1.306556, 1.612947, 2.203442",\
+ "0.455621, 0.640568, 0.833323, 1.139690, 1.730137",\
+ "0.487034, 0.671981, 0.864736, 1.171104, 1.761553",\
+ "0.539679, 0.724627, 0.917383, 1.223754, 1.814209",\
+ "0.682094, 0.867041, 1.059797, 1.366165, 1.956614",\
+ "1.060737, 1.245684, 1.438439, 1.744805, 2.335249",\
+ "0.488779, 0.673866, 0.866553, 1.172770, 1.762998",\
+ "0.520192, 0.705279, 0.897966, 1.204184, 1.794413",\
+ "0.572837, 0.757925, 0.950613, 1.256834, 1.847070",\
+ "0.715252, 0.900339, 1.093027, 1.399244, 1.989474",\
+ "1.093896, 1.278982, 1.471669, 1.777884, 2.368110",\
+ "0.790171, 0.979313, 1.170216, 1.475973, 2.065303",\
+ "0.821584, 1.010726, 1.201629, 1.507387, 2.096719",\
+ "0.874230, 1.063372, 1.254276, 1.560037, 2.149375",\
+ "1.016645, 1.205787, 1.396689, 1.702447, 2.291780",\
+ "1.395288, 1.584430, 1.775331, 2.081088, 2.670415");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180378, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091687, 1.091683, 1.091668, 1.091628, 1.091545");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.437500, 380000.437500, 380000.468750, 380000.531250, 380000.718750",\
+ "380000.531250, 380000.531250, 380000.562500, 380000.625000, 380000.812500",\
+ "380000.593750, 380000.593750, 380000.625000, 380000.687500, 380000.875000",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.968750, 380000.968750, 380001.000000, 380001.062500, 380001.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[2]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[2]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.443642, 0.510546, 0.626985, 0.946654, 1.801858",\
+ "0.465905, 0.532810, 0.649248, 0.968917, 1.824121",\
+ "0.522299, 0.589203, 0.705642, 1.025311, 1.880515",\
+ "0.620162, 0.687066, 0.803505, 1.123173, 1.978378",\
+ "1.134534, 1.201443, 1.317885, 1.637554, 2.492753");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.490585, 0.522017, 0.574725, 0.717078, 1.095675",\
+ "0.512119, 0.543551, 0.596259, 0.738612, 1.117209",\
+ "0.579305, 0.610737, 0.663445, 0.805798, 1.184395",\
+ "0.689604, 0.721035, 0.773743, 0.916096, 1.294693",\
+ "1.248357, 1.279789, 1.332497, 1.474850, 1.853447");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.412827, 0.479717, 0.596144, 0.915812, 1.771032",\
+ "0.433604, 0.500495, 0.616922, 0.936590, 1.791810",\
+ "0.491196, 0.558086, 0.674513, 0.994181, 1.849401",\
+ "0.589141, 0.656031, 0.772458, 1.092126, 1.947346",\
+ "1.077990, 1.144880, 1.261307, 1.580975, 2.436195");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.392762, 0.424174, 0.476820, 0.619235, 0.997878",\
+ "0.410167, 0.441580, 0.494226, 0.636641, 1.015284",\
+ "0.482737, 0.514149, 0.566795, 0.709210, 1.087853",\
+ "0.595371, 0.626784, 0.679430, 0.821845, 1.200488",\
+ "1.122399, 1.153812, 1.206458, 1.348872, 1.727516");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437382, 0.468814, 0.521522, 0.663875, 1.042472",\
+ "0.462451, 0.493883, 0.546591, 0.688944, 1.067541",\
+ "0.531672, 0.563103, 0.615812, 0.758164, 1.136761",\
+ "0.655903, 0.687335, 0.740043, 0.882396, 1.260993",\
+ "1.288504, 1.319936, 1.372644, 1.514997, 1.893594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.675759, 0.742664, 0.859102, 1.178771, 2.033976",\
+ "0.696234, 0.763138, 0.879577, 1.199246, 2.054450",\
+ "0.755094, 0.821998, 0.938437, 1.258106, 2.113310",\
+ "0.864334, 0.931238, 1.047677, 1.367346, 2.222550",\
+ "1.641748, 1.708657, 1.825099, 2.144769, 2.999968");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262392, 0.293804, 0.346450, 0.488865, 0.867508",\
+ "0.286002, 0.317414, 0.370060, 0.512475, 0.891118",\
+ "0.357340, 0.388753, 0.441399, 0.583814, 0.962457",\
+ "0.477148, 0.508560, 0.561206, 0.703621, 1.082264",\
+ "1.022245, 1.053658, 1.106303, 1.248718, 1.627362");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.582342, 0.649232, 0.765660, 1.085328, 1.940547",\
+ "0.599034, 0.665924, 0.782351, 1.102020, 1.957239",\
+ "0.661428, 0.728319, 0.844746, 1.164414, 2.019634",\
+ "0.770818, 0.837708, 0.954135, 1.273803, 2.129023",\
+ "1.507966, 1.574856, 1.691283, 2.010951, 2.866171");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700503, 0.767407, 0.883846, 1.203515, 2.058719",\
+ "0.718853, 0.785757, 0.902195, 1.221864, 2.077069",\
+ "0.789396, 0.856300, 0.972739, 1.292408, 2.147612",\
+ "0.881867, 0.948772, 1.065210, 1.384879, 2.240083",\
+ "1.366874, 1.433786, 1.550230, 1.869900, 2.725095");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.488066, 0.519497, 0.572205, 0.714558, 1.093155",\
+ "0.505493, 0.536925, 0.589633, 0.731986, 1.110583",\
+ "0.582890, 0.614322, 0.667030, 0.809383, 1.187980",\
+ "0.691204, 0.722635, 0.775344, 0.917696, 1.296293",\
+ "1.242374, 1.273805, 1.326514, 1.468867, 1.847463");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.636502, 0.703393, 0.819820, 1.139488, 1.994708",\
+ "0.653118, 0.720008, 0.836435, 1.156103, 2.011323",\
+ "0.727539, 0.794429, 0.910857, 1.230525, 2.085744",\
+ "0.821960, 0.888850, 1.005277, 1.324945, 2.180165",\
+ "1.269718, 1.336608, 1.453035, 1.772703, 2.627923");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.339768, 0.371181, 0.423827, 0.566242, 0.944885",\
+ "0.353114, 0.384527, 0.437173, 0.579588, 0.958231",\
+ "0.435092, 0.466504, 0.519150, 0.661565, 1.040208",\
+ "0.544311, 0.575724, 0.628370, 0.770784, 1.149428",\
+ "1.067931, 1.099343, 1.151989, 1.294404, 1.673047");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.524400, 0.555831, 0.608540, 0.750893, 1.129489",\
+ "0.542749, 0.574181, 0.626889, 0.769242, 1.147839",\
+ "0.616605, 0.648037, 0.700745, 0.843098, 1.221695",\
+ "0.714865, 0.746296, 0.799004, 0.941357, 1.319954",\
+ "1.237234, 1.268665, 1.321373, 1.463726, 1.842323");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.651244, 0.718149, 0.834587, 1.154256, 2.009460",\
+ "0.663867, 0.730771, 0.847209, 1.166878, 2.022083",\
+ "0.718781, 0.785685, 0.902124, 1.221793, 2.076997",\
+ "0.821201, 0.888105, 1.004544, 1.324213, 2.179417",\
+ "1.548479, 1.615391, 1.731835, 2.051504, 2.906700");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.267796, 0.299208, 0.351854, 0.494269, 0.872912",\
+ "0.284541, 0.315954, 0.368600, 0.511015, 0.889658",\
+ "0.362798, 0.394211, 0.446856, 0.589271, 0.967914",\
+ "0.486677, 0.518090, 0.570736, 0.713151, 1.091794",\
+ "1.055266, 1.086678, 1.139324, 1.281739, 1.660382");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.456335, 0.523226, 0.639653, 0.959321, 1.814541",\
+ "0.469682, 0.536572, 0.652999, 0.972667, 1.827887",\
+ "0.547821, 0.614711, 0.731138, 1.050806, 1.906026",\
+ "0.649000, 0.715890, 0.832317, 1.151985, 2.007205",\
+ "1.120855, 1.187745, 1.304172, 1.623840, 2.479060");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.712314, 0.779218, 0.895657, 1.215326, 2.070530",\
+ "0.730867, 0.797771, 0.914210, 1.233879, 2.089083",\
+ "0.803565, 0.870469, 0.986908, 1.306577, 2.161781",\
+ "0.898790, 0.965694, 1.082133, 1.401802, 2.257006",\
+ "1.358120, 1.425029, 1.541471, 1.861141, 2.716340");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.494441, 0.525873, 0.578581, 0.720934, 1.099531",\
+ "0.511983, 0.543415, 0.596123, 0.738476, 1.117073",\
+ "0.589312, 0.620744, 0.673452, 0.815805, 1.194402",\
+ "0.698758, 0.730189, 0.782897, 0.925250, 1.303847",\
+ "1.229663, 1.261095, 1.313803, 1.456156, 1.834753");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.668630, 0.735520, 0.851947, 1.171615, 2.026835",\
+ "0.685451, 0.752341, 0.868768, 1.188436, 2.043656",\
+ "0.759882, 0.826773, 0.943200, 1.262868, 2.118088",\
+ "0.855138, 0.922028, 1.038455, 1.358123, 2.213343",\
+ "1.307789, 1.374679, 1.491106, 1.810774, 2.665994");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.361699, 0.393111, 0.445757, 0.588172, 0.966815",\
+ "0.375155, 0.406568, 0.459214, 0.601628, 0.980272",\
+ "0.456576, 0.487988, 0.540634, 0.683049, 1.061692",\
+ "0.566550, 0.597963, 0.650609, 0.793024, 1.171667",\
+ "1.091986, 1.123399, 1.176044, 1.318459, 1.697102");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.528266, 0.559698, 0.612406, 0.754759, 1.133356",\
+ "0.546819, 0.578250, 0.630959, 0.773312, 1.151908",\
+ "0.620877, 0.652309, 0.705017, 0.847370, 1.225967",\
+ "0.719978, 0.751410, 0.804118, 0.946471, 1.325068",\
+ "1.192613, 1.224045, 1.276753, 1.419106, 1.797703");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.606303, 0.673207, 0.789646, 1.109315, 1.964519",\
+ "0.618992, 0.685897, 0.802335, 1.122004, 1.977208",\
+ "0.673763, 0.740668, 0.857106, 1.176775, 2.031980",\
+ "0.776802, 0.843707, 0.960145, 1.279814, 2.135018",\
+ "1.483718, 1.550627, 1.667069, 1.986738, 2.841937");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262699, 0.294112, 0.346758, 0.489173, 0.867816",\
+ "0.279513, 0.310926, 0.363572, 0.505987, 0.884630",\
+ "0.357852, 0.389264, 0.441910, 0.584325, 0.962968",\
+ "0.480383, 0.511796, 0.564441, 0.706856, 1.085500",\
+ "1.037548, 1.068961, 1.121607, 1.264022, 1.642665");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.463612, 0.530502, 0.646929, 0.966597, 1.821817",\
+ "0.477068, 0.543958, 0.660386, 0.980054, 1.835274",\
+ "0.555357, 0.622247, 0.738674, 1.058342, 1.913562",\
+ "0.655033, 0.721923, 0.838350, 1.158018, 2.013238",\
+ "1.119877, 1.186768, 1.303195, 1.622863, 2.478083");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[2]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[2]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[2]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[2]_ast2padmux_o[2]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[2]_ast2padmux_o[2]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[2]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[2]_inv_min*/
+
+} /* end of pin ast2padmux_o[2] */
+
+pin("ast2padmux_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[1];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.257031, 0.528778, 0.797030, 1.242767, 2.134242",\
+ "0.323932, 0.595681, 0.863940, 1.309691, 2.201193",\
+ "0.440368, 0.712118, 0.980382, 1.426145, 2.317669",\
+ "0.760037, 1.031787, 1.300052, 1.745815, 2.637342",\
+ "1.615245, 1.886993, 2.155250, 2.600997, 3.492491",\
+ "0.315617, 0.587294, 0.855812, 1.300474, 2.190349",\
+ "0.382518, 0.654197, 0.922722, 1.367397, 2.257300",\
+ "0.498954, 0.770634, 1.039164, 1.483851, 2.373776",\
+ "0.818623, 1.090303, 1.358834, 1.803522, 2.693449",\
+ "1.673831, 1.945509, 2.214032, 2.658703, 3.548597",\
+ "0.460207, 0.733101, 0.999707, 1.444229, 2.334082",\
+ "0.527108, 0.800004, 1.066617, 1.511152, 2.401032",\
+ "0.643544, 0.916442, 1.183060, 1.627606, 2.517509",\
+ "0.963213, 1.236110, 1.502729, 1.947277, 2.837182",\
+ "1.818421, 2.091316, 2.357927, 2.802459, 3.692330",\
+ "0.496168, 0.770865, 1.036627, 1.481020, 2.370640",\
+ "0.563069, 0.837768, 1.103536, 1.547944, 2.437591",\
+ "0.679505, 0.954206, 1.219979, 1.664398, 2.554067",\
+ "0.999174, 1.273875, 1.539648, 1.984068, 2.873740",\
+ "1.854382, 2.129080, 2.394846, 2.839250, 3.728889",\
+ "0.825262, 1.134787, 1.388262, 1.830277, 2.716096",\
+ "0.892164, 1.201690, 1.455172, 1.897201, 2.783047",\
+ "1.008600, 1.318128, 1.571615, 2.013655, 2.899523",\
+ "1.328269, 1.637797, 1.891284, 2.333325, 3.219196",\
+ "2.183476, 2.493002, 2.746482, 3.188507, 4.074345");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949101, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073037, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188931, 0.188942, 0.188966, 0.189013",\
+ "0.391836, 0.391841, 0.391857, 0.391892, 0.391961",\
+ "0.949092, 0.949102, 0.949136, 0.949210, 0.949357",\
+ "2.441339, 2.441340, 2.441346, 2.441358, 2.441383",\
+ "0.073036, 0.073038, 0.073042, 0.073052, 0.073073",\
+ "0.188928, 0.188932, 0.188943, 0.188966, 0.189013",\
+ "0.391836, 0.391843, 0.391858, 0.391892, 0.391961",\
+ "0.949092, 0.949105, 0.949137, 0.949210, 0.949357",\
+ "2.441339, 2.441341, 2.441346, 2.441358, 2.441383");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.308725, 0.491796, 0.685627, 0.996163, 1.596700",\
+ "0.340157, 0.523228, 0.717058, 1.027595, 1.628132",\
+ "0.392865, 0.575936, 0.769767, 1.080304, 1.680844",\
+ "0.535218, 0.718289, 0.912119, 1.222656, 1.823194",\
+ "0.913815, 1.096886, 1.290716, 1.601252, 2.201788",\
+ "0.368637, 0.551695, 0.745581, 1.055944, 1.656317",\
+ "0.400068, 0.583126, 0.777012, 1.087376, 1.687749",\
+ "0.452777, 0.635835, 0.829721, 1.140085, 1.740461",\
+ "0.595130, 0.778187, 0.972073, 1.282437, 1.882811",\
+ "0.973727, 1.156784, 1.350670, 1.661033, 2.261405",\
+ "0.501379, 0.683946, 0.877464, 1.187801, 1.788124",\
+ "0.532811, 0.715378, 0.908895, 1.219233, 1.819557",\
+ "0.585519, 0.768086, 0.961603, 1.271942, 1.872268",\
+ "0.727872, 0.910439, 1.103956, 1.414294, 2.014618",\
+ "1.106469, 1.289036, 1.482553, 1.792891, 2.393212",\
+ "0.534516, 0.717073, 0.910588, 1.220754, 1.820733",\
+ "0.565947, 0.748505, 0.942020, 1.252186, 1.852165",\
+ "0.618656, 0.801213, 0.994728, 1.304895, 1.904876",\
+ "0.761009, 0.943566, 1.137081, 1.447247, 2.047226",\
+ "1.139605, 1.322163, 1.515678, 1.825843, 2.425821",\
+ "0.835592, 1.022294, 1.214223, 1.523770, 2.122581",\
+ "0.867023, 1.053726, 1.245655, 1.555202, 2.154014",\
+ "0.919731, 1.106434, 1.298363, 1.607911, 2.206725",\
+ "1.062084, 1.248787, 1.440716, 1.750263, 2.349075",\
+ "1.440681, 1.627384, 1.819313, 2.128859, 2.727669");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796",\
+ "0.039143, 0.039143, 0.039143, 0.039145, 0.039150",\
+ "0.090610, 0.090610, 0.090610, 0.090608, 0.090604",\
+ "0.180695, 0.180695, 0.180695, 0.180700, 0.180710",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429279",\
+ "1.090837, 1.090837, 1.090837, 1.090825, 1.090796");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_b_o[0]" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.252558, 0.520745, 0.784515, 1.222569, 2.097608",\
+ "0.319449, 0.587637, 0.851411, 1.289475, 2.164534",\
+ "0.435876, 0.704065, 0.967843, 1.405915, 2.280990",\
+ "0.755544, 1.023733, 1.287511, 1.725584, 2.600661",\
+ "1.610764, 1.878952, 2.142725, 2.580786, 3.455839",\
+ "0.311120, 0.579252, 0.843280, 1.280275, 2.153714",\
+ "0.378011, 0.646143, 0.910176, 1.347182, 2.220640",\
+ "0.494438, 0.762572, 1.026608, 1.463622, 2.337097",\
+ "0.814106, 1.082240, 1.346276, 1.783291, 2.656767",\
+ "1.669326, 1.937458, 2.201490, 2.638493, 3.511946",\
+ "0.455460, 0.724999, 0.987167, 1.424079, 2.297447",\
+ "0.522351, 0.791891, 1.054064, 1.490985, 2.364373",\
+ "0.638778, 0.908319, 1.170496, 1.607426, 2.480830",\
+ "0.958446, 1.227987, 1.490164, 1.927095, 2.800500",\
+ "1.813666, 2.083206, 2.345378, 2.782297, 3.655679",\
+ "0.491341, 0.762735, 1.024086, 1.460950, 2.334005",\
+ "0.558231, 0.829626, 1.090982, 1.527856, 2.400931",\
+ "0.674659, 0.946054, 1.207414, 1.644296, 2.517388",\
+ "0.994327, 1.265722, 1.527082, 1.963966, 2.837059",\
+ "1.849546, 2.120941, 2.382296, 2.819168, 3.692237",\
+ "0.819555, 1.126080, 1.375645, 1.810251, 2.679461",\
+ "0.886446, 1.192972, 1.442542, 1.877157, 2.746387",\
+ "1.002873, 1.309400, 1.558974, 1.993597, 2.862844",\
+ "1.322541, 1.629068, 1.878642, 2.313266, 3.182515",\
+ "2.177761, 2.484287, 2.733856, 3.168468, 4.037693");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188919, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949028, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949118, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391815, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949029, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441330, 2.441334, 2.441343, 2.441361",\
+ "0.073031, 0.073031, 0.073033, 0.073040, 0.073054",\
+ "0.188915, 0.188915, 0.188920, 0.188937, 0.188971",\
+ "0.391816, 0.391816, 0.391824, 0.391849, 0.391899",\
+ "0.949014, 0.949034, 0.949065, 0.949119, 0.949226",\
+ "2.441330, 2.441331, 2.441334, 2.441343, 2.441361");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.262934, 0.448489, 0.641595, 0.948064, 1.538713",\
+ "0.294346, 0.479902, 0.673008, 0.979478, 1.570129",\
+ "0.346992, 0.532548, 0.725656, 1.032128, 1.622785",\
+ "0.489407, 0.674962, 0.868069, 1.174539, 1.765190",\
+ "0.868050, 1.053605, 1.246711, 1.553179, 2.143825",\
+ "0.322845, 0.508317, 0.701440, 1.007833, 1.598330",\
+ "0.354258, 0.539729, 0.732853, 1.039247, 1.629746",\
+ "0.406904, 0.592376, 0.785500, 1.091897, 1.682402",\
+ "0.549319, 0.734790, 0.927914, 1.234307, 1.824806",\
+ "0.927962, 1.113433, 1.306556, 1.612947, 2.203442",\
+ "0.455621, 0.640568, 0.833323, 1.139690, 1.730137",\
+ "0.487034, 0.671981, 0.864736, 1.171104, 1.761553",\
+ "0.539679, 0.724627, 0.917383, 1.223754, 1.814209",\
+ "0.682094, 0.867041, 1.059797, 1.366165, 1.956614",\
+ "1.060737, 1.245684, 1.438439, 1.744805, 2.335249",\
+ "0.488779, 0.673866, 0.866553, 1.172770, 1.762998",\
+ "0.520192, 0.705279, 0.897966, 1.204184, 1.794413",\
+ "0.572837, 0.757925, 0.950613, 1.256834, 1.847070",\
+ "0.715252, 0.900339, 1.093027, 1.399244, 1.989474",\
+ "1.093896, 1.278982, 1.471669, 1.777884, 2.368110",\
+ "0.790171, 0.979313, 1.170216, 1.475973, 2.065303",\
+ "0.821584, 1.010726, 1.201629, 1.507387, 2.096719",\
+ "0.874230, 1.063372, 1.254276, 1.560037, 2.149375",\
+ "1.016645, 1.205787, 1.396689, 1.702447, 2.291780",\
+ "1.395288, 1.584430, 1.775331, 2.081088, 2.670415");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.001003, 0.074002, 0.161255, 0.321507, 0.642011");
+ values ( "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090713",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180377, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091688, 1.091683, 1.091668, 1.091629, 1.091545",\
+ "0.039012, 0.039013, 0.039015, 0.039021, 0.039034",\
+ "0.090733, 0.090732, 0.090730, 0.090725, 0.090712",\
+ "0.180378, 0.180379, 0.180385, 0.180400, 0.180431",\
+ "0.429204, 0.429204, 0.429205, 0.429209, 0.429216",\
+ "1.091687, 1.091683, 1.091668, 1.091628, 1.091545");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970008.750000, 970008.812500, 970008.937500, 970009.250000, 970010.125000",\
+ "970008.875000, 970008.937500, 970009.062500, 970009.375000, 970010.250000",\
+ "970009.000000, 970009.062500, 970009.187500, 970009.500000, 970010.375000",\
+ "970009.000000, 970009.062500, 970009.187500, 970009.500000, 970010.375000",\
+ "970009.375000, 970009.437500, 970009.562500, 970009.875000, 970010.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189354, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189365, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189385, 0.392560, 0.950608, 2.441526",\
+ "0.073824, 0.189425, 0.393252, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970006.125000, 970006.187500, 970006.250000, 970006.375000, 970006.750000",\
+ "970006.250000, 970006.312500, 970006.375000, 970006.500000, 970006.875000",\
+ "970006.250000, 970006.312500, 970006.375000, 970006.500000, 970006.875000",\
+ "970006.375000, 970006.437500, 970006.500000, 970006.625000, 970007.000000",\
+ "970006.625000, 970006.687500, 970006.750000, 970006.875000, 970007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[1]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[1]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.443642, 0.510546, 0.626985, 0.946654, 1.801858",\
+ "0.465905, 0.532810, 0.649248, 0.968917, 1.824121",\
+ "0.522299, 0.589203, 0.705642, 1.025311, 1.880515",\
+ "0.620162, 0.687066, 0.803505, 1.123173, 1.978378",\
+ "1.134534, 1.201443, 1.317885, 1.637554, 2.492753");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.490585, 0.522017, 0.574725, 0.717078, 1.095675",\
+ "0.512119, 0.543551, 0.596259, 0.738612, 1.117209",\
+ "0.579305, 0.610737, 0.663445, 0.805798, 1.184395",\
+ "0.689604, 0.721035, 0.773743, 0.916096, 1.294693",\
+ "1.248357, 1.279789, 1.332497, 1.474850, 1.853447");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.412827, 0.479717, 0.596144, 0.915812, 1.771032",\
+ "0.433604, 0.500495, 0.616922, 0.936590, 1.791810",\
+ "0.491196, 0.558086, 0.674513, 0.994181, 1.849401",\
+ "0.589141, 0.656031, 0.772458, 1.092126, 1.947346",\
+ "1.077990, 1.144880, 1.261307, 1.580975, 2.436195");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.392762, 0.424174, 0.476820, 0.619235, 0.997878",\
+ "0.410167, 0.441580, 0.494226, 0.636641, 1.015284",\
+ "0.482737, 0.514149, 0.566795, 0.709210, 1.087853",\
+ "0.595371, 0.626784, 0.679430, 0.821845, 1.200488",\
+ "1.122399, 1.153812, 1.206458, 1.348872, 1.727516");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437382, 0.468814, 0.521522, 0.663875, 1.042472",\
+ "0.462451, 0.493883, 0.546591, 0.688944, 1.067541",\
+ "0.531672, 0.563103, 0.615812, 0.758164, 1.136761",\
+ "0.655903, 0.687335, 0.740043, 0.882396, 1.260993",\
+ "1.288504, 1.319936, 1.372644, 1.514997, 1.893594");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.675759, 0.742664, 0.859102, 1.178771, 2.033976",\
+ "0.696234, 0.763138, 0.879577, 1.199246, 2.054450",\
+ "0.755094, 0.821998, 0.938437, 1.258106, 2.113310",\
+ "0.864334, 0.931238, 1.047677, 1.367346, 2.222550",\
+ "1.641748, 1.708657, 1.825099, 2.144769, 2.999968");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949108, 2.441341",\
+ "0.073042, 0.188941, 0.391856, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262392, 0.293804, 0.346450, 0.488865, 0.867508",\
+ "0.286002, 0.317414, 0.370060, 0.512475, 0.891118",\
+ "0.357340, 0.388753, 0.441399, 0.583814, 0.962457",\
+ "0.477148, 0.508560, 0.561206, 0.703621, 1.082264",\
+ "1.022245, 1.053658, 1.106303, 1.248718, 1.627362");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.582342, 0.649232, 0.765660, 1.085328, 1.940547",\
+ "0.599034, 0.665924, 0.782351, 1.102020, 1.957239",\
+ "0.661428, 0.728319, 0.844746, 1.164414, 2.019634",\
+ "0.770818, 0.837708, 0.954135, 1.273803, 2.129023",\
+ "1.507966, 1.574856, 1.691283, 2.010951, 2.866171");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.180024, 0.211452, 0.264149, 0.406513, 0.785119",\
+ "0.193406, 0.224834, 0.277531, 0.419896, 0.798501",\
+ "0.275919, 0.307349, 0.360051, 0.502410, 0.881011",\
+ "0.400910, 0.432352, 0.485095, 0.627414, 1.005985",\
+ "0.975060, 1.010086, 1.063144, 1.205732, 1.584486");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039119, 0.090633, 0.180636, 0.429262, 1.090996",\
+ "0.039132, 0.090633, 0.180667, 0.429269, 1.090996",\
+ "0.039215, 0.090633, 0.180868, 0.429314, 1.090996",\
+ "0.049347, 0.094034, 0.180868, 0.429355, 1.091896");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.465437, 0.532662, 0.649281, 0.969044, 1.824018",\
+ "0.477695, 0.544920, 0.661539, 0.981302, 1.836276",\
+ "0.541916, 0.609140, 0.725760, 1.045521, 1.900495",\
+ "0.644626, 0.711856, 0.828474, 1.148242, 2.003221",\
+ "1.319722, 1.387140, 1.503696, 1.823662, 2.678811");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189282, 0.392442, 0.950607, 2.441526",\
+ "0.073862, 0.189282, 0.392442, 0.950619, 2.441526",\
+ "0.075399, 0.189282, 0.392442, 0.951039, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.159139, 0.190553, 0.243202, 0.385613, 0.764254",\
+ "0.170514, 0.201928, 0.254577, 0.396989, 0.775629",\
+ "0.255576, 0.286993, 0.339652, 0.482053, 0.860686",\
+ "0.379908, 0.411340, 0.464049, 0.606401, 0.984998",\
+ "0.945167, 0.979651, 1.032663, 1.175209, 1.553933");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039020, 0.090609, 0.180397, 0.429208, 1.090831",\
+ "0.039042, 0.090609, 0.180449, 0.429220, 1.090831",\
+ "0.039144, 0.090609, 0.180675, 0.429276, 1.090831",\
+ "0.047820, 0.093501, 0.180675, 0.429352, 1.091629");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.461683, 0.528880, 0.645509, 0.965243, 1.820192",\
+ "0.470327, 0.537524, 0.654153, 0.973887, 1.828836",\
+ "0.538174, 0.605371, 0.721999, 1.041733, 1.896681",\
+ "0.640782, 0.707985, 0.824611, 1.144351, 1.999304",\
+ "1.312551, 1.379913, 1.496487, 1.816396, 2.671496");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073594, 0.189124, 0.392388, 0.950544, 2.441454",\
+ "0.073633, 0.189124, 0.392388, 0.950557, 2.441454",\
+ "0.074954, 0.189124, 0.392388, 0.950917, 2.441454");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.500858, 0.568082, 0.684702, 1.004464, 1.859437",\
+ "0.516623, 0.583848, 0.700467, 1.020230, 1.875203",\
+ "0.590734, 0.657958, 0.774578, 1.094340, 1.949314",\
+ "0.681946, 0.749171, 0.865790, 1.185553, 2.040526",\
+ "1.108576, 1.175805, 1.292423, 1.612190, 2.467167");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.209985, 0.241400, 0.294052, 0.436461, 0.815099",\
+ "0.221857, 0.253271, 0.305923, 0.448332, 0.826970",\
+ "0.304351, 0.335766, 0.388417, 0.530826, 0.909465",\
+ "0.409226, 0.440642, 0.493298, 0.635702, 1.014338",\
+ "0.909442, 0.940877, 0.993596, 1.135938, 1.514527");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040752, 0.090632, 0.180638, 0.429262, 1.092497",\
+ "0.040759, 0.090626, 0.180653, 0.429266, 1.092499",\
+ "0.040922, 0.090525, 0.180916, 0.429325, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073816, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073848, 0.189277, 0.392440, 0.950615, 2.441524");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039025, 0.090327, 0.180161, 0.428971, 1.091605",\
+ "0.039034, 0.090327, 0.180161, 0.428971, 1.091542",\
+ "0.039166, 0.090324, 0.180166, 0.428948, 1.090692");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.176901, 0.208329, 0.261026, 0.403390, 0.781996",\
+ "0.196158, 0.227585, 0.280282, 0.422647, 0.801252",\
+ "0.273304, 0.304734, 0.357436, 0.499795, 0.878396",\
+ "0.397207, 0.428649, 0.481392, 0.623711, 1.002282",\
+ "0.961790, 0.996912, 1.049978, 1.192575, 1.571334");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180635, 0.429262, 1.092497",\
+ "0.040752, 0.090633, 0.180666, 0.429269, 1.092497",\
+ "0.040771, 0.090633, 0.180871, 0.429315, 1.092502",\
+ "0.049622, 0.094130, 0.180871, 0.429356, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.455825, 0.523049, 0.639668, 0.959430, 1.814404",\
+ "0.468963, 0.536187, 0.652807, 0.972569, 1.827542",\
+ "0.531289, 0.598514, 0.715133, 1.034896, 1.889869",\
+ "0.640154, 0.707387, 0.824004, 1.143775, 1.998757",\
+ "1.332501, 1.399969, 1.516508, 1.836528, 2.691724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073812, 0.189282, 0.392442, 0.950605, 2.441527",\
+ "0.073814, 0.189281, 0.392442, 0.950606, 2.441526",\
+ "0.073887, 0.189271, 0.392439, 0.950626, 2.441522",\
+ "0.075818, 0.189005, 0.392348, 0.951153, 2.441399");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.155833, 0.187247, 0.239896, 0.382308, 0.760949",\
+ "0.173482, 0.204896, 0.257545, 0.399957, 0.778598",\
+ "0.252964, 0.284381, 0.337040, 0.479441, 0.858074",\
+ "0.376196, 0.407628, 0.460337, 0.602689, 0.981285",\
+ "0.931678, 0.966257, 1.019278, 1.161831, 1.540560");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039018, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039041, 0.090294, 0.180161, 0.428752, 1.090822",\
+ "0.039146, 0.090294, 0.180167, 0.428752, 1.090822",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.091676");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.452081, 0.519278, 0.635907, 0.955640, 1.810589",\
+ "0.461862, 0.529059, 0.645688, 0.965421, 1.820370",\
+ "0.527542, 0.594739, 0.711368, 1.031102, 1.886050",\
+ "0.636262, 0.703467, 0.820093, 1.139835, 1.994791",\
+ "1.324350, 1.391756, 1.508316, 1.828270, 2.683409");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.325984, 0.393209, 0.509828, 0.829592, 1.684567",\
+ "0.341732, 0.408957, 0.525576, 0.845340, 1.700314",\
+ "0.405621, 0.472847, 0.589466, 0.909229, 1.764204",\
+ "0.483984, 0.551208, 0.667827, 0.987590, 1.842564",\
+ "0.876566, 0.943791, 1.060410, 1.380173, 2.235147");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.207560, 0.238992, 0.291700, 0.434053, 0.812650",\
+ "0.223441, 0.254873, 0.307582, 0.449934, 0.828531",\
+ "0.292964, 0.324396, 0.377105, 0.519457, 0.898054",\
+ "0.382304, 0.413736, 0.466444, 0.608797, 0.987394",\
+ "0.808201, 0.839636, 0.892354, 1.034697, 1.413287");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.298728, 0.365697, 0.482189, 0.801862, 1.656989",\
+ "0.312838, 0.379807, 0.496299, 0.815972, 1.671100",\
+ "0.378416, 0.445385, 0.561877, 0.881551, 1.736677",\
+ "0.456978, 0.523948, 0.640441, 0.960115, 1.815240",\
+ "0.852482, 0.919491, 1.036016, 1.355692, 2.210772");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.185526, 0.216941, 0.269593, 0.412001, 0.790640",\
+ "0.197528, 0.228943, 0.281595, 0.424004, 0.802642",\
+ "0.270950, 0.302365, 0.355017, 0.497425, 0.876064",\
+ "0.360375, 0.391790, 0.444442, 0.586850, 0.965489",\
+ "0.786063, 0.817479, 0.870138, 1.012540, 1.391174");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040785, 0.090610, 0.180744, 0.429286, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.596327, 0.663552, 0.780171, 1.099935, 1.954909",\
+ "0.609131, 0.676356, 0.792975, 1.112739, 1.967713",\
+ "0.677113, 0.744339, 0.860958, 1.180721, 2.035696",\
+ "0.788810, 0.856034, 0.972654, 1.292416, 2.147390",\
+ "1.273667, 1.340892, 1.457511, 1.777274, 2.632248");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189281, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262848, 0.294262, 0.346915, 0.489323, 0.867962",\
+ "0.276998, 0.308413, 0.361065, 0.503474, 0.882112",\
+ "0.356726, 0.388141, 0.440793, 0.583202, 0.961840",\
+ "0.457948, 0.489362, 0.542015, 0.684423, 1.063061",\
+ "0.929777, 0.961193, 1.013852, 1.156254, 1.534888");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039039, 0.090322, 0.180169, 0.428938, 1.091513");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "0.999580, 1.030743, 1.083361, 1.225858, 1.604500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180732, 0.429283, 1.092497",\
+ "0.042004, 0.091469, 0.180867, 0.429340, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.597332, 0.664558, 0.781177, 1.100940, 1.955915",\
+ "0.618079, 0.685305, 0.801924, 1.121688, 1.976662",\
+ "0.683404, 0.750630, 0.867249, 1.187012, 2.041987",\
+ "0.797603, 0.864828, 0.981447, 1.301210, 2.156184",\
+ "1.375793, 1.443018, 1.559637, 1.879400, 2.734374");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950609, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073823, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073819, 0.189281, 0.392442, 0.950607, 2.441526",\
+ "0.073817, 0.189281, 0.392442, 0.950607, 2.441526");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.150722, 0.182137, 0.234789, 0.377197, 0.755836",\
+ "0.171205, 0.202620, 0.255272, 0.397681, 0.776319",\
+ "0.246518, 0.277932, 0.330585, 0.472993, 0.851631",\
+ "0.352324, 0.383738, 0.436391, 0.578799, 0.957437",\
+ "0.825559, 0.856975, 0.909634, 1.052036, 1.430670");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091598",\
+ "0.039038, 0.090323, 0.180168, 0.428941, 1.091519");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.277343, 0.344312, 0.460804, 0.780477, 1.635605",\
+ "0.293355, 0.360323, 0.476815, 0.796489, 1.651616",\
+ "0.366113, 0.433085, 0.549579, 0.869253, 1.724376",\
+ "0.487008, 0.554003, 0.670516, 0.990192, 1.845287",\
+ "1.141953, 1.209132, 1.325766, 1.645481, 2.500414");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.700503, 0.767407, 0.883846, 1.203515, 2.058719",\
+ "0.718853, 0.785757, 0.902195, 1.221864, 2.077069",\
+ "0.789396, 0.856300, 0.972739, 1.292408, 2.147612",\
+ "0.881867, 0.948772, 1.065210, 1.384879, 2.240083",\
+ "1.366874, 1.433786, 1.550230, 1.869900, 2.725095");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.488066, 0.519497, 0.572205, 0.714558, 1.093155",\
+ "0.505493, 0.536925, 0.589633, 0.731986, 1.110583",\
+ "0.582890, 0.614322, 0.667030, 0.809383, 1.187980",\
+ "0.691204, 0.722635, 0.775344, 0.917696, 1.296293",\
+ "1.242374, 1.273805, 1.326514, 1.468867, 1.847463");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.636502, 0.703393, 0.819820, 1.139488, 1.994708",\
+ "0.653118, 0.720008, 0.836435, 1.156103, 2.011323",\
+ "0.727539, 0.794429, 0.910857, 1.230525, 2.085744",\
+ "0.821960, 0.888850, 1.005277, 1.324945, 2.180165",\
+ "1.269718, 1.336608, 1.453035, 1.772703, 2.627923");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.339768, 0.371181, 0.423827, 0.566242, 0.944885",\
+ "0.353114, 0.384527, 0.437173, 0.579588, 0.958231",\
+ "0.435092, 0.466504, 0.519150, 0.661565, 1.040208",\
+ "0.544311, 0.575724, 0.628370, 0.770784, 1.149428",\
+ "1.067931, 1.099343, 1.151989, 1.294404, 1.673047");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.524400, 0.555831, 0.608540, 0.750893, 1.129489",\
+ "0.542749, 0.574181, 0.626889, 0.769242, 1.147839",\
+ "0.616605, 0.648037, 0.700745, 0.843098, 1.221695",\
+ "0.714865, 0.746296, 0.799004, 0.941357, 1.319954",\
+ "1.237234, 1.268665, 1.321373, 1.463726, 1.842323");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.651244, 0.718149, 0.834587, 1.154256, 2.009460",\
+ "0.663867, 0.730771, 0.847209, 1.166878, 2.022083",\
+ "0.718781, 0.785685, 0.902124, 1.221793, 2.076997",\
+ "0.821201, 0.888105, 1.004544, 1.324213, 2.179417",\
+ "1.548479, 1.615391, 1.731835, 2.051504, 2.906700");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073043, 0.188945, 0.391861, 0.949146, 2.441348");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.267796, 0.299208, 0.351854, 0.494269, 0.872912",\
+ "0.284541, 0.315954, 0.368600, 0.511015, 0.889658",\
+ "0.362798, 0.394211, 0.446856, 0.589271, 0.967914",\
+ "0.486677, 0.518090, 0.570736, 0.713151, 1.091794",\
+ "1.055266, 1.086678, 1.139324, 1.281739, 1.660382");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.456335, 0.523226, 0.639653, 0.959321, 1.814541",\
+ "0.469682, 0.536572, 0.652999, 0.972667, 1.827887",\
+ "0.547821, 0.614711, 0.731138, 1.050806, 1.906026",\
+ "0.649000, 0.715890, 0.832317, 1.151985, 2.007205",\
+ "1.120855, 1.187745, 1.304172, 1.623840, 2.479060");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.712314, 0.779218, 0.895657, 1.215326, 2.070530",\
+ "0.730867, 0.797771, 0.914210, 1.233879, 2.089083",\
+ "0.803565, 0.870469, 0.986908, 1.306577, 2.161781",\
+ "0.898790, 0.965694, 1.082133, 1.401802, 2.257006",\
+ "1.358120, 1.425029, 1.541471, 1.861141, 2.716340");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.494441, 0.525873, 0.578581, 0.720934, 1.099531",\
+ "0.511983, 0.543415, 0.596123, 0.738476, 1.117073",\
+ "0.589312, 0.620744, 0.673452, 0.815805, 1.194402",\
+ "0.698758, 0.730189, 0.782897, 0.925250, 1.303847",\
+ "1.229663, 1.261095, 1.313803, 1.456156, 1.834753");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.668630, 0.735520, 0.851947, 1.171615, 2.026835",\
+ "0.685451, 0.752341, 0.868768, 1.188436, 2.043656",\
+ "0.759882, 0.826773, 0.943200, 1.262868, 2.118088",\
+ "0.855138, 0.922028, 1.038455, 1.358123, 2.213343",\
+ "1.307789, 1.374679, 1.491106, 1.810774, 2.665994");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.361699, 0.393111, 0.445757, 0.588172, 0.966815",\
+ "0.375155, 0.406568, 0.459214, 0.601628, 0.980272",\
+ "0.456576, 0.487988, 0.540634, 0.683049, 1.061692",\
+ "0.566550, 0.597963, 0.650609, 0.793024, 1.171667",\
+ "1.091986, 1.123399, 1.176044, 1.318459, 1.697102");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.528266, 0.559698, 0.612406, 0.754759, 1.133356",\
+ "0.546819, 0.578250, 0.630959, 0.773312, 1.151908",\
+ "0.620877, 0.652309, 0.705017, 0.847370, 1.225967",\
+ "0.719978, 0.751410, 0.804118, 0.946471, 1.325068",\
+ "1.192613, 1.224045, 1.276753, 1.419106, 1.797703");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090837",\
+ "0.039143, 0.090610, 0.180695, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.606303, 0.673207, 0.789646, 1.109315, 1.964519",\
+ "0.618992, 0.685897, 0.802335, 1.122004, 1.977208",\
+ "0.673763, 0.740668, 0.857106, 1.176775, 2.031980",\
+ "0.776802, 0.843707, 0.960145, 1.279814, 2.135018",\
+ "1.483718, 1.550627, 1.667069, 1.986738, 2.841937");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073038, 0.188934, 0.391844, 0.949109, 2.441341",\
+ "0.073041, 0.188941, 0.391855, 0.949133, 2.441345");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.262699, 0.294112, 0.346758, 0.489173, 0.867816",\
+ "0.279513, 0.310926, 0.363572, 0.505987, 0.884630",\
+ "0.357852, 0.389264, 0.441910, 0.584325, 0.962968",\
+ "0.480383, 0.511796, 0.564441, 0.706856, 1.085500",\
+ "1.037548, 1.068961, 1.121607, 1.264022, 1.642665");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687",\
+ "0.039012, 0.090733, 0.180378, 0.429204, 1.091687");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.463612, 0.530502, 0.646929, 0.966597, 1.821817",\
+ "0.477068, 0.543958, 0.660386, 0.980054, 1.835274",\
+ "0.555357, 0.622247, 0.738674, 1.058342, 1.913562",\
+ "0.655033, 0.721923, 0.838350, 1.158018, 2.013238",\
+ "1.119877, 1.186768, 1.303195, 1.622863, 2.478083");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330",\
+ "0.073032, 0.188916, 0.391816, 0.949015, 2.441330");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.123879, 0.190820, 0.307288, 0.626960, 1.482121",\
+ "0.210891, 0.277978, 0.394567, 0.714249, 1.569235",\
+ "0.301781, 0.369068, 0.485667, 0.805496, 1.660526",\
+ "0.453978, 0.523120, 0.640034, 0.960158, 1.815427",\
+ "0.695902, 0.774527, 0.893732, 1.214148, 2.069560");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188997, 0.391936, 0.949305, 2.441374",\
+ "0.073175, 0.189249, 0.392304, 0.950092, 2.441498",\
+ "0.074330, 0.189249, 0.392418, 0.950747, 2.441498",\
+ "0.079436, 0.191164, 0.392505, 0.951076, 2.441498",\
+ "0.098084, 0.204137, 0.393542, 0.951076, 2.441498");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114293, 0.145721, 0.198417, 0.340782, 0.719388",\
+ "0.205394, 0.236828, 0.289545, 0.431889, 0.810480",\
+ "0.309904, 0.342065, 0.394885, 0.537244, 0.915841",\
+ "0.501618, 0.536979, 0.590065, 0.732680, 1.111452",\
+ "0.825607, 0.870622, 0.930343, 1.075147, 1.454209");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039117, 0.090634, 0.180632, 0.429261, 1.091005",\
+ "0.039161, 0.090634, 0.180739, 0.429285, 1.091005",\
+ "0.041267, 0.091212, 0.180891, 0.429338, 1.091005",\
+ "0.050293, 0.094364, 0.180891, 0.429357, 1.092061",\
+ "0.068556, 0.114740, 0.192215, 0.429716, 1.093122");
+ }
+
+ } /* end of arc otm_obs_i[1]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.120559, 0.187489, 0.303948, 0.623619, 1.478793",\
+ "0.205712, 0.272774, 0.389342, 0.709022, 1.564038",\
+ "0.292652, 0.359907, 0.476516, 0.796311, 1.651312",\
+ "0.437434, 0.505450, 0.622092, 0.942182, 1.797434",\
+ "0.662107, 0.738115, 0.856688, 1.177023, 2.032395");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073057, 0.188977, 0.391908, 0.949245, 2.441364",\
+ "0.073156, 0.189206, 0.392241, 0.949956, 2.441378",\
+ "0.074065, 0.189247, 0.392382, 0.950255, 2.441378",\
+ "0.077223, 0.189624, 0.392382, 0.950255, 2.441378",\
+ "0.092938, 0.200557, 0.393255, 0.950255, 2.441468");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094368, 0.125782, 0.178430, 0.320842, 0.699483",\
+ "0.188259, 0.219683, 0.272369, 0.414744, 0.793358",\
+ "0.291365, 0.323244, 0.376040, 0.518376, 0.896959",\
+ "0.474009, 0.509208, 0.562280, 0.704883, 1.083646",\
+ "0.777508, 0.822171, 0.881623, 1.026340, 1.405392");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090654, 0.180392, 0.429207, 1.090346",\
+ "0.039096, 0.090654, 0.180581, 0.429249, 1.090346",\
+ "0.040472, 0.090934, 0.180608, 0.429337, 1.090346",\
+ "0.049836, 0.094205, 0.180608, 0.429356, 1.091981",\
+ "0.067933, 0.113945, 0.191732, 0.429701, 1.093101");
+ }
+
+ } /* end of arc otm_obs_i[1]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[1]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[1]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[1]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380006.843750, 380006.906250, 380007.031250, 380007.343750, 380008.187500",\
+ "380006.937500, 380007.000000, 380007.125000, 380007.437500, 380008.281250",\
+ "380007.031250, 380007.093750, 380007.218750, 380007.531250, 380008.375000",\
+ "380007.187500, 380007.250000, 380007.375000, 380007.687500, 380008.531250",\
+ "380007.437500, 380007.500000, 380007.625000, 380007.937500, 380008.781250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380006.562500, 380006.593750, 380006.656250, 380006.812500, 380007.187500",\
+ "380006.656250, 380006.687500, 380006.750000, 380006.906250, 380007.281250",\
+ "380006.781250, 380006.812500, 380006.875000, 380007.031250, 380007.406250",\
+ "380006.968750, 380007.000000, 380007.062500, 380007.218750, 380007.593750",\
+ "380007.281250, 380007.312500, 380007.375000, 380007.531250, 380007.906250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380006.781250, 380006.843750, 380006.968750, 380007.281250, 380008.125000",\
+ "380006.875000, 380006.937500, 380007.062500, 380007.375000, 380008.218750",\
+ "380006.937500, 380007.000000, 380007.125000, 380007.437500, 380008.281250",\
+ "380007.093750, 380007.156250, 380007.281250, 380007.593750, 380008.437500",\
+ "380007.312500, 380007.375000, 380007.500000, 380007.812500, 380008.656250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380006.437500, 380006.468750, 380006.500000, 380006.656250, 380007.031250",\
+ "380006.531250, 380006.562500, 380006.593750, 380006.750000, 380007.125000",\
+ "380006.625000, 380006.656250, 380006.687500, 380006.843750, 380007.218750",\
+ "380006.812500, 380006.843750, 380006.875000, 380007.031250, 380007.406250",\
+ "380007.062500, 380007.093750, 380007.125000, 380007.281250, 380007.656250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[1]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970006.000000, 970006.062500, 970006.125000, 970006.250000, 970006.625000",\
+ "970006.125000, 970006.187500, 970006.250000, 970006.375000, 970006.750000",\
+ "970006.125000, 970006.187500, 970006.250000, 970006.375000, 970006.750000",\
+ "970006.375000, 970006.437500, 970006.500000, 970006.625000, 970007.000000",\
+ "970006.625000, 970006.687500, 970006.750000, 970006.875000, 970007.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "970008.625000, 970008.687500, 970008.812500, 970009.125000, 970010.000000",\
+ "970008.750000, 970008.812500, 970008.937500, 970009.250000, 970010.125000",\
+ "970008.875000, 970008.937500, 970009.062500, 970009.375000, 970010.250000",\
+ "970009.125000, 970009.187500, 970009.312500, 970009.625000, 970010.500000",\
+ "970009.375000, 970009.437500, 970009.562500, 970009.875000, 970010.750000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[1]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[1]_inv_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590007.000000, 590007.062500, 590007.187500, 590007.500000, 590008.375000",\
+ "590007.125000, 590007.187500, 590007.312500, 590007.625000, 590008.500000",\
+ "590007.125000, 590007.187500, 590007.312500, 590007.625000, 590008.500000",\
+ "590007.250000, 590007.312500, 590007.437500, 590007.750000, 590008.625000",\
+ "590007.500000, 590007.562500, 590007.687500, 590008.000000, 590008.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526",\
+ "0.073824, 0.189280, 0.392442, 0.950608, 2.441526");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590005.750000, 590005.812500, 590005.875000, 590006.000000, 590006.375000",\
+ "590005.875000, 590005.937500, 590006.000000, 590006.125000, 590006.500000",\
+ "590006.000000, 590006.062500, 590006.125000, 590006.250000, 590006.625000",\
+ "590006.125000, 590006.187500, 590006.250000, 590006.375000, 590006.750000",\
+ "590006.500000, 590006.562500, 590006.625000, 590006.750000, 590007.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497",\
+ "0.041204, 0.091190, 0.180893, 0.429338, 1.092497");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast2padmux_o[1]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590006.875000, 590006.937500, 590007.062500, 590007.375000, 590008.187500",\
+ "590006.875000, 590006.937500, 590007.062500, 590007.375000, 590008.187500",\
+ "590007.000000, 590007.062500, 590007.187500, 590007.500000, 590008.312500",\
+ "590007.125000, 590007.187500, 590007.312500, 590007.625000, 590008.437500",\
+ "590007.375000, 590007.437500, 590007.562500, 590007.875000, 590008.687500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507",\
+ "0.067834, 0.184682, 0.382509, 0.937727, 2.417507");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "590005.687500, 590005.687500, 590005.750000, 590005.875000, 590006.312500",\
+ "590005.812500, 590005.812500, 590005.875000, 590006.000000, 590006.437500",\
+ "590005.937500, 590005.937500, 590006.000000, 590006.125000, 590006.562500",\
+ "590006.062500, 590006.062500, 590006.125000, 590006.250000, 590006.687500",\
+ "590006.312500, 590006.312500, 590006.375000, 590006.500000, 590006.937500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090351, 0.180124, 0.429131, 1.091647",\
+ "0.039018, 0.090351, 0.180124, 0.429131, 1.091647",\
+ "0.039018, 0.090351, 0.180124, 0.429131, 1.091647",\
+ "0.039018, 0.090351, 0.180124, 0.429131, 1.091647",\
+ "0.039018, 0.090351, 0.180124, 0.429131, 1.091647");
+ }
+
+ } /* end of arc padmux2ast_i[5]_ast2padmux_o[1]_una_min*/
+
+} /* end of pin ast2padmux_o[1] */
+
+pin("ast2padmux_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.028584 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2padmux_o[0];
+ timing () {
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_val_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.265266, 0.537827, 0.806617, 1.252725, 2.144939",\
+ "0.332206, 0.604767, 0.873561, 1.319677, 2.211910",\
+ "0.448674, 0.721235, 0.990031, 1.436155, 2.328403",\
+ "0.768345, 1.040907, 1.309703, 1.755827, 2.648076",\
+ "1.623507, 1.896068, 2.164861, 2.610974, 3.503201",\
+ "0.323816, 0.596337, 0.865402, 1.310432, 2.201046",\
+ "0.390756, 0.663277, 0.932346, 1.377385, 2.268016",\
+ "0.507224, 0.779745, 1.048816, 1.493863, 2.384509",\
+ "0.826895, 1.099417, 1.368488, 1.813535, 2.704183",\
+ "1.682057, 1.954579, 2.223646, 2.668682, 3.559309",\
+ "0.467311, 0.742155, 1.009298, 1.454188, 2.344779",\
+ "0.534251, 0.809095, 1.076241, 1.521140, 2.411749",\
+ "0.650718, 0.925563, 1.192712, 1.637618, 2.528242",\
+ "0.970390, 1.245234, 1.512384, 1.957291, 2.847916",\
+ "1.825552, 2.100396, 2.367542, 2.812438, 3.703041",\
+ "0.502881, 0.779924, 1.046217, 1.490979, 2.381337",\
+ "0.569821, 0.846864, 1.113161, 1.557931, 2.448308",\
+ "0.686289, 0.963332, 1.229631, 1.674409, 2.564800",\
+ "1.005960, 1.283003, 1.549303, 1.994082, 2.884474",\
+ "1.861122, 2.138165, 2.404461, 2.849229, 3.739599",\
+ "0.827836, 1.143899, 1.397858, 1.840240, 2.726793",\
+ "0.894775, 1.210839, 1.464802, 1.907193, 2.793763",\
+ "1.011243, 1.327307, 1.581273, 2.023671, 2.910256",\
+ "1.330914, 1.646978, 1.900944, 2.343343, 3.229930",\
+ "2.186077, 2.502140, 2.756102, 3.198490, 4.085055");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.073065, 0.073065, 0.073067, 0.073074, 0.073087",\
+ "0.188995, 0.188995, 0.189001, 0.189016, 0.189048",\
+ "0.391933, 0.391934, 0.391942, 0.391965, 0.392010",\
+ "0.949299, 0.949301, 0.949318, 0.949367, 0.949463",\
+ "2.441373, 2.441374, 2.441376, 2.441384, 2.441401",\
+ "0.073065, 0.073065, 0.073067, 0.073074, 0.073087",\
+ "0.188995, 0.188995, 0.189001, 0.189016, 0.189048",\
+ "0.391933, 0.391934, 0.391942, 0.391965, 0.392010",\
+ "0.949299, 0.949301, 0.949318, 0.949367, 0.949463",\
+ "2.441373, 2.441374, 2.441376, 2.441384, 2.441401",\
+ "0.073065, 0.073065, 0.073067, 0.073074, 0.073087",\
+ "0.188995, 0.188995, 0.189001, 0.189016, 0.189048",\
+ "0.391933, 0.391934, 0.391942, 0.391965, 0.392010",\
+ "0.949299, 0.949301, 0.949318, 0.949367, 0.949463",\
+ "2.441373, 2.441374, 2.441376, 2.441384, 2.441401",\
+ "0.073065, 0.073065, 0.073067, 0.073074, 0.073087",\
+ "0.188995, 0.188995, 0.189001, 0.189016, 0.189048",\
+ "0.391933, 0.391934, 0.391942, 0.391965, 0.392010",\
+ "0.949299, 0.949301, 0.949318, 0.949367, 0.949463",\
+ "2.441373, 2.441374, 2.441376, 2.441384, 2.441401",\
+ "0.073065, 0.073065, 0.073067, 0.073074, 0.073087",\
+ "0.188995, 0.188996, 0.189001, 0.189017, 0.189048",\
+ "0.391933, 0.391935, 0.391943, 0.391965, 0.392010",\
+ "0.949299, 0.949302, 0.949319, 0.949367, 0.949463",\
+ "2.441373, 2.441374, 2.441376, 2.441385, 2.441401");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.321682, 0.506101, 0.700572, 1.011955, 1.613898",\
+ "0.353113, 0.537532, 0.732004, 1.043387, 1.645330",\
+ "0.405822, 0.590241, 0.784712, 1.096096, 1.698039",\
+ "0.548175, 0.732594, 0.927065, 1.238448, 1.840391",\
+ "0.926771, 1.111190, 1.305661, 1.617045, 2.218987",\
+ "0.381626, 0.565998, 0.760527, 1.071737, 1.673515",\
+ "0.413058, 0.597430, 0.791958, 1.103168, 1.704947",\
+ "0.465766, 0.650139, 0.844667, 1.155877, 1.757656",\
+ "0.608119, 0.792491, 0.987020, 1.298229, 1.900008",\
+ "0.986715, 1.171088, 1.365616, 1.676826, 2.278605",\
+ "0.514234, 0.698252, 0.892410, 1.203594, 1.805323",\
+ "0.545665, 0.729684, 0.923841, 1.235026, 1.836754",\
+ "0.598374, 0.782393, 0.976550, 1.287735, 1.889464",\
+ "0.740726, 0.924745, 1.118903, 1.430087, 2.031816",\
+ "1.119323, 1.303342, 1.497499, 1.808684, 2.410412",\
+ "0.547325, 0.731379, 0.925535, 1.236547, 1.837931",\
+ "0.578757, 0.762811, 0.956967, 1.267979, 1.869363",\
+ "0.631466, 0.815519, 1.009675, 1.320688, 1.922072",\
+ "0.773818, 0.957872, 1.152028, 1.463040, 2.064424",\
+ "1.152415, 1.336468, 1.530624, 1.841637, 2.443020",\
+ "0.847275, 1.036618, 1.229172, 1.539564, 2.139780",\
+ "0.878707, 1.068050, 1.260603, 1.570995, 2.171212",\
+ "0.931415, 1.120758, 1.313312, 1.623704, 2.223921",\
+ "1.073768, 1.263111, 1.455664, 1.766057, 2.366273",\
+ "1.452364, 1.641707, 1.834261, 2.144653, 2.744869");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.039144, 0.039144, 0.039144, 0.039144, 0.039145",\
+ "0.090609, 0.090609, 0.090609, 0.090609, 0.090609",\
+ "0.180697, 0.180697, 0.180697, 0.180698, 0.180700",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429276",\
+ "1.090832, 1.090832, 1.090832, 1.090832, 1.090832",\
+ "0.039144, 0.039144, 0.039144, 0.039144, 0.039145",\
+ "0.090609, 0.090609, 0.090609, 0.090609, 0.090609",\
+ "0.180697, 0.180697, 0.180697, 0.180698, 0.180700",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429276",\
+ "1.090832, 1.090832, 1.090832, 1.090832, 1.090832",\
+ "0.039144, 0.039144, 0.039144, 0.039144, 0.039145",\
+ "0.090609, 0.090609, 0.090609, 0.090609, 0.090609",\
+ "0.180697, 0.180697, 0.180697, 0.180698, 0.180700",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429276",\
+ "1.090832, 1.090832, 1.090832, 1.090832, 1.090832",\
+ "0.039144, 0.039144, 0.039144, 0.039144, 0.039145",\
+ "0.090609, 0.090609, 0.090609, 0.090609, 0.090609",\
+ "0.180697, 0.180697, 0.180697, 0.180698, 0.180700",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429276",\
+ "1.090832, 1.090832, 1.090832, 1.090832, 1.090832",\
+ "0.039144, 0.039144, 0.039144, 0.039144, 0.039145",\
+ "0.090609, 0.090609, 0.090609, 0.090609, 0.090609",\
+ "0.180697, 0.180697, 0.180697, 0.180698, 0.180700",\
+ "0.429275, 0.429275, 0.429275, 0.429276, 0.429276",\
+ "1.090832, 1.090832, 1.090832, 1.090832, 1.090832");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_rng_i" ;
+ related_output_pin : "rng_val_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.258488, 0.527564, 0.791863, 1.230215, 2.105847",\
+ "0.325417, 0.594493, 0.858794, 1.297152, 2.172797",\
+ "0.441875, 0.710952, 0.975255, 1.413618, 2.289272",\
+ "0.761546, 1.030622, 1.294926, 1.733289, 2.608944",\
+ "1.616721, 1.885797, 2.150098, 2.588454, 3.464095",\
+ "0.317013, 0.586065, 0.850631, 1.287923, 2.161954",\
+ "0.383942, 0.652994, 0.917562, 1.354860, 2.228903",\
+ "0.500401, 0.769453, 1.034023, 1.471326, 2.345379",\
+ "0.820072, 1.089123, 1.353694, 1.790997, 2.665051",\
+ "1.675247, 1.944298, 2.208866, 2.646162, 3.520202",\
+ "0.460262, 0.731823, 0.994519, 1.431727, 2.305687",\
+ "0.527191, 0.798752, 1.061450, 1.498664, 2.372636",\
+ "0.643650, 0.915210, 1.177911, 1.615129, 2.489112",\
+ "0.963321, 1.234881, 1.497581, 1.934801, 2.808784",\
+ "1.818496, 2.090056, 2.352754, 2.789966, 3.663935",\
+ "0.495756, 0.769563, 1.031437, 1.468598, 2.342245",\
+ "0.562684, 0.836492, 1.098369, 1.535535, 2.409194",\
+ "0.679143, 0.952951, 1.214829, 1.652000, 2.525670",\
+ "0.998814, 1.272622, 1.534500, 1.971672, 2.845342",\
+ "1.853989, 2.127797, 2.389672, 2.826837, 3.700493",\
+ "0.819862, 1.132963, 1.383002, 1.817902, 2.687701",\
+ "0.886791, 1.199892, 1.449933, 1.884839, 2.754651",\
+ "1.003250, 1.316351, 1.566393, 2.001304, 2.871126",\
+ "1.322921, 1.636022, 1.886065, 2.320976, 3.190798",\
+ "2.178096, 2.491197, 2.741237, 3.176141, 4.045949");
+ }
+ rise_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.073056, 0.073057, 0.073058, 0.073063, 0.073072",\
+ "0.188976, 0.188976, 0.188980, 0.188990, 0.189011",\
+ "0.391905, 0.391906, 0.391911, 0.391927, 0.391957",\
+ "0.949239, 0.949241, 0.949252, 0.949284, 0.949349",\
+ "2.441363, 2.441363, 2.441365, 2.441371, 2.441381",\
+ "0.073056, 0.073057, 0.073058, 0.073063, 0.073072",\
+ "0.188976, 0.188976, 0.188980, 0.188990, 0.189011",\
+ "0.391905, 0.391906, 0.391911, 0.391927, 0.391957",\
+ "0.949239, 0.949241, 0.949252, 0.949284, 0.949349",\
+ "2.441363, 2.441363, 2.441365, 2.441371, 2.441381",\
+ "0.073056, 0.073057, 0.073058, 0.073063, 0.073072",\
+ "0.188976, 0.188976, 0.188980, 0.188990, 0.189011",\
+ "0.391905, 0.391906, 0.391911, 0.391927, 0.391957",\
+ "0.949239, 0.949241, 0.949252, 0.949284, 0.949349",\
+ "2.441363, 2.441363, 2.441365, 2.441371, 2.441381",\
+ "0.073056, 0.073057, 0.073058, 0.073063, 0.073072",\
+ "0.188976, 0.188976, 0.188980, 0.188990, 0.189011",\
+ "0.391905, 0.391906, 0.391911, 0.391927, 0.391957",\
+ "0.949239, 0.949241, 0.949252, 0.949285, 0.949349",\
+ "2.441363, 2.441363, 2.441365, 2.441371, 2.441381",\
+ "0.073056, 0.073057, 0.073058, 0.073063, 0.073072",\
+ "0.188976, 0.188976, 0.188980, 0.188990, 0.189011",\
+ "0.391905, 0.391906, 0.391912, 0.391927, 0.391957",\
+ "0.949239, 0.949241, 0.949252, 0.949285, 0.949349",\
+ "2.441363, 2.441364, 2.441365, 2.441371, 2.441381");
+ }
+ cell_fall( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.280172, 0.467016, 0.660531, 0.967486, 1.558860",\
+ "0.311589, 0.498432, 0.691948, 0.998903, 1.590277",\
+ "0.364248, 0.551092, 0.744607, 1.051563, 1.642938",\
+ "0.506650, 0.693493, 0.887008, 1.193964, 1.785338",\
+ "0.885283, 1.072126, 1.265642, 1.572596, 2.163970",\
+ "0.340116, 0.526843, 0.720376, 1.027255, 1.618477",\
+ "0.371533, 0.558260, 0.751792, 1.058672, 1.649894",\
+ "0.424192, 0.610919, 0.804452, 1.111332, 1.702555",\
+ "0.566594, 0.753321, 0.946853, 1.253732, 1.844955",\
+ "0.945227, 1.131954, 1.325486, 1.632365, 2.223587",\
+ "0.472755, 0.659097, 0.852258, 1.159112, 1.750284",\
+ "0.504172, 0.690514, 0.883675, 1.190529, 1.781701",\
+ "0.556831, 0.743173, 0.936334, 1.243189, 1.834362",\
+ "0.699233, 0.885575, 1.078736, 1.385590, 1.976762",\
+ "1.077866, 1.264208, 1.457369, 1.764223, 2.355394",\
+ "0.505869, 0.692396, 0.885489, 1.192192, 1.783144",\
+ "0.537286, 0.723812, 0.916906, 1.223609, 1.814562",\
+ "0.589945, 0.776472, 0.969565, 1.276269, 1.867223",\
+ "0.732346, 0.918873, 1.111966, 1.418670, 2.009622",\
+ "1.110980, 1.297506, 1.490599, 1.797303, 2.388254",\
+ "0.806127, 0.997856, 1.189152, 1.495396, 2.085451",\
+ "0.837544, 1.029273, 1.220569, 1.526813, 2.116868",\
+ "0.890203, 1.081932, 1.273229, 1.579473, 2.169529",\
+ "1.032604, 1.224334, 1.415630, 1.721874, 2.311929",\
+ "1.411238, 1.602967, 1.794263, 2.100507, 2.690561");
+ }
+ fall_transition( f_itrans_ocap_rcap ){
+ index_1 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ index_3 ( "0.000506, 0.073504, 0.160882, 0.321258, 0.642011");
+ values ( "0.039040, 0.039040, 0.039040, 0.039042, 0.039044",\
+ "0.090707, 0.090706, 0.090706, 0.090705, 0.090703",\
+ "0.180446, 0.180446, 0.180447, 0.180449, 0.180455",\
+ "0.429219, 0.429219, 0.429219, 0.429220, 0.429221",\
+ "1.091504, 1.091503, 1.091503, 1.091496, 1.091479",\
+ "0.039040, 0.039040, 0.039040, 0.039042, 0.039044",\
+ "0.090707, 0.090706, 0.090706, 0.090705, 0.090703",\
+ "0.180446, 0.180446, 0.180447, 0.180449, 0.180455",\
+ "0.429219, 0.429219, 0.429219, 0.429220, 0.429221",\
+ "1.091504, 1.091503, 1.091503, 1.091496, 1.091479",\
+ "0.039040, 0.039040, 0.039040, 0.039042, 0.039044",\
+ "0.090707, 0.090706, 0.090706, 0.090705, 0.090703",\
+ "0.180446, 0.180446, 0.180447, 0.180449, 0.180455",\
+ "0.429219, 0.429219, 0.429219, 0.429220, 0.429221",\
+ "1.091504, 1.091503, 1.091503, 1.091496, 1.091479",\
+ "0.039040, 0.039040, 0.039040, 0.039042, 0.039044",\
+ "0.090707, 0.090706, 0.090706, 0.090705, 0.090703",\
+ "0.180446, 0.180446, 0.180447, 0.180449, 0.180455",\
+ "0.429219, 0.429219, 0.429219, 0.429220, 0.429221",\
+ "1.091504, 1.091503, 1.091503, 1.091496, 1.091479",\
+ "0.039040, 0.039040, 0.039040, 0.039042, 0.039044",\
+ "0.090706, 0.090706, 0.090706, 0.090705, 0.090703",\
+ "0.180446, 0.180446, 0.180447, 0.180449, 0.180455",\
+ "0.429219, 0.429219, 0.429219, 0.429220, 0.429221",\
+ "1.091504, 1.091503, 1.091503, 1.091496, 1.091479");
+ }
+
+ } /* end of arc clk_ast_rng_i_ast2padmux_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380001.968750, 380002.031250, 380002.156250, 380002.468750, 380003.343750",\
+ "380002.062500, 380002.125000, 380002.250000, 380002.562500, 380003.437500",\
+ "380002.125000, 380002.187500, 380002.312500, 380002.625000, 380003.500000",\
+ "380002.468750, 380002.531250, 380002.656250, 380002.968750, 380003.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073650, 0.189354, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189354, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189365, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189385, 0.392560, 0.950561, 2.441537",\
+ "0.073650, 0.189425, 0.393252, 0.950561, 2.441537");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.437500, 380000.437500, 380000.468750, 380000.531250, 380000.718750",\
+ "380000.531250, 380000.531250, 380000.562500, 380000.625000, 380000.812500",\
+ "380000.593750, 380000.593750, 380000.625000, 380000.687500, 380000.875000",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.968750, 380000.968750, 380001.000000, 380001.062500, 380001.250000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.118063, 0.173160, 0.267375, 0.527316, 1.216798",\
+ "0.205470, 0.260567, 0.354781, 0.614720, 1.304204",\
+ "0.286205, 0.341346, 0.435579, 0.695608, 1.384949",\
+ "0.343571, 0.398793, 0.493060, 0.753254, 1.442331",\
+ "0.643636, 0.699058, 0.793671, 1.054205, 1.742813");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055140, 0.149920, 0.315966, 0.770671, 1.992169",\
+ "0.055064, 0.149920, 0.315966, 0.770616, 1.992169",\
+ "0.054924, 0.149920, 0.315966, 0.770514, 1.992169",\
+ "0.054820, 0.149920, 0.315966, 0.770514, 1.988361");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.068977, 0.083624, 0.108789, 0.177707, 0.362145",\
+ "0.157440, 0.172093, 0.197279, 0.266195, 0.450612",\
+ "0.246166, 0.261189, 0.286407, 0.355291, 0.539679",\
+ "0.308361, 0.324424, 0.349591, 0.418444, 0.602842",\
+ "0.630702, 0.654723, 0.683267, 0.752219, 0.936438");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015416, 0.041075, 0.085652, 0.207740, 0.535967",\
+ "0.015763, 0.041089, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2padmux_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "fla_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111862, 0.178517, 0.294685, 0.611498, 1.461412",\
+ "0.196887, 0.263820, 0.381200, 0.697836, 1.546758",\
+ "0.280874, 0.348002, 0.465333, 0.783744, 1.631498",\
+ "0.419192, 0.490016, 0.607541, 0.927454, 1.774732",\
+ "0.629434, 0.713469, 0.835221, 1.155234, 2.004311");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067759, 0.184639, 0.382501, 0.937507, 2.417566",\
+ "0.067759, 0.184639, 0.382501, 0.937507, 2.418347",\
+ "0.069174, 0.184639, 0.382586, 0.937507, 2.418347",\
+ "0.077831, 0.187460, 0.383300, 0.940319, 2.418347",\
+ "0.099054, 0.205738, 0.390315, 0.940320, 2.425200");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.103322, 0.134506, 0.187130, 0.329612, 0.708263",\
+ "0.188196, 0.219801, 0.272413, 0.414932, 0.793505",\
+ "0.281500, 0.317246, 0.369943, 0.512302, 0.890520",\
+ "0.433568, 0.478875, 0.537406, 0.680993, 1.058708",\
+ "0.668936, 0.733428, 0.809479, 0.962224, 1.340585");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040521, 0.090274, 0.180244, 0.428614, 1.092440",\
+ "0.042863, 0.090977, 0.180401, 0.428614, 1.092696",\
+ "0.054661, 0.097371, 0.180899, 0.428690, 1.092793",\
+ "0.077190, 0.120374, 0.194930, 0.430280, 1.092793",\
+ "0.118581, 0.174509, 0.240947, 0.445113, 1.092793");
+ }
+
+ } /* end of arc fla_obs_i[0]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "fla_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.110629, 0.177262, 0.293339, 0.610165, 1.460154",\
+ "0.194795, 0.261696, 0.378936, 0.695592, 1.544629",\
+ "0.275980, 0.343081, 0.460479, 0.778514, 1.626463",\
+ "0.408884, 0.478137, 0.595421, 0.915532, 1.762573",\
+ "0.610985, 0.691263, 0.810230, 1.128954, 1.977655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.067834, 0.183634, 0.382402, 0.934951, 2.414331",\
+ "0.068631, 0.183634, 0.382540, 0.936478, 2.414331",\
+ "0.075251, 0.185541, 0.383090, 0.939701, 2.414331",\
+ "0.093347, 0.198994, 0.384563, 0.939701, 2.425563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077370, 0.108647, 0.161299, 0.303710, 0.682406",\
+ "0.166391, 0.197521, 0.250129, 0.392651, 0.771277",\
+ "0.253394, 0.288299, 0.340979, 0.483371, 0.861661",\
+ "0.395347, 0.439383, 0.496795, 0.640121, 1.017884",\
+ "0.615736, 0.679130, 0.754042, 0.905113, 1.283136");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039363, 0.090228, 0.180124, 0.428312, 1.092155",\
+ "0.041196, 0.090228, 0.180315, 0.428312, 1.092511",\
+ "0.052267, 0.096073, 0.180798, 0.428601, 1.092511",\
+ "0.074482, 0.116813, 0.192279, 0.430033, 1.092511",\
+ "0.116096, 0.171326, 0.236992, 0.441817, 1.092511");
+ }
+
+ } /* end of arc fla_obs_i[0]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.454321, 0.521261, 0.637729, 0.957401, 1.812562",\
+ "0.476584, 0.543525, 0.659993, 0.979665, 1.834826",\
+ "0.532978, 0.599918, 0.716386, 1.036058, 1.891219",\
+ "0.630840, 0.697781, 0.814249, 1.133921, 1.989082",\
+ "1.144998, 1.211940, 1.328409, 1.648081, 2.503240");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073066, 0.188998, 0.391939, 0.949310, 2.441375");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.506462, 0.537893, 0.590602, 0.732954, 1.111551",\
+ "0.527996, 0.559427, 0.612136, 0.754488, 1.133085",\
+ "0.595181, 0.626613, 0.679322, 0.821674, 1.200271",\
+ "0.705480, 0.736911, 0.789620, 0.931973, 1.310569",\
+ "1.265269, 1.296700, 1.349409, 1.491761, 1.870358");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.421371, 0.488300, 0.604758, 0.924429, 1.779604",\
+ "0.442149, 0.509077, 0.625536, 0.945207, 1.800382",\
+ "0.499740, 0.566669, 0.683127, 1.002798, 1.857973",\
+ "0.597685, 0.664614, 0.781072, 1.100743, 1.955918",\
+ "1.086534, 1.153463, 1.269921, 1.589592, 2.444767");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.412434, 0.443851, 0.496510, 0.638912, 1.017545",\
+ "0.429840, 0.461257, 0.513916, 0.656317, 1.034951",\
+ "0.502410, 0.533827, 0.586486, 0.728887, 1.107521",\
+ "0.615047, 0.646463, 0.699123, 0.841524, 1.220157",\
+ "1.142076, 1.173492, 1.226152, 1.368553, 1.747186");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.453258, 0.484690, 0.537398, 0.679751, 1.058348",\
+ "0.478327, 0.509759, 0.562468, 0.704820, 1.083417",\
+ "0.547548, 0.578980, 0.631688, 0.774041, 1.152637",\
+ "0.671779, 0.703211, 0.755919, 0.898272, 1.276869",\
+ "1.305416, 1.336847, 1.389556, 1.531909, 1.910505");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.059999, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.686438, 0.753379, 0.869847, 1.189519, 2.044680",\
+ "0.706913, 0.773853, 0.890321, 1.209993, 2.065154",\
+ "0.765773, 0.832713, 0.949182, 1.268853, 2.124014",\
+ "0.875012, 0.941953, 1.058421, 1.378093, 2.233254",\
+ "1.652212, 1.719154, 1.835623, 2.155295, 3.010454");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.053775, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073066, 0.188998, 0.391939, 0.949310, 2.441375");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[10]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.282064, 0.313481, 0.366140, 0.508541, 0.887175",\
+ "0.305674, 0.337091, 0.389750, 0.532151, 0.910785",\
+ "0.377014, 0.408430, 0.461090, 0.603491, 0.982124",\
+ "0.496822, 0.528239, 0.580898, 0.723300, 1.101933",\
+ "1.041943, 1.073360, 1.126019, 1.268421, 1.647054");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.056753, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.590884, 0.657812, 0.774271, 1.093942, 1.949117",\
+ "0.607576, 0.674504, 0.790963, 1.110634, 1.965809",\
+ "0.669970, 0.736899, 0.853357, 1.173028, 2.028203",\
+ "0.779360, 0.846288, 0.962747, 1.282418, 2.137593",\
+ "1.516501, 1.583430, 1.699888, 2.019559, 2.874734");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044579, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+
+ } /* end of arc obs_ctrl_o[10]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.197401, 0.228828, 0.281523, 0.423889, 0.802496",\
+ "0.210783, 0.242210, 0.294905, 0.437272, 0.815878",\
+ "0.293723, 0.325151, 0.377848, 0.520213, 0.898818",\
+ "0.418374, 0.449806, 0.502515, 0.644867, 1.023463",\
+ "1.005445, 1.038016, 1.090870, 1.233261, 1.611881");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.034927, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039115, 0.090636, 0.180627, 0.429260, 1.091020",\
+ "0.039115, 0.090636, 0.180627, 0.429260, 1.091020",\
+ "0.039119, 0.090636, 0.180636, 0.429262, 1.091020",\
+ "0.039145, 0.090636, 0.180699, 0.429276, 1.091020",\
+ "0.042423, 0.091616, 0.180853, 0.429341, 1.091020");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.483196, 0.550400, 0.667026, 0.986767, 1.841721",\
+ "0.495454, 0.562658, 0.679284, 0.999025, 1.853979",\
+ "0.559644, 0.626847, 0.743473, 1.063213, 1.918167",\
+ "0.662607, 0.729816, 0.846440, 1.166186, 2.021145",\
+ "1.344671, 1.412041, 1.528612, 1.848528, 2.703634");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037147, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073644, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073644, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073644, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073683, 0.189305, 0.392450, 0.950570, 2.441537",\
+ "0.075005, 0.189305, 0.392450, 0.950931, 2.441537");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[11]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.178015, 0.209429, 0.262079, 0.404490, 0.783130",\
+ "0.189390, 0.220804, 0.273454, 0.415865, 0.794505",\
+ "0.274579, 0.305993, 0.358646, 0.501054, 0.879692",\
+ "0.400471, 0.431892, 0.484565, 0.626953, 1.005576",\
+ "0.985792, 1.018105, 1.070937, 1.213308, 1.591914");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.030664, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090679, 0.180398, 0.429208, 1.090559",\
+ "0.039020, 0.090679, 0.180398, 0.429208, 1.090559",\
+ "0.039027, 0.090679, 0.180413, 0.429212, 1.090559",\
+ "0.039069, 0.090679, 0.180517, 0.429235, 1.090559",\
+ "0.041694, 0.091361, 0.180877, 0.429339, 1.090559");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.476048, 0.543228, 0.659862, 0.979577, 1.834510",\
+ "0.484692, 0.551872, 0.668506, 0.988221, 1.843154",\
+ "0.552511, 0.619690, 0.736325, 1.056039, 1.910971",\
+ "0.655347, 0.722531, 0.839164, 1.158884, 2.013820",\
+ "1.333397, 1.400722, 1.517308, 1.837177, 2.692242");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.028580, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073446, 0.189167, 0.392403, 0.950504, 2.441474",\
+ "0.073446, 0.189167, 0.392403, 0.950504, 2.441474",\
+ "0.073446, 0.189167, 0.392403, 0.950504, 2.441474",\
+ "0.073481, 0.189167, 0.392403, 0.950515, 2.441474",\
+ "0.074640, 0.189167, 0.392403, 0.950831, 2.441474");
+ }
+
+ } /* end of arc obs_ctrl_o[11]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.518600, 0.585804, 0.702430, 1.022170, 1.877124",\
+ "0.534366, 0.601569, 0.718195, 1.037936, 1.892890",\
+ "0.608476, 0.675680, 0.792306, 1.112046, 1.967001",\
+ "0.699697, 0.766901, 0.883527, 1.203267, 2.058222",\
+ "1.126490, 1.193697, 1.310322, 1.630066, 2.485023");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073643, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073671, 0.189301, 0.392449, 0.950567, 2.441536");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.275118, 0.306284, 0.358903, 0.501398, 0.880041",\
+ "0.290749, 0.321915, 0.374533, 0.517029, 0.895671",\
+ "0.363703, 0.394869, 0.447488, 0.589983, 0.968626",\
+ "0.474794, 0.505959, 0.558577, 0.701073, 1.079716",\
+ "1.013269, 1.044421, 1.097036, 1.239541, 1.618177");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040759, 0.090635, 0.180631, 0.429261, 1.092499",\
+ "0.040922, 0.090603, 0.180713, 0.429279, 1.092539");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337608, 0.404302, 0.520641, 0.837429, 1.687203",\
+ "0.349939, 0.416633, 0.532972, 0.849760, 1.699534",\
+ "0.408752, 0.475446, 0.591785, 0.908573, 1.758347",\
+ "0.496083, 0.562777, 0.679117, 0.995905, 1.845678",\
+ "0.949078, 1.015776, 1.132136, 1.448920, 2.298678");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.228794, 0.260208, 0.312858, 0.455269, 0.833909",\
+ "0.240665, 0.272079, 0.324729, 0.467140, 0.845780",\
+ "0.323160, 0.354574, 0.407224, 0.549635, 0.928275",\
+ "0.428120, 0.459534, 0.512186, 0.654595, 1.033234",\
+ "0.930331, 0.961753, 1.014431, 1.156814, 1.535434");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039024, 0.090327, 0.180161, 0.428971, 1.091612",\
+ "0.039078, 0.090324, 0.180166, 0.428948, 1.091257");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287803, 0.318969, 0.371587, 0.514083, 0.892726",\
+ "0.303569, 0.334734, 0.387353, 0.529848, 0.908491",\
+ "0.378810, 0.409975, 0.462594, 0.605089, 0.983732",\
+ "0.473884, 0.505049, 0.557668, 0.700163, 1.078806",\
+ "0.918190, 0.949342, 1.001956, 1.144462, 1.523098");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040034, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090637, 0.180627, 0.429260, 1.092497",\
+ "0.040759, 0.090635, 0.180631, 0.429261, 1.092499",\
+ "0.040922, 0.090603, 0.180713, 0.429279, 1.092539");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.376755, 0.443500, 0.560063, 0.876818, 1.726409",\
+ "0.392417, 0.459162, 0.575725, 0.892480, 1.742071",\
+ "0.467424, 0.534169, 0.650732, 0.967487, 1.817078",\
+ "0.562603, 0.629351, 0.745928, 1.062681, 1.912261",\
+ "1.006927, 1.073706, 1.190415, 1.507149, 2.356620");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040698, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073643, 0.189305, 0.392450, 0.950559, 2.441537",\
+ "0.073671, 0.189301, 0.392449, 0.950567, 2.441536");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.264318, 0.295567, 0.348210, 0.490643, 0.869326",\
+ "0.278489, 0.309737, 0.362381, 0.504814, 0.883496",\
+ "0.355325, 0.386573, 0.439217, 0.581649, 0.960332",\
+ "0.450369, 0.481617, 0.534260, 0.676693, 1.055376",\
+ "0.893831, 0.925076, 0.977718, 1.120154, 1.498834");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036484, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039024, 0.090327, 0.180161, 0.428971, 1.091612",\
+ "0.039078, 0.090324, 0.180166, 0.428948, 1.091257");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.373701, 0.440395, 0.556734, 0.873522, 1.723296",\
+ "0.385572, 0.452266, 0.568605, 0.885393, 1.735167",\
+ "0.464371, 0.531065, 0.647404, 0.964192, 1.813966",\
+ "0.559385, 0.626079, 0.742420, 1.059207, 1.908981",\
+ "1.002245, 1.068944, 1.185303, 1.502088, 2.351846");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032503, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184561, 0.382485, 0.937100, 2.417676",\
+ "0.067620, 0.184560, 0.382485, 0.937098, 2.417677",\
+ "0.067604, 0.184551, 0.382483, 0.937052, 2.417689");
+ }
+
+ } /* end of arc obs_ctrl_o[4]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.337998, 0.404744, 0.521308, 0.838063, 1.687653",\
+ "0.353177, 0.419923, 0.536487, 0.853242, 1.702832",\
+ "0.412195, 0.478941, 0.595505, 0.912260, 1.761850",\
+ "0.508449, 0.575199, 0.691783, 1.008535, 1.858109",\
+ "0.997007, 1.063817, 1.180658, 1.497372, 2.346736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073639, 0.189305, 0.392450, 0.950558, 2.441538",\
+ "0.073639, 0.189305, 0.392450, 0.950558, 2.441538",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441538",\
+ "0.073704, 0.189296, 0.392447, 0.950576, 2.441534",\
+ "0.075364, 0.189067, 0.392369, 0.951029, 2.441428");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.272032, 0.303198, 0.355817, 0.498312, 0.876955",\
+ "0.289891, 0.321056, 0.373675, 0.516170, 0.894813",\
+ "0.360955, 0.392121, 0.444739, 0.587235, 0.965878",\
+ "0.471378, 0.502542, 0.555160, 0.697656, 1.076298",\
+ "1.004117, 1.035227, 1.087829, 1.230366, 1.608983");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090636, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090636, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090636, 0.180636, 0.429262, 1.092497",\
+ "0.040771, 0.090636, 0.180700, 0.429276, 1.092502",\
+ "0.042582, 0.091671, 0.180848, 0.429341, 1.092666");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.329221, 0.395915, 0.512254, 0.829041, 1.678816",\
+ "0.344592, 0.411286, 0.527624, 0.844412, 1.694187",\
+ "0.406780, 0.473474, 0.589813, 0.906601, 1.756375",\
+ "0.502234, 0.568932, 0.685288, 1.002073, 1.851833",\
+ "0.957622, 1.024367, 1.140929, 1.457685, 2.307276");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.231492, 0.262740, 0.315383, 0.457816, 0.836499",\
+ "0.245351, 0.276600, 0.329243, 0.471676, 0.850359",\
+ "0.320124, 0.351372, 0.404016, 0.546449, 0.925131",\
+ "0.430166, 0.461410, 0.514053, 0.656489, 1.035169",\
+ "0.955028, 0.986237, 1.038869, 1.181331, 1.559995");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091594",\
+ "0.039070, 0.090324, 0.180167, 0.428947, 1.091311",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.090589");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.194141, 0.225569, 0.278263, 0.420630, 0.799236",\
+ "0.213398, 0.244825, 0.297520, 0.439886, 0.818493",\
+ "0.291110, 0.322538, 0.375235, 0.517599, 0.896205",\
+ "0.414666, 0.446098, 0.498807, 0.641159, 1.019755",\
+ "0.992685, 1.025312, 1.078170, 1.220567, 1.599190");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.047100, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090636, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090636, 0.180627, 0.429260, 1.092497",\
+ "0.040752, 0.090636, 0.180636, 0.429262, 1.092497",\
+ "0.040771, 0.090636, 0.180700, 0.429276, 1.092502",\
+ "0.042582, 0.091671, 0.180848, 0.429341, 1.092666");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.473555, 0.540758, 0.657385, 0.977125, 1.832079",\
+ "0.486694, 0.553897, 0.670524, 0.990264, 1.845218",\
+ "0.549031, 0.616234, 0.732861, 1.052601, 1.907555",\
+ "0.658256, 0.725467, 0.842091, 1.161839, 2.016800",\
+ "1.359176, 1.426589, 1.543146, 1.863108, 2.718254");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045359, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073639, 0.189305, 0.392450, 0.950558, 2.441538",\
+ "0.073639, 0.189305, 0.392450, 0.950558, 2.441538",\
+ "0.073641, 0.189305, 0.392450, 0.950559, 2.441538",\
+ "0.073704, 0.189296, 0.392447, 0.950576, 2.441534",\
+ "0.075364, 0.189067, 0.392369, 0.951029, 2.441428");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[5]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.174738, 0.206152, 0.258801, 0.401212, 0.779853",\
+ "0.192387, 0.223801, 0.276451, 0.418861, 0.797502",\
+ "0.271960, 0.303374, 0.356027, 0.498435, 0.877073",\
+ "0.396781, 0.428202, 0.480875, 0.623262, 1.001885",\
+ "0.972879, 1.005251, 1.058088, 1.200464, 1.579073");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.043742, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039026, 0.090327, 0.180161, 0.428971, 1.091594",\
+ "0.039070, 0.090324, 0.180167, 0.428947, 1.091311",\
+ "0.040211, 0.090294, 0.180212, 0.428752, 1.090589");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.466421, 0.533601, 0.650235, 0.969950, 1.824882",\
+ "0.476202, 0.543381, 0.660016, 0.979730, 1.834662",\
+ "0.541892, 0.609071, 0.725705, 1.045420, 1.900352",\
+ "0.650936, 0.718122, 0.834754, 1.154476, 2.009415",\
+ "1.346760, 1.414122, 1.530696, 1.850604, 2.705703");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.037000, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067621, 0.184561, 0.382485, 0.937101, 2.417676",\
+ "0.067607, 0.184553, 0.382483, 0.937060, 2.417687",\
+ "0.067439, 0.184458, 0.382464, 0.936568, 2.417820");
+ }
+
+ } /* end of arc obs_ctrl_o[5]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.313610, 0.380815, 0.497441, 0.817182, 1.672137",\
+ "0.329358, 0.396562, 0.513188, 0.832930, 1.687885",\
+ "0.393235, 0.460439, 0.577065, 0.896806, 1.751761",\
+ "0.471556, 0.538760, 0.655386, 0.975126, 1.830081",\
+ "0.862244, 0.929448, 1.046074, 1.365815, 2.220770");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189305, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189305, 0.392450, 0.950561, 2.441537");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.191794, 0.223225, 0.275933, 0.418286, 0.796883",\
+ "0.207675, 0.239106, 0.291815, 0.434167, 0.812764",\
+ "0.277023, 0.308454, 0.361162, 0.503515, 0.882112",\
+ "0.365690, 0.397121, 0.449830, 0.592182, 0.970779",\
+ "0.790485, 0.821927, 0.874671, 1.016989, 1.395559");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040785, 0.090539, 0.180878, 0.429316, 1.092505");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.289937, 0.356887, 0.473363, 0.793036, 1.648185",\
+ "0.304047, 0.370997, 0.487474, 0.807146, 1.662295",\
+ "0.369617, 0.436567, 0.553044, 0.872716, 1.727865",\
+ "0.448151, 0.515103, 0.631581, 0.951254, 1.806401",\
+ "0.842717, 0.909715, 1.026232, 1.345907, 2.200999");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.167066, 0.198479, 0.251128, 0.393540, 0.772181",\
+ "0.179068, 0.210482, 0.263130, 0.405543, 0.784184",\
+ "0.252467, 0.283881, 0.336530, 0.478942, 0.857582",\
+ "0.341502, 0.372916, 0.425566, 0.567976, 0.946617",\
+ "0.759790, 0.791205, 0.843857, 0.986265, 1.364904");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090327, 0.180161, 0.428971, 1.091651",\
+ "0.039018, 0.090327, 0.180161, 0.428971, 1.091651",\
+ "0.039019, 0.090327, 0.180161, 0.428971, 1.091642",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039025, 0.090322, 0.180169, 0.428938, 1.091600");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.314064, 0.345229, 0.397848, 0.540343, 0.918986",\
+ "0.329859, 0.361025, 0.413644, 0.556139, 0.934782",\
+ "0.407724, 0.438890, 0.491508, 0.634004, 1.012646",\
+ "0.508778, 0.539944, 0.592562, 0.735058, 1.113701",\
+ "0.984655, 1.015818, 1.068436, 1.210933, 1.589574");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040785, 0.090539, 0.180878, 0.429316, 1.092505");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.614118, 0.681322, 0.797948, 1.117689, 1.972644",\
+ "0.626922, 0.694126, 0.810752, 1.130493, 1.985448",\
+ "0.694897, 0.762101, 0.878727, 1.198468, 2.053423",\
+ "0.806557, 0.873761, 0.990387, 1.310127, 2.165082",\
+ "1.291436, 1.358640, 1.475266, 1.795007, 2.649961");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040587, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189305, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189305, 0.392450, 0.950561, 2.441537");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[6]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.270718, 0.301966, 0.354610, 0.497042, 0.875725",\
+ "0.284868, 0.316117, 0.368760, 0.511193, 0.889875",\
+ "0.364362, 0.395610, 0.448254, 0.590687, 0.969369",\
+ "0.465503, 0.496751, 0.549395, 0.691827, 1.070510",\
+ "0.941451, 0.972693, 1.025335, 1.167772, 1.546452");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.036606, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039018, 0.090327, 0.180161, 0.428971, 1.091651",\
+ "0.039018, 0.090327, 0.180161, 0.428971, 1.091651",\
+ "0.039019, 0.090327, 0.180161, 0.428971, 1.091642",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039025, 0.090322, 0.180169, 0.428938, 1.091600");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.437011, 0.503705, 0.620045, 0.936832, 1.786606",\
+ "0.446608, 0.513302, 0.629642, 0.946429, 1.796203",\
+ "0.517780, 0.584475, 0.700814, 1.017602, 1.867376",\
+ "0.629396, 0.696091, 0.812430, 1.129218, 1.978992",\
+ "1.131911, 1.198614, 1.314996, 1.631778, 2.481517");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.032396, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067586, 0.184541, 0.382481, 0.936998, 2.417704");
+ }
+
+ } /* end of arc obs_ctrl_o[6]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.315427, 0.346593, 0.399212, 0.541707, 0.920350",\
+ "0.342146, 0.373312, 0.425930, 0.568426, 0.947068",\
+ "0.410184, 0.441350, 0.493968, 0.636464, 1.015106",\
+ "0.512927, 0.544093, 0.596711, 0.739207, 1.117850",\
+ "1.020553, 1.055041, 1.108054, 1.250599, 1.629324");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.060518, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180695, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180696, 0.429275, 1.092497",\
+ "0.040752, 0.090610, 0.180832, 0.429306, 1.092497",\
+ "0.047830, 0.093504, 0.180832, 0.429352, 1.092504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.615123, 0.682328, 0.798954, 1.118695, 1.973650",\
+ "0.635870, 0.703074, 0.819700, 1.139442, 1.994397",\
+ "0.701192, 0.768396, 0.885022, 1.204764, 2.059719",\
+ "0.815370, 0.882574, 0.999200, 1.318941, 2.173895",\
+ "1.395166, 1.462382, 1.579004, 1.898758, 2.753724");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.051005, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189305, 0.392450, 0.950561, 2.441537",\
+ "0.073748, 0.189305, 0.392450, 0.950588, 2.441537");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[7]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.132284, 0.163698, 0.216345, 0.358758, 0.737400",\
+ "0.152768, 0.184181, 0.236829, 0.379242, 0.757883",\
+ "0.226947, 0.258361, 0.311010, 0.453421, 0.832062",\
+ "0.328095, 0.359509, 0.412158, 0.554569, 0.933209",\
+ "0.769672, 0.801087, 0.853739, 0.996148, 1.374786");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.049671, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039016, 0.090327, 0.180161, 0.428971, 1.091660",\
+ "0.039016, 0.090327, 0.180161, 0.428971, 1.091660",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039020, 0.090327, 0.180161, 0.428971, 1.091633",\
+ "0.039025, 0.090323, 0.180168, 0.428941, 1.091602");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.268552, 0.335503, 0.451979, 0.771651, 1.626801",\
+ "0.284564, 0.351514, 0.467990, 0.787663, 1.642812",\
+ "0.357242, 0.424196, 0.540676, 0.860348, 1.715493",\
+ "0.477594, 0.544576, 0.661079, 0.980754, 1.835865",\
+ "1.125477, 1.192657, 1.309291, 1.629006, 2.483939");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.040467, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067620, 0.184560, 0.382485, 0.937099, 2.417677",\
+ "0.067601, 0.184550, 0.382483, 0.937044, 2.417691");
+ }
+
+ } /* end of arc obs_ctrl_o[7]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.711181, 0.778121, 0.894590, 1.214261, 2.069422",\
+ "0.729530, 0.796471, 0.912939, 1.232611, 2.087772",\
+ "0.800074, 0.867014, 0.983483, 1.303154, 2.158315",\
+ "0.892545, 0.959485, 1.075954, 1.395625, 2.250786",\
+ "1.377232, 1.444175, 1.560645, 1.880316, 2.735475");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073067, 0.188999, 0.391940, 0.949314, 2.441375");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.503942, 0.535373, 0.588082, 0.730435, 1.109031",\
+ "0.521369, 0.552801, 0.605509, 0.747862, 1.126459",\
+ "0.598766, 0.630198, 0.682907, 0.825259, 1.203856",\
+ "0.707080, 0.738512, 0.791220, 0.933573, 1.312169",\
+ "1.259288, 1.290720, 1.343428, 1.485781, 1.864378");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.645044, 0.711973, 0.828431, 1.148102, 2.003277",\
+ "0.661659, 0.728588, 0.845047, 1.164717, 2.019893",\
+ "0.736081, 0.803009, 0.919468, 1.239139, 2.094314",\
+ "0.830502, 0.897430, 1.013889, 1.333560, 2.188735",\
+ "1.278260, 1.345188, 1.461647, 1.781317, 2.636493");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.359441, 0.390858, 0.443517, 0.585919, 0.964552",\
+ "0.372788, 0.404204, 0.456864, 0.599265, 0.977898",\
+ "0.454765, 0.486182, 0.538841, 0.681242, 1.059876",\
+ "0.563985, 0.595401, 0.648061, 0.790462, 1.169096",\
+ "1.087607, 1.119023, 1.171683, 1.314084, 1.692717");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.540276, 0.571708, 0.624416, 0.766769, 1.145365",\
+ "0.558625, 0.590057, 0.642766, 0.785118, 1.163715",\
+ "0.632481, 0.663913, 0.716621, 0.858974, 1.237571",\
+ "0.730741, 0.762172, 0.814881, 0.957234, 1.335830",\
+ "1.254148, 1.285579, 1.338288, 1.480641, 1.859237");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.045711, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.661922, 0.728863, 0.845331, 1.165002, 2.020164",\
+ "0.674544, 0.741485, 0.857953, 1.177625, 2.032786",\
+ "0.729459, 0.796399, 0.912867, 1.232539, 2.087700",\
+ "0.831878, 0.898819, 1.015287, 1.334959, 2.190120",\
+ "1.558837, 1.625780, 1.742250, 2.061921, 2.917080");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044476, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073067, 0.188999, 0.391940, 0.949314, 2.441375");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[8]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.287469, 0.318885, 0.371545, 0.513946, 0.892579",\
+ "0.304214, 0.335631, 0.388290, 0.530692, 0.909325",\
+ "0.382471, 0.413888, 0.466547, 0.608949, 0.987582",\
+ "0.506351, 0.537768, 0.590427, 0.732828, 1.111462",\
+ "1.074942, 1.106358, 1.159018, 1.301419, 1.680052");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.041900, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.464880, 0.531808, 0.648267, 0.967938, 1.823113",\
+ "0.478226, 0.545155, 0.661613, 0.981284, 1.836459",\
+ "0.556365, 0.623294, 0.739753, 1.059423, 1.914599",\
+ "0.657544, 0.724473, 0.840931, 1.160602, 2.015777",\
+ "1.129399, 1.196328, 1.312786, 1.632457, 2.487632");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035639, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+
+ } /* end of arc obs_ctrl_o[8]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.722991, 0.789932, 0.906400, 1.226072, 2.081233",\
+ "0.741544, 0.808485, 0.924953, 1.244625, 2.099786",\
+ "0.814242, 0.881183, 0.997651, 1.317322, 2.172483",\
+ "0.909467, 0.976408, 1.092876, 1.412548, 2.267709",\
+ "1.368597, 1.435539, 1.552008, 1.871680, 2.726840");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073066, 0.188998, 0.391938, 0.949310, 2.441375");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.510317, 0.541749, 0.594457, 0.736810, 1.115407",\
+ "0.527859, 0.559291, 0.612000, 0.754352, 1.132949",\
+ "0.605188, 0.636620, 0.689329, 0.831681, 1.210278",\
+ "0.714634, 0.746065, 0.798774, 0.941126, 1.319723",\
+ "1.246573, 1.278005, 1.330713, 1.473066, 1.851663");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.677174, 0.744103, 0.860561, 1.180232, 2.035407",\
+ "0.693995, 0.760924, 0.877382, 1.197053, 2.052228",\
+ "0.768427, 0.835355, 0.951814, 1.271485, 2.126660",\
+ "0.863682, 0.930611, 1.047069, 1.366740, 2.221915",\
+ "1.316333, 1.383262, 1.499720, 1.819391, 2.674566");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.381372, 0.412788, 0.465448, 0.607849, 0.986482",\
+ "0.394828, 0.426245, 0.478904, 0.621306, 0.999939",\
+ "0.476249, 0.507665, 0.560325, 0.702726, 1.081359",\
+ "0.586223, 0.617640, 0.670299, 0.812701, 1.191334",\
+ "1.111662, 1.143078, 1.195738, 1.338139, 1.716772");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.544142, 0.575574, 0.628282, 0.770635, 1.149231",\
+ "0.562695, 0.594126, 0.646835, 0.789188, 1.167784",\
+ "0.636753, 0.668185, 0.720893, 0.863246, 1.241843",\
+ "0.735854, 0.767286, 0.819994, 0.962347, 1.340943",\
+ "1.209522, 1.240954, 1.293662, 1.436015, 1.814612");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.046138, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090609, 0.180697, 0.429275, 1.090833",\
+ "0.039144, 0.090610, 0.180696, 0.429275, 1.090836");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.616983, 0.683923, 0.800391, 1.120063, 1.975224",\
+ "0.629672, 0.696613, 0.813081, 1.132753, 1.987914",\
+ "0.684443, 0.751384, 0.867852, 1.187524, 2.042685",\
+ "0.787482, 0.854422, 0.970891, 1.290562, 2.145723",\
+ "1.494185, 1.561127, 1.677597, 1.997268, 2.852428");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.044715, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073065, 0.188996, 0.391935, 0.949303, 2.441374",\
+ "0.073066, 0.188998, 0.391938, 0.949310, 2.441375");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "obs_ctrl_o[9]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.282372, 0.313788, 0.366448, 0.508849, 0.887482",\
+ "0.299186, 0.330603, 0.383262, 0.525663, 0.904297",\
+ "0.377525, 0.408942, 0.461601, 0.604002, 0.982636",\
+ "0.500058, 0.531475, 0.584134, 0.726535, 1.105169",\
+ "1.057248, 1.088664, 1.141323, 1.283725, 1.662358");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.042344, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504",\
+ "0.039040, 0.090706, 0.180446, 0.429219, 1.091504");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.472156, 0.539085, 0.655543, 0.975214, 1.830389",\
+ "0.485612, 0.552541, 0.669000, 0.988670, 1.843846",\
+ "0.563901, 0.630829, 0.747288, 1.066959, 1.922134",\
+ "0.663577, 0.730506, 0.846965, 1.166635, 2.021811",\
+ "1.128422, 1.195350, 1.311809, 1.631480, 2.486655");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.035869, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363",\
+ "0.073056, 0.188976, 0.391905, 0.949239, 2.441363");
+ }
+
+ } /* end of arc obs_ctrl_o[9]_ast2padmux_o[0]_inv_min*/
+
+ timing () {
+ related_pin : "otm_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.113025, 0.179927, 0.296363, 0.616032, 1.471239",\
+ "0.197499, 0.264597, 0.381195, 0.700878, 1.555851",\
+ "0.280076, 0.347397, 0.463985, 0.783849, 1.638912",\
+ "0.416433, 0.486812, 0.604025, 0.924187, 1.779474",\
+ "0.624246, 0.705773, 0.827408, 1.148979, 2.004448");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073036, 0.188929, 0.391837, 0.949094, 2.441339",\
+ "0.073183, 0.189268, 0.392332, 0.950151, 2.441515",\
+ "0.074613, 0.189268, 0.392404, 0.950824, 2.441515",\
+ "0.081868, 0.192856, 0.392640, 0.950928, 2.441515",\
+ "0.102993, 0.209850, 0.398253, 0.950928, 2.441550");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.102851, 0.134278, 0.186974, 0.329339, 0.707946",\
+ "0.188654, 0.220274, 0.273049, 0.415364, 0.793932",\
+ "0.283232, 0.317549, 0.370548, 0.513080, 0.891796",\
+ "0.439854, 0.481254, 0.538206, 0.682122, 1.061087",\
+ "0.686111, 0.743348, 0.813206, 0.964006, 1.344314");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039116, 0.090635, 0.180630, 0.429260, 1.091011",\
+ "0.039742, 0.090679, 0.180942, 0.429335, 1.091011",\
+ "0.047350, 0.093337, 0.180942, 0.429351, 1.091547",\
+ "0.062153, 0.106580, 0.187253, 0.429567, 1.092904",\
+ "0.090069, 0.142497, 0.212830, 0.435355, 1.093832");
+ }
+
+ } /* end of arc otm_obs_i[0]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otm_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.111805, 0.178694, 0.295120, 0.614788, 1.470008",\
+ "0.195286, 0.262361, 0.378939, 0.698621, 1.553622",\
+ "0.274742, 0.342025, 0.458625, 0.778449, 1.633475",\
+ "0.405125, 0.474114, 0.590991, 0.911111, 1.766377",\
+ "0.603219, 0.681326, 0.800406, 1.120805, 1.976209");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073037, 0.188925, 0.391823, 0.948978, 2.441330",\
+ "0.073166, 0.189215, 0.392273, 0.950004, 2.441389",\
+ "0.074291, 0.189215, 0.392420, 0.950004, 2.441389",\
+ "0.079135, 0.190954, 0.392488, 0.950004, 2.441389",\
+ "0.097064, 0.203428, 0.393485, 0.950004, 2.441492");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.077369, 0.108778, 0.161412, 0.303838, 0.682490",\
+ "0.166731, 0.198172, 0.250911, 0.393234, 0.771808",\
+ "0.254923, 0.288717, 0.341672, 0.484162, 0.862849",\
+ "0.400634, 0.441041, 0.497234, 0.640906, 1.019844",\
+ "0.631133, 0.687293, 0.756057, 0.905549, 1.285508");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.038988, 0.090550, 0.180320, 0.429191, 1.090420",\
+ "0.039208, 0.090550, 0.180739, 0.429310, 1.090420",\
+ "0.045872, 0.092820, 0.180739, 0.429348, 1.091289",\
+ "0.060397, 0.104342, 0.185891, 0.429526, 1.092845",\
+ "0.088207, 0.140006, 0.210014, 0.433521, 1.093776");
+ }
+
+ } /* end of arc otm_obs_i[0]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "otp_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.122660, 0.189370, 0.305783, 0.622560, 1.472274",\
+ "0.209824, 0.276743, 0.394059, 0.710704, 1.559679",\
+ "0.301920, 0.369023, 0.486415, 0.804486, 1.652417",\
+ "0.455547, 0.524976, 0.642287, 0.962376, 1.809444",\
+ "0.699992, 0.780922, 0.900058, 1.218756, 2.067549");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067561, 0.184527, 0.382478, 0.936925, 2.417724",\
+ "0.067561, 0.184527, 0.382478, 0.936925, 2.418306",\
+ "0.068683, 0.184527, 0.382544, 0.936925, 2.418306",\
+ "0.075540, 0.185756, 0.383113, 0.940410, 2.418306",\
+ "0.094401, 0.199857, 0.384817, 0.940410, 2.426093");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.114764, 0.145947, 0.198571, 0.341053, 0.719705",\
+ "0.205629, 0.236785, 0.289401, 0.431904, 0.810542",\
+ "0.310076, 0.342571, 0.395201, 0.537686, 0.916183",\
+ "0.500896, 0.538360, 0.591093, 0.733386, 1.111456",\
+ "0.820213, 0.870292, 0.933027, 1.077593, 1.455130");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040532, 0.090273, 0.180246, 0.428609, 1.092443",\
+ "0.040870, 0.090273, 0.180281, 0.428609, 1.092443",\
+ "0.045400, 0.092351, 0.180508, 0.428609, 1.092443",\
+ "0.059558, 0.100025, 0.181106, 0.428872, 1.092443",\
+ "0.087354, 0.133744, 0.204884, 0.431205, 1.092443");
+ }
+
+ } /* end of arc otp_obs_i[0]_ast2padmux_o[0]_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "otp_obs_i[0]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.119334, 0.186028, 0.302368, 0.619155, 1.468929",\
+ "0.204833, 0.271716, 0.388876, 0.705544, 1.554647",\
+ "0.293319, 0.360401, 0.477846, 0.795625, 1.643707",\
+ "0.440314, 0.508488, 0.625608, 0.945855, 1.792734",\
+ "0.667813, 0.745674, 0.864272, 1.183300, 2.031636");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.067620, 0.183691, 0.382409, 0.935142, 2.413233",\
+ "0.068262, 0.183691, 0.382508, 0.936031, 2.413233",\
+ "0.073482, 0.184226, 0.382946, 0.939859, 2.413233",\
+ "0.089380, 0.196045, 0.384240, 0.939859, 2.423100");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.094521, 0.125776, 0.178422, 0.320849, 0.699535",\
+ "0.188239, 0.219444, 0.272075, 0.414540, 0.793202",\
+ "0.291550, 0.323577, 0.376197, 0.518700, 0.897237",\
+ "0.473699, 0.510899, 0.563627, 0.705929, 1.084022",\
+ "0.773733, 0.823401, 0.885774, 1.030256, 1.407808");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.039633, 0.090291, 0.180152, 0.428296, 1.092222",\
+ "0.040262, 0.090291, 0.180217, 0.428296, 1.092377",\
+ "0.044064, 0.091627, 0.180452, 0.428296, 1.092425",\
+ "0.058805, 0.099616, 0.181075, 0.428844, 1.092425",\
+ "0.086478, 0.132591, 0.204027, 0.431125, 1.092425");
+ }
+
+ } /* end of arc otp_obs_i[0]_ast2padmux_o[0]_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.593750, 380000.781250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.750000, 380000.937500",\
+ "380000.906250, 380000.906250, 380000.937500, 380001.000000, 380001.187500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497",\
+ "0.040752, 0.090609, 0.180697, 0.429275, 1.092497");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.843750, 380001.968750, 380002.281250, 380003.156250",\
+ "380001.875000, 380001.937500, 380002.062500, 380002.375000, 380003.250000",\
+ "380002.000000, 380002.062500, 380002.187500, 380002.500000, 380003.375000",\
+ "380002.187500, 380002.250000, 380002.375000, 380002.687500, 380003.562500",\
+ "380002.500000, 380002.562500, 380002.687500, 380003.000000, 380003.875000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537",\
+ "0.073650, 0.189304, 0.392450, 0.950561, 2.441537");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[0]_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380000.312500, 380000.312500, 380000.343750, 380000.406250, 380000.593750",\
+ "380000.406250, 380000.406250, 380000.437500, 380000.500000, 380000.687500",\
+ "380000.468750, 380000.468750, 380000.500000, 380000.562500, 380000.750000",\
+ "380000.625000, 380000.625000, 380000.656250, 380000.718750, 380000.906250",\
+ "380000.843750, 380000.843750, 380000.875000, 380000.937500, 380001.125000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967",\
+ "0.015905, 0.041179, 0.085652, 0.207740, 0.535967");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "380001.781250, 380001.812500, 380001.906250, 380002.187500, 380002.875000",\
+ "380001.875000, 380001.906250, 380002.000000, 380002.281250, 380002.968750",\
+ "380001.968750, 380002.000000, 380002.093750, 380002.375000, 380003.062500",\
+ "380002.156250, 380002.187500, 380002.281250, 380002.562500, 380003.250000",\
+ "380002.406250, 380002.437500, 380002.531250, 380002.812500, 380003.500000");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.001393, 0.003837, 0.010569, 0.028584");
+ values ( "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169",\
+ "0.055484, 0.149920, 0.315966, 0.772511, 1.992169");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2padmux_o[0]_inv_min*/
+
+} /* end of pin ast2padmux_o[0] */
+} /* end of bus ast2padmux_o */
+
+pin("ast2pad_t0_ao") {
+ direction : output ;
+ max_transition : 5.000000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.340000 ;
+ min_capacitance : 0.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2pad_t0_ao;
+} /* end of pin ast2pad_t0_ao */
+
+pin("ast2pad_t1_ao") {
+ direction : output ;
+ max_transition : 5.000000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 64.000000 ;
+ min_capacitance : 0.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : ast2pad_t1_ao;
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "380005.937500, 380010.968750, 380015.437500, 380024.343750, 380042.031250",\
+ "380006.031250, 380011.062500, 380015.531250, 380024.437500, 380042.125000",\
+ "380006.125000, 380011.156250, 380015.625000, 380024.531250, 380042.218750",\
+ "380006.187500, 380011.218750, 380015.687500, 380024.593750, 380042.281250",\
+ "380006.531250, 380011.562500, 380016.031250, 380024.937500, 380042.625000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2pad_t1_ao_redgf*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "3.958968, 8.968638, 13.431835, 22.333540, 40.062149",\
+ "4.046352, 9.056024, 13.519220, 22.420925, 40.149536",\
+ "4.127131, 9.136803, 13.599998, 22.501705, 40.230312",\
+ "4.184652, 9.194324, 13.657520, 22.559225, 40.287834",\
+ "4.486489, 9.496161, 13.959356, 22.861061, 40.589668");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_ast2pad_t1_ao_redgf_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : three_state_enable_fall ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "380005.843750, 380010.875000, 380015.343750, 380024.250000, 380041.937500",\
+ "380005.937500, 380010.968750, 380015.437500, 380024.343750, 380042.031250",\
+ "380006.062500, 380011.093750, 380015.562500, 380024.468750, 380042.156250",\
+ "380006.250000, 380011.281250, 380015.750000, 380024.656250, 380042.343750",\
+ "380006.562500, 380011.593750, 380016.062500, 380024.968750, 380042.656250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232",\
+ "0.131672, 1.724206, 3.350886, 6.646091, 13.236232");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2pad_t1_ao_enlf*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : three_state_enable_fall ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "380005.843750, 380010.875000, 380015.343750, 380024.250000, 380041.937500",\
+ "380005.937500, 380010.968750, 380015.437500, 380024.343750, 380042.031250",\
+ "380006.031250, 380011.062500, 380015.531250, 380024.437500, 380042.125000",\
+ "380006.218750, 380011.250000, 380015.718750, 380024.625000, 380042.312500",\
+ "380006.468750, 380011.500000, 380015.968750, 380024.875000, 380042.562500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 8.000000, 16.000000, 32.000000, 64.000000");
+ values ( "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000",\
+ "0.000000, 0.000000, 0.000000, 0.000000, 0.000000");
+ }
+
+ } /* end of arc padmux2ast_i[4]_ast2pad_t1_ao_enlf_min*/
+
+} /* end of pin ast2pad_t1_ao */
+bus ( ext_freq_is_96m_i ) {
+
+ bus_type : BUS4_type6 ;
+ direction : input ;
+
+pin("ext_freq_is_96m_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : ext_freq_is_96m_i[3];
+} /* end of pin ext_freq_is_96m_i[3] */
+
+pin("ext_freq_is_96m_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : ext_freq_is_96m_i[2];
+} /* end of pin ext_freq_is_96m_i[2] */
+
+pin("ext_freq_is_96m_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : ext_freq_is_96m_i[1];
+} /* end of pin ext_freq_is_96m_i[1] */
+
+pin("ext_freq_is_96m_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : ext_freq_is_96m_i[0];
+} /* end of pin ext_freq_is_96m_i[0] */
+} /* end of bus ext_freq_is_96m_i */
+bus ( all_clk_byp_req_i ) {
+
+ bus_type : BUS4_type6 ;
+ direction : input ;
+
+pin("all_clk_byp_req_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_req_i[3];
+} /* end of pin all_clk_byp_req_i[3] */
+
+pin("all_clk_byp_req_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_req_i[2];
+} /* end of pin all_clk_byp_req_i[2] */
+
+pin("all_clk_byp_req_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_req_i[1];
+} /* end of pin all_clk_byp_req_i[1] */
+
+pin("all_clk_byp_req_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_req_i[0];
+} /* end of pin all_clk_byp_req_i[0] */
+} /* end of bus all_clk_byp_req_i */
+bus ( all_clk_byp_ack_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("all_clk_byp_ack_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_ack_o[3];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[3]_redg_min*/
+
+} /* end of pin all_clk_byp_ack_o[3] */
+
+pin("all_clk_byp_ack_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_ack_o[2];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[2]_redg_min*/
+
+} /* end of pin all_clk_byp_ack_o[2] */
+
+pin("all_clk_byp_ack_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_ack_o[1];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[1]_redg_min*/
+
+} /* end of pin all_clk_byp_ack_o[1] */
+
+pin("all_clk_byp_ack_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : all_clk_byp_ack_o[0];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_all_clk_byp_ack_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_all_clk_byp_ack_o[0]_redg_min*/
+
+} /* end of pin all_clk_byp_ack_o[0] */
+} /* end of bus all_clk_byp_ack_o */
+bus ( io_clk_byp_req_i ) {
+
+ bus_type : BUS4_type6 ;
+ direction : input ;
+
+pin("io_clk_byp_req_i[3]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_req_i[3];
+} /* end of pin io_clk_byp_req_i[3] */
+
+pin("io_clk_byp_req_i[2]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_req_i[2];
+} /* end of pin io_clk_byp_req_i[2] */
+
+pin("io_clk_byp_req_i[1]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.001189 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_req_i[1];
+} /* end of pin io_clk_byp_req_i[1] */
+
+pin("io_clk_byp_req_i[0]") {
+ direction : input ;
+ max_transition : 2.480000 ;
+ capacitance : 0.000648 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_req_i[0];
+} /* end of pin io_clk_byp_req_i[0] */
+} /* end of bus io_clk_byp_req_i */
+bus ( io_clk_byp_ack_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("io_clk_byp_ack_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_ack_o[3];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[3]_redg_min*/
+
+} /* end of pin io_clk_byp_ack_o[3] */
+
+pin("io_clk_byp_ack_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_ack_o[2];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[2]_redg_min*/
+
+} /* end of pin io_clk_byp_ack_o[2] */
+
+pin("io_clk_byp_ack_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_ack_o[1];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055481, 0.185725, 0.392886, 0.714270, 1.356390",\
+ "0.142013, 0.273097, 0.480288, 0.802449, 1.446276",\
+ "0.227644, 0.367997, 0.574907, 0.896875, 1.540369",\
+ "0.372058, 0.538899, 0.745297, 1.066605, 1.708810",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021797, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.025516, 0.238359, 0.631876, 1.247087, 2.477274",\
+ "0.039138, 0.240277, 0.631876, 1.247087, 2.477473",\
+ "0.067159, 0.248694, 0.631876, 1.247087, 2.479640",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522191, 0.932963",\
+ "0.170164, 0.270956, 0.404436, 0.610175, 1.020954",\
+ "0.251445, 0.351944, 0.485256, 0.690977, 1.101771",\
+ "0.388999, 0.491163, 0.624361, 0.829801, 1.240010",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025565, 0.151628, 0.387851, 0.763293, 1.515348",\
+ "0.025565, 0.151804, 0.389259, 0.763293, 1.515348",\
+ "0.025976, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.029120, 0.151804, 0.389479, 0.764390, 1.515348",\
+ "0.041734, 0.154598, 0.389479, 0.764390, 1.515348");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.055478, 0.185724, 0.392885, 0.714263, 1.356368",\
+ "0.141644, 0.273073, 0.480017, 0.801359, 1.443459",\
+ "0.227644, 0.367995, 0.574890, 0.896861, 1.540369",\
+ "0.372055, 0.538895, 0.745296, 1.066605, 1.708810",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021795, 0.238265, 0.630524, 1.245754, 2.477107",\
+ "0.025501, 0.238265, 0.630524, 1.245754, 2.477170",\
+ "0.039138, 0.240263, 0.630524, 1.245754, 2.477473",\
+ "0.067158, 0.248694, 0.630752, 1.245754, 2.478674",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.082179, 0.183018, 0.316461, 0.522190, 0.932959",\
+ "0.170151, 0.270913, 0.404355, 0.610080, 1.020840",\
+ "0.251186, 0.351686, 0.484981, 0.690703, 1.101507",\
+ "0.388979, 0.491150, 0.624343, 0.829707, 1.239752",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025557, 0.151128, 0.387354, 0.761934, 1.510661",\
+ "0.025965, 0.151128, 0.387354, 0.761934, 1.511090",\
+ "0.029101, 0.151585, 0.387354, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058414, 0.188667, 0.395813, 0.717110, 1.359045",\
+ "0.112550, 0.243041, 0.450135, 0.772138, 1.415649",\
+ "0.253196, 0.398235, 0.605055, 0.926906, 1.570171",\
+ "0.312752, 0.468715, 0.675324, 0.996903, 1.639637",\
+ "0.601931, 0.834236, 1.042645, 1.363437, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021790, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.023317, 0.238360, 0.631894, 1.247121, 2.477336",\
+ "0.044096, 0.241766, 0.631894, 1.247121, 2.477920",\
+ "0.055652, 0.245238, 0.631894, 1.247121, 2.478962",\
+ "0.123088, 0.289704, 0.642858, 1.251241, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141978, 0.242754, 0.376239, 0.581985, 0.992777",\
+ "0.275783, 0.376576, 0.509868, 0.715539, 1.126231",\
+ "0.332511, 0.433991, 0.567236, 0.772791, 1.183241",\
+ "0.607343, 0.718683, 0.852150, 1.057410, 1.467133");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151693, 0.388430, 0.763132, 1.513362",\
+ "0.025646, 0.151849, 0.389568, 0.763815, 1.513362",\
+ "0.026529, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.027825, 0.151849, 0.389568, 0.764056, 1.513362",\
+ "0.041734, 0.154598, 0.389568, 0.764056, 1.513362");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.058410, 0.188665, 0.395812, 0.717100, 1.359014",\
+ "0.112399, 0.243028, 0.450025, 0.771635, 1.414310",\
+ "0.253195, 0.398233, 0.605040, 0.926895, 1.570171",\
+ "0.311693, 0.467461, 0.674069, 0.995655, 1.638404",\
+ "0.601899, 0.834203, 1.042596, 1.363402, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.021782, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.023311, 0.238225, 0.630549, 1.245808, 2.476689",\
+ "0.044096, 0.241755, 0.630564, 1.245808, 2.477789",\
+ "0.055446, 0.245170, 0.630656, 1.245808, 2.478512",\
+ "0.122913, 0.289395, 0.639350, 1.248196, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.085404, 0.186224, 0.319679, 0.525413, 0.936188",\
+ "0.141970, 0.242733, 0.376196, 0.581868, 0.992503",\
+ "0.275567, 0.376362, 0.509639, 0.715298, 1.125968",\
+ "0.331384, 0.432856, 0.566092, 0.771606, 1.181968",\
+ "0.607308, 0.718634, 0.852099, 1.057372, 1.467127");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.014296, 0.039544, 0.079088, 0.158177");
+ values ( "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.025646, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.026523, 0.151208, 0.387784, 0.761934, 1.511090",\
+ "0.027795, 0.151394, 0.387784, 0.761934, 1.511090",\
+ "0.041668, 0.154530, 0.388178, 0.761934, 1.511090");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[1]_redg_min*/
+
+} /* end of pin io_clk_byp_ack_o[1] */
+
+pin("io_clk_byp_ack_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000000 ;
+
+ /* Other user defined attributes. */
+ original_pin : io_clk_byp_ack_o[0];
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100843, 0.266735, 0.427088, 0.747616, 1.388635",\
+ "0.184687, 0.350464, 0.510809, 0.831717, 1.473578",\
+ "0.260267, 0.426010, 0.586434, 0.907636, 1.550114",\
+ "0.386507, 0.552662, 0.713534, 1.034573, 1.676504",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015579, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.316961, 0.624670, 1.238691, 2.466601",\
+ "0.015665, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.015838, 0.317088, 0.625771, 1.239746, 2.466601",\
+ "0.016716, 0.317340, 0.625771, 1.239746, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.088041, 0.202376, 0.303813, 0.506089, 0.910516",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664815, 1.067688",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015700, 0.193950, 0.379890, 0.747742, 1.482887",\
+ "0.016044, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.017520, 0.193950, 0.379890, 0.747742, 1.485202",\
+ "0.022344, 0.194037, 0.379890, 0.747742, 1.485202",\
+ "0.034639, 0.196727, 0.379890, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.100718, 0.266618, 0.426903, 0.747412, 1.388420",\
+ "0.184686, 0.350463, 0.510806, 0.831715, 1.473578",\
+ "0.260208, 0.425985, 0.586426, 0.907607, 1.550030",\
+ "0.386259, 0.552119, 0.712336, 1.032993, 1.674352",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316821, 0.622606, 1.236473, 2.462725",\
+ "0.015496, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.015814, 0.316929, 0.622606, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.087868, 0.202376, 0.303809, 0.506029, 0.910334",\
+ "0.168483, 0.282824, 0.383745, 0.585711, 0.989669",\
+ "0.247358, 0.362640, 0.463376, 0.664779, 1.067573",\
+ "0.380658, 0.500049, 0.601022, 0.802517, 1.205414",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015619, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.016032, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.017339, 0.192979, 0.376641, 0.744531, 1.480142",\
+ "0.022190, 0.193551, 0.376842, 0.744531, 1.480142",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_ast_ext_i_io_clk_byp_ack_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103995, 0.269872, 0.430200, 0.750758, 1.391853",\
+ "0.158337, 0.324154, 0.484388, 0.804979, 1.446186",\
+ "0.282603, 0.448419, 0.608923, 0.930096, 1.572477",\
+ "0.334665, 0.500651, 0.661339, 0.982445, 1.624600",\
+ "0.580400, 0.747044, 0.907773, 1.228098, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015542, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317035, 0.624600, 1.238588, 2.466325",\
+ "0.015645, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.015655, 0.317066, 0.625211, 1.239292, 2.466325",\
+ "0.016716, 0.317340, 0.625211, 1.239292, 2.466325");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090477, 0.204718, 0.305888, 0.507773, 0.911447",\
+ "0.141442, 0.255688, 0.356617, 0.558511, 0.962305",\
+ "0.270943, 0.386953, 0.487730, 0.689180, 1.092056",\
+ "0.325917, 0.443620, 0.544496, 0.745968, 1.148855",\
+ "0.586485, 0.719001, 0.819955, 1.021830, 1.425575");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.813271, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015734, 0.193610, 0.378735, 0.747021, 1.483183",\
+ "0.015916, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.018374, 0.193610, 0.378735, 0.747293, 1.484513",\
+ "0.020363, 0.193614, 0.378735, 0.747293, 1.484513",\
+ "0.034639, 0.196727, 0.378735, 0.748439, 1.491839");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_src_io_o" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.103875, 0.269735, 0.430056, 0.750620, 1.391729",\
+ "0.158336, 0.324133, 0.484382, 0.804893, 1.445917",\
+ "0.282510, 0.448302, 0.608704, 0.929792, 1.572026",\
+ "0.333572, 0.499397, 0.659708, 0.980584, 1.622387",\
+ "0.580173, 0.746795, 0.907585, 1.227594, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316838, 0.623370, 1.236473, 2.462725",\
+ "0.015480, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.015652, 0.316929, 0.623370, 1.236473, 2.462725",\
+ "0.016700, 0.316929, 0.623370, 1.236473, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.090378, 0.204717, 0.305882, 0.507735, 0.911343",\
+ "0.141442, 0.255688, 0.356617, 0.558510, 0.962304",\
+ "0.270943, 0.386953, 0.487730, 0.689150, 1.091961",\
+ "0.324941, 0.442615, 0.543488, 0.744945, 1.147798",\
+ "0.586485, 0.718955, 0.819794, 1.021516, 1.424967");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.006578, 0.127724, 0.562810, 0.808825, 2.480000");
+ index_2 ( "0.000000, 0.020214, 0.040428, 0.080856, 0.161713");
+ values ( "0.015687, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.015912, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.018197, 0.193080, 0.376676, 0.744928, 1.481536",\
+ "0.020162, 0.193312, 0.376758, 0.744928, 1.481536",\
+ "0.033893, 0.196557, 0.377640, 0.746288, 1.484937");
+ }
+
+ } /* end of arc clk_src_io_o_io_clk_byp_ack_o[0]_redg_min*/
+
+} /* end of pin io_clk_byp_ack_o[0] */
+} /* end of bus io_clk_byp_ack_o */
+bus ( flash_bist_en_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("flash_bist_en_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000495 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_bist_en_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.106472, 0.270169, 0.430032, 0.749578, 1.388635",\
+ "0.190222, 0.353899, 0.513753, 0.833681, 1.473578",\
+ "0.265754, 0.429446, 0.589380, 0.909602, 1.550114",\
+ "0.318401, 0.482257, 0.642376, 0.962527, 1.602811",\
+ "0.586143, 0.750487, 0.910724, 1.230057, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.022534, 0.323552, 0.630320, 1.242449, 2.466601",\
+ "0.022534, 0.323552, 0.630320, 1.242449, 2.466601",\
+ "0.022534, 0.323700, 0.631438, 1.243501, 2.466601",\
+ "0.022534, 0.323700, 0.631438, 1.243501, 2.466601",\
+ "0.023510, 0.323927, 0.631438, 1.243501, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.093077, 0.204486, 0.305612, 0.507263, 0.910452",\
+ "0.173702, 0.284922, 0.385535, 0.586884, 0.989605",\
+ "0.252842, 0.364735, 0.465162, 0.665985, 1.067625",\
+ "0.308854, 0.422028, 0.522554, 0.723398, 1.125048",\
+ "0.595772, 0.721100, 0.821745, 1.023002, 1.425511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.020965, 0.197814, 0.383189, 0.749876, 1.482771",\
+ "0.021088, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.022399, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.024352, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.039819, 0.200489, 0.383189, 0.750597, 1.491722");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.106274, 0.270052, 0.429845, 0.749374, 1.388420",\
+ "0.190221, 0.353898, 0.513750, 0.833679, 1.473578",\
+ "0.265727, 0.429421, 0.589372, 0.909573, 1.550030",\
+ "0.318289, 0.482010, 0.641868, 0.961850, 1.601865",\
+ "0.585943, 0.750239, 0.910537, 1.229551, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.022505, 0.323384, 0.628823, 1.240225, 2.462725",\
+ "0.022505, 0.323384, 0.628823, 1.240225, 2.462725",\
+ "0.022505, 0.323493, 0.628996, 1.240225, 2.462725",\
+ "0.022505, 0.323493, 0.628996, 1.240225, 2.462725",\
+ "0.023422, 0.323493, 0.628996, 1.240225, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.093062, 0.204485, 0.305607, 0.507203, 0.910270",\
+ "0.173702, 0.284922, 0.385535, 0.586884, 0.989605",\
+ "0.252842, 0.364735, 0.465162, 0.665949, 1.067509",\
+ "0.308854, 0.422028, 0.522554, 0.723377, 1.124981",\
+ "0.595772, 0.721051, 0.821582, 1.022687, 1.424903");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.020958, 0.196798, 0.379897, 0.747224, 1.481125",\
+ "0.021082, 0.196798, 0.379897, 0.747224, 1.481487",\
+ "0.022349, 0.196798, 0.379897, 0.747224, 1.481970",\
+ "0.024295, 0.197033, 0.379979, 0.747224, 1.481970",\
+ "0.039434, 0.200322, 0.380851, 0.748432, 1.484821");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[3]_redg_min*/
+
+} /* end of pin flash_bist_en_o[3] */
+
+pin("flash_bist_en_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000933 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_bist_en_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.068360, 0.193376, 0.398624, 0.718055, 1.356390",\
+ "0.155472, 0.280749, 0.486028, 0.806244, 1.446276",\
+ "0.245378, 0.375639, 0.580639, 0.900669, 1.540369",\
+ "0.309418, 0.446887, 0.651675, 0.971433, 1.610599",\
+ "0.645820, 0.841934, 1.048418, 1.367213, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.036908, 0.252893, 0.642777, 1.254340, 2.477274",\
+ "0.039249, 0.252893, 0.642777, 1.254340, 2.477274",\
+ "0.052853, 0.254696, 0.642777, 1.254340, 2.477473",\
+ "0.066089, 0.258077, 0.642777, 1.254340, 2.478527",\
+ "0.148778, 0.302748, 0.652641, 1.258483, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.095441, 0.187812, 0.320023, 0.524480, 0.932830",\
+ "0.183363, 0.275751, 0.407999, 0.612464, 1.020822",\
+ "0.264739, 0.356733, 0.488814, 0.693266, 1.101639",\
+ "0.322419, 0.414777, 0.546811, 0.751146, 1.159276",\
+ "0.625473, 0.723477, 0.855712, 1.059693, 1.467001");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.038391, 0.160114, 0.394156, 0.767483, 1.515105",\
+ "0.038391, 0.160334, 0.395597, 0.767483, 1.515105",\
+ "0.038391, 0.160334, 0.395837, 0.768571, 1.515105",\
+ "0.039404, 0.160334, 0.395837, 0.768571, 1.515105",\
+ "0.052962, 0.163010, 0.395837, 0.768571, 1.515105");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.068360, 0.193375, 0.398624, 0.718048, 1.356368",\
+ "0.155472, 0.280716, 0.485750, 0.805145, 1.443459",\
+ "0.245377, 0.375636, 0.580621, 0.900655, 1.540369",\
+ "0.309416, 0.446884, 0.651665, 0.971425, 1.610599",\
+ "0.645736, 0.841900, 1.048369, 1.367178, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.036903, 0.252768, 0.641334, 1.253096, 2.477107",\
+ "0.039197, 0.252768, 0.641334, 1.253096, 2.477170",\
+ "0.052850, 0.254678, 0.641334, 1.253096, 2.477473",\
+ "0.066086, 0.258066, 0.641335, 1.253096, 2.478218",\
+ "0.148778, 0.302321, 0.649044, 1.255451, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.095441, 0.187812, 0.320023, 0.524479, 0.932827",\
+ "0.183333, 0.275707, 0.407917, 0.612369, 1.020708",\
+ "0.264498, 0.356474, 0.488538, 0.692993, 1.101375",\
+ "0.322270, 0.414621, 0.546643, 0.750947, 1.159015",\
+ "0.625416, 0.723429, 0.855662, 1.059656, 1.466994");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000933, 0.015228, 0.040244, 0.079555, 0.158177");
+ values ( "0.038382, 0.159650, 0.394147, 0.766109, 1.510420",\
+ "0.038382, 0.159650, 0.394269, 0.766109, 1.510420",\
+ "0.038382, 0.159650, 0.394269, 0.766109, 1.510848",\
+ "0.039368, 0.159819, 0.394269, 0.766109, 1.510848",\
+ "0.052940, 0.162923, 0.394414, 0.766109, 1.510848");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.036908, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.389662, 0.307033, 0.231889, 0.198170, 0.165471",\
+ "0.404008, 0.321379, 0.246234, 0.212515, 0.179817",\
+ "0.484046, 0.401418, 0.326273, 0.292554, 0.259856",\
+ "0.581919, 0.499290, 0.424146, 0.390427, 0.357729",\
+ "1.023710, 0.941089, 0.865969, 0.832267, 0.799656");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.038391, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.456800, 0.480507, 0.558316, 0.625895, 1.056719",\
+ "0.470804, 0.494511, 0.572320, 0.639899, 1.070723",\
+ "0.534795, 0.558499, 0.636308, 0.703887, 1.134711",\
+ "0.638862, 0.662815, 0.740625, 0.808204, 1.239027",\
+ "1.201475, 1.225922, 1.303731, 1.371310, 1.802133");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.036903, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.194420, -0.153007, -0.120290, -0.084607, 0.143547",\
+ "-0.208763, -0.167350, -0.134633, -0.098950, 0.129204",\
+ "-0.288800, -0.247387, -0.214670, -0.178991, 0.049163",\
+ "-0.387771, -0.346358, -0.313641, -0.276864, -0.048710",\
+ "-0.830571, -0.789157, -0.756441, -0.718639, -0.490440");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.038382, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.332777, -0.310549, -0.274864, -0.249589, -0.121504",\
+ "-0.346777, -0.324549, -0.288864, -0.263590, -0.135504",\
+ "-0.410769, -0.388544, -0.352859, -0.327585, -0.199499",\
+ "-0.515085, -0.492611, -0.456925, -0.431651, -0.303566",\
+ "-1.078191, -1.055218, -1.019535, -0.994261, -0.866175");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[2]_hldr*/
+
+} /* end of pin flash_bist_en_o[2] */
+
+pin("flash_bist_en_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000982 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_bist_en_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.068874, 0.193784, 0.398930, 0.718257, 1.356391",\
+ "0.155991, 0.281157, 0.486334, 0.806447, 1.446276",\
+ "0.245977, 0.376046, 0.580944, 0.900871, 1.540369",\
+ "0.310114, 0.447294, 0.651980, 0.971635, 1.610599",\
+ "0.647142, 0.842344, 1.048726, 1.367414, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.037694, 0.253668, 0.643358, 1.254727, 2.477274",\
+ "0.040003, 0.253668, 0.643358, 1.254727, 2.477274",\
+ "0.053519, 0.255465, 0.643358, 1.254727, 2.477474",\
+ "0.066746, 0.258839, 0.643358, 1.254727, 2.478527",\
+ "0.149647, 0.303443, 0.653162, 1.258869, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.095870, 0.188047, 0.320193, 0.524583, 0.932804",\
+ "0.183791, 0.275986, 0.408168, 0.612567, 1.020795",\
+ "0.265166, 0.356968, 0.488983, 0.693368, 1.101612",\
+ "0.322850, 0.415012, 0.546981, 0.751248, 1.159250",\
+ "0.625969, 0.723713, 0.855882, 1.059795, 1.466974");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.038860, 0.160530, 0.394456, 0.767671, 1.515056",\
+ "0.038860, 0.160753, 0.395899, 0.767671, 1.515056",\
+ "0.038860, 0.160753, 0.396141, 0.768758, 1.515056",\
+ "0.039865, 0.160753, 0.396141, 0.768758, 1.515056",\
+ "0.053336, 0.163423, 0.396141, 0.768758, 1.515056");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.068873, 0.193783, 0.398930, 0.718250, 1.356368",\
+ "0.155991, 0.281124, 0.486056, 0.805347, 1.443459",\
+ "0.245976, 0.376044, 0.580926, 0.900857, 1.540369",\
+ "0.310112, 0.447291, 0.651970, 0.971627, 1.610599",\
+ "0.647058, 0.842310, 1.048677, 1.367379, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.037688, 0.253541, 0.641906, 1.253483, 2.477107",\
+ "0.039952, 0.253541, 0.641906, 1.253483, 2.477170",\
+ "0.053515, 0.255446, 0.641906, 1.253483, 2.477474",\
+ "0.066744, 0.258828, 0.641906, 1.253483, 2.478218",\
+ "0.149647, 0.303009, 0.649561, 1.255837, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.095870, 0.188047, 0.320193, 0.524582, 0.932800",\
+ "0.183761, 0.275942, 0.408087, 0.612471, 1.020681",\
+ "0.264924, 0.356709, 0.488708, 0.693095, 1.101348",\
+ "0.322701, 0.414856, 0.546813, 0.751050, 1.158988",\
+ "0.625912, 0.723664, 0.855831, 1.059758, 1.466968");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000982, 0.015278, 0.040281, 0.079579, 0.158177");
+ values ( "0.038851, 0.160069, 0.394447, 0.766295, 1.510371",\
+ "0.038851, 0.160069, 0.394570, 0.766295, 1.510371",\
+ "0.038851, 0.160069, 0.394570, 0.766295, 1.510800",\
+ "0.039829, 0.160236, 0.394570, 0.766295, 1.510800",\
+ "0.053313, 0.163335, 0.394711, 0.766295, 1.510800");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.037694, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.387207, 0.304578, 0.229434, 0.195714, 0.163016",\
+ "0.401633, 0.319004, 0.243859, 0.210140, 0.177442",\
+ "0.477915, 0.395287, 0.320142, 0.286423, 0.253725",\
+ "0.569150, 0.486521, 0.411377, 0.377658, 0.344959",\
+ "0.968197, 0.885576, 0.810456, 0.776755, 0.744146");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.038860, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.458514, 0.482233, 0.560042, 0.627621, 1.058444",\
+ "0.470955, 0.494673, 0.572482, 0.640062, 1.070885",\
+ "0.535510, 0.559226, 0.637035, 0.704614, 1.135437",\
+ "0.647291, 0.671342, 0.749152, 0.816731, 1.247554",\
+ "1.199795, 1.224990, 1.302845, 1.370443, 1.801277");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.037688, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.191963, -0.150550, -0.117833, -0.082151, 0.146002",\
+ "-0.206387, -0.164973, -0.132257, -0.096575, 0.131579",\
+ "-0.282671, -0.241257, -0.208540, -0.172860, 0.055294",\
+ "-0.374978, -0.333564, -0.300848, -0.264095, -0.035941",\
+ "-0.775028, -0.733615, -0.700898, -0.663125, -0.434925");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.038851, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.334502, -0.312263, -0.276578, -0.251304, -0.123218",\
+ "-0.346939, -0.324701, -0.289015, -0.263741, -0.135656",\
+ "-0.411495, -0.389259, -0.353574, -0.328299, -0.200214",\
+ "-0.523612, -0.501040, -0.465355, -0.440080, -0.311995",\
+ "-1.077244, -1.053536, -1.017853, -0.992580, -0.864493");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[1]_hldr*/
+
+} /* end of pin flash_bist_en_o[1] */
+
+pin("flash_bist_en_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.000495 ;
+
+ /* Other user defined attributes. */
+ original_pin : flash_bist_en_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.106472, 0.270169, 0.430032, 0.749578, 1.388635",\
+ "0.190222, 0.353899, 0.513753, 0.833681, 1.473578",\
+ "0.265754, 0.429446, 0.589380, 0.909602, 1.550114",\
+ "0.318401, 0.482257, 0.642376, 0.962527, 1.602811",\
+ "0.586143, 0.750487, 0.910724, 1.230057, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.022534, 0.323552, 0.630320, 1.242449, 2.466601",\
+ "0.022534, 0.323552, 0.630320, 1.242449, 2.466601",\
+ "0.022534, 0.323700, 0.631438, 1.243501, 2.466601",\
+ "0.022534, 0.323700, 0.631438, 1.243501, 2.466601",\
+ "0.023510, 0.323927, 0.631438, 1.243501, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.093077, 0.204486, 0.305612, 0.507263, 0.910452",\
+ "0.173702, 0.284922, 0.385535, 0.586884, 0.989605",\
+ "0.252842, 0.364735, 0.465162, 0.665985, 1.067625",\
+ "0.308854, 0.422028, 0.522554, 0.723398, 1.125048",\
+ "0.595772, 0.721100, 0.821745, 1.023002, 1.425511");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.020965, 0.197814, 0.383189, 0.749876, 1.482771",\
+ "0.021088, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.022399, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.024352, 0.197814, 0.383189, 0.749876, 1.485086",\
+ "0.039819, 0.200489, 0.383189, 0.750597, 1.491722");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.106274, 0.270052, 0.429845, 0.749374, 1.388420",\
+ "0.190221, 0.353898, 0.513750, 0.833679, 1.473578",\
+ "0.265727, 0.429421, 0.589372, 0.909573, 1.550030",\
+ "0.318289, 0.482010, 0.641868, 0.961850, 1.601865",\
+ "0.585943, 0.750239, 0.910537, 1.229551, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.022505, 0.323384, 0.628823, 1.240225, 2.462725",\
+ "0.022505, 0.323384, 0.628823, 1.240225, 2.462725",\
+ "0.022505, 0.323493, 0.628996, 1.240225, 2.462725",\
+ "0.022505, 0.323493, 0.628996, 1.240225, 2.462725",\
+ "0.023422, 0.323493, 0.628996, 1.240225, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.093062, 0.204485, 0.305607, 0.507203, 0.910270",\
+ "0.173702, 0.284922, 0.385535, 0.586884, 0.989605",\
+ "0.252842, 0.364735, 0.465162, 0.665949, 1.067509",\
+ "0.308854, 0.422028, 0.522554, 0.723377, 1.124981",\
+ "0.595772, 0.721051, 0.821582, 1.022687, 1.424903");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.000495, 0.020647, 0.040799, 0.081104, 0.161713");
+ values ( "0.020958, 0.196798, 0.379897, 0.747224, 1.481125",\
+ "0.021082, 0.196798, 0.379897, 0.747224, 1.481487",\
+ "0.022349, 0.196798, 0.379897, 0.747224, 1.481970",\
+ "0.024295, 0.197033, 0.379979, 0.747224, 1.481970",\
+ "0.039434, 0.200322, 0.380851, 0.748432, 1.484821");
+ }
+
+ } /* end of arc clk_ast_tlul_i_flash_bist_en_o[0]_redg_min*/
+
+} /* end of pin flash_bist_en_o[0] */
+} /* end of bus flash_bist_en_o */
+bus ( dpram_rmf_o ) {
+
+ bus_type : BUS10_type8 ;
+ direction : output ;
+
+pin("dpram_rmf_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002475 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.250443, 2.482564",\
+ "0.030125, 0.302556, 0.636324, 1.250443, 2.482564",\
+ "0.042888, 0.304795, 0.636360, 1.250443, 2.482564",\
+ "0.054816, 0.308050, 0.636463, 1.250443, 2.482564",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.188435, 0.388543, 0.760465, 1.504307",\
+ "0.025687, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.026721, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.028743, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.047139, 0.192514, 0.389046, 0.760465, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.249210, 2.473548",\
+ "0.030125, 0.302556, 0.636324, 1.249210, 2.473548",\
+ "0.042888, 0.304795, 0.636360, 1.249285, 2.473548",\
+ "0.054816, 0.308050, 0.636463, 1.250030, 2.473548",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.026721, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.028743, 0.188240, 0.387493, 0.759136, 1.502422",\
+ "0.047139, 0.192514, 0.387566, 0.759907, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[9]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216765, 0.170836, 0.140637, 0.129293, 0.142978",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251111, 0.175790, 0.107631, 0.084664, 0.147578",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148693, -0.106276, -0.071789, -0.032365, 0.273682",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164267, -0.098352, -0.040693, 0.001268, 0.221876",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[9]_hldr*/
+
+} /* end of pin dpram_rmf_o[9] */
+
+pin("dpram_rmf_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002026 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.249579, 2.482563",\
+ "0.028666, 0.300830, 0.635034, 1.249579, 2.482563",\
+ "0.041608, 0.303085, 0.635070, 1.249579, 2.482563",\
+ "0.053514, 0.306363, 0.635172, 1.249579, 2.482563",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.187440, 0.387796, 0.759979, 1.504343",\
+ "0.024592, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.025674, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.027742, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.046348, 0.191554, 0.388300, 0.759979, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.248350, 2.473548",\
+ "0.028666, 0.300830, 0.635034, 1.248350, 2.473548",\
+ "0.041608, 0.303085, 0.635070, 1.248425, 2.473548",\
+ "0.053514, 0.306363, 0.635172, 1.249169, 2.473548",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.025674, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.027742, 0.187251, 0.386746, 0.758650, 1.502457",\
+ "0.046348, 0.191554, 0.386818, 0.759420, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[8]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216011, 0.170082, 0.139882, 0.128539, 0.142224",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250613, 0.175291, 0.107132, 0.084165, 0.147079",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147938, -0.105521, -0.071034, -0.031611, 0.274436",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163769, -0.097854, -0.040195, 0.001766, 0.222374",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[8]_hldr*/
+
+} /* end of pin dpram_rmf_o[8] */
+
+pin("dpram_rmf_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002475 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.250443, 2.482564",\
+ "0.030125, 0.302556, 0.636324, 1.250443, 2.482564",\
+ "0.042888, 0.304795, 0.636360, 1.250443, 2.482564",\
+ "0.054816, 0.308050, 0.636463, 1.250443, 2.482564",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.188435, 0.388543, 0.760465, 1.504307",\
+ "0.025687, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.026721, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.028743, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.047139, 0.192514, 0.389046, 0.760465, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.249210, 2.473548",\
+ "0.030125, 0.302556, 0.636324, 1.249210, 2.473548",\
+ "0.042888, 0.304795, 0.636360, 1.249285, 2.473548",\
+ "0.054816, 0.308050, 0.636463, 1.250030, 2.473548",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.026721, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.028743, 0.188240, 0.387493, 0.759136, 1.502422",\
+ "0.047139, 0.192514, 0.387566, 0.759907, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[7]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216765, 0.170836, 0.140637, 0.129293, 0.142978",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251111, 0.175790, 0.107631, 0.084664, 0.147578",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148693, -0.106276, -0.071789, -0.032365, 0.273682",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164267, -0.098352, -0.040693, 0.001268, 0.221876",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[7]_hldr*/
+
+} /* end of pin dpram_rmf_o[7] */
+
+pin("dpram_rmf_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002493 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.049484, 0.202188, 0.377310, 0.699821, 1.344843",\
+ "0.135872, 0.289362, 0.464414, 0.786535, 1.430777",\
+ "0.219397, 0.377489, 0.552369, 0.874157, 1.517732",\
+ "0.277634, 0.441882, 0.616484, 0.938070, 1.581241",\
+ "0.579590, 0.791757, 0.966864, 1.286808, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.025847, 0.301627, 0.634436, 1.250478, 2.482563",\
+ "0.030184, 0.302625, 0.636376, 1.250478, 2.482563",\
+ "0.042939, 0.304864, 0.636412, 1.250478, 2.482563",\
+ "0.054868, 0.308118, 0.636515, 1.250478, 2.482563",\
+ "0.130853, 0.346231, 0.642764, 1.253025, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.068955, 0.173526, 0.284810, 0.488770, 0.896690",\
+ "0.156363, 0.260844, 0.372091, 0.576075, 0.984043",\
+ "0.236740, 0.341176, 0.452118, 0.656103, 1.064075",\
+ "0.293480, 0.398725, 0.509660, 0.713348, 1.120723",\
+ "0.587780, 0.702066, 0.813291, 1.016361, 1.422500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.025734, 0.188477, 0.388576, 0.760487, 1.504309",\
+ "0.025734, 0.188626, 0.389079, 0.760487, 1.504309",\
+ "0.026766, 0.188626, 0.389079, 0.760487, 1.504309",\
+ "0.028786, 0.188626, 0.389079, 0.760487, 1.504309",\
+ "0.047173, 0.192555, 0.389079, 0.760487, 1.504589");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.049484, 0.202188, 0.377310, 0.699821, 1.344843",\
+ "0.135872, 0.289362, 0.464414, 0.786535, 1.430777",\
+ "0.219397, 0.377489, 0.552369, 0.874157, 1.517732",\
+ "0.277634, 0.441882, 0.616484, 0.938070, 1.581241",\
+ "0.579590, 0.791757, 0.966864, 1.286808, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.025847, 0.301627, 0.634436, 1.249244, 2.473548",\
+ "0.030184, 0.302625, 0.636376, 1.249244, 2.473548",\
+ "0.042939, 0.304864, 0.636412, 1.249320, 2.473548",\
+ "0.054868, 0.308118, 0.636515, 1.250065, 2.473548",\
+ "0.130853, 0.346231, 0.642764, 1.253025, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.068955, 0.173526, 0.284810, 0.488770, 0.896690",\
+ "0.156363, 0.260844, 0.372091, 0.576075, 0.984043",\
+ "0.236740, 0.341176, 0.452118, 0.656103, 1.064075",\
+ "0.293480, 0.398725, 0.509660, 0.713348, 1.120723",\
+ "0.587780, 0.702066, 0.813291, 1.016361, 1.422500");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002493, 0.075491, 0.162372, 0.322252, 0.642011");
+ values ( "0.025734, 0.187674, 0.387068, 0.758256, 1.500632",\
+ "0.025734, 0.187674, 0.387068, 0.758256, 1.500632",\
+ "0.026766, 0.187674, 0.387068, 0.758256, 1.500632",\
+ "0.028786, 0.188283, 0.387526, 0.759158, 1.502423",\
+ "0.047173, 0.192555, 0.387599, 0.759929, 1.504589");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[6]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025847, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216796, 0.170867, 0.140667, 0.129323, 0.143008",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025734, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251133, 0.175811, 0.107652, 0.084685, 0.147599",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025847, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148723, -0.106306, -0.071819, -0.032395, 0.273652",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025734, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164288, -0.098373, -0.040714, 0.001247, 0.221854",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[6]_hldr*/
+
+} /* end of pin dpram_rmf_o[6] */
+
+pin("dpram_rmf_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002464 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.049406, 0.202130, 0.377266, 0.699792, 1.344843",\
+ "0.135790, 0.289304, 0.464371, 0.786506, 1.430777",\
+ "0.219296, 0.377431, 0.552325, 0.874128, 1.517732",\
+ "0.277514, 0.441824, 0.616441, 0.938041, 1.581241",\
+ "0.579353, 0.791699, 0.966821, 1.286780, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.025743, 0.301517, 0.634353, 1.250423, 2.482564",\
+ "0.030090, 0.302515, 0.636293, 1.250423, 2.482564",\
+ "0.042857, 0.304754, 0.636329, 1.250423, 2.482564",\
+ "0.054785, 0.308010, 0.636433, 1.250423, 2.482564",\
+ "0.130748, 0.346137, 0.642682, 1.252970, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.068893, 0.173494, 0.284787, 0.488756, 0.896694",\
+ "0.156301, 0.260812, 0.372068, 0.576061, 0.984048",\
+ "0.236678, 0.341144, 0.452094, 0.656090, 1.064079",\
+ "0.293415, 0.398693, 0.509637, 0.713334, 1.120727",\
+ "0.587689, 0.702034, 0.813268, 1.016347, 1.422504");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.025670, 0.188420, 0.388534, 0.760462, 1.504317",\
+ "0.025670, 0.188568, 0.389037, 0.760462, 1.504317",\
+ "0.026706, 0.188568, 0.389037, 0.760462, 1.504317",\
+ "0.028728, 0.188568, 0.389037, 0.760462, 1.504317",\
+ "0.047127, 0.192499, 0.389037, 0.760462, 1.504597");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.049406, 0.202130, 0.377266, 0.699792, 1.344843",\
+ "0.135790, 0.289304, 0.464371, 0.786506, 1.430777",\
+ "0.219296, 0.377431, 0.552325, 0.874128, 1.517732",\
+ "0.277514, 0.441824, 0.616441, 0.938041, 1.581241",\
+ "0.579353, 0.791699, 0.966821, 1.286780, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.025743, 0.301517, 0.634353, 1.249189, 2.473548",\
+ "0.030090, 0.302515, 0.636293, 1.249189, 2.473548",\
+ "0.042857, 0.304754, 0.636329, 1.249264, 2.473548",\
+ "0.054785, 0.308010, 0.636433, 1.250010, 2.473548",\
+ "0.130748, 0.346137, 0.642682, 1.252970, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.068893, 0.173494, 0.284787, 0.488756, 0.896694",\
+ "0.156301, 0.260812, 0.372068, 0.576061, 0.984048",\
+ "0.236678, 0.341144, 0.452094, 0.656090, 1.064079",\
+ "0.293415, 0.398693, 0.509637, 0.713334, 1.120727",\
+ "0.587689, 0.702034, 0.813268, 1.016347, 1.422504");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002464, 0.075463, 0.162351, 0.322237, 0.642011");
+ values ( "0.025670, 0.187616, 0.387026, 0.758231, 1.500640",\
+ "0.025670, 0.187616, 0.387026, 0.758231, 1.500640",\
+ "0.026706, 0.187616, 0.387026, 0.758231, 1.500640",\
+ "0.028728, 0.188225, 0.387484, 0.759133, 1.502431",\
+ "0.047127, 0.192499, 0.387557, 0.759904, 1.504597");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[5]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025743, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216747, 0.170818, 0.140619, 0.129275, 0.142960",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025670, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251104, 0.175782, 0.107623, 0.084656, 0.147570",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025743, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148675, -0.106258, -0.071771, -0.032347, 0.273700",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025670, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164259, -0.098344, -0.040686, 0.001276, 0.221883",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[5]_hldr*/
+
+} /* end of pin dpram_rmf_o[5] */
+
+pin("dpram_rmf_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002015 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.249558, 2.482564",\
+ "0.028631, 0.300789, 0.635003, 1.249558, 2.482564",\
+ "0.041577, 0.303044, 0.635039, 1.249558, 2.482564",\
+ "0.053483, 0.306322, 0.635141, 1.249558, 2.482564",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.187425, 0.387787, 0.759976, 1.504353",\
+ "0.024575, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.025658, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.027727, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.046336, 0.191539, 0.388291, 0.759976, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.248329, 2.473548",\
+ "0.028631, 0.300789, 0.635003, 1.248329, 2.473548",\
+ "0.041577, 0.303044, 0.635039, 1.248404, 2.473548",\
+ "0.053483, 0.306322, 0.635141, 1.249148, 2.473548",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.025658, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.027727, 0.187236, 0.386737, 0.758647, 1.502467",\
+ "0.046336, 0.191539, 0.386809, 0.759417, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215993, 0.170064, 0.139864, 0.128520, 0.142206",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250605, 0.175284, 0.107125, 0.084158, 0.147071",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147920, -0.105503, -0.071016, -0.031593, 0.274454",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163761, -0.097846, -0.040187, 0.001774, 0.222382",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[4]_hldr*/
+
+} /* end of pin dpram_rmf_o[4] */
+
+pin("dpram_rmf_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002005 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.249539, 2.482564",\
+ "0.028598, 0.300750, 0.634974, 1.249539, 2.482564",\
+ "0.041548, 0.303005, 0.635010, 1.249539, 2.482564",\
+ "0.053453, 0.306284, 0.635112, 1.249539, 2.482564",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.187404, 0.387772, 0.759966, 1.504356",\
+ "0.024552, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.025636, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.027706, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.046319, 0.191519, 0.388276, 0.759966, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.248310, 2.473548",\
+ "0.028598, 0.300750, 0.634974, 1.248310, 2.473548",\
+ "0.041548, 0.303005, 0.635010, 1.248385, 2.473548",\
+ "0.053453, 0.306284, 0.635112, 1.249129, 2.473548",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.025636, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.027706, 0.187215, 0.386722, 0.758638, 1.502470",\
+ "0.046319, 0.191519, 0.386794, 0.759408, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215976, 0.170047, 0.139847, 0.128503, 0.142188",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250595, 0.175273, 0.107114, 0.084147, 0.147061",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147903, -0.105486, -0.070999, -0.031576, 0.274471",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163751, -0.097835, -0.040177, 0.001784, 0.222392",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[3]_hldr*/
+
+} /* end of pin dpram_rmf_o[3] */
+
+pin("dpram_rmf_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002015 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.249558, 2.482564",\
+ "0.028631, 0.300789, 0.635003, 1.249558, 2.482564",\
+ "0.041577, 0.303044, 0.635039, 1.249558, 2.482564",\
+ "0.053483, 0.306322, 0.635141, 1.249558, 2.482564",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.187425, 0.387787, 0.759976, 1.504353",\
+ "0.024575, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.025658, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.027727, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.046336, 0.191539, 0.388291, 0.759976, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.248329, 2.473548",\
+ "0.028631, 0.300789, 0.635003, 1.248329, 2.473548",\
+ "0.041577, 0.303044, 0.635039, 1.248404, 2.473548",\
+ "0.053483, 0.306322, 0.635141, 1.249148, 2.473548",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.025658, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.027727, 0.187236, 0.386737, 0.758647, 1.502467",\
+ "0.046336, 0.191539, 0.386809, 0.759417, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215993, 0.170064, 0.139864, 0.128520, 0.142206",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250605, 0.175284, 0.107125, 0.084158, 0.147071",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147920, -0.105503, -0.071016, -0.031593, 0.274454",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163761, -0.097846, -0.040187, 0.001774, 0.222382",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[2]_hldr*/
+
+} /* end of pin dpram_rmf_o[2] */
+
+pin("dpram_rmf_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003002 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.251459, 2.482564",\
+ "0.031840, 0.304583, 0.637840, 1.251459, 2.482564",\
+ "0.044392, 0.306804, 0.637876, 1.251459, 2.482564",\
+ "0.056346, 0.310032, 0.637981, 1.251459, 2.482564",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.189618, 0.389436, 0.761051, 1.504280",\
+ "0.026989, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.027967, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.029933, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.048080, 0.193656, 0.389937, 0.761051, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.250220, 2.473548",\
+ "0.031840, 0.304583, 0.637840, 1.250220, 2.473548",\
+ "0.044392, 0.306804, 0.637876, 1.250296, 2.473548",\
+ "0.056346, 0.310032, 0.637981, 1.251042, 2.473548",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.027967, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.029933, 0.189417, 0.388385, 0.759721, 1.502395",\
+ "0.048080, 0.193656, 0.388460, 0.760493, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.217652, 0.171723, 0.141523, 0.130179, 0.143864",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251704, 0.176383, 0.108224, 0.085257, 0.148171",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.149579, -0.107162, -0.072675, -0.033251, 0.272796",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164860, -0.098945, -0.041286, 0.000675, 0.221283",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[1]_hldr*/
+
+} /* end of pin dpram_rmf_o[1] */
+
+pin("dpram_rmf_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002026 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rmf_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.249579, 2.482563",\
+ "0.028666, 0.300830, 0.635034, 1.249579, 2.482563",\
+ "0.041608, 0.303085, 0.635070, 1.249579, 2.482563",\
+ "0.053514, 0.306363, 0.635172, 1.249579, 2.482563",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.187440, 0.387796, 0.759979, 1.504343",\
+ "0.024592, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.025674, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.027742, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.046348, 0.191554, 0.388300, 0.759979, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.248350, 2.473548",\
+ "0.028666, 0.300830, 0.635034, 1.248350, 2.473548",\
+ "0.041608, 0.303085, 0.635070, 1.248425, 2.473548",\
+ "0.053514, 0.306363, 0.635172, 1.249169, 2.473548",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.025674, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.027742, 0.187251, 0.386746, 0.758650, 1.502457",\
+ "0.046348, 0.191554, 0.386818, 0.759420, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216011, 0.170082, 0.139882, 0.128539, 0.142224",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250613, 0.175291, 0.107132, 0.084165, 0.147079",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147938, -0.105521, -0.071034, -0.031611, 0.274436",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163769, -0.097854, -0.040195, 0.001766, 0.222374",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rmf_o[0]_hldr*/
+
+} /* end of pin dpram_rmf_o[0] */
+} /* end of bus dpram_rmf_o */
+bus ( dpram_rml_o ) {
+
+ bus_type : BUS10_type8 ;
+ direction : output ;
+
+pin("dpram_rml_o[9]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003142 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[9];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.051240, 0.203496, 0.378292, 0.700476, 1.344843",\
+ "0.137724, 0.290671, 0.465395, 0.787189, 1.430777",\
+ "0.221682, 0.378796, 0.553349, 0.874810, 1.517732",\
+ "0.280355, 0.443186, 0.617463, 0.938722, 1.581241",\
+ "0.584942, 0.793069, 0.967839, 1.287458, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.028205, 0.304109, 0.636312, 1.251729, 2.482563",\
+ "0.032295, 0.305121, 0.638243, 1.251729, 2.482563",\
+ "0.044791, 0.307337, 0.638279, 1.251729, 2.482563",\
+ "0.056753, 0.310558, 0.638384, 1.251729, 2.482563",\
+ "0.133215, 0.348353, 0.644623, 1.254264, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.070508, 0.174340, 0.285412, 0.489165, 0.896671",\
+ "0.157911, 0.261657, 0.372693, 0.576470, 0.984024",\
+ "0.238313, 0.341986, 0.452720, 0.656498, 1.064056",\
+ "0.295115, 0.399536, 0.510261, 0.713742, 1.120703",\
+ "0.590063, 0.702880, 0.813890, 1.016754, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.027336, 0.189933, 0.389674, 0.761207, 1.504274",\
+ "0.027336, 0.190085, 0.390175, 0.761207, 1.504274",\
+ "0.028299, 0.190085, 0.390175, 0.761207, 1.504274",\
+ "0.030250, 0.190085, 0.390175, 0.761207, 1.504274",\
+ "0.048330, 0.193960, 0.390175, 0.761207, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[9]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.051240, 0.203496, 0.378292, 0.700476, 1.344843",\
+ "0.137724, 0.290671, 0.465395, 0.787189, 1.430777",\
+ "0.221682, 0.378796, 0.553349, 0.874810, 1.517732",\
+ "0.280355, 0.443186, 0.617463, 0.938722, 1.581241",\
+ "0.584942, 0.793069, 0.967839, 1.287458, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.028205, 0.304109, 0.636312, 1.250489, 2.473548",\
+ "0.032295, 0.305121, 0.638243, 1.250489, 2.473548",\
+ "0.044791, 0.307337, 0.638279, 1.250564, 2.473548",\
+ "0.056753, 0.310558, 0.638384, 1.251310, 2.473548",\
+ "0.133215, 0.348353, 0.644623, 1.254264, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.070508, 0.174340, 0.285412, 0.489165, 0.896671",\
+ "0.157911, 0.261657, 0.372693, 0.576470, 0.984024",\
+ "0.238313, 0.341986, 0.452720, 0.656498, 1.064056",\
+ "0.295115, 0.399536, 0.510261, 0.713742, 1.120703",\
+ "0.590063, 0.702880, 0.813890, 1.016754, 1.422480");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003142, 0.076141, 0.162859, 0.322576, 0.642011");
+ values ( "0.027336, 0.189123, 0.388163, 0.758974, 1.500597",\
+ "0.027336, 0.189123, 0.388163, 0.758974, 1.500597",\
+ "0.028299, 0.189123, 0.388163, 0.758974, 1.500597",\
+ "0.030250, 0.189730, 0.388622, 0.759878, 1.502388",\
+ "0.048330, 0.193960, 0.388698, 0.760650, 1.504554");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[9]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028205, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.217887, 0.171958, 0.141759, 0.130415, 0.144100",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027336, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251862, 0.176541, 0.108382, 0.085415, 0.148328",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[9]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028205, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.149814, -0.107397, -0.072910, -0.033487, 0.272560",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027336, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.165018, -0.099103, -0.041444, 0.000517, 0.221125",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[9]_hldr*/
+
+} /* end of pin dpram_rml_o[9] */
+
+pin("dpram_rml_o[8]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002583 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[8];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.049728, 0.202370, 0.377446, 0.699912, 1.344843",\
+ "0.136129, 0.289544, 0.464550, 0.786626, 1.430777",\
+ "0.219715, 0.377671, 0.552505, 0.874247, 1.517732",\
+ "0.278013, 0.442063, 0.616620, 0.938160, 1.581241",\
+ "0.580334, 0.791940, 0.967000, 1.286899, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.026175, 0.301972, 0.634697, 1.250652, 2.482564",\
+ "0.030477, 0.302972, 0.636635, 1.250652, 2.482564",\
+ "0.043197, 0.305208, 0.636672, 1.250652, 2.482564",\
+ "0.055131, 0.308457, 0.636775, 1.250652, 2.482564",\
+ "0.131181, 0.346526, 0.643023, 1.253198, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.069162, 0.173635, 0.284889, 0.488820, 0.896683",\
+ "0.156569, 0.260953, 0.372170, 0.576125, 0.984036",\
+ "0.236950, 0.341284, 0.452197, 0.656154, 1.064068",\
+ "0.293698, 0.398833, 0.509739, 0.713398, 1.120715",\
+ "0.588084, 0.702174, 0.813370, 1.016411, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.025948, 0.188671, 0.388720, 0.760579, 1.504295",\
+ "0.025948, 0.188820, 0.389223, 0.760579, 1.504295",\
+ "0.026971, 0.188820, 0.389223, 0.760579, 1.504295",\
+ "0.028981, 0.188820, 0.389223, 0.760579, 1.504295",\
+ "0.047327, 0.192742, 0.389223, 0.760579, 1.504576");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[8]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.049728, 0.202370, 0.377446, 0.699912, 1.344843",\
+ "0.136129, 0.289544, 0.464550, 0.786626, 1.430777",\
+ "0.219715, 0.377671, 0.552505, 0.874247, 1.517732",\
+ "0.278013, 0.442063, 0.616620, 0.938160, 1.581241",\
+ "0.580334, 0.791940, 0.967000, 1.286899, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.026175, 0.301972, 0.634697, 1.249417, 2.473548",\
+ "0.030477, 0.302972, 0.636635, 1.249417, 2.473548",\
+ "0.043197, 0.305208, 0.636672, 1.249493, 2.473548",\
+ "0.055131, 0.308457, 0.636775, 1.250238, 2.473548",\
+ "0.131181, 0.346526, 0.643023, 1.253198, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.069162, 0.173635, 0.284889, 0.488820, 0.896683",\
+ "0.156569, 0.260953, 0.372170, 0.576125, 0.984036",\
+ "0.236950, 0.341284, 0.452197, 0.656154, 1.064068",\
+ "0.293698, 0.398833, 0.509739, 0.713398, 1.120715",\
+ "0.588084, 0.702174, 0.813370, 1.016411, 1.422492");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002583, 0.075582, 0.162440, 0.322297, 0.642011");
+ values ( "0.025948, 0.187867, 0.387212, 0.758347, 1.500618",\
+ "0.025948, 0.187867, 0.387212, 0.758347, 1.500618",\
+ "0.026971, 0.187867, 0.387212, 0.758347, 1.500618",\
+ "0.028981, 0.188476, 0.387670, 0.759250, 1.502410",\
+ "0.047327, 0.192742, 0.387744, 0.760021, 1.504576");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[8]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026175, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216947, 0.171018, 0.140819, 0.129475, 0.143160",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025948, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251230, 0.175909, 0.107750, 0.084782, 0.147696",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[8]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026175, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148875, -0.106458, -0.071971, -0.032547, 0.273500",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025948, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164386, -0.098471, -0.040812, 0.001149, 0.221757",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[8]_hldr*/
+
+} /* end of pin dpram_rml_o[8] */
+
+pin("dpram_rml_o[7]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002594 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[7];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.049757, 0.202391, 0.377463, 0.699923, 1.344843",\
+ "0.136160, 0.289566, 0.464567, 0.786637, 1.430777",\
+ "0.219753, 0.377693, 0.552521, 0.874258, 1.517732",\
+ "0.278058, 0.442085, 0.616637, 0.938171, 1.581241",\
+ "0.580424, 0.791962, 0.967016, 1.286910, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.026215, 0.302013, 0.634728, 1.250673, 2.482563",\
+ "0.030513, 0.303014, 0.636667, 1.250673, 2.482563",\
+ "0.043228, 0.305249, 0.636703, 1.250673, 2.482563",\
+ "0.055162, 0.308498, 0.636806, 1.250673, 2.482563",\
+ "0.131221, 0.346562, 0.643054, 1.253218, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.069192, 0.173650, 0.284901, 0.488829, 0.896685",\
+ "0.156600, 0.260968, 0.372182, 0.576134, 0.984038",\
+ "0.236980, 0.341300, 0.452209, 0.656163, 1.064070",\
+ "0.293730, 0.398849, 0.509751, 0.713407, 1.120717",\
+ "0.588129, 0.702190, 0.813382, 1.016419, 1.422494");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.025979, 0.188700, 0.388743, 0.760595, 1.504299",\
+ "0.025979, 0.188849, 0.389245, 0.760595, 1.504299",\
+ "0.027001, 0.188849, 0.389245, 0.760595, 1.504299",\
+ "0.029010, 0.188849, 0.389245, 0.760595, 1.504299",\
+ "0.047350, 0.192770, 0.389245, 0.760595, 1.504579");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[7]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.049757, 0.202391, 0.377463, 0.699923, 1.344843",\
+ "0.136160, 0.289566, 0.464567, 0.786637, 1.430777",\
+ "0.219753, 0.377693, 0.552521, 0.874258, 1.517732",\
+ "0.278058, 0.442085, 0.616637, 0.938171, 1.581241",\
+ "0.580424, 0.791962, 0.967016, 1.286910, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.026215, 0.302013, 0.634728, 1.249438, 2.473548",\
+ "0.030513, 0.303014, 0.636667, 1.249438, 2.473548",\
+ "0.043228, 0.305249, 0.636703, 1.249514, 2.473548",\
+ "0.055162, 0.308498, 0.636806, 1.250259, 2.473548",\
+ "0.131221, 0.346562, 0.643054, 1.253218, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.069192, 0.173650, 0.284901, 0.488829, 0.896685",\
+ "0.156600, 0.260968, 0.372182, 0.576134, 0.984038",\
+ "0.236980, 0.341300, 0.452209, 0.656163, 1.064070",\
+ "0.293730, 0.398849, 0.509751, 0.713407, 1.120717",\
+ "0.588129, 0.702190, 0.813382, 1.016419, 1.422494");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002594, 0.075593, 0.162448, 0.322302, 0.642011");
+ values ( "0.025979, 0.187895, 0.387234, 0.758363, 1.500622",\
+ "0.025979, 0.187895, 0.387234, 0.758363, 1.500622",\
+ "0.027001, 0.187895, 0.387234, 0.758363, 1.500622",\
+ "0.029010, 0.188504, 0.387692, 0.759266, 1.502414",\
+ "0.047350, 0.192770, 0.387766, 0.760037, 1.504579");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[7]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026215, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216966, 0.171037, 0.140837, 0.129493, 0.143178",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025979, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251244, 0.175923, 0.107764, 0.084797, 0.147711",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[7]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026215, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148893, -0.106476, -0.071989, -0.032565, 0.273482",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025979, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164400, -0.098485, -0.040826, 0.001135, 0.221743",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[7]_hldr*/
+
+} /* end of pin dpram_rml_o[7] */
+
+pin("dpram_rml_o[6]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002460 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[6];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.049394, 0.202121, 0.377259, 0.699787, 1.344843",\
+ "0.135777, 0.289295, 0.464364, 0.786501, 1.430777",\
+ "0.219280, 0.377422, 0.552318, 0.874123, 1.517732",\
+ "0.277495, 0.441815, 0.616434, 0.938036, 1.581241",\
+ "0.579315, 0.791690, 0.966814, 1.286775, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.025727, 0.301499, 0.634339, 1.250414, 2.482564",\
+ "0.030075, 0.302497, 0.636280, 1.250414, 2.482564",\
+ "0.042844, 0.304737, 0.636316, 1.250414, 2.482564",\
+ "0.054772, 0.307992, 0.636419, 1.250414, 2.482564",\
+ "0.130732, 0.346122, 0.642669, 1.252962, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.068872, 0.173483, 0.284777, 0.488748, 0.896689",\
+ "0.156281, 0.260801, 0.372058, 0.576053, 0.984043",\
+ "0.236656, 0.341133, 0.452085, 0.656082, 1.064075",\
+ "0.293393, 0.398682, 0.509628, 0.713326, 1.120722",\
+ "0.587658, 0.702023, 0.813259, 1.016339, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.025649, 0.188400, 0.388517, 0.760448, 1.504308",\
+ "0.025649, 0.188548, 0.389020, 0.760448, 1.504308",\
+ "0.026685, 0.188548, 0.389020, 0.760448, 1.504308",\
+ "0.028708, 0.188548, 0.389020, 0.760448, 1.504308",\
+ "0.047111, 0.192480, 0.389020, 0.760448, 1.504588");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[6]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.049394, 0.202121, 0.377259, 0.699787, 1.344843",\
+ "0.135777, 0.289295, 0.464364, 0.786501, 1.430777",\
+ "0.219280, 0.377422, 0.552318, 0.874123, 1.517732",\
+ "0.277495, 0.441815, 0.616434, 0.938036, 1.581241",\
+ "0.579315, 0.791690, 0.966814, 1.286775, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.025727, 0.301499, 0.634339, 1.249181, 2.473548",\
+ "0.030075, 0.302497, 0.636280, 1.249181, 2.473548",\
+ "0.042844, 0.304737, 0.636316, 1.249256, 2.473548",\
+ "0.054772, 0.307992, 0.636419, 1.250001, 2.473548",\
+ "0.130732, 0.346122, 0.642669, 1.252962, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.068872, 0.173483, 0.284777, 0.488748, 0.896689",\
+ "0.156281, 0.260801, 0.372058, 0.576053, 0.984043",\
+ "0.236656, 0.341133, 0.452085, 0.656082, 1.064075",\
+ "0.293393, 0.398682, 0.509628, 0.713326, 1.120722",\
+ "0.587658, 0.702023, 0.813259, 1.016339, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002460, 0.075458, 0.162347, 0.322235, 0.642011");
+ values ( "0.025649, 0.187597, 0.387009, 0.758216, 1.500631",\
+ "0.025649, 0.187597, 0.387009, 0.758216, 1.500631",\
+ "0.026685, 0.187597, 0.387009, 0.758216, 1.500631",\
+ "0.028708, 0.188206, 0.387467, 0.759119, 1.502422",\
+ "0.047111, 0.192480, 0.387540, 0.759889, 1.504588");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[6]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025727, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216740, 0.170811, 0.140611, 0.129267, 0.142952",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025649, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251094, 0.175772, 0.107614, 0.084646, 0.147560",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[6]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025727, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148667, -0.106250, -0.071763, -0.032339, 0.273708",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025649, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164250, -0.098335, -0.040676, 0.001285, 0.221893",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[6]_hldr*/
+
+} /* end of pin dpram_rml_o[6] */
+
+pin("dpram_rml_o[5]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002976 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[5];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.050791, 0.203162, 0.378041, 0.700308, 1.344843",\
+ "0.137251, 0.290336, 0.465144, 0.787022, 1.430777",\
+ "0.221098, 0.378462, 0.553098, 0.874643, 1.517732",\
+ "0.279660, 0.442853, 0.617213, 0.938556, 1.581241",\
+ "0.583574, 0.792734, 0.967589, 1.287292, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.027602, 0.303474, 0.635832, 1.251409, 2.482564",\
+ "0.031755, 0.304483, 0.637765, 1.251409, 2.482564",\
+ "0.044318, 0.306705, 0.637801, 1.251409, 2.482564",\
+ "0.056271, 0.309934, 0.637906, 1.251409, 2.482564",\
+ "0.132611, 0.347810, 0.644148, 1.253948, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.070108, 0.174130, 0.285256, 0.489062, 0.896674",\
+ "0.157512, 0.261448, 0.372537, 0.576367, 0.984027",\
+ "0.237907, 0.341777, 0.452564, 0.656396, 1.064059",\
+ "0.294694, 0.399327, 0.510106, 0.713639, 1.120707",\
+ "0.589475, 0.702670, 0.813735, 1.016652, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.026923, 0.189558, 0.389390, 0.761020, 1.504280",\
+ "0.026923, 0.189709, 0.389892, 0.761020, 1.504280",\
+ "0.027904, 0.189709, 0.389892, 0.761020, 1.504280",\
+ "0.029873, 0.189709, 0.389892, 0.761020, 1.504280",\
+ "0.048032, 0.193598, 0.389892, 0.761020, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[5]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.050791, 0.203162, 0.378041, 0.700308, 1.344843",\
+ "0.137251, 0.290336, 0.465144, 0.787022, 1.430777",\
+ "0.221098, 0.378462, 0.553098, 0.874643, 1.517732",\
+ "0.279660, 0.442853, 0.617213, 0.938556, 1.581241",\
+ "0.583574, 0.792734, 0.967589, 1.287292, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.027602, 0.303474, 0.635832, 1.250171, 2.473548",\
+ "0.031755, 0.304483, 0.637765, 1.250171, 2.473548",\
+ "0.044318, 0.306705, 0.637801, 1.250246, 2.473548",\
+ "0.056271, 0.309934, 0.637906, 1.250992, 2.473548",\
+ "0.132611, 0.347810, 0.644148, 1.253948, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.070108, 0.174130, 0.285256, 0.489062, 0.896674",\
+ "0.157512, 0.261448, 0.372537, 0.576367, 0.984027",\
+ "0.237907, 0.341777, 0.452564, 0.656396, 1.064059",\
+ "0.294694, 0.399327, 0.510106, 0.713639, 1.120707",\
+ "0.589475, 0.702670, 0.813735, 1.016652, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002976, 0.075975, 0.162735, 0.322493, 0.642011");
+ values ( "0.026923, 0.188750, 0.387880, 0.758788, 1.500602",\
+ "0.026923, 0.188750, 0.387880, 0.758788, 1.500602",\
+ "0.027904, 0.188750, 0.387880, 0.758788, 1.500602",\
+ "0.029873, 0.189357, 0.388339, 0.759691, 1.502394",\
+ "0.048032, 0.193598, 0.388414, 0.760463, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[5]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027602, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.217608, 0.171679, 0.141479, 0.130136, 0.143821",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026923, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251674, 0.176353, 0.108194, 0.085227, 0.148140",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[5]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027602, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.149535, -0.107118, -0.072631, -0.033208, 0.272839",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026923, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164830, -0.098915, -0.041256, 0.000705, 0.221313",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[5]_hldr*/
+
+} /* end of pin dpram_rml_o[5] */
+
+pin("dpram_rml_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004037 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.053659, 0.205298, 0.379645, 0.701378, 1.344843",\
+ "0.140277, 0.292473, 0.466747, 0.788090, 1.430777",\
+ "0.224830, 0.380596, 0.554699, 0.875710, 1.517732",\
+ "0.284103, 0.444983, 0.618813, 0.939622, 1.581241",\
+ "0.592316, 0.794877, 0.969181, 1.288353, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.031452, 0.307528, 0.638897, 1.253452, 2.482564",\
+ "0.035203, 0.308560, 0.640814, 1.253452, 2.482564",\
+ "0.047343, 0.310745, 0.640850, 1.253452, 2.482564",\
+ "0.059348, 0.313921, 0.640958, 1.253452, 2.482564",\
+ "0.136469, 0.351276, 0.647183, 1.255971, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.072631, 0.175452, 0.286232, 0.489700, 0.896636",\
+ "0.160028, 0.262769, 0.373513, 0.577005, 0.983989",\
+ "0.240463, 0.343094, 0.453540, 0.657034, 1.064021",\
+ "0.297350, 0.400643, 0.511081, 0.714277, 1.120669",\
+ "0.593185, 0.703993, 0.814708, 1.017287, 1.422446");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.029527, 0.191922, 0.391170, 0.762184, 1.504210",\
+ "0.029527, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.030394, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.032251, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.049913, 0.195880, 0.391669, 0.762184, 1.504490");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.053659, 0.205298, 0.379645, 0.701378, 1.344843",\
+ "0.140277, 0.292473, 0.466747, 0.788090, 1.430777",\
+ "0.224830, 0.380596, 0.554699, 0.875710, 1.517732",\
+ "0.284103, 0.444983, 0.618813, 0.939622, 1.581241",\
+ "0.592316, 0.794877, 0.969181, 1.288353, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.031452, 0.307528, 0.638897, 1.252203, 2.473548",\
+ "0.035203, 0.308560, 0.640814, 1.252203, 2.473548",\
+ "0.047343, 0.310745, 0.640850, 1.252279, 2.473548",\
+ "0.059348, 0.313921, 0.640958, 1.253027, 2.473548",\
+ "0.136469, 0.351276, 0.647183, 1.255971, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.072631, 0.175452, 0.286232, 0.489700, 0.896636",\
+ "0.160028, 0.262769, 0.373513, 0.577005, 0.983989",\
+ "0.240463, 0.343094, 0.453540, 0.657034, 1.064021",\
+ "0.297350, 0.400643, 0.511081, 0.714277, 1.120669",\
+ "0.593185, 0.703993, 0.814708, 1.017287, 1.422446");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.029527, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.029527, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.030394, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.032251, 0.191709, 0.390118, 0.760853, 1.502324",\
+ "0.049913, 0.195880, 0.390196, 0.761627, 1.504490");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.031452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.219390, 0.173461, 0.143262, 0.131918, 0.145603",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029527, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.252859, 0.177538, 0.109379, 0.086412, 0.149326",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.031452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.151318, -0.108901, -0.074414, -0.034990, 0.271057",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029527, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.166015, -0.100100, -0.042441, -0.000480, 0.220128",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[4]_hldr*/
+
+} /* end of pin dpram_rml_o[4] */
+
+pin("dpram_rml_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002031 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.048234, 0.201257, 0.376611, 0.699355, 1.344843",\
+ "0.134553, 0.288431, 0.463716, 0.786070, 1.430777",\
+ "0.217771, 0.376559, 0.551671, 0.873691, 1.517732",\
+ "0.275698, 0.440953, 0.615787, 0.937605, 1.581241",\
+ "0.575781, 0.790824, 0.966170, 1.286346, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024170, 0.299860, 0.633100, 1.249588, 2.482563",\
+ "0.028681, 0.300849, 0.635047, 1.249588, 2.482563",\
+ "0.041621, 0.303103, 0.635083, 1.249588, 2.482563",\
+ "0.053528, 0.306381, 0.635185, 1.249588, 2.482563",\
+ "0.129172, 0.344721, 0.641441, 1.252143, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.067866, 0.172955, 0.284390, 0.488497, 0.896712",\
+ "0.155277, 0.260274, 0.371670, 0.575802, 0.984065",\
+ "0.235637, 0.340608, 0.451697, 0.655831, 1.064097",\
+ "0.292333, 0.398157, 0.509240, 0.713075, 1.120745",\
+ "0.586178, 0.701495, 0.812873, 1.016089, 1.422521");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024610, 0.187457, 0.387810, 0.759990, 1.504349",\
+ "0.024610, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.025692, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.027759, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.046361, 0.191570, 0.388314, 0.759990, 1.504629");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.048234, 0.201257, 0.376611, 0.699355, 1.344843",\
+ "0.134553, 0.288431, 0.463716, 0.786070, 1.430777",\
+ "0.217771, 0.376559, 0.551671, 0.873691, 1.517732",\
+ "0.275698, 0.440953, 0.615787, 0.937605, 1.581241",\
+ "0.575781, 0.790824, 0.966170, 1.286346, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024170, 0.299860, 0.633100, 1.248359, 2.473548",\
+ "0.028681, 0.300849, 0.635047, 1.248359, 2.473548",\
+ "0.041621, 0.303103, 0.635083, 1.248434, 2.473548",\
+ "0.053528, 0.306381, 0.635185, 1.249178, 2.473548",\
+ "0.129172, 0.344721, 0.641441, 1.252143, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.067866, 0.172955, 0.284390, 0.488497, 0.896712",\
+ "0.155277, 0.260274, 0.371670, 0.575802, 0.984065",\
+ "0.235637, 0.340608, 0.451697, 0.655831, 1.064097",\
+ "0.292333, 0.398157, 0.509240, 0.713075, 1.120745",\
+ "0.586178, 0.701495, 0.812873, 1.016089, 1.422521");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024610, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.024610, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.025692, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.027759, 0.187268, 0.386760, 0.758661, 1.502463",\
+ "0.046361, 0.191570, 0.386832, 0.759431, 1.504629");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024170, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216019, 0.170090, 0.139890, 0.128547, 0.142232",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250621, 0.175300, 0.107141, 0.084173, 0.147087",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024170, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147946, -0.105529, -0.071042, -0.031619, 0.274428",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163777, -0.097862, -0.040203, 0.001758, 0.222366",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[3]_hldr*/
+
+} /* end of pin dpram_rml_o[3] */
+
+pin("dpram_rml_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003654 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.052623, 0.204527, 0.379066, 0.700992, 1.344843",\
+ "0.139184, 0.291701, 0.466168, 0.787704, 1.430777",\
+ "0.223482, 0.379826, 0.554121, 0.875325, 1.517732",\
+ "0.282499, 0.444214, 0.618235, 0.939237, 1.581241",\
+ "0.589159, 0.794103, 0.968606, 1.287970, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.030062, 0.306064, 0.637790, 1.252714, 2.482564",\
+ "0.033958, 0.307087, 0.639713, 1.252714, 2.482564",\
+ "0.046250, 0.309286, 0.639749, 1.252714, 2.482564",\
+ "0.058237, 0.312481, 0.639856, 1.252714, 2.482564",\
+ "0.135075, 0.350024, 0.646087, 1.255240, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.071715, 0.174972, 0.285877, 0.489467, 0.896647",\
+ "0.159114, 0.262289, 0.373158, 0.576772, 0.984000",\
+ "0.239535, 0.342616, 0.453185, 0.656801, 1.064032",\
+ "0.296386, 0.400165, 0.510726, 0.714044, 1.120680",\
+ "0.591837, 0.703513, 0.814354, 1.017055, 1.422457");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.028581, 0.191064, 0.390523, 0.761759, 1.504230",\
+ "0.028581, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.029490, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.031388, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.049229, 0.195051, 0.391022, 0.761759, 1.504510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.052623, 0.204527, 0.379066, 0.700992, 1.344843",\
+ "0.139184, 0.291701, 0.466168, 0.787704, 1.430777",\
+ "0.223482, 0.379826, 0.554121, 0.875325, 1.517732",\
+ "0.282499, 0.444214, 0.618235, 0.939237, 1.581241",\
+ "0.589159, 0.794103, 0.968606, 1.287970, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.030062, 0.306064, 0.637790, 1.251469, 2.473548",\
+ "0.033958, 0.307087, 0.639713, 1.251469, 2.473548",\
+ "0.046250, 0.309286, 0.639749, 1.251544, 2.473548",\
+ "0.058237, 0.312481, 0.639856, 1.252292, 2.473548",\
+ "0.135075, 0.350024, 0.646087, 1.255240, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.071715, 0.174972, 0.285877, 0.489467, 0.896647",\
+ "0.159114, 0.262289, 0.373158, 0.576772, 0.984000",\
+ "0.239535, 0.342616, 0.453185, 0.656801, 1.064032",\
+ "0.296386, 0.400165, 0.510726, 0.714044, 1.120680",\
+ "0.591837, 0.703513, 0.814354, 1.017055, 1.422457");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.028581, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.028581, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.029490, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.031388, 0.190855, 0.389471, 0.760429, 1.502345",\
+ "0.049229, 0.195051, 0.389548, 0.761202, 1.504510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030062, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.218747, 0.172818, 0.142618, 0.131274, 0.144959",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.252429, 0.177108, 0.108949, 0.085981, 0.148895",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030062, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.150674, -0.108257, -0.073770, -0.034347, 0.271701",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.165584, -0.099669, -0.042010, -0.000049, 0.220558",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[2]_hldr*/
+
+} /* end of pin dpram_rml_o[2] */
+
+pin("dpram_rml_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002005 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.249539, 2.482564",\
+ "0.028598, 0.300750, 0.634974, 1.249539, 2.482564",\
+ "0.041548, 0.303005, 0.635010, 1.249539, 2.482564",\
+ "0.053453, 0.306284, 0.635112, 1.249539, 2.482564",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.187404, 0.387772, 0.759966, 1.504356",\
+ "0.024552, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.025636, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.027706, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.046319, 0.191519, 0.388276, 0.759966, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.248310, 2.473548",\
+ "0.028598, 0.300750, 0.634974, 1.248310, 2.473548",\
+ "0.041548, 0.303005, 0.635010, 1.248385, 2.473548",\
+ "0.053453, 0.306284, 0.635112, 1.249129, 2.473548",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.025636, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.027706, 0.187215, 0.386722, 0.758638, 1.502470",\
+ "0.046319, 0.191519, 0.386794, 0.759408, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215976, 0.170047, 0.139847, 0.128503, 0.142188",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250595, 0.175273, 0.107114, 0.084147, 0.147061",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147903, -0.105486, -0.070999, -0.031576, 0.274471",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163751, -0.097835, -0.040177, 0.001784, 0.222392",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[1]_hldr*/
+
+} /* end of pin dpram_rml_o[1] */
+
+pin("dpram_rml_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002547 ;
+
+ /* Other user defined attributes. */
+ original_pin : dpram_rml_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.049629, 0.202296, 0.377391, 0.699875, 1.344843",\
+ "0.136025, 0.289471, 0.464495, 0.786589, 1.430777",\
+ "0.219586, 0.377597, 0.552450, 0.874211, 1.517732",\
+ "0.277859, 0.441990, 0.616565, 0.938124, 1.581241",\
+ "0.580033, 0.791866, 0.966945, 1.286862, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.026043, 0.301832, 0.634591, 1.250582, 2.482563",\
+ "0.030358, 0.302831, 0.636530, 1.250582, 2.482563",\
+ "0.043092, 0.305068, 0.636566, 1.250582, 2.482563",\
+ "0.055024, 0.308320, 0.636670, 1.250582, 2.482563",\
+ "0.131048, 0.346407, 0.642918, 1.253128, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.069083, 0.173593, 0.284859, 0.488802, 0.896688",\
+ "0.156491, 0.260911, 0.372140, 0.576107, 0.984042",\
+ "0.236870, 0.341243, 0.452167, 0.656136, 1.064073",\
+ "0.293615, 0.398792, 0.509709, 0.713380, 1.120721",\
+ "0.587968, 0.702133, 0.813340, 1.016393, 1.422498");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.025866, 0.188597, 0.388667, 0.760546, 1.504306",\
+ "0.025866, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.026893, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.028907, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.047268, 0.192671, 0.389169, 0.760546, 1.504586");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.049629, 0.202296, 0.377391, 0.699875, 1.344843",\
+ "0.136025, 0.289471, 0.464495, 0.786589, 1.430777",\
+ "0.219586, 0.377597, 0.552450, 0.874211, 1.517732",\
+ "0.277859, 0.441990, 0.616565, 0.938124, 1.581241",\
+ "0.580033, 0.791866, 0.966945, 1.286862, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.026043, 0.301832, 0.634591, 1.249347, 2.473548",\
+ "0.030358, 0.302831, 0.636530, 1.249347, 2.473548",\
+ "0.043092, 0.305068, 0.636566, 1.249423, 2.473548",\
+ "0.055024, 0.308320, 0.636670, 1.250168, 2.473548",\
+ "0.131048, 0.346407, 0.642918, 1.253128, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.069083, 0.173593, 0.284859, 0.488802, 0.896688",\
+ "0.156491, 0.260911, 0.372140, 0.576107, 0.984042",\
+ "0.236870, 0.341243, 0.452167, 0.656136, 1.064073",\
+ "0.293615, 0.398792, 0.509709, 0.713380, 1.120721",\
+ "0.587968, 0.702133, 0.813340, 1.016393, 1.422498");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.025866, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.025866, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.026893, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.028907, 0.188402, 0.387616, 0.759217, 1.502420",\
+ "0.047268, 0.192671, 0.387690, 0.759988, 1.504586");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026043, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216886, 0.170957, 0.140757, 0.129414, 0.143099",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025866, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251193, 0.175871, 0.107712, 0.084745, 0.147659",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026043, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148813, -0.106396, -0.071909, -0.032486, 0.273561",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025866, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164349, -0.098434, -0.040775, 0.001186, 0.221794",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dpram_rml_o[0]_hldr*/
+
+} /* end of pin dpram_rml_o[0] */
+} /* end of bus dpram_rml_o */
+bus ( spram_rm_o ) {
+
+ bus_type : BUS5_type4 ;
+ direction : output ;
+
+pin("spram_rm_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002015 ;
+
+ /* Other user defined attributes. */
+ original_pin : spram_rm_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.249558, 2.482564",\
+ "0.028631, 0.300789, 0.635003, 1.249558, 2.482564",\
+ "0.041577, 0.303044, 0.635039, 1.249558, 2.482564",\
+ "0.053483, 0.306322, 0.635141, 1.249558, 2.482564",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.187425, 0.387787, 0.759976, 1.504353",\
+ "0.024575, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.025658, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.027727, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.046336, 0.191539, 0.388291, 0.759976, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.248329, 2.473548",\
+ "0.028631, 0.300789, 0.635003, 1.248329, 2.473548",\
+ "0.041577, 0.303044, 0.635039, 1.248404, 2.473548",\
+ "0.053483, 0.306322, 0.635141, 1.249148, 2.473548",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.025658, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.027727, 0.187236, 0.386737, 0.758647, 1.502467",\
+ "0.046336, 0.191539, 0.386809, 0.759417, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215993, 0.170064, 0.139864, 0.128520, 0.142206",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250605, 0.175284, 0.107125, 0.084158, 0.147071",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147920, -0.105503, -0.071016, -0.031593, 0.274454",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163761, -0.097846, -0.040187, 0.001774, 0.222382",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[4]_hldr*/
+
+} /* end of pin spram_rm_o[4] */
+
+pin("spram_rm_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002005 ;
+
+ /* Other user defined attributes. */
+ original_pin : spram_rm_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.249539, 2.482564",\
+ "0.028598, 0.300750, 0.634974, 1.249539, 2.482564",\
+ "0.041548, 0.303005, 0.635010, 1.249539, 2.482564",\
+ "0.053453, 0.306284, 0.635112, 1.249539, 2.482564",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.187404, 0.387772, 0.759966, 1.504356",\
+ "0.024552, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.025636, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.027706, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.046319, 0.191519, 0.388276, 0.759966, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.248310, 2.473548",\
+ "0.028598, 0.300750, 0.634974, 1.248310, 2.473548",\
+ "0.041548, 0.303005, 0.635010, 1.248385, 2.473548",\
+ "0.053453, 0.306284, 0.635112, 1.249129, 2.473548",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.025636, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.027706, 0.187215, 0.386722, 0.758638, 1.502470",\
+ "0.046319, 0.191519, 0.386794, 0.759408, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215976, 0.170047, 0.139847, 0.128503, 0.142188",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250595, 0.175273, 0.107114, 0.084147, 0.147061",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147903, -0.105486, -0.070999, -0.031576, 0.274471",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163751, -0.097835, -0.040177, 0.001784, 0.222392",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[3]_hldr*/
+
+} /* end of pin spram_rm_o[3] */
+
+pin("spram_rm_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002015 ;
+
+ /* Other user defined attributes. */
+ original_pin : spram_rm_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.249558, 2.482564",\
+ "0.028631, 0.300789, 0.635003, 1.249558, 2.482564",\
+ "0.041577, 0.303044, 0.635039, 1.249558, 2.482564",\
+ "0.053483, 0.306322, 0.635141, 1.249558, 2.482564",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.187425, 0.387787, 0.759976, 1.504353",\
+ "0.024575, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.025658, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.027727, 0.187570, 0.388291, 0.759976, 1.504353",\
+ "0.046336, 0.191539, 0.388291, 0.759976, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.048192, 0.201225, 0.376587, 0.699339, 1.344843",\
+ "0.134509, 0.288400, 0.463692, 0.786054, 1.430777",\
+ "0.217716, 0.376528, 0.551648, 0.873676, 1.517732",\
+ "0.275633, 0.440922, 0.615763, 0.937589, 1.581241",\
+ "0.575653, 0.790792, 0.966147, 1.286330, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024114, 0.299801, 0.633056, 1.248329, 2.473548",\
+ "0.028631, 0.300789, 0.635003, 1.248329, 2.473548",\
+ "0.041577, 0.303044, 0.635039, 1.248404, 2.473548",\
+ "0.053483, 0.306322, 0.635141, 1.249148, 2.473548",\
+ "0.129115, 0.344671, 0.641397, 1.252114, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.067832, 0.172938, 0.284377, 0.488489, 0.896714",\
+ "0.155243, 0.260256, 0.371658, 0.575794, 0.984068",\
+ "0.235603, 0.340590, 0.451685, 0.655823, 1.064099",\
+ "0.292298, 0.398139, 0.509228, 0.713068, 1.120747",\
+ "0.586128, 0.701477, 0.812860, 1.016081, 1.422524");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002015, 0.075014, 0.162014, 0.322013, 0.642011");
+ values ( "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.024575, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.025658, 0.186626, 0.386280, 0.757745, 1.500676",\
+ "0.027727, 0.187236, 0.386737, 0.758647, 1.502467",\
+ "0.046336, 0.191539, 0.386809, 0.759417, 1.504633");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215993, 0.170064, 0.139864, 0.128520, 0.142206",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250605, 0.175284, 0.107125, 0.084158, 0.147071",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024114, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147920, -0.105503, -0.071016, -0.031593, 0.274454",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024575, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163761, -0.097846, -0.040187, 0.001774, 0.222382",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[2]_hldr*/
+
+} /* end of pin spram_rm_o[2] */
+
+pin("spram_rm_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003002 ;
+
+ /* Other user defined attributes. */
+ original_pin : spram_rm_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.251459, 2.482564",\
+ "0.031840, 0.304583, 0.637840, 1.251459, 2.482564",\
+ "0.044392, 0.306804, 0.637876, 1.251459, 2.482564",\
+ "0.056346, 0.310032, 0.637981, 1.251459, 2.482564",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.189618, 0.389436, 0.761051, 1.504280",\
+ "0.026989, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.027967, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.029933, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.048080, 0.193656, 0.389937, 0.761051, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.250220, 2.473548",\
+ "0.031840, 0.304583, 0.637840, 1.250220, 2.473548",\
+ "0.044392, 0.306804, 0.637876, 1.250296, 2.473548",\
+ "0.056346, 0.310032, 0.637981, 1.251042, 2.473548",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.027967, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.029933, 0.189417, 0.388385, 0.759721, 1.502395",\
+ "0.048080, 0.193656, 0.388460, 0.760493, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.217652, 0.171723, 0.141523, 0.130179, 0.143864",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251704, 0.176383, 0.108224, 0.085257, 0.148171",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.149579, -0.107162, -0.072675, -0.033251, 0.272796",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164860, -0.098945, -0.041286, 0.000675, 0.221283",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[1]_hldr*/
+
+} /* end of pin spram_rm_o[1] */
+
+pin("spram_rm_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002026 ;
+
+ /* Other user defined attributes. */
+ original_pin : spram_rm_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.249579, 2.482563",\
+ "0.028666, 0.300830, 0.635034, 1.249579, 2.482563",\
+ "0.041608, 0.303085, 0.635070, 1.249579, 2.482563",\
+ "0.053514, 0.306363, 0.635172, 1.249579, 2.482563",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.187440, 0.387796, 0.759979, 1.504343",\
+ "0.024592, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.025674, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.027742, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.046348, 0.191554, 0.388300, 0.759979, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.248350, 2.473548",\
+ "0.028666, 0.300830, 0.635034, 1.248350, 2.473548",\
+ "0.041608, 0.303085, 0.635070, 1.248425, 2.473548",\
+ "0.053514, 0.306363, 0.635172, 1.249169, 2.473548",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.025674, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.027742, 0.187251, 0.386746, 0.758650, 1.502457",\
+ "0.046348, 0.191554, 0.386818, 0.759420, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216011, 0.170082, 0.139882, 0.128539, 0.142224",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250613, 0.175291, 0.107132, 0.084165, 0.147079",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147938, -0.105521, -0.071034, -0.031611, 0.274436",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163769, -0.097854, -0.040195, 0.001766, 0.222374",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_spram_rm_o[0]_hldr*/
+
+} /* end of pin spram_rm_o[0] */
+} /* end of bus spram_rm_o */
+bus ( sprgf_rm_o ) {
+
+ bus_type : BUS5_type4 ;
+ direction : output ;
+
+pin("sprgf_rm_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004037 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprgf_rm_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.053659, 0.205298, 0.379645, 0.701378, 1.344843",\
+ "0.140277, 0.292473, 0.466747, 0.788090, 1.430777",\
+ "0.224830, 0.380596, 0.554699, 0.875710, 1.517732",\
+ "0.284103, 0.444983, 0.618813, 0.939622, 1.581241",\
+ "0.592316, 0.794877, 0.969181, 1.288353, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.031452, 0.307528, 0.638897, 1.253452, 2.482564",\
+ "0.035203, 0.308560, 0.640814, 1.253452, 2.482564",\
+ "0.047343, 0.310745, 0.640850, 1.253452, 2.482564",\
+ "0.059348, 0.313921, 0.640958, 1.253452, 2.482564",\
+ "0.136469, 0.351276, 0.647183, 1.255971, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.072631, 0.175452, 0.286232, 0.489700, 0.896636",\
+ "0.160028, 0.262769, 0.373513, 0.577005, 0.983989",\
+ "0.240463, 0.343094, 0.453540, 0.657034, 1.064021",\
+ "0.297350, 0.400643, 0.511081, 0.714277, 1.120669",\
+ "0.593185, 0.703993, 0.814708, 1.017287, 1.422446");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.029527, 0.191922, 0.391170, 0.762184, 1.504210",\
+ "0.029527, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.030394, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.032251, 0.192081, 0.391669, 0.762184, 1.504210",\
+ "0.049913, 0.195880, 0.391669, 0.762184, 1.504490");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.053659, 0.205298, 0.379645, 0.701378, 1.344843",\
+ "0.140277, 0.292473, 0.466747, 0.788090, 1.430777",\
+ "0.224830, 0.380596, 0.554699, 0.875710, 1.517732",\
+ "0.284103, 0.444983, 0.618813, 0.939622, 1.581241",\
+ "0.592316, 0.794877, 0.969181, 1.288353, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.031452, 0.307528, 0.638897, 1.252203, 2.473548",\
+ "0.035203, 0.308560, 0.640814, 1.252203, 2.473548",\
+ "0.047343, 0.310745, 0.640850, 1.252279, 2.473548",\
+ "0.059348, 0.313921, 0.640958, 1.253027, 2.473548",\
+ "0.136469, 0.351276, 0.647183, 1.255971, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.072631, 0.175452, 0.286232, 0.489700, 0.896636",\
+ "0.160028, 0.262769, 0.373513, 0.577005, 0.983989",\
+ "0.240463, 0.343094, 0.453540, 0.657034, 1.064021",\
+ "0.297350, 0.400643, 0.511081, 0.714277, 1.120669",\
+ "0.593185, 0.703993, 0.814708, 1.017287, 1.422446");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004037, 0.077035, 0.163530, 0.323024, 0.642011");
+ values ( "0.029527, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.029527, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.030394, 0.191105, 0.389657, 0.759949, 1.500533",\
+ "0.032251, 0.191709, 0.390118, 0.760853, 1.502324",\
+ "0.049913, 0.195880, 0.390196, 0.761627, 1.504490");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.031452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.219390, 0.173461, 0.143262, 0.131918, 0.145603",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029527, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.252859, 0.177538, 0.109379, 0.086412, 0.149326",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.031452, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.151318, -0.108901, -0.074414, -0.034990, 0.271057",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.029527, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.166015, -0.100100, -0.042441, -0.000480, 0.220128",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[4]_hldr*/
+
+} /* end of pin sprgf_rm_o[4] */
+
+pin("sprgf_rm_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002031 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprgf_rm_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.048234, 0.201257, 0.376611, 0.699355, 1.344843",\
+ "0.134553, 0.288431, 0.463716, 0.786070, 1.430777",\
+ "0.217771, 0.376559, 0.551671, 0.873691, 1.517732",\
+ "0.275698, 0.440953, 0.615787, 0.937605, 1.581241",\
+ "0.575781, 0.790824, 0.966170, 1.286346, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024170, 0.299860, 0.633100, 1.249588, 2.482563",\
+ "0.028681, 0.300849, 0.635047, 1.249588, 2.482563",\
+ "0.041621, 0.303103, 0.635083, 1.249588, 2.482563",\
+ "0.053528, 0.306381, 0.635185, 1.249588, 2.482563",\
+ "0.129172, 0.344721, 0.641441, 1.252143, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.067866, 0.172955, 0.284390, 0.488497, 0.896712",\
+ "0.155277, 0.260274, 0.371670, 0.575802, 0.984065",\
+ "0.235637, 0.340608, 0.451697, 0.655831, 1.064097",\
+ "0.292333, 0.398157, 0.509240, 0.713075, 1.120745",\
+ "0.586178, 0.701495, 0.812873, 1.016089, 1.422521");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024610, 0.187457, 0.387810, 0.759990, 1.504349",\
+ "0.024610, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.025692, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.027759, 0.187602, 0.388314, 0.759990, 1.504349",\
+ "0.046361, 0.191570, 0.388314, 0.759990, 1.504629");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.048234, 0.201257, 0.376611, 0.699355, 1.344843",\
+ "0.134553, 0.288431, 0.463716, 0.786070, 1.430777",\
+ "0.217771, 0.376559, 0.551671, 0.873691, 1.517732",\
+ "0.275698, 0.440953, 0.615787, 0.937605, 1.581241",\
+ "0.575781, 0.790824, 0.966170, 1.286346, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024170, 0.299860, 0.633100, 1.248359, 2.473548",\
+ "0.028681, 0.300849, 0.635047, 1.248359, 2.473548",\
+ "0.041621, 0.303103, 0.635083, 1.248434, 2.473548",\
+ "0.053528, 0.306381, 0.635185, 1.249178, 2.473548",\
+ "0.129172, 0.344721, 0.641441, 1.252143, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.067866, 0.172955, 0.284390, 0.488497, 0.896712",\
+ "0.155277, 0.260274, 0.371670, 0.575802, 0.984065",\
+ "0.235637, 0.340608, 0.451697, 0.655831, 1.064097",\
+ "0.292333, 0.398157, 0.509240, 0.713075, 1.120745",\
+ "0.586178, 0.701495, 0.812873, 1.016089, 1.422521");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002031, 0.075029, 0.162026, 0.322021, 0.642011");
+ values ( "0.024610, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.024610, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.025692, 0.186657, 0.386303, 0.757760, 1.500672",\
+ "0.027759, 0.187268, 0.386760, 0.758661, 1.502463",\
+ "0.046361, 0.191570, 0.386832, 0.759431, 1.504629");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024170, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216019, 0.170090, 0.139890, 0.128547, 0.142232",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250621, 0.175300, 0.107141, 0.084173, 0.147087",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024170, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147946, -0.105529, -0.071042, -0.031619, 0.274428",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024610, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163777, -0.097862, -0.040203, 0.001758, 0.222366",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[3]_hldr*/
+
+} /* end of pin sprgf_rm_o[3] */
+
+pin("sprgf_rm_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003654 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprgf_rm_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.052623, 0.204527, 0.379066, 0.700992, 1.344843",\
+ "0.139184, 0.291701, 0.466168, 0.787704, 1.430777",\
+ "0.223482, 0.379826, 0.554121, 0.875325, 1.517732",\
+ "0.282499, 0.444214, 0.618235, 0.939237, 1.581241",\
+ "0.589159, 0.794103, 0.968606, 1.287970, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.030062, 0.306064, 0.637790, 1.252714, 2.482564",\
+ "0.033958, 0.307087, 0.639713, 1.252714, 2.482564",\
+ "0.046250, 0.309286, 0.639749, 1.252714, 2.482564",\
+ "0.058237, 0.312481, 0.639856, 1.252714, 2.482564",\
+ "0.135075, 0.350024, 0.646087, 1.255240, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.071715, 0.174972, 0.285877, 0.489467, 0.896647",\
+ "0.159114, 0.262289, 0.373158, 0.576772, 0.984000",\
+ "0.239535, 0.342616, 0.453185, 0.656801, 1.064032",\
+ "0.296386, 0.400165, 0.510726, 0.714044, 1.120680",\
+ "0.591837, 0.703513, 0.814354, 1.017055, 1.422457");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.028581, 0.191064, 0.390523, 0.761759, 1.504230",\
+ "0.028581, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.029490, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.031388, 0.191220, 0.391022, 0.761759, 1.504230",\
+ "0.049229, 0.195051, 0.391022, 0.761759, 1.504510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.052623, 0.204527, 0.379066, 0.700992, 1.344843",\
+ "0.139184, 0.291701, 0.466168, 0.787704, 1.430777",\
+ "0.223482, 0.379826, 0.554121, 0.875325, 1.517732",\
+ "0.282499, 0.444214, 0.618235, 0.939237, 1.581241",\
+ "0.589159, 0.794103, 0.968606, 1.287970, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.030062, 0.306064, 0.637790, 1.251469, 2.473548",\
+ "0.033958, 0.307087, 0.639713, 1.251469, 2.473548",\
+ "0.046250, 0.309286, 0.639749, 1.251544, 2.473548",\
+ "0.058237, 0.312481, 0.639856, 1.252292, 2.473548",\
+ "0.135075, 0.350024, 0.646087, 1.255240, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.071715, 0.174972, 0.285877, 0.489467, 0.896647",\
+ "0.159114, 0.262289, 0.373158, 0.576772, 0.984000",\
+ "0.239535, 0.342616, 0.453185, 0.656801, 1.064032",\
+ "0.296386, 0.400165, 0.510726, 0.714044, 1.120680",\
+ "0.591837, 0.703513, 0.814354, 1.017055, 1.422457");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003654, 0.076652, 0.163243, 0.322832, 0.642011");
+ values ( "0.028581, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.028581, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.029490, 0.190249, 0.389010, 0.759525, 1.500553",\
+ "0.031388, 0.190855, 0.389471, 0.760429, 1.502345",\
+ "0.049229, 0.195051, 0.389548, 0.761202, 1.504510");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030062, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.218747, 0.172818, 0.142618, 0.131274, 0.144959",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.252429, 0.177108, 0.108949, 0.085981, 0.148895",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030062, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.150674, -0.108257, -0.073770, -0.034347, 0.271701",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.028581, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.165584, -0.099669, -0.042010, -0.000049, 0.220558",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[2]_hldr*/
+
+} /* end of pin sprgf_rm_o[2] */
+
+pin("sprgf_rm_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002005 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprgf_rm_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.249539, 2.482564",\
+ "0.028598, 0.300750, 0.634974, 1.249539, 2.482564",\
+ "0.041548, 0.303005, 0.635010, 1.249539, 2.482564",\
+ "0.053453, 0.306284, 0.635112, 1.249539, 2.482564",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.187404, 0.387772, 0.759966, 1.504356",\
+ "0.024552, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.025636, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.027706, 0.187549, 0.388276, 0.759966, 1.504356",\
+ "0.046319, 0.191519, 0.388276, 0.759966, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.048165, 0.201205, 0.376572, 0.699329, 1.344843",\
+ "0.134480, 0.288380, 0.463677, 0.786044, 1.430777",\
+ "0.217680, 0.376507, 0.551633, 0.873666, 1.517732",\
+ "0.275590, 0.440902, 0.615748, 0.937579, 1.581241",\
+ "0.575569, 0.790772, 0.966132, 1.286320, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024077, 0.299762, 0.633026, 1.248310, 2.473548",\
+ "0.028598, 0.300750, 0.634974, 1.248310, 2.473548",\
+ "0.041548, 0.303005, 0.635010, 1.248385, 2.473548",\
+ "0.053453, 0.306284, 0.635112, 1.249129, 2.473548",\
+ "0.129078, 0.344637, 0.641368, 1.252094, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.067810, 0.172926, 0.284369, 0.488484, 0.896715",\
+ "0.155221, 0.260244, 0.371649, 0.575789, 0.984069",\
+ "0.235580, 0.340579, 0.451676, 0.655818, 1.064101",\
+ "0.292274, 0.398127, 0.509219, 0.713062, 1.120748",\
+ "0.586096, 0.701465, 0.812852, 1.016076, 1.422525");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002005, 0.075004, 0.162007, 0.322008, 0.642011");
+ values ( "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.024552, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.025636, 0.186605, 0.386265, 0.757736, 1.500678",\
+ "0.027706, 0.187215, 0.386722, 0.758638, 1.502470",\
+ "0.046319, 0.191519, 0.386794, 0.759408, 1.504636");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.215976, 0.170047, 0.139847, 0.128503, 0.142188",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250595, 0.175273, 0.107114, 0.084147, 0.147061",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024077, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147903, -0.105486, -0.070999, -0.031576, 0.274471",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024552, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163751, -0.097835, -0.040177, 0.001784, 0.222392",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[1]_hldr*/
+
+} /* end of pin sprgf_rm_o[1] */
+
+pin("sprgf_rm_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002547 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprgf_rm_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.049629, 0.202296, 0.377391, 0.699875, 1.344843",\
+ "0.136025, 0.289471, 0.464495, 0.786589, 1.430777",\
+ "0.219586, 0.377597, 0.552450, 0.874211, 1.517732",\
+ "0.277859, 0.441990, 0.616565, 0.938124, 1.581241",\
+ "0.580033, 0.791866, 0.966945, 1.286862, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.026043, 0.301832, 0.634591, 1.250582, 2.482563",\
+ "0.030358, 0.302831, 0.636530, 1.250582, 2.482563",\
+ "0.043092, 0.305068, 0.636566, 1.250582, 2.482563",\
+ "0.055024, 0.308320, 0.636670, 1.250582, 2.482563",\
+ "0.131048, 0.346407, 0.642918, 1.253128, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.069083, 0.173593, 0.284859, 0.488802, 0.896688",\
+ "0.156491, 0.260911, 0.372140, 0.576107, 0.984042",\
+ "0.236870, 0.341243, 0.452167, 0.656136, 1.064073",\
+ "0.293615, 0.398792, 0.509709, 0.713380, 1.120721",\
+ "0.587968, 0.702133, 0.813340, 1.016393, 1.422498");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.025866, 0.188597, 0.388667, 0.760546, 1.504306",\
+ "0.025866, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.026893, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.028907, 0.188746, 0.389169, 0.760546, 1.504306",\
+ "0.047268, 0.192671, 0.389169, 0.760546, 1.504586");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.049629, 0.202296, 0.377391, 0.699875, 1.344843",\
+ "0.136025, 0.289471, 0.464495, 0.786589, 1.430777",\
+ "0.219586, 0.377597, 0.552450, 0.874211, 1.517732",\
+ "0.277859, 0.441990, 0.616565, 0.938124, 1.581241",\
+ "0.580033, 0.791866, 0.966945, 1.286862, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.026043, 0.301832, 0.634591, 1.249347, 2.473548",\
+ "0.030358, 0.302831, 0.636530, 1.249347, 2.473548",\
+ "0.043092, 0.305068, 0.636566, 1.249423, 2.473548",\
+ "0.055024, 0.308320, 0.636670, 1.250168, 2.473548",\
+ "0.131048, 0.346407, 0.642918, 1.253128, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.069083, 0.173593, 0.284859, 0.488802, 0.896688",\
+ "0.156491, 0.260911, 0.372140, 0.576107, 0.984042",\
+ "0.236870, 0.341243, 0.452167, 0.656136, 1.064073",\
+ "0.293615, 0.398792, 0.509709, 0.713380, 1.120721",\
+ "0.587968, 0.702133, 0.813340, 1.016393, 1.422498");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002547, 0.075545, 0.162413, 0.322279, 0.642011");
+ values ( "0.025866, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.025866, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.026893, 0.187793, 0.387158, 0.758315, 1.500628",\
+ "0.028907, 0.188402, 0.387616, 0.759217, 1.502420",\
+ "0.047268, 0.192671, 0.387690, 0.759988, 1.504586");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026043, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216886, 0.170957, 0.140757, 0.129414, 0.143099",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025866, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251193, 0.175871, 0.107712, 0.084745, 0.147659",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026043, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148813, -0.106396, -0.071909, -0.032486, 0.273561",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025866, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164349, -0.098434, -0.040775, 0.001186, 0.221794",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprgf_rm_o[0]_hldr*/
+
+} /* end of pin sprgf_rm_o[0] */
+} /* end of bus sprgf_rm_o */
+bus ( sprom_rm_o ) {
+
+ bus_type : BUS5_type4 ;
+ direction : output ;
+
+pin("sprom_rm_o[4]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003002 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprom_rm_o[4];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.251459, 2.482564",\
+ "0.031840, 0.304583, 0.637840, 1.251459, 2.482564",\
+ "0.044392, 0.306804, 0.637876, 1.251459, 2.482564",\
+ "0.056346, 0.310032, 0.637981, 1.251459, 2.482564",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.189618, 0.389436, 0.761051, 1.504280",\
+ "0.026989, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.027967, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.029933, 0.189769, 0.389937, 0.761051, 1.504280",\
+ "0.048080, 0.193656, 0.389937, 0.761051, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[4]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.050861, 0.203214, 0.378080, 0.700335, 1.344843",\
+ "0.137325, 0.290388, 0.465183, 0.787048, 1.430777",\
+ "0.221189, 0.378514, 0.553137, 0.874669, 1.517732",\
+ "0.279768, 0.442905, 0.617252, 0.938582, 1.581241",\
+ "0.583788, 0.792786, 0.967628, 1.287318, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.027696, 0.303573, 0.635907, 1.250220, 2.473548",\
+ "0.031840, 0.304583, 0.637840, 1.250220, 2.473548",\
+ "0.044392, 0.306804, 0.637876, 1.250296, 2.473548",\
+ "0.056346, 0.310032, 0.637981, 1.251042, 2.473548",\
+ "0.132705, 0.347895, 0.644222, 1.253997, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.070172, 0.174163, 0.285281, 0.489079, 0.896674",\
+ "0.157576, 0.261481, 0.372562, 0.576384, 0.984028",\
+ "0.237972, 0.341811, 0.452589, 0.656412, 1.064059",\
+ "0.294761, 0.399360, 0.510131, 0.713656, 1.120707",\
+ "0.589569, 0.702704, 0.813760, 1.016668, 1.422484");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003002, 0.076001, 0.162754, 0.322506, 0.642011");
+ values ( "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.026989, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.027967, 0.188809, 0.387926, 0.758818, 1.500603",\
+ "0.029933, 0.189417, 0.388385, 0.759721, 1.502395",\
+ "0.048080, 0.193656, 0.388460, 0.760493, 1.504560");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[4]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.217652, 0.171723, 0.141523, 0.130179, 0.143864",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251704, 0.176383, 0.108224, 0.085257, 0.148171",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[4]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.027696, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.149579, -0.107162, -0.072675, -0.033251, 0.272796",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026989, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164860, -0.098945, -0.041286, 0.000675, 0.221283",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[4]_hldr*/
+
+} /* end of pin sprom_rm_o[4] */
+
+pin("sprom_rm_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002553 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprom_rm_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.049647, 0.202309, 0.377401, 0.699882, 1.344843",\
+ "0.136044, 0.289484, 0.464505, 0.786596, 1.430777",\
+ "0.219609, 0.377611, 0.552460, 0.874217, 1.517732",\
+ "0.277887, 0.442003, 0.616575, 0.938130, 1.581241",\
+ "0.580088, 0.791879, 0.966955, 1.286869, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.026067, 0.301857, 0.634610, 1.250594, 2.482563",\
+ "0.030380, 0.302857, 0.636549, 1.250594, 2.482563",\
+ "0.043111, 0.305094, 0.636586, 1.250594, 2.482563",\
+ "0.055044, 0.308345, 0.636689, 1.250594, 2.482563",\
+ "0.131072, 0.346429, 0.642937, 1.253140, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.069111, 0.173607, 0.284871, 0.488812, 0.896694",\
+ "0.156518, 0.260926, 0.372152, 0.576117, 0.984047",\
+ "0.236897, 0.341257, 0.452179, 0.656146, 1.064079",\
+ "0.293644, 0.398806, 0.509722, 0.713390, 1.120727",\
+ "0.588008, 0.702147, 0.813352, 1.016403, 1.422503");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.025894, 0.188623, 0.388689, 0.760565, 1.504316",\
+ "0.025894, 0.188772, 0.389191, 0.760565, 1.504316",\
+ "0.026920, 0.188772, 0.389191, 0.760565, 1.504316",\
+ "0.028933, 0.188772, 0.389191, 0.760565, 1.504316",\
+ "0.047288, 0.192696, 0.389191, 0.760565, 1.504596");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.049647, 0.202309, 0.377401, 0.699882, 1.344843",\
+ "0.136044, 0.289484, 0.464505, 0.786596, 1.430777",\
+ "0.219609, 0.377611, 0.552460, 0.874217, 1.517732",\
+ "0.277887, 0.442003, 0.616575, 0.938130, 1.581241",\
+ "0.580088, 0.791879, 0.966955, 1.286869, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.026067, 0.301857, 0.634610, 1.249360, 2.473548",\
+ "0.030380, 0.302857, 0.636549, 1.249360, 2.473548",\
+ "0.043111, 0.305094, 0.636586, 1.249435, 2.473548",\
+ "0.055044, 0.308345, 0.636689, 1.250180, 2.473548",\
+ "0.131072, 0.346429, 0.642937, 1.253140, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.069111, 0.173607, 0.284871, 0.488812, 0.896694",\
+ "0.156518, 0.260926, 0.372152, 0.576117, 0.984047",\
+ "0.236897, 0.341257, 0.452179, 0.656146, 1.064079",\
+ "0.293644, 0.398806, 0.509722, 0.713390, 1.120727",\
+ "0.588008, 0.702147, 0.813352, 1.016403, 1.422503");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002553, 0.075552, 0.162418, 0.322282, 0.642011");
+ values ( "0.025894, 0.187819, 0.387180, 0.758333, 1.500639",\
+ "0.025894, 0.187819, 0.387180, 0.758333, 1.500639",\
+ "0.026920, 0.187819, 0.387180, 0.758333, 1.500639",\
+ "0.028933, 0.188428, 0.387638, 0.759236, 1.502430",\
+ "0.047288, 0.192696, 0.387712, 0.760007, 1.504596");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026067, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216897, 0.170968, 0.140769, 0.129425, 0.143110",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025894, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251206, 0.175884, 0.107725, 0.084758, 0.147672",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.026067, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148824, -0.106407, -0.071920, -0.032497, 0.273550",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025894, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164361, -0.098446, -0.040787, 0.001174, 0.221781",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[3]_hldr*/
+
+} /* end of pin sprom_rm_o[3] */
+
+pin("sprom_rm_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.004615 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprom_rm_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.055222, 0.206463, 0.380520, 0.701961, 1.344843",\
+ "0.141926, 0.293637, 0.467620, 0.788672, 1.430777",\
+ "0.226864, 0.381760, 0.555571, 0.876292, 1.517732",\
+ "0.286525, 0.446144, 0.619684, 0.940203, 1.581241",\
+ "0.597080, 0.796044, 0.970048, 1.288931, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.033550, 0.309737, 0.640567, 1.254566, 2.482564",\
+ "0.037083, 0.310781, 0.642475, 1.254566, 2.482564",\
+ "0.048991, 0.312947, 0.642512, 1.254566, 2.482564",\
+ "0.061025, 0.316093, 0.642622, 1.254566, 2.482564",\
+ "0.138571, 0.353164, 0.648838, 1.257074, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.073991, 0.176164, 0.286756, 0.490040, 0.896607",\
+ "0.161383, 0.263480, 0.374037, 0.577345, 0.983960",\
+ "0.241839, 0.343803, 0.454064, 0.657373, 1.063992",\
+ "0.298782, 0.401353, 0.511604, 0.714616, 1.120639",\
+ "0.595184, 0.704706, 0.815229, 1.017625, 1.422416");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.030929, 0.193196, 0.392126, 0.762803, 1.504157",\
+ "0.030929, 0.193359, 0.392623, 0.762803, 1.504157",\
+ "0.031735, 0.193359, 0.392623, 0.762803, 1.504157",\
+ "0.033533, 0.193359, 0.392623, 0.762803, 1.504157",\
+ "0.050926, 0.197109, 0.392623, 0.762803, 1.504437");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.055222, 0.206463, 0.380520, 0.701961, 1.344843",\
+ "0.141926, 0.293637, 0.467620, 0.788672, 1.430777",\
+ "0.226864, 0.381760, 0.555571, 0.876292, 1.517732",\
+ "0.286525, 0.446144, 0.619684, 0.940203, 1.581241",\
+ "0.597080, 0.796044, 0.970048, 1.288931, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.033550, 0.309737, 0.640567, 1.253311, 2.473548",\
+ "0.037083, 0.310781, 0.642475, 1.253311, 2.473548",\
+ "0.048991, 0.312947, 0.642512, 1.253386, 2.473548",\
+ "0.061025, 0.316093, 0.642622, 1.254135, 2.473548",\
+ "0.138571, 0.353164, 0.648838, 1.257074, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.073991, 0.176164, 0.286756, 0.490040, 0.896607",\
+ "0.161383, 0.263480, 0.374037, 0.577345, 0.983960",\
+ "0.241839, 0.343803, 0.454064, 0.657373, 1.063992",\
+ "0.298782, 0.401353, 0.511604, 0.714616, 1.120639",\
+ "0.595184, 0.704706, 0.815229, 1.017625, 1.422416");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.004615, 0.077613, 0.163964, 0.323313, 0.642011");
+ values ( "0.030929, 0.192373, 0.390610, 0.760567, 1.500480",\
+ "0.030929, 0.192373, 0.390610, 0.760567, 1.500480",\
+ "0.031735, 0.192373, 0.390610, 0.760567, 1.500480",\
+ "0.033533, 0.192976, 0.391072, 0.761472, 1.502271",\
+ "0.050926, 0.197109, 0.391153, 0.762247, 1.504437");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[2]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.033550, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.220362, 0.174433, 0.144233, 0.132890, 0.146575",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030929, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.253498, 0.178177, 0.110018, 0.087050, 0.149964",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[2]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.033550, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.152289, -0.109872, -0.075385, -0.035962, 0.270085",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.030929, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.166653, -0.100738, -0.043079, -0.001118, 0.219490",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[2]_hldr*/
+
+} /* end of pin sprom_rm_o[2] */
+
+pin("sprom_rm_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002475 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprom_rm_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.250443, 2.482564",\
+ "0.030125, 0.302556, 0.636324, 1.250443, 2.482564",\
+ "0.042888, 0.304795, 0.636360, 1.250443, 2.482564",\
+ "0.054816, 0.308050, 0.636463, 1.250443, 2.482564",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.482564");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.188435, 0.388543, 0.760465, 1.504307",\
+ "0.025687, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.026721, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.028743, 0.188583, 0.389046, 0.760465, 1.504307",\
+ "0.047139, 0.192514, 0.389046, 0.760465, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.049435, 0.202151, 0.377283, 0.699803, 1.344843",\
+ "0.135820, 0.289326, 0.464387, 0.786517, 1.430777",\
+ "0.219334, 0.377453, 0.552342, 0.874138, 1.517732",\
+ "0.277559, 0.441846, 0.616457, 0.938052, 1.581241",\
+ "0.579442, 0.791721, 0.966837, 1.286790, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025782, 0.301558, 0.634384, 1.249210, 2.473548",\
+ "0.030125, 0.302556, 0.636324, 1.249210, 2.473548",\
+ "0.042888, 0.304795, 0.636360, 1.249285, 2.473548",\
+ "0.054816, 0.308050, 0.636463, 1.250030, 2.473548",\
+ "0.130787, 0.346172, 0.642713, 1.252991, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.068909, 0.173502, 0.284792, 0.488757, 0.896689",\
+ "0.156317, 0.260820, 0.372072, 0.576063, 0.984042",\
+ "0.236694, 0.341152, 0.452099, 0.656091, 1.064074",\
+ "0.293432, 0.398701, 0.509642, 0.713335, 1.120722",\
+ "0.587713, 0.702042, 0.813273, 1.016348, 1.422499");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002475, 0.075473, 0.162359, 0.322243, 0.642011");
+ values ( "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.025687, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.026721, 0.187631, 0.387035, 0.758233, 1.500630",\
+ "0.028743, 0.188240, 0.387493, 0.759136, 1.502422",\
+ "0.047139, 0.192514, 0.387566, 0.759907, 1.504587");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[1]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216765, 0.170836, 0.140637, 0.129293, 0.142978",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.251111, 0.175790, 0.107631, 0.084664, 0.147578",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[1]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025782, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.148693, -0.106276, -0.071789, -0.032365, 0.273682",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.025687, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.164267, -0.098352, -0.040693, 0.001268, 0.221876",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[1]_hldr*/
+
+} /* end of pin sprom_rm_o[1] */
+
+pin("sprom_rm_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.642011 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002026 ;
+
+ /* Other user defined attributes. */
+ original_pin : sprom_rm_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.249579, 2.482563",\
+ "0.028666, 0.300830, 0.635034, 1.249579, 2.482563",\
+ "0.041608, 0.303085, 0.635070, 1.249579, 2.482563",\
+ "0.053514, 0.306363, 0.635172, 1.249579, 2.482563",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.482563");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.187440, 0.387796, 0.759979, 1.504343",\
+ "0.024592, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.025674, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.027742, 0.187585, 0.388300, 0.759979, 1.504343",\
+ "0.046348, 0.191554, 0.388300, 0.759979, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.048221, 0.201247, 0.376603, 0.699350, 1.344843",\
+ "0.134540, 0.288422, 0.463709, 0.786065, 1.430777",\
+ "0.217754, 0.376549, 0.551664, 0.873687, 1.517732",\
+ "0.275678, 0.440944, 0.615780, 0.937600, 1.581241",\
+ "0.575742, 0.790814, 0.966163, 1.286341, 1.926697");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024153, 0.299842, 0.633087, 1.248350, 2.473548",\
+ "0.028666, 0.300830, 0.635034, 1.248350, 2.473548",\
+ "0.041608, 0.303085, 0.635070, 1.248425, 2.473548",\
+ "0.053514, 0.306363, 0.635172, 1.249169, 2.473548",\
+ "0.129154, 0.344706, 0.641428, 1.252134, 2.473548");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.067848, 0.172946, 0.284382, 0.488491, 0.896709",\
+ "0.155259, 0.260265, 0.371663, 0.575796, 0.984062",\
+ "0.235619, 0.340599, 0.451690, 0.655824, 1.064094",\
+ "0.292315, 0.398147, 0.509233, 0.713069, 1.120741",\
+ "0.586152, 0.701486, 0.812865, 1.016083, 1.422518");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002026, 0.075025, 0.162022, 0.322018, 0.642011");
+ values ( "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.024592, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.025674, 0.186641, 0.386289, 0.757748, 1.500666",\
+ "0.027742, 0.187251, 0.386746, 0.758650, 1.502457",\
+ "0.046348, 0.191554, 0.386818, 0.759420, 1.504623");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.207828, 0.161899, 0.131700, 0.120356, 0.134041",\
+ "0.216011, 0.170082, 0.139882, 0.128539, 0.142224",\
+ "0.288779, 0.242850, 0.212651, 0.201307, 0.214992",\
+ "0.380040, 0.333963, 0.303752, 0.292400, 0.306034",\
+ "0.827149, 0.779820, 0.749512, 0.738085, 0.751291");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.242722, 0.167401, 0.099242, 0.076275, 0.139189",\
+ "0.250613, 0.175291, 0.107132, 0.084165, 0.147079",\
+ "0.327767, 0.252445, 0.184286, 0.161319, 0.224233",\
+ "0.428766, 0.353454, 0.285343, 0.262454, 0.326079",\
+ "0.935354, 0.860120, 0.792428, 0.770222, 0.840039");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024153, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.139756, -0.097339, -0.062852, -0.023429, 0.282618",\
+ "-0.147938, -0.105521, -0.071034, -0.031611, 0.274436",\
+ "-0.220707, -0.178290, -0.143803, -0.104379, 0.201668",\
+ "-0.311850, -0.269460, -0.234911, -0.196695, 0.094357",\
+ "-0.757887, -0.715724, -0.680647, -0.652650, -0.488425");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.024592, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.155880, -0.089965, -0.032306, 0.009655, 0.230263",\
+ "-0.163769, -0.097854, -0.040195, 0.001766, 0.222374",\
+ "-0.240964, -0.175049, -0.117390, -0.075429, 0.145179",\
+ "-0.341987, -0.275921, -0.218047, -0.176027, 0.044207",\
+ "-0.848724, -0.781360, -0.721623, -0.679100, -0.462092");
+ }
+
+ } /* end of arc clk_ast_tlul_i_sprom_rm_o[0]_hldr*/
+
+} /* end of pin sprom_rm_o[0] */
+} /* end of bus sprom_rm_o */
+bus ( dft_scan_md_o ) {
+
+ bus_type : BUS4_type6 ;
+ direction : output ;
+
+pin("dft_scan_md_o[3]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003517 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_scan_md_o[3];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.133436, 0.291149, 0.448015, 0.761558, 1.388635",\
+ "0.217239, 0.374877, 0.531734, 0.845677, 1.473578",\
+ "0.292722, 0.450435, 0.607370, 0.921610, 1.550114",\
+ "0.345414, 0.503270, 0.660387, 0.974530, 1.602811",\
+ "0.613422, 0.771515, 0.928749, 1.242027, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.066308, 0.363809, 0.664826, 1.265395, 2.466601",\
+ "0.066379, 0.363809, 0.664826, 1.265395, 2.466601",\
+ "0.066379, 0.364085, 0.666054, 1.266438, 2.466601",\
+ "0.066379, 0.364085, 0.666054, 1.266438, 2.466601",\
+ "0.066665, 0.364152, 0.666054, 1.266438, 2.466601");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.114669, 0.217180, 0.316410, 0.514247, 0.909878",\
+ "0.195349, 0.297552, 0.396278, 0.593860, 0.989031",\
+ "0.275060, 0.377342, 0.475886, 0.672942, 1.067052",\
+ "0.331983, 0.434648, 0.533289, 0.730356, 1.124476",\
+ "0.627120, 0.733734, 0.832492, 1.029975, 1.424937");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.047862, 0.221071, 0.402991, 0.762572, 1.481727",\
+ "0.048050, 0.221071, 0.402991, 0.762572, 1.484038",\
+ "0.048841, 0.221071, 0.402991, 0.762572, 1.484038",\
+ "0.050174, 0.221071, 0.402991, 0.762572, 1.484038",\
+ "0.063454, 0.223134, 0.402991, 0.763435, 1.490666");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[3]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.133312, 0.291022, 0.447820, 0.761354, 1.388420",\
+ "0.217237, 0.374875, 0.531731, 0.845675, 1.473578",\
+ "0.292688, 0.450412, 0.607364, 0.921580, 1.550030",\
+ "0.345261, 0.502988, 0.659849, 0.973849, 1.601865",\
+ "0.613232, 0.771275, 0.928568, 1.241507, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.066239, 0.363467, 0.663180, 1.263144, 2.462725",\
+ "0.066251, 0.363467, 0.663180, 1.263144, 2.462725",\
+ "0.066251, 0.363585, 0.663361, 1.263144, 2.462725",\
+ "0.066330, 0.363585, 0.663361, 1.263144, 2.462725",\
+ "0.066585, 0.363585, 0.663361, 1.263144, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.114669, 0.217179, 0.316406, 0.514185, 0.909696",\
+ "0.195349, 0.297552, 0.396278, 0.593860, 0.989031",\
+ "0.275060, 0.377342, 0.475886, 0.672905, 1.066937",\
+ "0.331983, 0.434648, 0.533289, 0.730334, 1.124409",\
+ "0.627120, 0.733671, 0.832318, 1.029654, 1.424330");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003517, 0.023292, 0.043066, 0.082615, 0.161713");
+ values ( "0.047860, 0.219783, 0.399450, 0.759952, 1.480082",\
+ "0.047983, 0.219783, 0.399450, 0.759952, 1.480442",\
+ "0.048841, 0.219783, 0.399450, 0.759952, 1.480924",\
+ "0.050169, 0.219999, 0.399514, 0.759952, 1.480924",\
+ "0.063451, 0.222984, 0.400129, 0.761188, 1.483772");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[3]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.066308, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.460686, 0.485165, 0.562988, 0.630573, 1.061400",\
+ "0.481673, 0.506153, 0.583976, 0.651561, 1.082387",\
+ "0.534849, 0.559328, 0.637151, 0.704736, 1.135562",\
+ "0.617824, 0.642303, 0.720126, 0.787711, 1.218538",\
+ "0.947556, 0.972173, 1.049996, 1.117581, 1.548407");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.047862, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.457000, 0.374371, 0.299229, 0.265511, 0.232819",\
+ "0.477245, 0.394617, 0.319474, 0.285756, 0.253064",\
+ "0.547749, 0.465121, 0.389978, 0.356260, 0.323568",\
+ "0.640993, 0.558364, 0.483222, 0.449504, 0.416811",\
+ "1.063337, 0.980709, 0.905566, 0.871848, 0.839156");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[3]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.066239, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.335865, -0.312869, -0.277184, -0.251910, -0.123825",\
+ "-0.356827, -0.333831, -0.298147, -0.272873, -0.144787",\
+ "-0.410399, -0.387403, -0.351719, -0.326444, -0.198359",\
+ "-0.492968, -0.469972, -0.434287, -0.409013, -0.280927",\
+ "-0.820618, -0.797635, -0.761950, -0.736676, -0.608590");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.047860, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.242066, -0.200653, -0.167936, -0.130741, 0.097416",\
+ "-0.262424, -0.221011, -0.188294, -0.151099, 0.077058",\
+ "-0.336018, -0.294606, -0.261888, -0.224693, 0.003464",\
+ "-0.427308, -0.385895, -0.353178, -0.315983, -0.087826",\
+ "-0.831346, -0.789933, -0.757216, -0.720060, -0.491903");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[3]_hldr*/
+
+} /* end of pin dft_scan_md_o[3] */
+
+pin("dft_scan_md_o[2]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002946 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_scan_md_o[2];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.089185, 0.209900, 0.411017, 0.726230, 1.356390",\
+ "0.176530, 0.297275, 0.498423, 0.814441, 1.446276",\
+ "0.269642, 0.392143, 0.593017, 0.908861, 1.540369",\
+ "0.337617, 0.463374, 0.664040, 0.979619, 1.610599",\
+ "0.699386, 0.858557, 1.060886, 1.375366, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.068736, 0.284281, 0.666318, 1.270003, 2.477274",\
+ "0.069806, 0.284281, 0.666318, 1.270003, 2.477274",\
+ "0.079825, 0.285836, 0.666318, 1.270003, 2.477473",\
+ "0.092727, 0.288939, 0.666318, 1.270003, 2.478527",\
+ "0.183999, 0.330916, 0.673768, 1.274123, 2.479640");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.114548, 0.198291, 0.327841, 0.529548, 0.932669",\
+ "0.202420, 0.286233, 0.415819, 0.617532, 1.020660",\
+ "0.283719, 0.367201, 0.496624, 0.698334, 1.101477",\
+ "0.341605, 0.425242, 0.554619, 0.756211, 1.159115",\
+ "0.647553, 0.733958, 0.863532, 1.064748, 1.466840");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.059272, 0.178664, 0.407996, 0.776762, 1.514808",\
+ "0.059349, 0.178981, 0.409509, 0.776762, 1.514808",\
+ "0.059349, 0.178981, 0.409796, 0.777827, 1.514808",\
+ "0.059903, 0.178981, 0.409796, 0.777827, 1.514808",\
+ "0.069603, 0.181400, 0.409796, 0.777827, 1.514808");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[2]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.089178, 0.209899, 0.411017, 0.726223, 1.356368",\
+ "0.176530, 0.297223, 0.498130, 0.813320, 1.443459",\
+ "0.269641, 0.392139, 0.592998, 0.908848, 1.540369",\
+ "0.337615, 0.463370, 0.664029, 0.979611, 1.610599",\
+ "0.699305, 0.858522, 1.060836, 1.375332, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.068736, 0.284090, 0.664476, 1.268786, 2.477107",\
+ "0.069799, 0.284090, 0.664476, 1.268786, 2.477170",\
+ "0.079823, 0.285806, 0.664476, 1.268786, 2.477473",\
+ "0.092726, 0.288922, 0.664476, 1.268786, 2.478218",\
+ "0.183999, 0.330234, 0.669979, 1.271116, 2.478674");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.114547, 0.198291, 0.327841, 0.529547, 0.932665",\
+ "0.202385, 0.286186, 0.415735, 0.617437, 1.020546",\
+ "0.283468, 0.366941, 0.496348, 0.698061, 1.101213",\
+ "0.341452, 0.425085, 0.554450, 0.756012, 1.158853",\
+ "0.647498, 0.733909, 0.863481, 1.064711, 1.466833");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002946, 0.017242, 0.041754, 0.080562, 0.158177");
+ values ( "0.059268, 0.178282, 0.407986, 0.775351, 1.510125",\
+ "0.059268, 0.178282, 0.408103, 0.775351, 1.510125",\
+ "0.059268, 0.178282, 0.408103, 0.775351, 1.510553",\
+ "0.059897, 0.178402, 0.408103, 0.775351, 1.510553",\
+ "0.069562, 0.181271, 0.408103, 0.775351, 1.510553");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[2]_redg_min*/
+
+} /* end of pin dft_scan_md_o[2] */
+
+pin("dft_scan_md_o[1]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.158177 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.002940 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_scan_md_o[1];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.089114, 0.209844, 0.410975, 0.726203, 1.356391",\
+ "0.176459, 0.297219, 0.498381, 0.814414, 1.446276",\
+ "0.269560, 0.392087, 0.592975, 0.908833, 1.540369",\
+ "0.337521, 0.463318, 0.663998, 0.979591, 1.610599",\
+ "0.699205, 0.858501, 1.060843, 1.375339, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.068629, 0.284175, 0.666239, 1.269949, 2.477274",\
+ "0.069702, 0.284175, 0.666239, 1.269949, 2.477274",\
+ "0.079734, 0.285730, 0.666239, 1.269949, 2.477474",\
+ "0.092637, 0.288835, 0.666239, 1.269949, 2.478527",\
+ "0.183880, 0.330821, 0.673696, 1.274070, 2.479641");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.114532, 0.198282, 0.327841, 0.529557, 0.932695",\
+ "0.202404, 0.286224, 0.415819, 0.617541, 1.020687",\
+ "0.283703, 0.367192, 0.496624, 0.698343, 1.101503",\
+ "0.341588, 0.425233, 0.554619, 0.756220, 1.159141",\
+ "0.647534, 0.733949, 0.863532, 1.064757, 1.466866");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.059254, 0.178648, 0.407996, 0.776778, 1.514857",\
+ "0.059330, 0.178965, 0.409508, 0.776778, 1.514857",\
+ "0.059330, 0.178965, 0.409796, 0.777843, 1.514857",\
+ "0.059885, 0.178965, 0.409796, 0.777843, 1.514857",\
+ "0.069589, 0.181384, 0.409796, 0.777843, 1.514857");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[1]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.089108, 0.209843, 0.410975, 0.726196, 1.356369",\
+ "0.176459, 0.297167, 0.498088, 0.813292, 1.443459",\
+ "0.269559, 0.392083, 0.592956, 0.908820, 1.540369",\
+ "0.337519, 0.463314, 0.663987, 0.979583, 1.610599",\
+ "0.699124, 0.858466, 1.060793, 1.375304, 2.003839");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.068628, 0.283984, 0.664398, 1.268733, 2.477107",\
+ "0.069695, 0.283984, 0.664398, 1.268733, 2.477171",\
+ "0.079731, 0.285701, 0.664398, 1.268733, 2.477474",\
+ "0.092635, 0.288817, 0.664398, 1.268733, 2.478218",\
+ "0.183880, 0.330139, 0.669908, 1.271063, 2.478675");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.114530, 0.198282, 0.327841, 0.529556, 0.932692",\
+ "0.202368, 0.286177, 0.415735, 0.617446, 1.020573",\
+ "0.283452, 0.366932, 0.496348, 0.698070, 1.101240",\
+ "0.341435, 0.425076, 0.554450, 0.756020, 1.158880",\
+ "0.647479, 0.733900, 0.863481, 1.064720, 1.466859");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.002940, 0.017235, 0.041749, 0.080558, 0.158177");
+ values ( "0.059249, 0.178266, 0.407986, 0.775367, 1.510173",\
+ "0.059249, 0.178266, 0.408103, 0.775367, 1.510173",\
+ "0.059249, 0.178266, 0.408103, 0.775367, 1.510602",\
+ "0.059879, 0.178385, 0.408103, 0.775367, 1.510602",\
+ "0.069548, 0.181255, 0.408103, 0.775367, 1.510602");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[1]_redg_min*/
+
+} /* end of pin dft_scan_md_o[1] */
+
+pin("dft_scan_md_o[0]") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.161713 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.003291 ;
+
+ /* Other user defined attributes. */
+ original_pin : dft_scan_md_o[0];
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.131615, 0.289575, 0.446666, 0.760660, 1.388635",\
+ "0.215420, 0.373304, 0.530386, 0.844778, 1.473578",\
+ "0.290903, 0.448861, 0.606021, 0.920710, 1.550114",\
+ "0.343593, 0.501694, 0.659036, 0.973630, 1.602811",\
+ "0.611596, 0.769938, 0.927397, 1.241129, 1.868510");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.062950, 0.360790, 0.662238, 1.263674, 2.466600",\
+ "0.063013, 0.360790, 0.662238, 1.263674, 2.466600",\
+ "0.063013, 0.361056, 0.663457, 1.264718, 2.466600",\
+ "0.063013, 0.361056, 0.663457, 1.264718, 2.466600",\
+ "0.063304, 0.361135, 0.663457, 1.264718, 2.466600");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.113407, 0.216311, 0.315683, 0.513806, 0.910003",\
+ "0.194085, 0.296687, 0.395555, 0.593419, 0.989157",\
+ "0.273778, 0.376478, 0.475164, 0.672502, 1.067177",\
+ "0.330670, 0.433783, 0.532566, 0.729916, 1.124601",\
+ "0.625514, 0.732868, 0.831768, 1.029534, 1.425062");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.046113, 0.219478, 0.401657, 0.761769, 1.481954",\
+ "0.046300, 0.219478, 0.401657, 0.761769, 1.484267",\
+ "0.047120, 0.219478, 0.401657, 0.761769, 1.484267",\
+ "0.048485, 0.219478, 0.401657, 0.761769, 1.484267",\
+ "0.061963, 0.221582, 0.401657, 0.762623, 1.490896");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[0]_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.131490, 0.289449, 0.446472, 0.760456, 1.388420",\
+ "0.215418, 0.373302, 0.530383, 0.844776, 1.473578",\
+ "0.290869, 0.448838, 0.606015, 0.920679, 1.550029",\
+ "0.343439, 0.501415, 0.658500, 0.972949, 1.601865",\
+ "0.611409, 0.769697, 0.927216, 1.240610, 1.867283");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.062879, 0.360460, 0.660603, 1.261425, 2.462725",\
+ "0.062899, 0.360460, 0.660603, 1.261425, 2.462725",\
+ "0.062899, 0.360578, 0.660783, 1.261425, 2.462725",\
+ "0.062968, 0.360578, 0.660783, 1.261425, 2.462725",\
+ "0.063222, 0.360578, 0.660783, 1.261425, 2.462725");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.113407, 0.216309, 0.315678, 0.513743, 0.909821",\
+ "0.194085, 0.296687, 0.395555, 0.593419, 0.989157",\
+ "0.273778, 0.376478, 0.475164, 0.672465, 1.067062",\
+ "0.330670, 0.433783, 0.532566, 0.729894, 1.124533",\
+ "0.625514, 0.732807, 0.831595, 1.029214, 1.424455");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.003291, 0.023093, 0.042896, 0.082502, 0.161713");
+ values ( "0.046112, 0.218208, 0.398133, 0.759147, 1.480310",\
+ "0.046235, 0.218208, 0.398133, 0.759147, 1.480670",\
+ "0.047116, 0.218208, 0.398133, 0.759147, 1.481152",\
+ "0.048480, 0.218425, 0.398198, 0.759147, 1.481152",\
+ "0.061948, 0.221432, 0.398830, 0.760382, 1.484000");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[0]_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.062950, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.468253, 0.492732, 0.570555, 0.638140, 1.068967",\
+ "0.490044, 0.514523, 0.592346, 0.659931, 1.090757",\
+ "0.545368, 0.569847, 0.647670, 0.715255, 1.146082",\
+ "0.634688, 0.659168, 0.736991, 0.804576, 1.235402",\
+ "1.017271, 1.041743, 1.119566, 1.187151, 1.617977");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.046113, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.459602, 0.376973, 0.301830, 0.268113, 0.235420",\
+ "0.477883, 0.395254, 0.320112, 0.286394, 0.253701",\
+ "0.549719, 0.467091, 0.391948, 0.358230, 0.325538",\
+ "0.644311, 0.561683, 0.486540, 0.452822, 0.420130",\
+ "1.067339, 0.984711, 0.909568, 0.875850, 0.843158");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[0]_stupr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.062879, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.343432, -0.320436, -0.284752, -0.259478, -0.131392",\
+ "-0.365195, -0.342199, -0.306515, -0.281240, -0.153155",\
+ "-0.420715, -0.397719, -0.362035, -0.336760, -0.208675",\
+ "-0.509827, -0.486831, -0.451147, -0.425873, -0.297787",\
+ "-0.891088, -0.868095, -0.832410, -0.807136, -0.679050");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.046112, 0.195118, 0.455354, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.244757, -0.203344, -0.170627, -0.133432, 0.094725",\
+ "-0.263038, -0.221625, -0.188908, -0.151713, 0.076444",\
+ "-0.337776, -0.296363, -0.263646, -0.226451, 0.001706",\
+ "-0.430900, -0.389488, -0.356770, -0.319575, -0.091418",\
+ "-0.836348, -0.794936, -0.762218, -0.725057, -0.496900");
+ }
+
+ } /* end of arc clk_ast_tlul_i_dft_scan_md_o[0]_hldr*/
+
+} /* end of pin dft_scan_md_o[0] */
+} /* end of bus dft_scan_md_o */
+
+pin("scan_shift_en_o") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.095084 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.028179 ;
+
+ /* Other user defined attributes. */
+ original_pin : scan_shift_en_o;
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.766211, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.532219, 0.489613, 0.431727, 0.435127, 0.476450",\
+ "0.639994, 0.597388, 0.539502, 0.542902, 0.584225",\
+ "0.783455, 0.740849, 0.682963, 0.686363, 0.727686",\
+ "0.930263, 0.887658, 0.829771, 0.833171, 0.874494",\
+ "1.623874, 1.581268, 1.523381, 1.526781, 1.568104");
+ }
+
+ } /* end of arc clk_ast_alert_i_scan_shift_en_o_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.746802, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "0.043626, 0.100485, 0.237779, 0.265545, 0.602978",\
+ "-0.038691, 0.018168, 0.155463, 0.183228, 0.520661",\
+ "-0.121016, -0.064151, 0.072977, 0.100718, 0.437847",\
+ "-0.190085, -0.133213, 0.003667, 0.031370, 0.368047",\
+ "-0.499886, -0.442913, -0.307440, -0.279961, 0.053979");
+ }
+
+ } /* end of arc clk_ast_alert_i_scan_shift_en_o_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : setup_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.766211, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.063826, 0.062652, 0.129143, 0.282266, 0.638582",\
+ "0.144516, 0.122873, 0.153635, 0.250761, 0.490135",\
+ "0.243845, 0.203218, 0.197002, 0.225868, 0.314993",\
+ "0.333420, 0.283466, 0.260028, 0.260578, 0.289579",\
+ "0.742571, 0.680072, 0.640181, 0.639634, 0.684785");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.484230, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.069804, -0.018648, -0.111764, -0.244874, -0.513274",\
+ "0.147065, 0.058673, -0.032069, -0.165383, -0.437145",\
+ "0.257633, 0.169188, 0.076752, -0.058192, -0.332590",\
+ "0.419789, 0.332087, 0.238963, 0.102061, -0.177084",\
+ "0.794358, 0.708802, 0.615035, 0.473837, 0.183265");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_shift_en_o_cgsr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.746802, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.041482, 0.004889, 0.044867, 0.102673, 0.219769",\
+ "-0.121636, -0.074743, -0.032444, 0.026924, 0.145736",\
+ "-0.213199, -0.163583, -0.120926, -0.060090, 0.062464",\
+ "-0.289736, -0.238766, -0.195667, -0.134080, -0.009915",\
+ "-0.654569, -0.601430, -0.555559, -0.492609, -0.367822");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.476372, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.044121, 0.037282, 0.129537, 0.261976, 0.529485",\
+ "-0.122275, -0.038844, 0.049184, 0.181641, 0.454147",\
+ "-0.228703, -0.144549, -0.055160, 0.079110, 0.355165",\
+ "-0.387423, -0.304473, -0.214026, -0.077712, 0.202895",\
+ "-0.744719, -0.665813, -0.573547, -0.433021, -0.142598");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_shift_en_o_cghr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380000.437500, 380000.468750, 380000.531250, 380000.812500, 380001.312500",\
+ "380000.531250, 380000.562500, 380000.625000, 380000.906250, 380001.406250",\
+ "380000.593750, 380000.625000, 380000.687500, 380000.968750, 380001.468750",\
+ "380000.656250, 380000.687500, 380000.750000, 380001.031250, 380001.531250",\
+ "380000.968750, 380001.000000, 380001.062500, 380001.343750, 380001.843750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380001.750000, 380001.781250, 380001.843750, 380002.031250, 380002.375000",\
+ "380001.843750, 380001.875000, 380001.937500, 380002.125000, 380002.468750",\
+ "380001.937500, 380001.968750, 380002.031250, 380002.218750, 380002.562500",\
+ "380002.000000, 380002.031250, 380002.093750, 380002.281250, 380002.625000",\
+ "380002.343750, 380002.375000, 380002.437500, 380002.625000, 380002.968750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.476972, 0.520642, 0.623430, 0.968675, 1.632439",\
+ "0.476972, 0.520642, 0.623430, 0.968675, 1.632439",\
+ "0.476984, 0.520655, 0.623442, 0.968683, 1.632439",\
+ "0.477092, 0.520773, 0.623551, 0.968760, 1.632439",\
+ "0.477240, 0.520936, 0.623729, 0.968990, 1.632439");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.567867, 0.601968, 0.682377, 0.952454, 1.470934",\
+ "0.656009, 0.690105, 0.770491, 1.040492, 1.558825",\
+ "0.750333, 0.784422, 0.864790, 1.134732, 1.652952",\
+ "0.817746, 0.851834, 0.932210, 1.202178, 1.720448",\
+ "1.177034, 1.211190, 1.291747, 1.562319, 2.081752");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.742023, 0.806942, 0.960129, 1.473159, 2.454133",\
+ "0.742023, 0.806942, 0.960129, 1.473159, 2.454133",\
+ "0.742023, 0.806942, 0.960129, 1.473554, 2.458020",\
+ "0.742023, 0.806942, 0.960129, 1.474655, 2.462414",\
+ "0.742023, 0.806942, 0.960129, 1.474655, 2.462414");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.436555, 0.460383, 0.516602, 0.705431, 1.067936",\
+ "0.524364, 0.548192, 0.604409, 0.793229, 1.155716",\
+ "0.605651, 0.629479, 0.685698, 0.874530, 1.237040",\
+ "0.663776, 0.687602, 0.743831, 0.932696, 1.295270",\
+ "0.971918, 0.995743, 1.051944, 1.240713, 1.603103");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.476372, 0.519944, 0.622887, 0.968653, 1.631455",\
+ "0.476372, 0.519944, 0.622887, 0.968653, 1.631455",\
+ "0.476372, 0.519944, 0.622887, 0.968653, 1.631461",\
+ "0.476372, 0.519944, 0.622887, 0.968653, 1.631478",\
+ "0.476373, 0.519944, 0.622887, 0.968653, 1.631806");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.766211, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "1.025280, 0.973708, 0.938980, 0.927998, 0.968803",\
+ "1.133724, 1.082152, 1.047424, 1.036442, 1.077247",\
+ "1.276742, 1.225171, 1.190443, 1.179460, 1.220266",\
+ "1.421700, 1.370129, 1.335400, 1.324418, 1.365223",\
+ "2.112985, 2.061414, 2.026685, 2.015703, 2.056509");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.746802, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.484807, -0.401976, -0.317025, -0.255738, 0.062771",\
+ "-0.593251, -0.510420, -0.425469, -0.364182, -0.045673",\
+ "-0.735922, -0.653091, -0.568140, -0.506853, -0.188344",\
+ "-0.871661, -0.788831, -0.703879, -0.642593, -0.324084",\
+ "-1.567978, -1.485147, -1.400195, -1.338909, -1.020400");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : setup_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.766211, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.500052, 0.464257, 0.467454, 0.481872, 0.641062",\
+ "0.608496, 0.572702, 0.575898, 0.590317, 0.749506",\
+ "0.751349, 0.715408, 0.718319, 0.732500, 0.890238",\
+ "0.895828, 0.859887, 0.862797, 0.876979, 1.034717",\
+ "1.584854, 1.547746, 1.548384, 1.560677, 1.706875");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.484230, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "0.472376, 0.383961, 0.292457, 0.226602, -0.114540",\
+ "0.571622, 0.483207, 0.391702, 0.325848, -0.015294",\
+ "0.718823, 0.630408, 0.538891, 0.473029, 0.131864",\
+ "0.967954, 0.879538, 0.787986, 0.722105, 0.380872",\
+ "1.461814, 1.373393, 1.281717, 1.215763, 0.874287");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_cgsr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : hold_rising ;
+ clock_gating_flag : true ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.746802, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.471383, -0.422460, -0.379894, -0.349813, -0.197830",\
+ "-0.579827, -0.530904, -0.488339, -0.458257, -0.306274",\
+ "-0.722620, -0.673676, -0.631108, -0.601022, -0.449003",\
+ "-0.858078, -0.809134, -0.766565, -0.736479, -0.584461",\
+ "-1.555647, -1.506536, -1.463946, -1.433827, -1.281521");
+ }
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.476372, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.447062, -0.363296, -0.274639, -0.209836, 0.132805",\
+ "-0.546307, -0.462542, -0.373884, -0.309082, 0.033560",\
+ "-0.689363, -0.605598, -0.516940, -0.452138, -0.109496",\
+ "-0.942607, -0.858821, -0.770125, -0.705296, -0.362529",\
+ "-1.436381, -1.352539, -1.263740, -1.198841, -0.855737");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_shift_en_o_cghr*/
+
+ timing () {
+ related_pin : "padmux2ast_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.489833, 0.523915, 0.604311, 0.874343, 1.392737",\
+ "0.566174, 0.600431, 0.681298, 0.952915, 1.474352",\
+ "0.660833, 0.694982, 0.775530, 1.046072, 1.565447",\
+ "0.820966, 0.855139, 0.935773, 1.206609, 1.726547",\
+ "1.095138, 1.129115, 1.209400, 1.479059, 1.996736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.766211, 0.830301, 0.980244, 1.483872, 2.450712",\
+ "0.766211, 0.830301, 0.980244, 1.483872, 2.456399",\
+ "0.766211, 0.830301, 0.980244, 1.483872, 2.457642",\
+ "0.766211, 0.830301, 0.980244, 1.483872, 2.465531",\
+ "0.766211, 0.830301, 0.980244, 1.483872, 2.465531");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.331095, 0.354971, 0.411113, 0.599682, 0.961689",\
+ "0.422338, 0.446186, 0.502618, 0.692160, 1.056035",\
+ "0.529474, 0.553262, 0.609349, 0.797734, 1.159388",\
+ "0.719234, 0.743081, 0.799295, 0.988106, 1.350577",\
+ "1.047647, 1.071864, 1.127881, 1.316028, 1.677225");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.484230, 0.528601, 0.631276, 0.976140, 1.638195",\
+ "0.484230, 0.528601, 0.631276, 0.976140, 1.638195",\
+ "0.484230, 0.528601, 0.631276, 0.976140, 1.638195",\
+ "0.484230, 0.528601, 0.631276, 0.976140, 1.638195",\
+ "0.491280, 0.530601, 0.632503, 0.976140, 1.638195");
+ }
+
+ } /* end of arc padmux2ast_i[2]_scan_shift_en_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[2]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.489833, 0.523915, 0.604311, 0.874343, 1.392737",\
+ "0.566174, 0.600431, 0.681298, 0.952915, 1.474352",\
+ "0.660833, 0.694982, 0.775530, 1.046072, 1.565447",\
+ "0.820966, 0.855139, 0.935773, 1.206609, 1.726547",\
+ "1.095138, 1.129115, 1.209400, 1.479059, 1.996736");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.748897, 0.805011, 0.957821, 1.471076, 2.450712",\
+ "0.748897, 0.805011, 0.957821, 1.471076, 2.456399",\
+ "0.748897, 0.811237, 0.965448, 1.477816, 2.457642",\
+ "0.748897, 0.811237, 0.965448, 1.479720, 2.465531",\
+ "0.748897, 0.813325, 0.966210, 1.479720, 2.465531");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.331095, 0.354971, 0.411113, 0.599682, 0.961689",\
+ "0.422338, 0.446186, 0.502618, 0.692160, 1.056035",\
+ "0.529474, 0.553262, 0.609349, 0.797734, 1.159388",\
+ "0.719234, 0.743081, 0.799295, 0.988106, 1.350577",\
+ "1.047647, 1.071864, 1.127881, 1.316028, 1.677225");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.484230, 0.518873, 0.622079, 0.966408, 1.621243",\
+ "0.484230, 0.518873, 0.622079, 0.966408, 1.621243",\
+ "0.484230, 0.518873, 0.622079, 0.968730, 1.631847",\
+ "0.484230, 0.522164, 0.625240, 0.971450, 1.631847",\
+ "0.491280, 0.530601, 0.632503, 0.974773, 1.631847");
+ }
+
+ } /* end of arc padmux2ast_i[2]_scan_shift_en_o_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380000.312500, 380000.343750, 380000.406250, 380000.687500, 380001.187500",\
+ "380000.406250, 380000.437500, 380000.500000, 380000.781250, 380001.281250",\
+ "380000.500000, 380000.531250, 380000.593750, 380000.875000, 380001.375000",\
+ "380000.656250, 380000.687500, 380000.750000, 380001.031250, 380001.531250",\
+ "380000.906250, 380000.937500, 380001.000000, 380001.281250, 380001.781250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380001.656250, 380001.687500, 380001.750000, 380001.937500, 380002.281250",\
+ "380001.750000, 380001.781250, 380001.843750, 380002.031250, 380002.375000",\
+ "380001.875000, 380001.906250, 380001.968750, 380002.156250, 380002.500000",\
+ "380002.062500, 380002.093750, 380002.156250, 380002.343750, 380002.687500",\
+ "380002.375000, 380002.406250, 380002.468750, 380002.656250, 380003.000000");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439");
+ }
+
+ } /* end of arc padmux2ast_i[4]_scan_shift_en_o_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380000.312500, 380000.343750, 380000.406250, 380000.687500, 380001.187500",\
+ "380000.406250, 380000.437500, 380000.500000, 380000.781250, 380001.281250",\
+ "380000.468750, 380000.500000, 380000.562500, 380000.843750, 380001.343750",\
+ "380000.625000, 380000.656250, 380000.718750, 380001.000000, 380001.500000",\
+ "380000.843750, 380000.875000, 380000.937500, 380001.218750, 380001.718750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965",\
+ "0.750971, 0.815816, 0.968419, 1.480978, 2.464965");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "380001.656250, 380001.687500, 380001.750000, 380001.937500, 380002.281250",\
+ "380001.750000, 380001.781250, 380001.843750, 380002.031250, 380002.375000",\
+ "380001.843750, 380001.875000, 380001.937500, 380002.125000, 380002.468750",\
+ "380002.031250, 380002.062500, 380002.125000, 380002.312500, 380002.656250",\
+ "380002.281250, 380002.312500, 380002.375000, 380002.562500, 380002.906250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.028179, 0.030705, 0.036662, 0.056671, 0.095084");
+ values ( "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439",\
+ "0.476385, 0.519957, 0.622899, 0.968661, 1.632439");
+ }
+
+ } /* end of arc padmux2ast_i[4]_scan_shift_en_o_una_min*/
+
+} /* end of pin scan_shift_en_o */
+
+pin("scan_reset_no") {
+ direction : output ;
+ max_transition : 2.480000 ;
+ min_transition : 0.000000 ;
+ max_capacitance : 0.044252 ;
+ min_capacitance : 0.000067 ;
+ max_fanout : 50.000000 ;
+ capacitance : 0.021601 ;
+
+ /* Other user defined attributes. */
+ original_pin : scan_reset_no;
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : recovery_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 1.099537, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "1.964051, 1.921426, 1.863863, 1.867343, 1.909642",\
+ "2.060242, 2.017617, 1.960053, 1.963533, 2.005833",\
+ "2.173090, 2.130465, 2.072901, 2.076381, 2.118681",\
+ "2.375021, 2.332396, 2.274832, 2.278312, 2.320612",\
+ "2.686105, 2.643480, 2.585916, 2.589396, 2.631696");
+ }
+
+ } /* end of arc clk_ast_alert_i_scan_reset_no_recfr*/
+
+ timing () {
+ related_pin : "clk_ast_alert_i" ;
+ timing_type : removal_rising ;
+ fall_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 0.898734, 2.480000");
+ index_2 ( "0.000000, 0.127724, 0.562810, 0.708571, 2.480000");
+ values ( "-1.851924, -1.814471, -1.754913, -1.744727, -1.620931",\
+ "-1.948175, -1.910723, -1.851165, -1.840978, -1.717183",\
+ "-2.061304, -2.023851, -1.964293, -1.954107, -1.830311",\
+ "-2.203395, -2.165943, -2.106384, -2.096198, -1.972402",\
+ "-2.574453, -2.537001, -2.477442, -2.467256, -2.343460");
+ }
+
+ } /* end of arc clk_ast_alert_i_scan_reset_no_remfr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.802143, 0.819742, 0.854125, 0.955681, 1.487746",\
+ "0.890534, 0.908134, 0.942517, 1.044073, 1.576140",\
+ "0.986100, 1.003701, 1.038085, 1.139644, 1.671728",\
+ "1.152159, 1.169761, 1.204148, 1.305714, 1.837840",\
+ "1.418048, 1.435651, 1.470039, 1.571612, 2.103765");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.229517, 1.260918, 1.322264, 1.503458, 2.452761",\
+ "1.229525, 1.260928, 1.322278, 1.503483, 2.452843",\
+ "1.229623, 1.261050, 1.322445, 1.503785, 2.453854",\
+ "1.229849, 1.261330, 1.322831, 1.504483, 2.456189",\
+ "1.230249, 1.261792, 1.323416, 1.505431, 2.459036");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.798583, 0.815273, 0.847880, 0.944189, 1.448769",\
+ "0.886419, 0.903109, 0.935716, 1.032025, 1.536605",\
+ "0.967929, 0.984620, 1.017227, 1.113536, 1.618116",\
+ "1.107256, 1.123946, 1.156553, 1.252862, 1.757442",\
+ "1.334271, 1.350961, 1.383568, 1.479877, 1.984456");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.070623, 1.099479, 1.155855, 1.322366, 2.194748",\
+ "1.070624, 1.099480, 1.155855, 1.322366, 2.194748",\
+ "1.070624, 1.099480, 1.155855, 1.322366, 2.194748",\
+ "1.070624, 1.099480, 1.155855, 1.322366, 2.194752",\
+ "1.070624, 1.099480, 1.155855, 1.322366, 2.194762");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.802125, 0.819724, 0.854108, 0.955663, 1.487728",\
+ "0.890342, 0.907941, 0.942325, 1.043880, 1.575947",\
+ "0.986099, 1.003699, 1.038084, 1.139642, 1.671727",\
+ "1.152155, 1.169757, 1.204144, 1.305710, 1.837835",\
+ "1.417944, 1.435547, 1.469935, 1.571508, 2.103662");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.229517, 1.260918, 1.322264, 1.503458, 2.452760",\
+ "1.229525, 1.260928, 1.322278, 1.503482, 2.452842",\
+ "1.229623, 1.261050, 1.322445, 1.503785, 2.453854",\
+ "1.229849, 1.261330, 1.322831, 1.504483, 2.456189",\
+ "1.230248, 1.261792, 1.323416, 1.505430, 2.459036");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.798579, 0.815269, 0.847876, 0.944185, 1.448765",\
+ "0.886379, 0.903069, 0.935677, 1.031986, 1.536566",\
+ "0.967658, 0.984348, 1.016956, 1.113265, 1.617844",\
+ "1.107229, 1.123919, 1.156526, 1.252835, 1.757415",\
+ "1.334205, 1.350896, 1.383503, 1.479811, 1.984390");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.070600, 1.099457, 1.155835, 1.322351, 2.194748",\
+ "1.070600, 1.099457, 1.155835, 1.322351, 2.194748",\
+ "1.070600, 1.099457, 1.155835, 1.322351, 2.194748",\
+ "1.070600, 1.099457, 1.155835, 1.322351, 2.194752",\
+ "1.070600, 1.099457, 1.155835, 1.322351, 2.194762");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 1.230133, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "3.588611, 3.540715, 3.506416, 3.500099, 3.522348",\
+ "3.671103, 3.623207, 3.588908, 3.582592, 3.604841",\
+ "3.766086, 3.718189, 3.683890, 3.677574, 3.699822",\
+ "3.975284, 3.927388, 3.893089, 3.886772, 3.909021",\
+ "4.236159, 4.188263, 4.153964, 4.147648, 4.169896");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : recovery_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 1.230133, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "0.254411, 0.254411, 0.254411, 0.254411, 0.254411",\
+ "0.332233, 0.332233, 0.332233, 0.332233, 0.332233",\
+ "0.412826, 0.412826, 0.412826, 0.412826, 0.412826",\
+ "0.584722, 0.584722, 0.584722, 0.584722, 0.584722",\
+ "0.796290, 0.796290, 0.796290, 0.796290, 0.796290");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_recrf*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.591561, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.156602, -0.106021, -0.062437, -0.009182, 0.090788",\
+ "-0.234424, -0.183844, -0.140259, -0.087005, 0.012965",\
+ "-0.347653, -0.297234, -0.253546, -0.200284, -0.100415",\
+ "-0.457700, -0.407414, -0.363694, -0.310440, -0.210630",\
+ "-0.693682, -0.643595, -0.600273, -0.547145, -0.447229");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_remrr*/
+
+ timing () {
+ related_pin : "clk_ast_ext_i" ;
+ timing_type : removal_falling ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.591561, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ values ( "-0.072639, -0.072639, -0.072639, -0.072639, -0.072639",\
+ "-0.150732, -0.150732, -0.150732, -0.150732, -0.150732",\
+ "-0.261960, -0.261960, -0.261960, -0.261960, -0.261960",\
+ "-0.368573, -0.368573, -0.368573, -0.368573, -0.368573",\
+ "-0.585347, -0.585347, -0.585347, -0.585347, -0.585347");
+ }
+
+ } /* end of arc clk_ast_ext_i_scan_reset_no_remrf*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380001.750000, 380001.750000, 380001.750000, 380001.812500, 380002.062500",\
+ "380001.843750, 380001.843750, 380001.843750, 380001.906250, 380002.156250",\
+ "380001.937500, 380001.937500, 380001.937500, 380002.000000, 380002.250000",\
+ "380002.000000, 380002.000000, 380002.000000, 380002.062500, 380002.312500",\
+ "380002.343750, 380002.343750, 380002.343750, 380002.406250, 380002.656250");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.229646, 1.261078, 1.322484, 1.503854, 2.454086",\
+ "1.229646, 1.261078, 1.322484, 1.503854, 2.454086",\
+ "1.229646, 1.261078, 1.322484, 1.503854, 2.454086",\
+ "1.229646, 1.261078, 1.322484, 1.503855, 2.454087",\
+ "1.229648, 1.261080, 1.322487, 1.503860, 2.454105");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380000.593750, 380000.593750, 380000.625000, 380000.718750, 380001.250000",\
+ "380000.687500, 380000.687500, 380000.718750, 380000.812500, 380001.343750",\
+ "380000.750000, 380000.750000, 380000.781250, 380000.875000, 380001.406250",\
+ "380000.812500, 380000.812500, 380000.843750, 380000.937500, 380001.468750",\
+ "380001.125000, 380001.125000, 380001.156250, 380001.250000, 380001.781250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.099064, 1.128619, 1.186359, 1.356900, 2.250939");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_reset_no_redg*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : rising_edge ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.422873, 0.430902, 0.446588, 0.492920, 0.735645",\
+ "0.510672, 0.518701, 0.534387, 0.580719, 0.823446",\
+ "0.591965, 0.599994, 0.615680, 0.662012, 0.904736",\
+ "0.650145, 0.658174, 0.673861, 0.720193, 0.962908",\
+ "0.958388, 0.966413, 0.982090, 1.028394, 1.270988");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.591561, 0.606759, 0.636466, 0.724197, 1.183709",\
+ "0.591561, 0.606759, 0.636466, 0.724197, 1.183709",\
+ "0.591563, 0.606768, 0.636472, 0.724197, 1.183709",\
+ "0.591595, 0.606795, 0.636489, 0.724197, 1.183709",\
+ "0.591849, 0.607055, 0.636761, 0.724504, 1.184204");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.601971, 0.615882, 0.643058, 0.723326, 1.143863",\
+ "0.689980, 0.703892, 0.731069, 0.811342, 1.231904",\
+ "0.785109, 0.799012, 0.826172, 0.906394, 1.326690",\
+ "0.853674, 0.867567, 0.894707, 0.974869, 1.394853",\
+ "1.216942, 1.230863, 1.258059, 1.338388, 1.759243");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.898014, 0.922343, 0.969635, 1.108981, 1.838479",\
+ "0.898014, 0.922343, 0.969635, 1.108981, 1.838479",\
+ "0.898014, 0.922343, 0.969635, 1.108981, 1.839038",\
+ "0.898014, 0.922343, 0.969800, 1.109378, 1.840651",\
+ "0.898014, 0.922343, 0.969873, 1.110259, 1.842156");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_reset_no_redg_min*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : recovery_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.455354, 1.230133, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "1.415613, 1.363816, 1.325401, 1.311644, 1.337231",\
+ "1.501586, 1.449789, 1.411374, 1.397617, 1.423205",\
+ "1.612727, 1.560930, 1.522515, 1.508758, 1.534346",\
+ "1.834322, 1.782526, 1.744110, 1.730354, 1.755941",\
+ "2.101753, 2.049956, 2.011540, 1.997784, 2.023371");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_reset_no_recrr*/
+
+ timing () {
+ related_pin : "clk_ast_tlul_i" ;
+ timing_type : removal_rising ;
+ rise_constraint( f_dtrans_ctrans ){
+ index_1 ( "0.006578, 0.195118, 0.591561, 1.062676, 2.480000");
+ index_2 ( "0.000000, 0.195118, 0.455354, 0.708571, 2.480000");
+ values ( "-0.697532, -0.650599, -0.616529, -0.592387, -0.469972",\
+ "-0.783374, -0.736441, -0.702370, -0.678229, -0.555814",\
+ "-0.939179, -0.892246, -0.858175, -0.834034, -0.711619",\
+ "-1.080269, -1.033336, -0.999265, -0.975124, -0.852709",\
+ "-1.378594, -1.331661, -1.297591, -1.273450, -1.151034");
+ }
+
+ } /* end of arc clk_ast_tlul_i_scan_reset_no_remrr*/
+
+ timing () {
+ related_pin : "padmux2ast_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.726887, 0.744473, 0.778830, 0.880309, 1.411971",\
+ "0.813994, 0.831587, 0.865957, 0.967473, 1.499333",\
+ "0.895839, 0.913433, 0.947805, 1.049329, 1.581226",\
+ "1.037802, 1.055400, 1.089781, 1.191329, 1.723358",\
+ "1.277047, 1.294652, 1.329045, 1.430630, 1.962853");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.230133, 1.261577, 1.323007, 1.504448, 2.455048",\
+ "1.230133, 1.261577, 1.323007, 1.504448, 2.455048",\
+ "1.230191, 1.261616, 1.323008, 1.504448, 2.455048",\
+ "1.230748, 1.262222, 1.323711, 1.505326, 2.455673",\
+ "1.230748, 1.262222, 1.323711, 1.505326, 2.455673");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.683808, 0.700926, 0.734366, 0.833138, 1.350622",\
+ "0.774648, 0.791774, 0.825231, 0.924052, 1.441793",\
+ "0.860296, 0.877424, 0.910885, 1.009716, 1.527510",\
+ "1.010613, 1.027735, 1.061184, 1.159981, 1.677597",\
+ "1.262256, 1.279377, 1.312826, 1.411619, 1.929216");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.099537, 1.129083, 1.186806, 1.357299, 2.250541",\
+ "1.099537, 1.129083, 1.186806, 1.357299, 2.250541",\
+ "1.099537, 1.129083, 1.186806, 1.357299, 2.250541",\
+ "1.099537, 1.129083, 1.186806, 1.357299, 2.250541",\
+ "1.099652, 1.129190, 1.186897, 1.357342, 2.250541");
+ }
+
+ } /* end of arc padmux2ast_i[3]_scan_reset_no_una*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[3]" ;
+ timing_type : combinational ;
+ timing_sense : positive_unate ;
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.726887, 0.744473, 0.778830, 0.880309, 1.411971",\
+ "0.813994, 0.831587, 0.865957, 0.967473, 1.499333",\
+ "0.895839, 0.913433, 0.947805, 1.049329, 1.581226",\
+ "1.037802, 1.055400, 1.089781, 1.191329, 1.723358",\
+ "1.277047, 1.294652, 1.329045, 1.430630, 1.962853");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.230133, 1.260882, 1.322288, 1.503659, 2.453893",\
+ "1.230133, 1.260882, 1.322288, 1.503659, 2.453893",\
+ "1.230191, 1.261616, 1.323008, 1.504337, 2.454350",\
+ "1.230581, 1.262030, 1.323468, 1.504936, 2.455673",\
+ "1.230581, 1.262030, 1.323468, 1.504936, 2.455673");
+ }
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.683808, 0.700926, 0.734366, 0.833138, 1.350622",\
+ "0.774648, 0.791774, 0.825231, 0.924052, 1.441793",\
+ "0.860296, 0.877424, 0.910885, 1.009716, 1.527510",\
+ "1.010613, 1.027735, 1.061184, 1.159981, 1.677597",\
+ "1.262256, 1.279377, 1.312826, 1.411619, 1.929216");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.099537, 1.128236, 1.185986, 1.356560, 2.250221",\
+ "1.099537, 1.128236, 1.185986, 1.356560, 2.250221",\
+ "1.099537, 1.128268, 1.186038, 1.356667, 2.250334",\
+ "1.099537, 1.128795, 1.186566, 1.357201, 2.250334",\
+ "1.099652, 1.129190, 1.186897, 1.357342, 2.250334");
+ }
+
+ } /* end of arc padmux2ast_i[3]_scan_reset_no_una_min*/
+
+ timing () {
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380000.468750, 380000.468750, 380000.500000, 380000.593750, 380001.125000",\
+ "380000.562500, 380000.562500, 380000.593750, 380000.687500, 380001.218750",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.781250, 380001.312500",\
+ "380000.812500, 380000.812500, 380000.843750, 380000.937500, 380001.468750",\
+ "380001.062500, 380001.062500, 380001.093750, 380001.187500, 380001.718750");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939",\
+ "1.098794, 1.128370, 1.186150, 1.356812, 2.250939");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380001.656250, 380001.656250, 380001.656250, 380001.718750, 380001.968750",\
+ "380001.750000, 380001.750000, 380001.750000, 380001.812500, 380002.062500",\
+ "380001.875000, 380001.875000, 380001.875000, 380001.937500, 380002.187500",\
+ "380002.062500, 380002.062500, 380002.062500, 380002.125000, 380002.375000",\
+ "380002.375000, 380002.375000, 380002.375000, 380002.437500, 380002.687500");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.602094, 0.617527, 0.647677, 0.736728, 1.205538",\
+ "0.602094, 0.617527, 0.647677, 0.736728, 1.205538",\
+ "0.602094, 0.617527, 0.647677, 0.736728, 1.205538",\
+ "0.602094, 0.617527, 0.647677, 0.736728, 1.205538",\
+ "0.602094, 0.617527, 0.647677, 0.736728, 1.205538");
+ }
+
+ } /* end of arc padmux2ast_i[4]_scan_reset_no_inv*/
+
+ timing () {
+ min_delay_flag : true ;
+ related_pin : "padmux2ast_i[4]" ;
+ timing_type : combinational ;
+ timing_sense : negative_unate ;
+ cell_fall( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380000.343750, 380000.343750, 380000.375000, 380000.468750, 380000.875000",\
+ "380000.437500, 380000.437500, 380000.468750, 380000.562500, 380000.968750",\
+ "380000.500000, 380000.500000, 380000.531250, 380000.625000, 380001.031250",\
+ "380000.656250, 380000.656250, 380000.687500, 380000.781250, 380001.187500",\
+ "380000.875000, 380000.875000, 380000.906250, 380001.000000, 380001.406250");
+ }
+ fall_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.899963, 0.924149, 0.971400, 1.110963, 1.842156",\
+ "0.899963, 0.924149, 0.971400, 1.110963, 1.842156",\
+ "0.899963, 0.924149, 0.971400, 1.110963, 1.842156",\
+ "0.899963, 0.924149, 0.971400, 1.110963, 1.842156",\
+ "0.899963, 0.924149, 0.971400, 1.110963, 1.842156");
+ }
+ cell_rise( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "380001.656250, 380001.656250, 380001.656250, 380001.718750, 380001.968750",\
+ "380001.750000, 380001.750000, 380001.750000, 380001.812500, 380002.062500",\
+ "380001.843750, 380001.843750, 380001.843750, 380001.906250, 380002.156250",\
+ "380002.031250, 380002.031250, 380002.031250, 380002.093750, 380002.343750",\
+ "380002.281250, 380002.281250, 380002.281250, 380002.343750, 380002.593750");
+ }
+ rise_transition( f_itrans_ocap ){
+ index_1 ( "0.000000, 0.195118, 0.455354, 1.062676, 2.480000");
+ index_2 ( "0.021601, 0.022183, 0.023319, 0.026674, 0.044252");
+ values ( "0.599658, 0.615162, 0.645450, 0.734911, 1.203284",\
+ "0.599658, 0.615162, 0.645450, 0.734911, 1.203284",\
+ "0.599658, 0.615162, 0.645450, 0.734911, 1.203284",\
+ "0.599658, 0.615162, 0.645450, 0.734911, 1.203284",\
+ "0.599658, 0.615162, 0.645450, 0.734911, 1.203284");
+ }
+
+ } /* end of arc padmux2ast_i[4]_scan_reset_no_inv_min*/
+
+} /* end of pin scan_reset_no */
+
+
+
+
+
+
+} /* end of cell */
+
+} /* end of library */
diff --git a/src/ast/lint/ast.vbl b/src/ast/lint/ast.vbl
new file mode 100644
index 0000000..0df7c4b
--- /dev/null
+++ b/src/ast/lint/ast.vbl
@@ -0,0 +1,16 @@
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+#
+# Verible waiver file for AST
+
+# Waive the always-comb rule in the various "pgd" modules. The rule is checking
+# that we don't use always @*, and suggests we use always_comb instead.
+# Unfortunately, the code in question doesn't really translate to always_comb.
+# And we don't really care about the linting rule: the code is just supposed to
+# be a behavioural model of some analog code that isn't really part of the OT
+# opensource repo. Waive the warning.
+waive --rule=always-comb --location="vcc_pgd.sv"
+waive --rule=always-comb --location="vio_pgd.sv"
+waive --rule=always-comb --location="vcaon_pgd.sv"
+waive --rule=always-comb --location="vcmain_pgd.sv"
diff --git a/src/ast/lint/ast.vlt b/src/ast/lint/ast.vlt
new file mode 100644
index 0000000..b4c6b30
--- /dev/null
+++ b/src/ast/lint/ast.vlt
@@ -0,0 +1,17 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// waiver file for ast
+
+`verilator_config
+
+// ast_clks_byp.sv has an always_latch block which doesn't actually do anything
+// because the enable signal (!scan_mode_i) is always true. Verilator notices
+// and complains, but we're doing this on purpose.
+lint_off -rule NOLATCH -file "*/rtl/ast_clks_byp.sv"
+
+// Manually mark a clock enable: if we don't tell Verilator we're doing it on
+// purpose, it will warn us that there's a path from "normal" logic through to
+// a clock signal.
+clock_enable -module "ast_clks_byp" -var "clk_ext_en"
diff --git a/src/ast/lint/ast.waiver b/src/ast/lint/ast.waiver
new file mode 100644
index 0000000..05fb273
--- /dev/null
+++ b/src/ast/lint/ast.waiver
@@ -0,0 +1,377 @@
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+#
+# waiver file for ast
+
+waive -rules CONST_FF -location {ast_clks_byp.sv} \
+ -msg {Flip-flop 'sw_clk_byp_en' is driven by constant one} \
+ -comment {This flip flop is supposed to change to 1 on the first clock cycle and remain there afterwards.}
+
+waive -rules IFDEF_CODE -location {ast.sv} \
+ -msg {Assignment to 'ast2pad_t0_ao' contained within `else block at ast.sv} \
+ -comment {This ifdef statement is used for analog simulations and is OK.}
+
+waive -rules IFDEF_CODE -location {ast.sv} \
+ -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 IFDEF_CODE -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
+ -regexp {Assignment to 'en_osc_re' contained within} \
+ -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} \
+ -regexp {Assignment to 'clk' contained within} \
+ -comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules DUAL_EDGE_CLOCK -location {ast_clks_byp.sv} \
+ -msg {Clock 'clk_ast_ext_scn' uses falling edge here and rising edge 'clk_i' at} \
+ -comment {Posedge sync aon_clk reset to clk_ast_ext_scn while negedge drives the sw_clk_byp_en.}
+
+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.}
+
+waive -rules CLOCK_EDGE -location {ast_clks_byp.sv} \
+ -msg {Falling edge of clock 'clk_ast_ext_scn' used here, should use rising edge} \
+ -comment {This negedge trigger is done on purpose.}
+
+waive -rules CLOCK_EDGE -location {ast_clks_byp.sv} \
+ -msg {'prim_flop_2sync' instance 'u_no_scan_ext_freq_is_96m_sync' contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifdef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules CLOCK_DRIVER -location {ast.sv} \
+ -regexp {'clk_src_(aon|io|sys)' is driven by instance 'u_ast_clks_byp' of module 'ast_clks_byp', and used as a clock 'clk_i' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast.sv} \
+ -regexp {'clk_src_(aon|io|sys)' in module 'ast_clks_byp' by port} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast.sv} \
+ -msg {'clk_o' driven in module 'gfr_clk_mux2' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
+ -msg {'clk_o' driven in module 'gfr_clk_mux2' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'clk_src_(aon|io)_o' is driven by instance 'u_clk_src_(aon|io)_sel' of module 'gfr_clk_mux2', and used as a clock 'clk_i' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'clk_src_io' is driven by instance 'u_clk_src_io_sel' of module 'gfr_clk_mux2', and used as a clock 'clk_i' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'clk_ext_scn' is driven here, and used as a clock 'clk_i' at} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_MUX -location {ast_clks_byp.sv} \
+ -regexp {Clock '(clk_ast_ext_scn|clk_ext_scn|clk_src_ext_usb|clk_ext_aon)' is driven by a multiplexer here, used as a clock} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules CLOCK_MUX -location {ast_clks_byp.sv} \
+ -regexp {Clock 'clk_ast_ext' reaches a multiplexer here, used as a clock} \
+ -comment {This is clock generation logic, hence it needs to drive this clock signal.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {Assignment to 'clk_ast_ext_scn' contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {Assignment to 'clk_ext_scn' contained within `else block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {Assignment to 'clk_src_io_val_o' contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {'prim_clock_div' instance 'u_no_scan_clk_(ext_d1ord2|usb_div240_div)' contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {'prim_flop_2sync' instance 'u_no_scan_ext_freq_is_96m_sync' contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules IFDEF_CODE -location {ast_clks_byp.sv} \
+ -regexp {always_latch block contained within `ifndef 'AST_BYPASS_CLK' block at} \
+ -comment {This ifndef statement is fine as it is part of the FPGA/Verilator clock bypass mechanism.}
+
+waive -rules CLOCK_MUX -location {ast.sv} \
+ -regexp {Clock 'clk_aon_n' is driven by a multiplexer here, used as a clock} \
+ -comment {This clock inverter has a DFT mux.}
+
+waive -rules CLOCK_MUX -location {rglts_pdm_3p3v.sv} \
+ -regexp {Clock 'clk_src_aon_h_n' is driven by a multiplexer here, used as a clock at } \
+ -comment {This signal has a DFT mux.}
+
+waive -rules CLOCK_USE -location {gfr_clk_mux2.sv} \
+ -regexp {('clk_ext'|'clk_osc') is used for some other purpose, and as clock ('clk_ext_i'|'clk_osc_i') at gfr_clk_mux2.sv} \
+ -comment {This message pops up due to a clock OR operation.}
+
+waive -rules CLOCK_USE -location {ast.sv} \
+ -regexp {'clk_ast_tlul_i' is connected to 'ast_dft' port 'clk_i', and used as a clock 'clk_i' at prim_lfsr} \
+ -comment {This is a valid clock signal and the LFSR runs on the bus clock here.}
+
+waive -rules CLOCK_USE -location {ast.sv} \
+ -regexp {'clk_aon' is connected to 'rglts_pdm_3p3v' port 'clk_src_aon_h_i', and used as a clock} \
+ -comment {This is a valid clock signal and the connection is ok here.}
+
+waive -rules CLOCK_USE -location {ast.sv} \
+ -regexp {'clk_ast_usb_i' is used for some other purpose, and as clock 'clk_i' at prim_generic_flop.sv} \
+ -comment {This is a valid clock signal and the connection is ok here.}
+
+waive -rules INV_CLOCK -location {ast.sv rglts_pdm_3p3v.sv} \
+ -regexp {'(clk_aon|clk_src_aon_h_i)' is inverted, used as clock} \
+ -comment {These clocks are inverted.}
+
+waive -rules INV_CLOCK -location {ast_clks_byp.sv} \
+ -regexp {'clk_src_ext_usb' is inverted, used as clock 'clk_i'} \
+ -comment {Needed to sample clk_src_ext_usb enable signal with the clock negedge.}
+
+waive -rules RESET_DRIVER -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
+ -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.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'(vcaon_pok_h|por_rst_n|vcmain_pok_por|vcmain_pok_por_src)' 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 {ast.sv} \
+ -msg {'clk_io_osc_val' is driven by instance 'u_io_clk' of module 'io_clk', and used as an asynchronous reset 'rst_clk_osc_n' at ast_dft.sv} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -msg {'clk_src_io_val_o' driven in module 'io_clk' by port 'u_val_sync.q_o[0]' at io_clk.sv} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast.sv dev_entropy.sv ast_clks_byp.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_flop_2sync' by port .* at prim_flop_2sync.sv} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -msg {'vcmain_pok_por_sys' is driven by instance 'u_rst_sys_dasrt' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_dev_ni' at dev_entropy.sv} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {dev_entropy.sv} \
+ -msg {'rst_es_dev_nd' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n'} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {dev_entropy.sv} \
+ -msg {'rst_es_dev_nd' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n'} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {dev_entropy.sv} \
+ -msg {'rst_es_dev_da_n' is driven by instance 'u_rst_es_n_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_es_dev_n' at} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {dev_entropy.sv} \
+ -msg {'rst_es_dev_in_n' is driven here, and used as an asynchronous reset 'rst_ni' at} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast_pulse_sync.sv} \
+ -regexp {'(rst_src_n|rst_dst_n)' is driven here, and used as an asynchronous reset at} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'rst_aon_n_(ioda|exda)' is driven by instance 'u_rst_aon_n_(ioda|exda)_sync' of module} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'rst_sw_clk_byp_en' is driven here, and used as an asynchronous reset 'rst_ni'} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'da_rst_sw_ckbpe_n' is driven by instance 'u_no_scan_rst_sw_ckbpe_dasrt' of module 'prim_flop_2sync'} \
+ -comment {Used as synced reset signal for clk_ast_ext_scn reset.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'(vcc_pok|rst_poks_n|rst_poks_por_n|vcaon_pok_por_lat)' 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 {ast.sv} \
+ -msg {'vcmain_pok_por_sys' is driven by instance 'u_rst_sys_dasrt' of module} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -msg {'rst_aon_clk_n' is driven here, and used as an asynchronous reset 'rst_ni' at} \
+ -comment {This is reset generation logic, hence it needs to drive this reset signal.}
+
+waive -rules RESET_DRIVER -location {rglts_pdm_3p3v.sv} \
+ -regexp {'(vcc_pok_rst_h_n|vcc_pok_set_h|vcc_pok_str_.*|)' is driven here, and used as an asynchronous reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'(vcaon_pok|vcaon_pok_h)' is driven by instance 'u_rglts_pdm_3p3v'} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'(vcaon_pok_1p1_h_o|vcaon_pok_h_o)' driven in module 'rglts_pdm_3p3v'} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'rst_sys_clk_n' is driven here, and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'rst_usb_clk_n' is driven here, and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast.sv} \
+ -regexp {'rst_io_clk_n' is driven here, and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'rst_da_n' is driven by instance 'u_rst_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_flop_2sync' by port 'u_sync_2.q_o[0]' at prim_flop_2sync.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_flop' by port 'gen_generic.u_impl_generic.q_o[0]' at prim_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_generic_flop' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'rst_n' is driven here, and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'rst_n' driven in module 'usb_clk' by 'rst_da_n' at usb_clk.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {usb_clk.sv} \
+ -regexp {'rst_usb_n' is driven by instance 'u_rst_ast_usb_da' of module 'prim_flop_2sync', and used as an asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_flop_2sync' by port 'u_sync_2.q_o[0]' at prim_flop_2sync.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_flop' by port 'gen_generic.u_impl_generic.q_o[0]' at prim_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_DRIVER -location {ast_clks_byp.sv} \
+ -regexp {'q_o[0]' driven in module 'prim_generic_flop' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {aon_clk.sv io_clk.sv sys_clk.sv usb_clk.sv} \
+ -msg {Asynchronous reset 'rst_val_n' is driven by a multiplexer here, used as a reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {ast.sv} \
+ -regexp {Asynchronous reset '(rst_poks_n|rst_poks_por_n|vcmain_pok_por|rst_src_sys_n|vcaon_pok_por)' is driven by a multiplexer here, used as a reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {rng.sv} \
+ -msg {Asynchronous reset 'rst_n' is driven by a multiplexer here, used as a reset at rng.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {ast_clks_byp.sv} \
+ -regexp {Asynchronous reset '(rst_aon_n|rst_aon_exda_n|rst_aon_ioda_n|rst_sw_ckbpe_n)' is driven by a multiplexer here, used as a reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {ast_pulse_sync.sv} \
+ -regexp {Asynchronous reset '(rst_src_n|rst_dst_n)' is driven by a multiplexer here, used as a reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {rglts_pdm_3p3v.sv} \
+ -msg {Asynchronous reset 'vcc_pok_rst_h_n' is driven by a multiplexer here, used as a reset} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_MUX -location {usb_clk.sv} \
+ -regexp {Asynchronous reset 'rst_n' is driven by a multiplexer here, used as a reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -regexp {('vcore_pok_h_i'|'vcaon_pok') is used for some other purpose, and as asynchronous reset} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -regexp {'(vcmain_pok_por|vcmain_pok_por_src)' is connected to 'rglts_pdm_3p3v' port 'vcmain_pok_por_h_i', and used as an asynchronous reset or set} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -msg {'vcaon_pok_por' is connected to 'rglts_pdm_3p3v' port 'vcaon_pok_por_h_i', and used as an asynchronous reset or set} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -regexp {'(vcc_pok|vcmain_pok_por)' is used for some other purpose, and as asynchronous reset} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -regexp {'rst_(usb|aon|io|sys)_clk_n' is connected to '(usb|aon|io|sys)_clk' port 'rst_(usb|aon|io|sys)_clk_ni', and used as an asynchronous reset or set ('rst_ni'|'vcore_pok_h_i'|'rst_clk_byp_n')} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {io_osc.sv sys_osc.sv usb_osc.sv aon_osc.sv} \
+ -msg {'vcore_pok_h_i' is used for some other purpose, and as asynchronous reset at} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast_dft.sv} \
+ -msg {'clk_io_osc_val_i' is used for some other purpose, and as asynchronous reset 'rst_clk_osc_n' at ast_dft.sv} \
+ -comment {This is reset / clock generation logic, hence special reset usage is allowed.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -msg {'rst_ast_tlul_ni' is connected to 'ast_dft' port 'rst_ni', and used as an asynchronous reset or set 'rst_n' at rng} \
+ -comment {This is a valid reset connection.}
+
+waive -rules RESET_USE -location {ast.sv} \
+ -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 RESET_USE -location {ast.sv} \
+ -regexp {'rst_ast_usb_ni' is used for some other purpose, and as asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are allowed.}
+
+waive -rules RESET_USE -location {usb_clk.sv} \
+ -regexp {'rst_usb_clk_ni' is used for some other purpose, and as asynchronous reset 'rst_ni' at prim_generic_flop.sv} \
+ -comment {This is reset generation logic, hence reset muxes are 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.}
+
+waive -rules TERMINAL_STATE -location {rglts_pdm_3p3v.sv} \
+ -msg {Terminal state 'RGLS_BROUT' is detected. State register 'rgls_sm' is not assigned to another state.} \
+ -comment {The brownout state is terminal.}
+
+waive -rules Z_USE -location {ast.sv} \
+ -msg {Constant with 'Z literal value '1'bz' encountered} \
+ -comment {This part models a tristate driver.}
+
+waive -rules MULTI_RESET -location {rglts_pdm_3p3v.sv} \
+ -msg {Found 2 asynchronous resets for this block: 'vcc_pok_rst_h_n', 'vcc_pok_set_h'} \
+ -comment {This code is only a model and hence this is allowed.}
+
+waive -rules NOT_READ -location {aon_osc.sv io_osc.sv sys_osc.sv usb_osc.sv} \
+ -msg {Signal 'en_osc' is not read from in module} \
+ -comment {Signal 'en_osc' is not read when SYNTHESIS is defined, and AST_BYPASS_CLK is not defined.}
diff --git a/src/ast/rtl/adc.sv b/src/ast/rtl/adc.sv
new file mode 100644
index 0000000..2b2425b
--- /dev/null
+++ b/src/ast/rtl/adc.sv
@@ -0,0 +1,141 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: adc
+// *Module Description: Analog/Digital Converter
+//############################################################################
+
+module adc #(
+ parameter int unsigned AdcCnvtClks = 19,// 21cc from adc_chnsel_i change to adc_d_val_o assertion
+ parameter int AdcChannels = 2, // ADC number of Channels
+ parameter int AdcDataWidth = 10
+) (
+ input ast_pkg::awire_t adc_a0_ai, // ADC A0 Analog Input
+ input ast_pkg::awire_t adc_a1_ai, // ADC A1 Analog Input
+ input [AdcChannels-1:0] adc_chnsel_i, // Onehot value only for selrction
+ input adc_pd_i, // ADC Power Down
+ input clk_adc_i, // ADC Clock (aon_clk - 200KHz)
+ input rst_adc_ni, // ADC Reset active low
+ output logic [AdcDataWidth-1:0] adc_d_o, // ADC 10-bit Data Output
+ output logic adc_d_val_o // ADC Data Valid Output
+);
+
+///////////////////////////////////////
+// ADC Enable
+///////////////////////////////////////
+logic adc_en;
+
+always_ff @( posedge clk_adc_i, negedge rst_adc_ni ) begin
+ if ( !rst_adc_ni ) begin
+ adc_en <= 1'b0;
+ end else begin
+ adc_en <= !adc_pd_i;
+ end
+end
+
+
+///////////////////////////////////////
+// ADC Channel Select
+///////////////////////////////////////
+logic chn_selected, chn_selected_d, new_convert, adc_busy;
+
+assign chn_selected = |(adc_chnsel_i);
+
+always_ff @( posedge clk_adc_i, negedge rst_adc_ni ) begin
+ if ( !rst_adc_ni ) begin
+ chn_selected_d <= 1'b0;
+ end else begin
+ chn_selected_d <= chn_selected;
+ end
+end
+
+// New Convertion
+assign new_convert = chn_selected && !chn_selected_d && !adc_busy;
+
+////////////////////////////////////////
+// ADC Analog Model
+////////////////////////////////////////
+logic [10-1:0] adc_d_ch0, adc_d_ch1;
+
+adc_ana u_adc_ana (
+ .adc_a0_ai ( adc_a0_ai ),
+ .adc_a1_ai ( adc_a1_ai ),
+ .adc_d_ch0_o ( adc_d_ch0[10-1:0] ),
+ .adc_d_ch1_o ( adc_d_ch1[10-1:0] )
+);
+
+
+////////////////////////////////////////
+// ADC Digital Model
+////////////////////////////////////////
+logic [8-1:0] cnv_cyc;
+logic [8-1:0] ConvertCount;
+
+assign ConvertCount = AdcCnvtClks[8-1:0];
+
+always_ff @( posedge clk_adc_i, negedge rst_adc_ni ) begin
+ if (!rst_adc_ni ) begin
+ cnv_cyc <= 8'h00;
+ adc_busy <= 1'b0;
+ adc_d_val_o <= 1'b0;
+ adc_d_o <= {AdcDataWidth{1'b0}};
+ end else if ( !(adc_en && chn_selected) ) begin
+ cnv_cyc <= 8'h00;
+ adc_busy <= 1'b0;
+ adc_d_val_o <= 1'b0;
+ end else if ( new_convert ) begin
+ cnv_cyc <= ConvertCount;
+ adc_busy <= 1'b1;
+ adc_d_val_o <= 1'b0;
+ end else if ( adc_busy && (cnv_cyc > 8'h00) ) begin
+ cnv_cyc <= cnv_cyc - 1'b1;
+ adc_busy <= 1'b1;
+ adc_d_val_o <= 1'b0;
+ end else if ( adc_busy ) begin
+ adc_busy <= 1'b0;
+ adc_d_val_o <= 1'b1;
+ adc_d_o <= (adc_chnsel_i[1:0] == 2'b00) ? adc_d_o :
+ (adc_chnsel_i[1:0] == 2'b01) ? adc_d_ch0[10-1:0] :
+ (adc_chnsel_i[1:0] == 2'b10) ? adc_d_ch1[10-1:0] :
+ {AdcDataWidth{1'b1}};
+ end
+end
+
+/////////////////////////
+// ASSERTIONS
+/////////////////////////
+// Add Assertion mux selector is onehot - zero is allowed
+`ASSERT(AdcChnselOneHot_A, $onehot0(adc_chnsel_i), clk_adc_i, !rst_adc_ni)
+
+// Add Assertion adc_en=0 chnsel is 0.
+`ASSERT(NoChannelWhileDisabled_A, (adc_en == 0) |-> (adc_chnsel_i == 4'h0), clk_adc_i, !rst_adc_ni)
+
+// The power up time period is 30us throughout which the adc_chnsel_i needs to be stable at 0.
+// Since we are dealing with a time period here, and not clock cycles, we need to make sure
+// that we sample and check enough clock ticks in order to guarantee the timing is met.
+// Assuming that the clk_adc_i period is 200kHz, this SVA makes sure that:
+//
+// a) the signal adc_chnsel_i was 0 before adc_pd_i fell. this is achieved by sampling
+// and checking on clock edges (-1) ... 0 in the illustration below.
+// b) the signal adc_chnsel_i remained at 0 for at least 30us after adc_pd_i fell.
+// this is achieved by sampling and checking on clock edges 0 ... 6 which cover a
+// time period of 6 x 5us as shown in the illustration below.
+// ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
+// clk_ast_adc_i : | |__| |__| |__| |__| |__| |__| |__| |__| |__| |__| |__
+// ___________
+// adc_pd_i : | |_______________________________________________________
+//
+// adc_chnsel_i : xxxxxx___________________________________________________xxxxxxxxx
+//
+// ChannelStableOnAdcEn_A: | | | | | | | |
+// -1 0 1 2 3 4 5 6
+// <------------ 6 x 5us = 30us ----------->
+`ASSERT(ChannelStableOnAdcEn_A,
+ $fell(adc_pd_i) |-> ($past(adc_chnsel_i) == 4'h0)[*8], clk_adc_i, !rst_adc_ni)
+
+endmodule : adc
diff --git a/src/ast/rtl/adc_ana.sv b/src/ast/rtl/adc_ana.sv
new file mode 100644
index 0000000..6f4b640
--- /dev/null
+++ b/src/ast/rtl/adc_ana.sv
@@ -0,0 +1,45 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: sdc_ana
+// *Module Description: ADC Analog
+//############################################################################
+
+module adc_ana (
+ input ast_pkg::awire_t adc_a0_ai, // ADC A0 Analog Input
+ input ast_pkg::awire_t adc_a1_ai, // ADC A1 Analog Input
+ output logic [10-1:0] adc_d_ch0_o, // ADC A0 Digital Output
+ output logic [10-1:0] adc_d_ch1_o // ADC A1 Digital Output
+);
+
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+real vref = 2.3;
+real adc_vi0_hook = 1.0;
+real adc_vi1_hook = 1.0;
+real adc_vi0, adc_vi1;
+
+`ifdef ANALOGSIM
+assign adc_vi0 = adc_a0_ai;
+assign adc_vi1 = adc_a1_ai;
+`else
+assign adc_vi0 = adc_a0_ai ? adc_vi0_hook : 0.0;
+assign adc_vi1 = adc_a1_ai ? adc_vi1_hook : 0.0;
+`endif
+assign adc_d_ch0_o = $rtoi((adc_vi0/vref) * $itor(10'h3ff));
+assign adc_d_ch1_o = $rtoi((adc_vi1/vref) * $itor(10'h3ff));
+`else // of SYNTHESIS
+// FPGA/VERILATOR
+////////////////////////////////////////
+logic [10-1:0] adc_d_vi0_hook, adc_d_vi1_hook;
+
+assign adc_d_vi0_hook = 10'h155;
+assign adc_d_vi1_hook = 10'h2AA;
+
+assign adc_d_ch0_o = adc_a0_ai ? adc_d_vi0_hook : 10'h000;
+assign adc_d_ch1_o = adc_a1_ai ? adc_d_vi1_hook : 10'h000;
+`endif
+
+endmodule : adc_ana
diff --git a/src/ast/rtl/aon_clk.sv b/src/ast/rtl/aon_clk.sv
new file mode 100644
index 0000000..568cba4
--- /dev/null
+++ b/src/ast/rtl/aon_clk.sv
@@ -0,0 +1,67 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: aon_clk
+// *Module Description: Always ON Clock
+//############################################################################
+
+module aon_clk (
+ input vcore_pok_h_i, // VCORE POK @3.3V (for OSC)
+ input clk_aon_pd_ni, // AON Clock Power-down
+ input rst_aon_clk_ni, // AON Clock Logic reset
+ input clk_src_aon_en_i, // AON Source Clock Enable
+ input scan_mode_i, // Scan Mode
+ input aon_osc_cal_i, // AON Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_aon_ext_i, // FPGA/VERILATOR Clock input
+`endif
+ output logic clk_src_aon_o, // AON Source Clock
+ output logic clk_src_aon_val_o // AON Source Clock Valid
+);
+
+logic clk, osc_en, aon_clk_en;
+
+assign osc_en = (clk_src_aon_en_i && clk_aon_pd_ni && rst_aon_clk_ni);
+assign aon_clk_en = scan_mode_i || osc_en;
+
+// Clock Oscillator
+///////////////////////////////////////
+aon_osc u_aon_osc (
+ .vcore_pok_h_i ( vcore_pok_h_i ),
+ .aon_en_i ( aon_clk_en ),
+ .aon_osc_cal_i ( aon_osc_cal_i ),
+`ifdef AST_BYPASS_CLK
+ .clk_aon_ext_i ( clk_aon_ext_i ),
+`endif
+ .aon_clk_o ( clk )
+); // of u_aon_osc
+
+// Clock & Valid
+///////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_aon_buf(
+ .clk_i ( clk ),
+ .clk_o ( clk_src_aon_o )
+);
+
+// 2-stage de-assertion
+logic rst_val_n;
+assign rst_val_n = aon_clk_en;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_val_sync (
+ .clk_i ( clk_src_aon_o ),
+ .rst_ni ( rst_val_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( clk_src_aon_val_o )
+);
+
+endmodule : aon_clk
diff --git a/src/ast/rtl/aon_osc.sv b/src/ast/rtl/aon_osc.sv
new file mode 100644
index 0000000..c18e51c
--- /dev/null
+++ b/src/ast/rtl/aon_osc.sv
@@ -0,0 +1,132 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: aon_osc
+// *Module Description: AON Clock Oscilator
+//############################################################################
+
+module aon_osc (
+ input vcore_pok_h_i, // VCORE POK @3.3V
+ input aon_en_i, // AON Source Clock Enable
+ input aon_osc_cal_i, // AON Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_aon_ext_i, // FPGA/VERILATOR Clock input\
+`endif
+ output logic aon_clk_o // AON Clock Output
+);
+
+`ifndef AST_BYPASS_CLK
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+timeunit 1ns / 10ps;
+
+real CLK_PERIOD, ckmul;
+
+reg init_start;
+initial init_start = 1'b0;
+
+initial begin
+ if ( !$value$plusargs("osc200k_freq_multiplier=%f", ckmul) ) ckmul = 1.0;
+ #1;
+ init_start = 1'b1;
+ #1;
+ $display("\n%m: AON Base Clock Power-up Frequency: %0d Hz", $rtoi(10**9/(CLK_PERIOD*ckmul)));
+ $display("%m: AON %0.1fxBase Clock Power-up Frequency: %0d Hz", ckmul, $rtoi(10**9/CLK_PERIOD));
+end
+
+// Enable 5us RC Delay on rise
+wire en_osc_re_buf, en_osc_re;
+buf #(ast_bhv_pkg::AON_EN_RDLY, 0) b0 (en_osc_re_buf, (vcore_pok_h_i && aon_en_i));
+assign en_osc_re = en_osc_re_buf && init_start;
+
+// Clock Oscillator
+////////////////////////////////////////
+real CalAonClkPeriod, UncAonClkPeriod, AonClkPeriod;
+
+initial CalAonClkPeriod = $itor( 5000 ); // 5000ns (200KHz)
+initial UncAonClkPeriod = $itor( $urandom_range(10000, 5555) ); // 10000-5555ps (100-180KHz)
+
+assign AonClkPeriod = (aon_osc_cal_i && init_start) ? CalAonClkPeriod : UncAonClkPeriod;
+assign CLK_PERIOD = AonClkPeriod/ckmul;
+
+// Free running oscillator
+reg clk_osc;
+initial clk_osc = 1'b1;
+
+always begin
+ #(CLK_PERIOD/2) clk_osc = ~clk_osc;
+end
+
+logic en_osc;
+
+// HDL Clock Gate
+logic en_clk, clk;
+
+always_latch begin
+ if ( !clk_osc ) en_clk = en_osc;
+end
+
+assign clk = clk_osc && en_clk;
+`else // of SYNTHESIS
+// SYNTHESIS/LINTER
+///////////////////////////////////////
+logic clk, en_osc;
+assign clk = 1'b0;
+
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && aon_en_i;
+`endif // of SYNTHESIS
+`else // of AST_BYPASS_CLK
+// VERILATOR/FPGA
+///////////////////////////////////////
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && aon_en_i;
+
+// Clock Oscillator
+////////////////////////////////////////
+logic clk, en_osc;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1 )
+) u_clk_ckgt (
+ .clk_i ( clk_aon_ext_i ),
+ .en_i ( en_osc ),
+ .test_en_i ( 1'b0 ),
+ .clk_o ( clk )
+);
+`endif
+
+logic en_osc_fe;
+
+// Syncronize en_osc to clk FE for glitch free disable
+always_ff @( negedge clk, negedge vcore_pok_h_i ) begin
+ if ( !vcore_pok_h_i ) begin
+ en_osc_fe <= 1'b0;
+ end else begin
+ en_osc_fe <= en_osc_re;
+ end
+end
+
+assign en_osc = en_osc_re || en_osc_fe; // EN -> 1 || EN -> 0
+
+// Clock Output Buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_buf (
+ .clk_i ( clk ),
+ .clk_o ( aon_clk_o )
+);
+
+
+`ifdef SYNTHESIS
+///////////////////////
+// Unused Signals
+///////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ aon_osc_cal_i };
+`endif
+
+endmodule : aon_osc
diff --git a/src/ast/rtl/ast.sv b/src/ast/rtl/ast.sv
new file mode 100644
index 0000000..d3c084d
--- /dev/null
+++ b/src/ast/rtl/ast.sv
@@ -0,0 +1,1062 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast
+// *Module Description: Analog Sensors Top
+//############################################################################
+
+`include "prim_assert.sv"
+
+module ast #(
+ 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 = 9
+) (
+ // tlul if
+ input tlul_pkg::tl_h2d_t tl_i, // TLUL H2D
+ output tlul_pkg::tl_d2h_t tl_o, // TLUL D2H
+ output prim_mubi_pkg::mubi4_t ast_init_done_o, // AST (registers) Init Done
+
+ // clocks / resets
+ input clk_ast_adc_i, // Buffered AST ADC Clock
+ input rst_ast_adc_ni, // Buffered AST ADC Reset
+ input clk_ast_alert_i, // Buffered AST Alert Clock
+ input rst_ast_alert_ni, // Buffered AST Alert Reset
+ input clk_ast_es_i, // Buffered AST Entropy Source Clock
+ input rst_ast_es_ni, // Buffered AST Entropy Source Reset
+ input clk_ast_rng_i, // Buffered AST RNG Clock
+ input rst_ast_rng_ni, // Buffered AST RNG Reset
+ input clk_ast_tlul_i, // Buffered AST TLUL Clock
+ input rst_ast_tlul_ni, // Buffered AST TLUL Reset
+ input clk_ast_usb_i, // Buffered AST USB Clock
+ input rst_ast_usb_ni, // Buffered AST USB Reset
+ input clk_ast_ext_i, // Buffered AST External Clock
+ input por_ni, // Power ON Reset
+
+ // sensed clocks / resets
+ input clkmgr_pkg::clkmgr_out_t sns_clks_i, // Sensed Clocks
+ input rstmgr_pkg::rstmgr_out_t sns_rsts_i, // Sensed Resets
+ input sns_spi_ext_clk_i, // Sensed SPI External Clock
+
+`ifdef AST_BYPASS_CLK
+ // Clocks' Oschillator bypass for OS FPGA
+ input ast_pkg::clks_osc_byp_t clk_osc_byp_i, // Clocks' Oschillator bypass for OS FPGA/VERILATOR
+`endif
+
+ // power OK control
+ // In non-power aware DV environment, the <>_supp_i is for debug only!
+ // POK signal follow this input.
+ // In a power aware environment this signal should be connected to constant '1'
+ input vcc_supp_i, // VCC Supply Test for OS FPGA
+ input vcaon_supp_i, // VCAON Supply Test for OS FPGA
+ input vcmain_supp_i, // VCMAIN Supply Test for OS FPGA
+ input vioa_supp_i, // VIOA Rail Supply Test for OS FPGA
+ input viob_supp_i, // VIOB Rail Supply Test for OS FPGA
+ output ast_pkg::ast_pwst_t ast_pwst_o, // AON, MAIN, IO-0 Rail, IO-1 Rail Power OK @1.1V
+ output ast_pkg::ast_pwst_t ast_pwst_h_o, // AON, MAIN, IO-9 Rail, IO-1 Rail Power OK @3.3V
+
+ // Power and IO pin connections
+ input main_pd_ni, // MAIN Regulator Power Down
+ input main_env_iso_en_i, // Enveloped ISOlation ENable for MAIN
+
+ // power down monitor logic - flash/otp related
+ output logic flash_power_down_h_o, // Flash Power Down
+ output logic flash_power_ready_h_o, // Flash Power Ready
+ input [1:0] otp_power_seq_i, // MMR0,24 in (VDD)
+ output logic [1:0] otp_power_seq_h_o, // MMR0,24 masked by PDM, out (VCC)
+
+ // system source clock
+ input clk_src_sys_en_i, // SYS Source Clock Enable
+ input prim_mubi_pkg::mubi4_t clk_src_sys_jen_i, // SYS Source Clock Jitter Enable
+ output logic clk_src_sys_o, // SYS Source Clock
+ output logic clk_src_sys_val_o, // SYS Source Clock Valid
+
+ // aon source clock
+ output logic clk_src_aon_o, // AON Source Clock
+ output logic clk_src_aon_val_o, // AON Source Clock Valid
+
+ // io source clock
+ input clk_src_io_en_i, // IO Source Clock Enable
+ output logic clk_src_io_o, // IO Source Clock
+ output logic clk_src_io_val_o, // IO Source Clock Valid
+ output prim_mubi_pkg::mubi4_t clk_src_io_48m_o, // IO Source Clock is 48MHz
+
+ // usb source clock
+ input usb_ref_pulse_i, // USB Reference Pulse
+ input usb_ref_val_i, // USB Reference Valid
+ input clk_src_usb_en_i, // USB Source Clock Enable
+ output logic clk_src_usb_o, // USB Source Clock
+ output logic clk_src_usb_val_o, // USB Source Clock Valid
+ output logic [UsbCalibWidth-1:0] usb_io_pu_cal_o, // USB IO Pull-up Calibration Setting
+
+ // adc interface
+ input adc_pd_i, // ADC Power Down
+ input ast_pkg::awire_t adc_a0_ai, // ADC A0 Analog Input
+ input ast_pkg::awire_t adc_a1_ai, // ADC A1 Analog Input
+ input [AdcChannels-1:0] adc_chnsel_i, // ADC Channel Select
+ output [AdcDataWidth-1:0] adc_d_o, // ADC Digital (per channel)
+ output adc_d_val_o, // ADC Digital Valid
+
+ // rng (entropy source) interface
+ input rng_en_i, // RNG Enable
+ input rng_fips_i, // RNG FIPS
+ output logic rng_val_o, // RNG Valid
+ output logic [EntropyStreams-1:0] rng_b_o, // RNG Bit(s)
+
+ // entropy distribution interface
+ input edn_pkg::edn_rsp_t entropy_rsp_i, // Entropy Response
+ output edn_pkg::edn_req_t entropy_req_o, // Entropy Request
+
+ // alerts
+ input ast_pkg::ast_alert_rsp_t alert_rsp_i, // Alerts Trigger & Acknowledge Inputs
+ output ast_pkg::ast_alert_req_t alert_req_o, // Alerts Output
+
+ // dft interface
+ input pinmux_pkg::dft_strap_test_req_t dft_strap_test_i, // DFT Straps
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en_i, // DFT enable (secure bus)
+ input [8-1:0] fla_obs_i, // FLASH Observe Bus
+ input [8-1:0] otp_obs_i, // OTP Observe Bus
+ input [8-1:0] otm_obs_i, // OT Modules Observe Bus
+ input usb_obs_i, // USB DIFF RX Observe
+ output ast_pkg::ast_obs_ctrl_t obs_ctrl_o, // Observe Control
+
+ // pad mux/pad related
+ input [Pad2AstInWidth-1:0] padmux2ast_i, // IO_2_DFT Input Signals
+ output logic [Ast2PadOutWidth-1:0] ast2padmux_o, // DFT_2_IO Output Signals
+
+`ifdef ANALOGSIM
+ output real ast2pad_t0_ao, // AST_2_PAD Analog T0 Output Signal
+ output real ast2pad_t1_ao, // AST_2_PAD Analog T1 Output Signal
+`else
+ output wire ast2pad_t0_ao, // AST_2_PAD Analog T0 Output Signal
+ output wire ast2pad_t1_ao, // AST_2_PAD Analog T1 Output Signal
+`endif
+
+ // flash and external clocks
+ input prim_mubi_pkg::mubi4_t ext_freq_is_96m_i, // External clock frequecy is 96MHz
+ input prim_mubi_pkg::mubi4_t all_clk_byp_req_i, // All clocks bypass request
+ output prim_mubi_pkg::mubi4_t all_clk_byp_ack_o, // Switch all clocks to External clocks
+ input prim_mubi_pkg::mubi4_t io_clk_byp_req_i, // IO clock bypass request (for OTP bootstrap)
+ output prim_mubi_pkg::mubi4_t io_clk_byp_ack_o, // Switch IO clock to External clockn
+ output prim_mubi_pkg::mubi4_t flash_bist_en_o, // Flush BIST (TAP) Enable
+
+ // memories read-write margins
+ output ast_pkg::dpm_rm_t dpram_rmf_o, // Dual Port RAM Read-write Margin Fast
+ output ast_pkg::dpm_rm_t dpram_rml_o, // Dual Port RAM Read-write Margin sLow
+ output ast_pkg::spm_rm_t spram_rm_o, // Single Port RAM Read-write Margin
+ output ast_pkg::spm_rm_t sprgf_rm_o, // Single Port Reg-File Read-write Margin
+ output ast_pkg::spm_rm_t sprom_rm_o, // Single Port ROM Read-write Margin
+
+ // Scan interface
+ output prim_mubi_pkg::mubi4_t dft_scan_md_o, // Scan Mode output
+ output scan_shift_en_o, // Scan Shift Enable output
+ output scan_reset_no // Scan Reset output
+);
+
+import ast_pkg::* ;
+import ast_reg_pkg::* ;
+import ast_bhv_pkg::* ;
+
+logic scan_mode, shift_en, scan_reset_n;
+logic vcc_pok, vcc_pok_h, vcc_pok_str;
+logic vcaon_pok, vcaon_pok_h, vcmain_pok;
+logic vcaon_pok_por, vcmain_pok_por;
+
+// Local (AST) System clock buffer
+////////////////////////////////////////
+logic clk_sys;
+
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_sys_buf (
+ .clk_i ( clk_src_sys_o ),
+ .clk_o ( clk_sys )
+);
+
+// Local (AST) AON clock buffer
+////////////////////////////////////////
+logic clk_aon;
+
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_aon_buf (
+ .clk_i ( clk_src_aon_o ),
+ .clk_o ( clk_aon )
+);
+
+
+assign flash_bist_en_o = prim_mubi_pkg::MuBi4False;
+//
+assign dft_scan_md_o = prim_mubi_pkg::MuBi4False;
+assign scan_shift_en_o = 1'b0;
+assign scan_reset_no = 1'b1;
+assign scan_mode = 1'b0;
+assign shift_en = 1'b0;
+assign scan_reset_n = 1'b1;
+
+
+///////////////////////////////////////
+// VCC POK (Always ON)
+///////////////////////////////////////
+logic vcc_pok_int;
+
+vcc_pgd u_vcc_pok (
+ .vcc_pok_o ( vcc_pok_int )
+);
+
+assign vcc_pok = vcc_pok_int && vcc_supp_i;
+assign vcc_pok_h = vcc_pok; // "Level Shifter"
+
+
+////////////////////////////////////////
+// VCAON POK POR (Always ON)
+///////////////////////////////////////
+logic rst_poks_n, rst_poks_por_n, por_sync_n;
+logic vcaon_pok_por_src, vcaon_pok_por_lat, poks_por_ack, rglssm_vcmon, rglssm_brout;
+
+assign rst_poks_n = vcc_pok_str && vcaon_pok;
+assign rst_poks_por_n = vcc_pok_str && vcaon_pok && por_ni;
+assign poks_por_ack = vcaon_pok_por_src || rglssm_vcmon;
+
+// Reset De-Assert Sync
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_poks_por_dasrt (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_poks_por_n ),
+ .d_i ( poks_por_ack ),
+ .q_o ( vcaon_pok_por_src )
+);
+
+logic clk_aon_n;
+
+prim_clock_inv #(
+ .HasScanMode ( 1 )
+) u_clk_aon_inv (
+ .clk_i ( clk_aon ),
+ .scanmode_i ( scan_mode ),
+ .clk_no ( clk_aon_n )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_por_sync_n (
+ .clk_i ( clk_aon_n ),
+ .rst_ni ( rst_poks_n ),
+ .d_i ( vcaon_pok_por_src ),
+ .q_o ( por_sync_n )
+);
+
+// Replace Latch for the OS code
+assign vcaon_pok_por_lat = rglssm_brout || por_sync_n;
+assign ast_pwst_o.aon_pok = vcaon_pok_por_lat;
+assign vcaon_pok_por = scan_mode ? scan_reset_n : vcaon_pok_por_lat;
+
+
+////////////////////////////////////////
+// VCMAIN POK POR (Always ON)
+///////////////////////////////////////
+logic rglssm_vmppr, vcmain_pok_por_src;
+
+assign vcmain_pok_por_src = vcaon_pok_por_lat && vcmain_pok && !rglssm_vmppr;
+assign ast_pwst_o.main_pok = vcmain_pok_por_src;
+assign vcmain_pok_por = scan_mode ? scan_reset_n : vcmain_pok_por_src;
+
+
+///////////////////////////////////////
+// VIOA POK (Always ON)
+///////////////////////////////////////
+logic vioa_pok;
+logic vioa_pok_int;
+
+vio_pgd u_vioa_pok (
+ .vio_pok_o ( vioa_pok_int )
+);
+
+assign vioa_pok = vioa_pok_int && vioa_supp_i;
+assign ast_pwst_o.io_pok[0] = vcaon_pok && vioa_pok;
+
+
+///////////////////////////////////////
+// VIOB POK (Always ON)
+///////////////////////////////////////
+logic viob_pok;
+logic viob_pok_int;
+
+vio_pgd u_viob_pok (
+ .vio_pok_o ( viob_pok_int )
+);
+
+assign viob_pok = viob_pok_int && viob_supp_i;
+assign ast_pwst_o.io_pok[1] = vcaon_pok && viob_pok;
+
+
+///////////////////////////////////////
+// Regulators & PDM Logic (VCC)
+///////////////////////////////////////
+logic deep_sleep;
+logic main_pd, por_sync;
+
+assign main_pd = !main_pd_ni;
+assign por_sync = !por_sync_n;
+
+rglts_pdm_3p3v u_rglts_pdm_3p3v (
+ .vcc_pok_h_i ( vcc_pok_h ),
+ .vcaon_pok_por_h_i ( vcaon_pok_por_src ),
+ .vcmain_pok_por_h_i ( vcmain_pok_por_src ),
+ .vio_pok_h_i ( ast_pwst_o.io_pok[1:0] ),
+ .clk_src_aon_h_i ( clk_aon ),
+ .main_pd_h_i ( main_pd ),
+ .por_sync_h_i ( por_sync ),
+ .scan_mode_h_i ( scan_mode ),
+ .otp_power_seq_h_i ( otp_power_seq_i[2-1:0] ),
+ .vcaon_supp_i ( vcaon_supp_i ),
+ .vcmain_supp_i ( vcmain_supp_i ),
+ .rglssm_vmppr_h_o ( rglssm_vmppr ),
+ .rglssm_vcmon_h_o ( rglssm_vcmon ),
+ .rglssm_brout_h_o ( rglssm_brout ),
+ .vcmain_pok_h_o ( vcmain_pok ),
+ .vcmain_pok_por_h_o ( ast_pwst_h_o.main_pok ),
+ .vcaon_pok_h_o ( vcaon_pok_h ),
+ .vcaon_pok_1p1_h_o ( vcaon_pok ),
+ .vcaon_pok_por_h_o ( ast_pwst_h_o.aon_pok ),
+ .vio_pok_h_o ( ast_pwst_h_o.io_pok[2-1:0] ),
+ .vcc_pok_str_h_o ( ast_pwst_h_o.vcc_pok ),
+ .vcc_pok_str_1p1_h_o ( vcc_pok_str ),
+ .deep_sleep_h_o ( deep_sleep ),
+ .flash_power_down_h_o ( flash_power_down_h_o ),
+ .flash_power_ready_h_o ( flash_power_ready_h_o ),
+ .otp_power_seq_h_o ( otp_power_seq_h_o[2-1:0] )
+);
+
+assign ast_pwst_o.vcc_pok = vcc_pok_str;
+
+
+///////////////////////////////////////
+///////////////////////////////////////
+// Clocks Oscillattors
+///////////////////////////////////////
+///////////////////////////////////////
+
+
+///////////////////////////////////////
+// System Clock (Always ON)
+///////////////////////////////////////
+logic rst_sys_clk_n, clk_sys_pd_n;
+logic clk_sys_en, clk_osc_sys, clk_osc_sys_val;
+prim_mubi_pkg::mubi4_t clk_src_sys_jen;
+
+assign rst_sys_clk_n = vcmain_pok_por && vcc_pok;
+assign clk_sys_pd_n = scan_mode || !deep_sleep;
+
+logic sys_io_osc_cal;
+
+assign clk_sys_en = clk_src_sys_en_i;
+
+`ifdef AST_BYPASS_CLK
+logic clk_sys_ext;
+assign clk_sys_ext = clk_osc_byp_i.sys;
+`endif
+
+sys_clk u_sys_clk (
+ .clk_src_sys_jen_i ( prim_mubi_pkg::mubi4_test_true_loose(clk_src_sys_jen) ),
+ .clk_src_sys_en_i ( clk_sys_en ),
+ .clk_sys_pd_ni ( clk_sys_pd_n ),
+ .rst_sys_clk_ni ( rst_sys_clk_n ),
+ .vcore_pok_h_i ( vcaon_pok_h ),
+ .scan_mode_i ( scan_mode ),
+ .sys_osc_cal_i ( sys_io_osc_cal ),
+`ifdef AST_BYPASS_CLK
+ .clk_sys_ext_i ( clk_sys_ext ),
+`endif
+ .clk_src_sys_o ( clk_osc_sys ),
+ .clk_src_sys_val_o ( clk_osc_sys_val )
+);
+
+
+///////////////////////////////////////
+// USB Clock (Always ON)
+///////////////////////////////////////
+logic rst_usb_clk_n, clk_usb_pd_n;
+logic clk_usb_en, clk_osc_usb, clk_osc_usb_val;
+logic usb_ref_val, usb_ref_pulse;
+
+assign rst_usb_clk_n = vcmain_pok_por && vcc_pok;
+assign clk_usb_pd_n = scan_mode || !deep_sleep;
+
+logic usb_osc_cal;
+
+`ifdef AST_BYPASS_CLK
+logic clk_usb_ext;
+assign clk_usb_ext = clk_osc_byp_i.usb;
+`endif
+
+assign clk_usb_en = clk_src_usb_en_i;
+assign usb_ref_val = usb_ref_val_i;
+assign usb_ref_pulse = usb_ref_pulse_i;
+
+usb_clk u_usb_clk (
+ .vcore_pok_h_i ( vcaon_pok_h ),
+ .clk_usb_pd_ni ( clk_usb_pd_n ),
+ .rst_usb_clk_ni ( rst_usb_clk_n ),
+ .clk_src_usb_en_i ( clk_usb_en ),
+ .usb_ref_val_i ( usb_ref_val ),
+ .usb_ref_pulse_i ( usb_ref_pulse ),
+ .clk_ast_usb_i ( clk_ast_usb_i ),
+ .rst_ast_usb_ni ( rst_ast_usb_ni ),
+ .scan_mode_i ( scan_mode ),
+ .usb_osc_cal_i ( usb_osc_cal ),
+`ifdef AST_BYPASS_CLK
+ .clk_usb_ext_i ( clk_usb_ext ),
+`endif
+ .clk_src_usb_o ( clk_osc_usb ),
+ .clk_src_usb_val_o ( clk_osc_usb_val )
+);
+
+
+///////////////////////////////////////
+// AON Clock (Always ON)
+///////////////////////////////////////
+logic rst_aon_clk_n;
+logic clk_src_aon_en, clk_osc_aon, clk_osc_aon_val;
+logic aon_osc_cal;
+
+`ifdef AST_BYPASS_CLK
+logic clk_aon_ext;
+assign clk_aon_ext = clk_osc_byp_i.aon;
+`endif
+
+assign rst_aon_clk_n = vcc_pok_str && vcaon_pok;
+assign clk_src_aon_en = 1'b1; // Always Enabled
+
+aon_clk u_aon_clk (
+ .vcore_pok_h_i ( vcaon_pok_h ),
+ .clk_aon_pd_ni ( 1'b1 ), // Always Enabled
+ .rst_aon_clk_ni ( rst_aon_clk_n ),
+ .clk_src_aon_en_i ( clk_src_aon_en ),
+ .scan_mode_i ( scan_mode ),
+ .aon_osc_cal_i ( aon_osc_cal ),
+`ifdef AST_BYPASS_CLK
+ .clk_aon_ext_i ( clk_aon_ext ),
+`endif
+ .clk_src_aon_o ( clk_osc_aon ),
+ .clk_src_aon_val_o ( clk_osc_aon_val )
+);
+
+logic vcmpp_aon_sync_n, rst_vcmpp_aon_n;
+
+// Reset De-Assert Sync
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_vcmpp_aon_dasrt (
+ .clk_i ( clk_aon ),
+ .rst_ni ( vcmain_pok_por ),
+ .d_i ( 1'b1 ),
+ .q_o ( vcmpp_aon_sync_n )
+);
+
+assign rst_vcmpp_aon_n = scan_mode ? scan_reset_n : vcmpp_aon_sync_n;
+
+
+///////////////////////////////////////
+// IO Clock (Always ON)
+///////////////////////////////////////
+logic rst_io_clk_n, clk_io_pd_n;
+logic clk_src_io_en, clk_osc_io, clk_osc_io_val;
+
+assign rst_io_clk_n = vcmain_pok_por && vcc_pok;
+assign clk_io_pd_n = scan_mode || !deep_sleep;
+
+`ifdef AST_BYPASS_CLK
+logic clk_io_ext;
+assign clk_io_ext = clk_osc_byp_i.io;
+`endif
+
+assign clk_src_io_en = clk_src_io_en_i;
+
+io_clk u_io_clk (
+ .vcore_pok_h_i ( vcaon_pok_h ),
+ .clk_io_pd_ni ( clk_io_pd_n ),
+ .rst_io_clk_ni ( rst_io_clk_n ),
+ .clk_src_io_en_i ( clk_src_io_en ),
+ .scan_mode_i ( scan_mode ),
+ .io_osc_cal_i ( sys_io_osc_cal ),
+`ifdef AST_BYPASS_CLK
+ .clk_io_ext_i ( clk_io_ext ),
+`endif
+ .clk_src_io_o ( clk_osc_io ),
+ .clk_src_io_val_o ( clk_osc_io_val )
+);
+
+
+///////////////////////////////////////
+// AST Clocks Bypass
+///////////////////////////////////////
+logic clk_src_sys, clk_src_io, clk_src_usb, clk_src_aon;
+
+ast_clks_byp u_ast_clks_byp (
+ .vcaon_pok_i ( vcaon_pok ),
+ .vcaon_pok_por_i ( vcaon_pok_por ),
+ .deep_sleep_i ( deep_sleep ),
+ .clk_src_sys_en_i ( clk_src_sys_en_i ),
+ .clk_osc_sys_i ( clk_osc_sys ),
+ .clk_osc_sys_val_i ( clk_osc_sys_val ),
+ .clk_src_io_en_i ( clk_src_io_en_i ),
+ .clk_osc_io_i ( clk_osc_io ),
+ .clk_osc_io_val_i ( clk_osc_io_val ),
+ .clk_src_usb_en_i ( clk_src_usb_en_i ),
+ .clk_osc_usb_i ( clk_osc_usb ),
+ .clk_osc_usb_val_i ( clk_osc_usb_val ),
+ .clk_osc_aon_i ( clk_osc_aon ),
+ .clk_osc_aon_val_i ( clk_osc_aon_val ),
+ .clk_ast_ext_i ( clk_ast_ext_i ),
+`ifdef AST_BYPASS_CLK
+ .clk_ext_sys_i( clk_sys_ext ),
+ .clk_ext_io_i( clk_io_ext ),
+ .clk_ext_usb_i( clk_usb_ext ),
+ .clk_ext_aon_i( clk_aon_ext ),
+`endif
+ .io_clk_byp_req_i ( io_clk_byp_req_i ),
+ .all_clk_byp_req_i ( all_clk_byp_req_i ),
+ .ext_freq_is_96m_i ( ext_freq_is_96m_i ),
+ .io_clk_byp_ack_o ( io_clk_byp_ack_o ),
+ .all_clk_byp_ack_o ( all_clk_byp_ack_o ),
+ .clk_src_sys_o ( clk_src_sys ),
+ .clk_src_sys_val_o ( clk_src_sys_val_o ),
+ .clk_src_io_o ( clk_src_io ),
+ .clk_src_io_val_o ( clk_src_io_val_o ),
+ .clk_src_io_48m_o ( clk_src_io_48m_o ),
+ .clk_src_usb_o ( clk_src_usb ),
+ .clk_src_usb_val_o ( clk_src_usb_val_o ),
+ .clk_src_aon_o ( clk_src_aon ),
+ .clk_src_aon_val_o ( clk_src_aon_val_o )
+);
+
+// System source clock buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_src_sys_buf (
+ .clk_i ( clk_src_sys ),
+ .clk_o ( clk_src_sys_o )
+);
+
+// IO source clock buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_src_io_buf (
+ .clk_i ( clk_src_io ),
+ .clk_o ( clk_src_io_o )
+);
+
+// USB source clock buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_src_usb_buf (
+ .clk_i ( clk_src_usb ),
+ .clk_o ( clk_src_usb_o )
+);
+
+// AON source clock buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_src_aon_buf (
+ .clk_i ( clk_src_aon ),
+ .clk_o ( clk_src_aon_o )
+);
+
+
+///////////////////////////////////////
+// ADC (Always ON)
+///////////////////////////////////////
+adc #(
+ .AdcCnvtClks ( AdcCnvtClks ),
+ .AdcChannels ( AdcChannels ),
+ .AdcDataWidth ( AdcDataWidth )
+) u_adc (
+ .adc_a0_ai ( adc_a0_ai ),
+ .adc_a1_ai ( adc_a1_ai ),
+ .adc_chnsel_i ( adc_chnsel_i[AdcChannels-1:0] ),
+ .adc_pd_i ( adc_pd_i ),
+ .clk_adc_i ( clk_ast_adc_i ),
+ .rst_adc_ni ( rst_ast_adc_ni ),
+ .adc_d_o ( adc_d_o[AdcDataWidth-1:0] ),
+ .adc_d_val_o ( adc_d_val_o )
+);
+
+
+///////////////////////////////////////
+// Entropy (Always ON)
+///////////////////////////////////////
+localparam int EntropyRateWidth = 4;
+logic [EntropyRateWidth-1:0] entropy_rate;
+logic vcmain_pok_por_sys, rst_src_sys_n;
+
+// Sync clk_src_sys_jen_i to clk_sys
+prim_mubi4_sync #(
+ .NumCopies ( 1 ),
+ .AsyncOn ( 1 ),
+ .StabilityCheck ( 1 ),
+ .ResetValue (prim_mubi_pkg::MuBi4False )
+) u_jitter_en_sync (
+ .clk_i ( clk_sys ),
+ .rst_ni ( rst_src_sys_n ),
+ .mubi_i ( clk_src_sys_jen_i ),
+ .mubi_o ( {clk_src_sys_jen} )
+);
+
+// Reset De-Assert Sync
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_sys_dasrt (
+ .clk_i ( clk_sys ),
+ .rst_ni ( vcmain_pok_por ),
+ .d_i ( 1'b1 ),
+ .q_o ( vcmain_pok_por_sys )
+);
+
+assign rst_src_sys_n = scan_mode ? scan_reset_n : vcmain_pok_por_sys;
+
+`ifndef SYNTHESIS
+logic [EntropyRateWidth-1:0] dv_entropy_rate_value;
+
+initial begin : erate_plusargs
+ dv_entropy_rate_value = EntropyRateWidth'($urandom_range(0, (2**EntropyRateWidth -1)));
+ void'($value$plusargs("entropy_rate_value=%0d", dv_entropy_rate_value));
+ `ASSERT_I(DvErateValueCheck, dv_entropy_rate_value inside {[0:(2**EntropyRateWidth -1)]})
+end
+
+assign entropy_rate = dv_entropy_rate_value;
+`else
+assign entropy_rate = EntropyRateWidth'(5);
+`endif
+
+ast_entropy #(
+ .EntropyRateWidth ( EntropyRateWidth )
+) u_entropy (
+ .entropy_rsp_i ( entropy_rsp_i ),
+ .entropy_rate_i ( entropy_rate[EntropyRateWidth-1:0] ),
+ .clk_ast_es_i ( clk_ast_es_i ),
+ .rst_ast_es_ni ( rst_ast_es_ni ),
+ .clk_src_sys_i ( clk_sys ),
+ .rst_src_sys_ni ( rst_src_sys_n ),
+ .clk_src_sys_val_i ( clk_src_sys_val_o ),
+ .clk_src_sys_jen_i ( prim_mubi_pkg::mubi4_test_true_loose(clk_src_sys_jen) ),
+ .entropy_req_o ( entropy_req_o )
+);
+
+
+///////////////////////////////////////
+// RNG (Always ON)
+///////////////////////////////////////
+ast_pkg::ast_dif_t ot1_alert_src;
+
+rng #(
+ .EntropyStreams ( EntropyStreams )
+) u_rng (
+ .clk_i ( clk_ast_tlul_i ),
+ .rst_ni ( rst_ast_tlul_ni ),
+ .clk_ast_rng_i ( clk_ast_rng_i ),
+ .rst_ast_rng_ni ( rst_ast_rng_ni ),
+ .rng_en_i ( rng_en_i ),
+ .rng_fips_i ( rng_fips_i ),
+ .scan_mode_i ( scan_mode ),
+ .rng_b_o ( rng_b_o[EntropyStreams-1:0] ),
+ .rng_val_o ( rng_val_o )
+);
+
+
+///////////////////////////////////////
+// Alerts (Always ON)
+///////////////////////////////////////
+ast_pkg::ast_dif_t as_alert_src;
+ast_pkg::ast_dif_t cgc_alert_src;
+ast_pkg::ast_dif_t gd_alert_src;
+ast_pkg::ast_dif_t ts_alert_hi_src;
+ast_pkg::ast_dif_t ts_alert_lo_src;
+ast_pkg::ast_dif_t ot0_alert_src;
+ast_pkg::ast_dif_t ot2_alert_src;
+ast_pkg::ast_dif_t ot3_alert_src;
+ast_pkg::ast_dif_t ot4_alert_src;
+ast_pkg::ast_dif_t ot5_alert_src;
+
+
+// Active Shield (AS)
+///////////////////////////////////////
+ast_alert u_alert_as (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( as_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::AsSel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::AsSel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::AsSel] )
+);
+
+// Clock Glitch (CG)
+///////////////////////////////////////
+ast_alert u_alert_cg (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( cgc_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::CgSel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::CgSel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::CgSel] )
+);
+
+// Glitch Detector (GD)
+///////////////////////////////////////
+ast_alert u_alert_gd (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( gd_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::GdSel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::GdSel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::GdSel] )
+);
+
+// Temprature Sensor High (TS Hi)
+///////////////////////////////////////
+ast_alert u_alert_ts_hi (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ts_alert_hi_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::TsHiSel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::TsHiSel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::TsHiSel] )
+);
+
+// Temprature Sensor Low (TS Lo)
+///////////////////////////////////////
+ast_alert u_alert_ts_lo (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ts_alert_lo_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::TsLoSel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::TsLoSel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::TsLoSel] )
+);
+
+// Other-0 Alert (OT0)
+///////////////////////////////////////
+ast_alert u_alert_ot0 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot0_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::Ot0Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::Ot0Sel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::Ot0Sel] )
+); // of u_alert_ot0
+
+// Other-1 Alert (OT1)
+///////////////////////////////////////
+ast_alert u_alert_ot1 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot1_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::Ot1Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::Ot1Sel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::Ot1Sel] )
+); // of u_alert_ot1
+
+// Other-2 Alert (OT2)
+///////////////////////////////////////
+ast_alert u_alert_ot2 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot2_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[Ot2Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[Ot2Sel] ),
+ .alert_req_o ( alert_req_o.alerts[Ot2Sel] )
+); // of u_alert_ot2
+
+// Other-3 Alert (OT3)
+///////////////////////////////////////
+ast_alert u_alert_ot3 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot3_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[Ot3Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[Ot3Sel] ),
+ .alert_req_o ( alert_req_o.alerts[Ot3Sel] )
+); // of u_alert_ot3
+
+// Other-4 Alert (OT4)
+///////////////////////////////////////
+ast_alert u_alert_ot4 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot4_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::Ot4Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::Ot4Sel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::Ot4Sel] )
+); // of u_alert_ot4
+
+// Other-5 Alert (OT5)
+///////////////////////////////////////
+ast_alert u_alert_ot5 (
+ .clk_i ( clk_ast_alert_i ),
+ .rst_ni ( rst_ast_alert_ni ),
+ .alert_src_i ( ot5_alert_src ),
+ .alert_trig_i ( alert_rsp_i.alerts_trig[ast_pkg::Ot5Sel] ),
+ .alert_ack_i ( alert_rsp_i.alerts_ack[ast_pkg::Ot5Sel] ),
+ .alert_req_o ( alert_req_o.alerts[ast_pkg::Ot5Sel] )
+); // of u_alert_ot5
+
+// Alerts Open-Source Selection
+////////////////////////////////////////
+assign as_alert_src = '{p: 1'b0, n: 1'b1};
+assign cgc_alert_src = '{p: 1'b0, n: 1'b1};
+assign gd_alert_src = '{p: 1'b0, n: 1'b1};
+assign ts_alert_hi_src = '{p: 1'b0, n: 1'b1};
+assign ts_alert_lo_src = '{p: 1'b0, n: 1'b1};
+assign ot1_alert_src = '{p: 1'b0, n: 1'b1};
+assign ot2_alert_src = '{p: 1'b0, n: 1'b1};
+assign ot3_alert_src = '{p: 1'b0, n: 1'b1};
+assign ot4_alert_src = '{p: 1'b0, n: 1'b1};
+assign ot5_alert_src = '{p: 1'b0, n: 1'b1};
+
+
+///////////////////////////////////////
+// AST Registers (Always ON)
+///////////////////////////////////////
+ast_reg_pkg::ast_reg2hw_t reg2hw; // Write (To HW)
+ast_reg_pkg::ast_hw2reg_t hw2reg; // Read (From HW)
+logic intg_err;
+
+ast_reg_top u_reg (
+ .clk_i ( clk_ast_tlul_i ),
+ .rst_ni ( rst_ast_tlul_ni ),
+ .tl_i ( tl_i ),
+ .tl_o ( tl_o ),
+ .reg2hw ( reg2hw ),
+ .hw2reg ( hw2reg ),
+ .intg_err_o ( intg_err )
+);
+
+
+///////////////////////////////////////
+// REGAL Register
+///////////////////////////////////////
+logic regal_rst_n;
+assign regal_rst_n = rst_ast_tlul_ni;
+
+logic regal_we;
+logic [32-1:0] regal, regal_di;
+
+assign regal_we = reg2hw.regal.qe;
+assign regal_di = reg2hw.regal.q;
+assign hw2reg.regal.d = regal;
+
+// REGAL & AST init done indication
+always_ff @( posedge clk_ast_tlul_i, negedge regal_rst_n ) begin
+ if ( !regal_rst_n ) begin
+ regal <= ast_reg_pkg::AST_REGAL_RESVAL;
+ ast_init_done_o <= prim_mubi_pkg::MuBi4False;
+ end else if ( regal_we ) begin
+ regal <= regal_di;
+ ast_init_done_o <= prim_mubi_pkg::MuBi4True;
+ end
+end
+
+always_ff @( posedge clk_ast_tlul_i, negedge rst_ast_tlul_ni ) begin
+ if ( !rst_ast_tlul_ni ) begin
+ sys_io_osc_cal <= 1'b0;
+ end else if ( regal_we ) begin
+ sys_io_osc_cal <= 1'b1;
+ end
+end
+
+always_ff @( posedge clk_ast_tlul_i, negedge vcaon_pok_por ) begin
+ if ( !vcaon_pok_por ) begin
+ usb_osc_cal <= 1'b0;
+ end else if ( regal_we ) begin
+ usb_osc_cal <= 1'b1;
+ end
+end
+
+always_ff @( posedge clk_ast_tlul_i, negedge vcaon_pok ) begin
+ if ( !vcaon_pok ) begin
+ aon_osc_cal <= 1'b0;
+ end else if ( regal_we ) begin
+ aon_osc_cal <= 1'b1;
+ end
+end
+
+// TLUL Integrity Error
+assign ot0_alert_src = '{p: intg_err, n: !intg_err};
+
+// USB PU-P and PU-N value selection
+assign usb_io_pu_cal_o = UsbCalibWidth'(1 << (UsbCalibWidth[5-1:0]/2));
+
+
+///////////////////////////////////////
+// DFT (Main | Always ON)
+///////////////////////////////////////
+ast_dft u_ast_dft (
+ .obs_ctrl_o ( obs_ctrl_o ),
+ .ast2padmux_o ( ast2padmux_o[Ast2PadOutWidth-1:0] ),
+ .dpram_rmf_o ( dpram_rmf_o ),
+ .dpram_rml_o ( dpram_rml_o ),
+ .spram_rm_o ( spram_rm_o ),
+ .sprgf_rm_o ( sprgf_rm_o ),
+ .sprom_rm_o ( sprom_rm_o )
+);
+
+
+////////////////////////////////////////
+// DFT Misc Logic
+////////////////////////////////////////
+`ifdef ANALOGSIM
+assign ast2pad_t0_ao = 0.0;
+assign ast2pad_t1_ao = 0.1;
+`else
+assign ast2pad_t0_ao = 1'bz;
+assign ast2pad_t1_ao = 1'bz;
+`endif
+
+
+////////////////
+// Assertions //
+////////////////
+
+// Clocks
+`ASSERT_KNOWN(ClkSrcAonKnownO_A, clk_src_aon_o, 1, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(ClkSrcAonValKnownO_A, clk_src_aon_val_o, clk_src_aon_o, rst_aon_clk_n)
+`ASSERT_KNOWN(ClkSrcIoKnownO_A, clk_src_io_o, 1, ast_pwst_o.main_pok)
+`ASSERT_KNOWN(ClkSrcIoValKnownO_A, clk_src_io_val_o, clk_src_io_o, rst_io_clk_n)
+`ASSERT_KNOWN(ClkSrcIo48mKnownO_A, clk_src_io_48m_o, clk_src_io_o, rst_io_clk_n)
+`ASSERT_KNOWN(ClkSrcSysKnownO_A, clk_src_sys_o, 1, ast_pwst_o.main_pok)
+`ASSERT_KNOWN(ClkSrcSysValKnownO_A, clk_src_sys_val_o, clk_src_sys_o, rst_sys_clk_n)
+`ASSERT_KNOWN(ClkSrcUsbKnownO_A, clk_src_usb_o, 1, ast_pwst_o.main_pok)
+`ASSERT_KNOWN(ClkSrcUsbValKnownO_A, clk_src_usb_val_o, clk_src_usb_o, rst_usb_clk_n)
+//
+`ASSERT_KNOWN(UsbIoPuCalKnownO_A, usb_io_pu_cal_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(LcClkBypAckEnKnownO_A, io_clk_byp_ack_o, clk_ast_tlul_i, rst_ast_tlul_ni)
+`ASSERT_KNOWN(AllClkBypAckEnKnownO_A, all_clk_byp_ack_o, clk_ast_tlul_i, rst_ast_tlul_ni)
+// ADC
+`ASSERT_KNOWN(AdcDKnownO_A, adc_d_o, clk_ast_adc_i, rst_ast_adc_ni)
+`ASSERT_KNOWN(AdcDValKnownO_A, adc_d_val_o, clk_ast_adc_i, rst_ast_adc_ni)
+// RNG
+`ASSERT_KNOWN(RngBKnownO_A, rng_b_o, clk_ast_rng_i, rst_ast_rng_ni)
+`ASSERT_KNOWN(RngValKnownO_A, rng_val_o, clk_ast_rng_i, rst_ast_rng_ni)
+// TLUL
+`ASSERT_KNOWN(TlDValidKnownO_A, tl_o.d_valid, clk_ast_tlul_i, rst_ast_tlul_ni)
+`ASSERT_KNOWN(TlAReadyKnownO_A, tl_o.a_ready, clk_ast_tlul_i, rst_ast_tlul_ni)
+//
+`ASSERT_KNOWN(InitDoneKnownO_A, ast_init_done_o, clk_ast_tlul_i, rst_ast_tlul_ni)
+// POs
+`ASSERT_KNOWN(VcaonPokKnownO_A, ast_pwst_o.aon_pok, clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(VcmainPokKnownO_A, ast_pwst_o.main_pok, clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(VioaPokKnownO_A, ast_pwst_o.io_pok[0], clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(ViobPokKnownO_A, ast_pwst_o.io_pok[1], clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(VcaonPokHKnownO_A, ast_pwst_h_o.aon_pok, clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(VcmainPokHKnownO_A, ast_pwst_h_o.main_pok, clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(VioaPokHKnownO_A, ast_pwst_h_o.io_pok[0], clk_src_aon_o, por_ni)
+`ASSERT_KNOWN(ViobPokHKnownO_A, ast_pwst_h_o.io_pok[1], clk_src_aon_o, por_ni)
+// FLASH/OTP
+`ASSERT_KNOWN(FlashPowerDownKnownO_A, flash_power_down_h_o, 1, ast_pwst_o.main_pok)
+`ASSERT_KNOWN(FlashPowerReadyKnownO_A, flash_power_ready_h_o, 1, ast_pwst_o.main_pok)
+`ASSERT_KNOWN(OtpPowerSeqKnownO_A, otp_power_seq_h_o, 1, ast_pwst_o.main_pok)
+//
+// ES
+`ASSERT_KNOWN(EntropyReeqKnownO_A, entropy_req_o, clk_ast_es_i,rst_ast_es_ni)
+// Alerts
+`ASSERT_KNOWN(AlertReqKnownO_A, alert_req_o, clk_ast_alert_i, rst_ast_alert_ni)
+// DPRAM/SPRAM
+`ASSERT_KNOWN(DpramRmfKnownO_A, dpram_rmf_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(DpramRmlKnownO_A, dpram_rml_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(SpramRmKnownO_A, spram_rm_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(SprgfRmKnownO_A, sprgf_rm_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(SpromRmKnownO_A, sprom_rm_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+// DFT
+`ASSERT_KNOWN(Ast2PadmuxKnownO_A, ast2padmux_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+// SCAN
+`ASSERT_KNOWN(DftScanMdKnownO_A, dft_scan_md_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(ScanShiftEnKnownO_A, scan_shift_en_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(ScanResetKnownO_A, scan_reset_no, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+`ASSERT_KNOWN(FlashBistEnKnownO_A, flash_bist_en_o, clk_ast_tlul_i, ast_pwst_o.aon_pok)
+
+// Alert assertions for reg_we onehot check
+`ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ERR(RegWeOnehot_A,
+ u_reg, alert_req_o.alerts[ast_pkg::Ot0Sel].p, , , clk_ast_alert_i, rst_ast_alert_ni)
+
+
+/////////////////////
+// Unused Signals //
+/////////////////////
+logic unused_sigs;
+
+assign unused_sigs = ^{ clk_ast_usb_i,
+ rst_ast_usb_ni,
+ sns_spi_ext_clk_i,
+ sns_clks_i,
+ sns_rsts_i,
+ intg_err,
+ shift_en,
+ main_env_iso_en_i,
+ rst_vcmpp_aon_n,
+ padmux2ast_i[Pad2AstInWidth-1:0],
+ dft_strap_test_i.valid,
+ dft_strap_test_i.straps[1:0],
+ caliptra_ss_lc_dft_en_i[3:0],
+ fla_obs_i[8-1:0],
+ otp_obs_i[8-1:0],
+ otm_obs_i[8-1:0],
+ usb_obs_i,
+ reg2hw.rega0,
+ reg2hw.rega1,
+ reg2hw.rega2,
+ reg2hw.rega3,
+ reg2hw.rega4,
+ reg2hw.rega5,
+ reg2hw.rega6,
+ reg2hw.rega7,
+ reg2hw.rega8,
+ reg2hw.rega9,
+ reg2hw.rega10,
+ reg2hw.rega11,
+ reg2hw.rega12,
+ reg2hw.rega13,
+ reg2hw.rega14,
+ reg2hw.rega15,
+ reg2hw.rega16,
+ reg2hw.rega17,
+ reg2hw.rega18,
+ reg2hw.rega19,
+ reg2hw.rega20,
+ reg2hw.rega21,
+ reg2hw.rega22,
+ reg2hw.rega23,
+ reg2hw.rega24,
+ reg2hw.rega25,
+ reg2hw.rega26,
+ reg2hw.rega27,
+ reg2hw.rega28,
+ reg2hw.rega29,
+ reg2hw.rega30,
+ reg2hw.rega31,
+ reg2hw.rega32,
+ reg2hw.rega33,
+ reg2hw.rega34,
+ reg2hw.rega35,
+ reg2hw.rega36,
+ reg2hw.rega37,
+ reg2hw.regb // [0:3]
+ };
+
+endmodule : ast
diff --git a/src/ast/rtl/ast_alert.sv b/src/ast/rtl/ast_alert.sv
new file mode 100644
index 0000000..d394139
--- /dev/null
+++ b/src/ast/rtl/ast_alert.sv
@@ -0,0 +1,77 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast_alert
+// *Module Description: AST Alert
+//############################################################################
+
+module ast_alert (
+ input clk_i,
+ input rst_ni,
+ input ast_pkg::ast_dif_t alert_src_i,
+ input ast_pkg::ast_dif_t alert_ack_i,
+ input ast_pkg::ast_dif_t alert_trig_i,
+ output ast_pkg::ast_dif_t alert_req_o
+);
+
+// Unpack inputs
+logic p_alert_src, n_alert_src;
+assign p_alert_src = alert_src_i.p;
+assign n_alert_src = alert_src_i.n;
+
+logic p_alert_ack, n_alert_ack;
+assign p_alert_ack = alert_ack_i.p;
+assign n_alert_ack = alert_ack_i.n;
+
+logic p_alert_trig, n_alert_trig;
+assign p_alert_trig = alert_trig_i.p;
+assign n_alert_trig = alert_trig_i.n;
+
+// Pack outputs
+logic p_alert_req, n_alert_req;
+
+assign alert_req_o.p = p_alert_req;
+assign alert_req_o.n = n_alert_req;
+
+// P Alert
+logic p_alert, set_p_alert, clr_p_alert;
+
+assign set_p_alert = p_alert_src || p_alert_trig;
+assign clr_p_alert = !set_p_alert && p_alert_ack;
+
+always_ff @( posedge clk_i, negedge rst_ni ) begin
+ if ( !rst_ni ) begin
+ p_alert <= 1'b0;
+ end else if ( set_p_alert ) begin
+ p_alert <= 1'b1;
+ end else if ( clr_p_alert ) begin
+ p_alert <= 1'b0;
+ end
+end
+
+assign p_alert_req = p_alert;
+
+// N Alert
+logic n_alert, set_n_alert, clr_n_alert;
+
+assign set_n_alert = !(n_alert_src && n_alert_trig);
+assign clr_n_alert = !(set_n_alert || n_alert_ack);
+
+always_ff @( posedge clk_i, negedge rst_ni ) begin
+ if ( !rst_ni ) begin
+ n_alert <= 1'b1;
+ end else if ( set_n_alert ) begin
+ n_alert <= 1'b0;
+ end else if ( clr_n_alert ) begin
+ n_alert <= 1'b1;
+ end
+end
+
+assign n_alert_req = n_alert;
+
+endmodule : ast_alert
diff --git a/src/ast/rtl/ast_bhv_pkg.sv b/src/ast/rtl/ast_bhv_pkg.sv
new file mode 100644
index 0000000..d87f9f8
--- /dev/null
+++ b/src/ast/rtl/ast_bhv_pkg.sv
@@ -0,0 +1,50 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast_bhv_pkg
+// *Module Description: AST Behavioral Package
+//############################################################################
+`ifdef __AST_BHV_PKG_SV
+`else
+`define __AST_BHV_PKG_SV
+
+package ast_bhv_pkg;
+
+ /////////////////////////////////
+ // Delay Parameters from Spec
+ /////////////////////////////////
+`ifndef SYNTHESIS
+ // POKs
+ parameter time VCC_POK_RDLY = 3us;
+ parameter time VCC_POK_FDLY = 500ns;
+ parameter time VCAON_POK_RDLY = 3us;
+ parameter time VCAON_POK_FDLY = 500ns;
+ parameter time VCMAIN_POK_RDLY = 3us;
+ parameter time VCMAIN_POK_FDLY = 500ns;
+ parameter time VIO_POK_RDLY = 3us;
+ parameter time VIO_POK_FDLY = 500ns;
+ // Main Regulator
+ parameter time MPVCC_RDLY = 5us;
+ parameter time MPVCC_FDLY = 100ns;
+ parameter time MPPD_RDLY = 50us;
+ parameter time MPPD_FDLY = 1us;
+ // Clocks
+ parameter time SYS_EN_RDLY = 5us;
+ parameter time USB_EN_RDLY = 5us;
+ // Reduced for simulation from 50ms
+ parameter time USB_VAL_RDLY = 80ns; // 50ms
+ parameter time USB_VAL_FDLY = 80ns;
+ parameter time IO_EN_RDLY = 5us;
+ parameter time AON_EN_RDLY = 5us;
+ parameter time RNG_EN_RDLY = 5us;
+`endif // of SYNTHESIS
+ // ADC
+ parameter int unsigned AdcCnvtClks = 19;
+
+endpackage // of ast_bhv_pkg
+`endif // of __AST_BHV_PKG_SV
diff --git a/src/ast/rtl/ast_clks_byp.sv b/src/ast/rtl/ast_clks_byp.sv
new file mode 100644
index 0000000..f3f8ec2
--- /dev/null
+++ b/src/ast/rtl/ast_clks_byp.sv
@@ -0,0 +1,811 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast_clks_byp
+// *Module Description: AST Clocks Bypass
+//############################################################################
+
+`include "prim_assert.sv"
+
+module ast_clks_byp (
+ input vcaon_pok_i, // VCAON POK
+ input vcaon_pok_por_i, // VCAON POK POR
+ input deep_sleep_i, // Deep Sleep (main regulator & switch are off)
+ input clk_src_sys_en_i, // SYS Source Clock Enable
+ input clk_osc_sys_i, // SYS Oscillator Clock
+ input clk_osc_sys_val_i, // SYS Oscillator Clock Valid
+ input clk_src_io_en_i, // IO Source Clock Enable
+ input clk_osc_io_i, // IO Oscillator Clock
+ input clk_osc_io_val_i, // IO Oscillator Clock Valid
+ input clk_src_usb_en_i, // USB Source Clock Enable
+ input clk_osc_usb_i, // USB Oscillator Clock
+ input clk_osc_usb_val_i, // USB Oscillator Clock Valid
+ input clk_osc_aon_i, // AON Oscillator Clock
+ input clk_osc_aon_val_i, // AON Oscillator Clock Valid
+ input clk_ast_ext_i, // External Clock
+`ifdef AST_BYPASS_CLK
+ input clk_ext_sys_i,
+ input clk_ext_io_i,
+ input clk_ext_usb_i,
+ input clk_ext_aon_i,
+`endif // of AST_BYPASS_CLK
+ input prim_mubi_pkg::mubi4_t io_clk_byp_req_i, // External IO clock mux for OTP bootstrap
+ input prim_mubi_pkg::mubi4_t all_clk_byp_req_i, // External all clock mux override
+ input prim_mubi_pkg::mubi4_t ext_freq_is_96m_i, // External Clock Frequecy is 96MHz (else 48MHz)
+ output prim_mubi_pkg::mubi4_t io_clk_byp_ack_o, // Switch IO clock to External clock
+ output prim_mubi_pkg::mubi4_t all_clk_byp_ack_o, // Switch all clocks to External clock
+ output logic clk_src_sys_o, // SYS Source Clock
+ output logic clk_src_sys_val_o, // SYS Source Clock Valid
+ output logic clk_src_io_o, // IO Source Clock
+ output logic clk_src_io_val_o, // IO Source Clock Valid
+ output prim_mubi_pkg::mubi4_t clk_src_io_48m_o, // IO Source Clock is 48Mhz
+ output logic clk_src_usb_o, // USB Source Clock
+ output logic clk_src_usb_val_o, // USB Source Clock Valid
+ output logic clk_src_aon_o, // AON Source Clock
+ output logic clk_src_aon_val_o // AON Source Clock Valid
+);
+
+logic scan_mode_i, scan_reset_ni;
+
+assign scan_mode_i = 1'b0;
+assign scan_reset_ni = 1'b1;
+
+////////////////////////////////////////
+// Local AON clock buffer
+////////////////////////////////////////
+logic clk_aon, rst_aon_n;
+
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_aon_buf (
+ .clk_i ( clk_src_aon_o ),
+ .clk_o ( clk_aon )
+);
+
+logic vcaon_pok; // For Spyglass waiver!!!
+
+assign vcaon_pok = vcaon_pok_i;
+assign rst_aon_n = scan_mode_i ? scan_reset_ni : vcaon_pok;
+
+
+////////////////////////////////////////
+// External Clocks Generation
+////////////////////////////////////////
+// Enable External Clock for SW Bypass
+logic rst_sw_clk_byp_en, sw_all_clk_byp, sw_io_clk_byp;
+
+always_ff @( posedge clk_aon, negedge rst_aon_n ) begin
+ if ( !rst_aon_n ) begin
+ rst_sw_clk_byp_en <= 1'b0;
+ end else if ( sw_all_clk_byp || sw_io_clk_byp ) begin
+ rst_sw_clk_byp_en <= 1'b1;
+ end
+end
+
+logic rst_sw_ckbpe_n, clk_ast_ext_scn, da_rst_sw_ckbpe_n, sw_clk_byp_en;
+
+assign rst_sw_ckbpe_n = scan_mode_i ? scan_reset_ni : rst_sw_clk_byp_en;
+`ifndef AST_BYPASS_CLK
+assign clk_ast_ext_scn = scan_mode_i ? clk_osc_sys_i : clk_ast_ext_i;
+`else // of AST_BYPASS_CLK
+assign clk_ast_ext_scn = scan_mode_i ? clk_osc_sys_i : clk_ext_sys_i;
+`endif // of AST_BYPASS_CLK
+
+// De-Assert Sync
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_rst_sw_ckbpe_dasrt (
+ .clk_i ( clk_ast_ext_scn ),
+ .rst_ni ( rst_sw_ckbpe_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( da_rst_sw_ckbpe_n )
+);
+
+// De-assert with external clock input
+always_ff @( negedge clk_ast_ext_scn, negedge da_rst_sw_ckbpe_n ) begin
+ if ( !da_rst_sw_ckbpe_n ) begin
+ sw_clk_byp_en <= 1'b0;
+ end else begin
+ sw_clk_byp_en <= 1'b1;
+ end
+end
+
+logic clk_ext_en, clk_ext_scn;
+
+assign clk_ext_en = sw_clk_byp_en;
+`ifdef AST_BYPASS_CLK
+logic clk_ast_ext;
+
+prim_clock_gating #(
+ .NoFpgaGate(1'b1)
+) u_clk_ast_ext_gating (
+ .clk_i( clk_ext_sys_i ),
+ .en_i( clk_ext_en ),
+ .test_en_i( 1'b0 ),
+ .clk_o( clk_ast_ext )
+);
+
+assign clk_ext_scn = scan_mode_i ? clk_osc_sys_i : clk_ast_ext;
+`else
+//we can't use prim_clock_gating here for the following reason:
+//prim_clock_gating default behavior at wakeup: clk_i=1'bx, en_i=don't care --> clk_o=1'bx
+//we want to mask that 1'bx as some tests doesn't use clk_ast_ext_i
+assign clk_ext_scn = scan_mode_i ? clk_osc_sys_i : (clk_ast_ext_i && clk_ext_en);
+`endif
+
+// Local EXT clock buffer
+////////////////////////////////////////
+logic clk_ext;
+
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_ext_buf (
+ .clk_i ( clk_ext_scn ),
+ .clk_o ( clk_ext )
+);
+
+logic rst_aon_n_exda, rst_aon_exda_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_aon_n_exda_sync (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_aon_n_exda )
+);
+
+assign rst_aon_exda_n = scan_mode_i ? scan_reset_ni : rst_aon_n_exda;
+
+// External USB & AON clocks genaration
+////////////////////////////////////////
+`ifndef AST_BYPASS_CLK
+logic clk_src_ext_usb, ext_freq_is_96m, ext_freq_is_96m_sync;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ // Assume external clock is 96Hhz on reset
+ .ResetValue ( 1'b1 )
+) u_no_scan_ext_freq_is_96m_sync (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_exda_n ),
+ .d_i ( ext_freq_is_96m ),
+ .q_o ( ext_freq_is_96m_sync )
+);
+
+prim_clock_div #(
+ .Divisor( 2 )
+) u_no_scan_clk_ext_d1ord2 (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_exda_n ),
+ .step_down_req_i( !ext_freq_is_96m_sync ),
+ .step_down_ack_o ( ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_src_ext_usb )
+);
+`else // of AST_BYPASS_CLK
+logic clk_src_ext_usb, ext_freq_is_96m;
+assign clk_src_ext_usb = clk_ext_usb_i;
+`endif // of AST_BYPASS_CLK
+
+logic clk_ext_aon, clk_ext_aon_val;
+
+assign clk_ext_aon_val = 1'b1; // Always ON clock
+
+`ifndef AST_BYPASS_CLK
+prim_clock_div #(
+ .Divisor( 240 )
+) u_no_scan_clk_usb_div240_div (
+ .clk_i ( clk_src_ext_usb ),
+ .rst_ni ( rst_aon_exda_n ),
+ .step_down_req_i( 1'b0 ),
+ .step_down_ack_o ( ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_ext_aon )
+);
+`else // of AST_BYPASS_CLK
+assign clk_ext_aon = clk_ext_aon_i;
+`endif // of AST_BYPASS_CLK
+
+
+////////////////////////////////////////
+// Deep-Sleep/Enables Gators
+////////////////////////////////////////
+
+// Deep-Sleep Sync to External clcok
+////////////////////////////////////////
+logic deep_sleep, deep_sleep_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_deep_sleep_sync (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_exda_n ),
+ .d_i ( deep_sleep_i ),
+ .q_o ( deep_sleep )
+);
+
+assign deep_sleep_n = !deep_sleep;
+
+// SYS External Clock Enable
+////////////////////////////////////////
+logic clk_ext_sys, clk_ext_sys_en, clk_ext_sys_val;
+logic clk_src_sys_en;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_clk_src_sys_en_sync (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_exda_n ),
+ .d_i ( clk_src_sys_en_i ),
+ .q_o ( clk_src_sys_en )
+);
+
+assign clk_ext_sys_en = deep_sleep_n && clk_src_sys_en;
+assign clk_ext_sys_val = clk_ext_sys_en;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1)
+) u_clk_ext_sys_ckgt (
+ .clk_i ( clk_ext ),
+ .en_i ( clk_ext_sys_en ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_ext_sys )
+);
+
+// IO External Clock Enable
+////////////////////////////////////////
+logic clk_ext_io, clk_ext_io_en, clk_ext_io_val;
+logic clk_src_io_en;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_clk_src_io_en_sync (
+ .clk_i ( clk_ext ),
+ .rst_ni ( rst_aon_exda_n ),
+ .d_i ( clk_src_io_en_i ),
+ .q_o ( clk_src_io_en )
+);
+
+assign clk_ext_io_en = deep_sleep_n && clk_src_io_en;
+assign clk_ext_io_val = clk_ext_io_en;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1)
+) u_clk_ext_io_ckgt (
+`ifndef AST_BYPASS_CLK
+ .clk_i ( clk_ext ),
+`else // of AST_BYPASS_CLK
+ .clk_i ( clk_ext_io_i ),
+`endif // of AST_BYPASS_CLK
+ .en_i ( clk_ext_io_en ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_ext_io )
+);
+
+// USB External Clock Enable
+////////////////////////////////////////
+logic clk_ext_usb, clk_ext_usb_en, clk_ext_usb_val;
+logic clk_src_usb_en;
+logic clk_src_ext_usb_n;
+
+assign clk_src_ext_usb_n = ~clk_src_ext_usb;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_clk_src_usb_en_sync (
+ .clk_i ( clk_src_ext_usb_n ),
+ .rst_ni ( rst_aon_exda_n ),
+ .d_i ( clk_src_usb_en_i ),
+ .q_o ( clk_src_usb_en )
+);
+
+assign clk_ext_usb_en = deep_sleep_n && clk_src_usb_en;
+assign clk_ext_usb_val = clk_ext_usb_en;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1)
+) u_clk_ext_usb_ckgt (
+ .clk_i ( clk_src_ext_usb ),
+ .en_i ( clk_ext_usb_en ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_ext_usb )
+);
+
+
+////////////////////////////////////////
+// SW Bypass select logic
+////////////////////////////////////////
+// Sync to local AON clock
+prim_mubi_pkg::mubi4_t ot_io_clk_byp_req, ot_all_clk_byp_req, ot_ext_freq_is_96m;
+
+prim_mubi4_sync #(
+ .StabilityCheck ( 1 ),
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_io_clk_byp_req (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .mubi_i ( io_clk_byp_req_i ),
+ .mubi_o ( {ot_io_clk_byp_req} )
+);
+
+prim_mubi4_sync #(
+ .StabilityCheck ( 1 ),
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_all_clk_byp_req (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .mubi_i ( all_clk_byp_req_i ),
+ .mubi_o ( {ot_all_clk_byp_req} )
+);
+
+prim_mubi4_sync #(
+ .StabilityCheck ( 1 ),
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_ext_freq_is_96m (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .mubi_i ( ext_freq_is_96m_i ),
+ .mubi_o ( {ot_ext_freq_is_96m} )
+);
+
+// Decode logic
+logic ot_all_clk_byp, ot_sys_clk_byp, ot_io_clk_byp, ot_usb_clk_byp, ot_aon_clk_byp;
+
+prim_mubi4_dec u_all_byp_sel ( .mubi_i ( ot_all_clk_byp_req ), .mubi_dec_o ( ot_all_clk_byp ) );
+prim_mubi4_dec u_sys_byp_sel ( .mubi_i ( ot_all_clk_byp_req ), .mubi_dec_o ( ot_sys_clk_byp ) );
+prim_mubi4_dec u_io_byp_sel ( .mubi_i ( ot_io_clk_byp_req ), .mubi_dec_o ( ot_io_clk_byp ) );
+prim_mubi4_dec u_usb_byp_sel ( .mubi_i ( ot_all_clk_byp_req ), .mubi_dec_o ( ot_usb_clk_byp ) );
+prim_mubi4_dec u_aon_byp_sel ( .mubi_i ( ot_all_clk_byp_req ), .mubi_dec_o ( ot_aon_clk_byp ) );
+
+// De-Glitch selects (decode "noise")
+logic sw_sys_clk_byp, sw_usb_clk_byp, sw_aon_clk_byp, sw_exfr_is_96m;
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_all_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( ot_all_clk_byp ),
+ .q_o ( sw_all_clk_byp )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_sys_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( ot_sys_clk_byp ),
+ .q_o ( sw_sys_clk_byp )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_io_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( ot_io_clk_byp ),
+ .q_o ( sw_io_clk_byp )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_usb_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( ot_usb_clk_byp ),
+ .q_o ( sw_usb_clk_byp )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_aon_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( ot_aon_clk_byp ),
+ .q_o ( sw_aon_clk_byp )
+);
+
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sw_exfr_is_96m_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( prim_mubi_pkg::mubi4_test_true_strict(ot_ext_freq_is_96m) ),
+ .q_o ( sw_exfr_is_96m )
+);
+
+logic sys_clk_byp;
+
+assign sys_clk_byp = sw_sys_clk_byp;
+
+logic sel_io_clk_byp, io_clk_byp;
+
+assign sel_io_clk_byp = sw_io_clk_byp || sw_all_clk_byp;
+
+// De-Glitch IO Clock Bypass Select
+////////////////////////////////////////
+prim_flop #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_io_clk_byp_dgl (
+ .clk_i ( clk_aon ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( sel_io_clk_byp ),
+ .q_o ( io_clk_byp )
+);
+
+logic usb_clk_byp;
+
+assign usb_clk_byp = sw_usb_clk_byp;
+
+logic aon_clk_byp;
+
+assign aon_clk_byp = sw_aon_clk_byp;
+
+logic extfreq_is_96m;
+
+assign extfreq_is_96m = sw_exfr_is_96m;
+
+// Block changes during scan mode
+////////////////////////////////////////
+logic sys_clk_byp_sel, io_clk_byp_sel, usb_clk_byp_sel, aon_clk_byp_sel;
+
+`ifndef AST_BYPASS_CLK
+always_latch begin
+ if ( !scan_mode_i ) begin
+ sys_clk_byp_sel = sys_clk_byp;
+ io_clk_byp_sel = io_clk_byp;
+ usb_clk_byp_sel = usb_clk_byp;
+ aon_clk_byp_sel = aon_clk_byp;
+ ext_freq_is_96m = extfreq_is_96m;
+ end
+end
+`else // of AST_BYPASS_CLK
+assign sys_clk_byp_sel = sys_clk_byp;
+assign io_clk_byp_sel = io_clk_byp;
+assign usb_clk_byp_sel = usb_clk_byp;
+assign aon_clk_byp_sel = aon_clk_byp;
+assign ext_freq_is_96m = extfreq_is_96m;
+`endif // of AST_BYPASS_CLK
+
+
+////////////////////////////////////////
+// Clocks Bypass Muxes
+////////////////////////////////////////
+logic sys_clk_osc_en, io_clk_osc_en, usb_clk_osc_en, aon_clk_osc_en;
+logic sys_clk_byp_en, io_clk_byp_en, usb_clk_byp_en, aon_clk_byp_en;
+logic rst_clk_osc_n, rst_clk_ext_n, aon_rst_clk_ext_n;
+
+assign rst_clk_osc_n = vcaon_pok;
+assign rst_clk_ext_n = vcaon_pok_por_i;
+assign aon_rst_clk_ext_n = vcaon_pok;
+
+// DV Hooks for IO clocks
+logic io_clk_byp_select, io_clk_byp_sel_buf, io_clk_osc_en_buf, io_clk_byp_en_buf;
+
+assign io_clk_byp_select = io_clk_byp_sel;
+
+prim_buf u_io_clk_byp_sel (
+ .in_i ( io_clk_byp_select ),
+ .out_o ( io_clk_byp_sel_buf )
+);
+
+prim_buf u_io_clk_osc_en (
+ .in_i ( io_clk_osc_en ),
+ .out_o ( io_clk_osc_en_buf )
+);
+
+prim_buf u_io_clk_byp_en (
+ .in_i ( io_clk_byp_en ),
+ .out_o ( io_clk_byp_en_buf )
+);
+
+logic rst_clk_osc_sys_n, rst_clk_ext_sys_n, rst_clk_osc_io_n, rst_clk_ext_io_n;
+logic rst_clk_osc_usb_n, rst_clk_ext_usb_n, rst_clk_osc_aon_n, rst_clk_ext_aon_n;
+
+prim_buf u_rst_clk_osc_sys (
+ .in_i ( rst_clk_osc_n ),
+ .out_o ( rst_clk_osc_sys_n )
+);
+
+prim_buf u_rst_clk_ext_sys (
+ .in_i ( rst_clk_ext_n ),
+ .out_o ( rst_clk_ext_sys_n )
+);
+
+prim_buf u_rst_clk_osc_io (
+ .in_i ( rst_clk_osc_n ),
+ .out_o ( rst_clk_osc_io_n )
+);
+
+prim_buf u_rst_clk_ext_io (
+ .in_i ( rst_clk_ext_n ),
+ .out_o ( rst_clk_ext_io_n )
+);
+
+prim_buf u_rst_clk_osc_usb (
+ .in_i ( rst_clk_osc_n ),
+ .out_o ( rst_clk_osc_usb_n )
+);
+
+prim_buf u_rst_clk_ext_usb (
+ .in_i ( rst_clk_ext_n ),
+ .out_o ( rst_clk_ext_usb_n )
+);
+
+prim_buf u_rst_clk_osc_aon (
+ .in_i ( rst_clk_osc_n ),
+ .out_o ( rst_clk_osc_aon_n )
+);
+
+prim_buf u_rst_clk_ext_aon (
+ .in_i ( aon_rst_clk_ext_n ),
+ .out_o ( rst_clk_ext_aon_n )
+);
+
+// rst_aon_n deasset to io clock
+////////////////////////////////////////
+logic rst_aon_n_ioda, rst_aon_ioda_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_aon_n_ioda_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_aon_n_ioda )
+);
+
+assign rst_aon_ioda_n = scan_mode_i ? scan_reset_ni : rst_aon_n_ioda;
+
+// SYS Clock Bypass Mux
+////////////////////////////////////////
+gfr_clk_mux2 u_clk_src_sys_sel (
+ .clk_osc_i ( clk_osc_sys_i ),
+ .clk_osc_val_i ( clk_osc_sys_val_i ),
+ .rst_clk_osc_ni ( rst_clk_osc_sys_n ),
+ .clk_ext_i ( clk_ext_sys ),
+ .clk_ext_val_i ( clk_ext_sys_val ),
+ .rst_clk_ext_ni ( rst_clk_ext_sys_n ),
+ .ext_sel_i ( sys_clk_byp_sel ),
+ .clk_osc_en_o ( sys_clk_osc_en ),
+ .clk_ext_en_o ( sys_clk_byp_en ),
+ .clk_val_o ( clk_src_sys_val_o ),
+ .clk_o ( clk_src_sys_o )
+);
+
+// IO Clock Bypass Mux
+////////////////////////////////////////
+logic clk_src_io, clk_src_io_val;
+
+gfr_clk_mux2 u_clk_src_io_sel (
+ .clk_osc_i ( clk_osc_io_i ),
+ .clk_osc_val_i ( clk_osc_io_val_i ),
+ .rst_clk_osc_ni ( rst_clk_osc_io_n ),
+ .clk_ext_i ( clk_ext_io ),
+ .clk_ext_val_i ( clk_ext_io_val ),
+ .rst_clk_ext_ni ( rst_clk_ext_io_n ),
+ .ext_sel_i ( io_clk_byp_sel ),
+ .clk_osc_en_o ( io_clk_osc_en ),
+ .clk_ext_en_o ( io_clk_byp_en ),
+ .clk_val_o ( clk_src_io_val ),
+ .clk_o ( clk_src_io )
+);
+
+`ifndef AST_BYPASS_CLK
+assign clk_src_io_val_o = clk_src_io_val;
+assign clk_src_io_o = clk_src_io;
+`else // of AST_BYPASS_CLK
+// For FPGA, clk_ext is always the one frequency, so divide by 2 if downstream
+// thinks it should be "48 MHz" instead of "96 MHz".
+logic ext_freq_is_96m_io_sync;
+logic rst_src_io_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_rst_src_io_n_sync (
+ .clk_i ( clk_src_io ),
+ .rst_ni ( rst_aon_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_src_io_n )
+);
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_ext_freq_is_96m_io_sync (
+ .clk_i ( clk_src_io ),
+ .rst_ni ( rst_src_io_n ),
+ .d_i ( ext_freq_is_96m ),
+ .q_o ( ext_freq_is_96m_io_sync )
+);
+
+logic clk_src_io_div2_sel;
+assign clk_src_io_div2_sel = !ext_freq_is_96m_io_sync & io_clk_byp_sel;
+
+prim_clock_div #(
+ .Divisor( 2 )
+) u_no_scan_clk_src_io_d1ord2 (
+ .clk_i ( clk_src_io ),
+ .rst_ni ( rst_src_io_n ),
+ .step_down_req_i( !clk_src_io_div2_sel ),
+ .step_down_ack_o ( ),
+ .test_en_i ( scan_mode_i ),
+ .clk_o ( clk_src_io_o )
+);
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_clk_src_io_val_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .d_i ( clk_src_io_val ),
+ .q_o ( clk_src_io_val_o )
+);
+`endif // of AST_BYPASS_CLK
+
+// USB Clock Bypass Mux
+////////////////////////////////////////
+gfr_clk_mux2 u_clk_src_usb_sel (
+ .clk_osc_i ( clk_osc_usb_i ),
+ .clk_osc_val_i ( clk_osc_usb_val_i ),
+ .rst_clk_osc_ni ( rst_clk_osc_usb_n ),
+ .clk_ext_i ( clk_ext_usb ),
+ .clk_ext_val_i ( clk_ext_usb_val ),
+ .rst_clk_ext_ni ( rst_clk_ext_usb_n ),
+ .ext_sel_i ( usb_clk_byp_sel ),
+ .clk_osc_en_o ( usb_clk_osc_en ),
+ .clk_ext_en_o ( usb_clk_byp_en ),
+ .clk_val_o ( clk_src_usb_val_o ),
+ .clk_o ( clk_src_usb_o )
+);
+
+// AON Clock Bypass Mux
+////////////////////////////////////////
+gfr_clk_mux2 u_clk_src_aon_sel (
+ .clk_osc_i ( clk_osc_aon_i ),
+ .clk_osc_val_i ( clk_osc_aon_val_i ),
+ .rst_clk_osc_ni ( rst_clk_osc_aon_n ),
+ .clk_ext_i ( clk_ext_aon ),
+ .clk_ext_val_i ( clk_ext_aon_val ),
+ .rst_clk_ext_ni ( rst_clk_ext_aon_n ),
+ .ext_sel_i ( aon_clk_byp_sel ),
+ .clk_osc_en_o ( aon_clk_osc_en ),
+ .clk_ext_en_o ( aon_clk_byp_en ),
+ .clk_val_o ( clk_src_aon_val_o ),
+ .clk_o ( clk_src_aon_o )
+);
+
+// All Clocks Bypass Acknowledge
+////////////////////////////////////////
+logic all_clks_byp_en_src, all_clks_byp_en;
+
+always_ff @( posedge clk_aon, negedge rst_aon_n ) begin
+ if ( !rst_aon_n ) begin
+ all_clks_byp_en_src <= 1'b0;
+ end else begin
+ all_clks_byp_en_src <= sw_all_clk_byp && sys_clk_byp_en && io_clk_byp_en &&
+ usb_clk_byp_en && aon_clk_byp_en;
+ end
+end
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_all_clks_byp_en_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .d_i ( all_clks_byp_en_src ),
+ .q_o ( all_clks_byp_en )
+);
+
+prim_mubi4_sender #(
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_all_clk_byp_ack (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .mubi_i ( prim_mubi_pkg::mubi4_bool_to_mubi(all_clks_byp_en) ),
+ .mubi_o ( {all_clk_byp_ack_o} )
+);
+
+// IO Clock Bypass Acknowledge
+////////////////////////////////////////
+logic only_io_clk_byp_en_src, only_io_clk_byp_en;
+
+always_ff @( posedge clk_aon, negedge rst_aon_n ) begin
+ if ( !rst_aon_n ) begin
+ only_io_clk_byp_en_src <= 1'b0;
+ end else begin
+ only_io_clk_byp_en_src <= sw_io_clk_byp && io_clk_byp_en;
+ end
+end
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_only_io_clk_byp_en_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .d_i ( only_io_clk_byp_en_src ),
+ .q_o ( only_io_clk_byp_en )
+);
+
+prim_mubi4_sender #(
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_io_clk_byp_ack (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .mubi_i ( prim_mubi_pkg::mubi4_bool_to_mubi(only_io_clk_byp_en) ),
+ .mubi_o ( {io_clk_byp_ack_o} )
+);
+
+// IO Clock Source is 48MHz
+////////////////////////////////////////
+logic io_clk_byp_is_48m_src, io_clk_byp_is_48m;
+
+// Oscillator source is always 96MHz.
+// External Bypass source is assume to be 96MHz until it is ebabled as 48MHz
+always_ff @( posedge clk_aon, negedge rst_aon_n ) begin
+ if ( !rst_aon_n ) begin
+ io_clk_byp_is_48m_src <= 1'b0;
+ end else begin
+ io_clk_byp_is_48m_src <= io_clk_byp_en && !ext_freq_is_96m;
+ end
+end
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_io_clk_byp_is_48m_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .d_i ( io_clk_byp_is_48m_src ),
+ .q_o ( io_clk_byp_is_48m )
+);
+
+prim_mubi4_sender #(
+ .ResetValue ( prim_mubi_pkg::MuBi4False )
+) u_clk_src_io_48m_sync (
+ .clk_i ( clk_src_io_o ),
+ .rst_ni ( rst_aon_ioda_n ),
+ .mubi_i ( prim_mubi_pkg::mubi4_bool_to_mubi(io_clk_byp_is_48m) ),
+ .mubi_o ( {clk_src_io_48m_o} )
+);
+
+
+/////////////////////
+// Unused Signals //
+/////////////////////
+logic unused_sigs;
+
+assign unused_sigs = ^{ io_clk_byp_sel_buf,
+ io_clk_byp_en_buf,
+ io_clk_osc_en_buf,
+ sys_clk_osc_en,
+ io_clk_osc_en,
+ usb_clk_osc_en,
+ aon_clk_osc_en
+ };
+
+endmodule : ast_clks_byp
diff --git a/src/ast/rtl/ast_dft.sv b/src/ast/rtl/ast_dft.sv
new file mode 100644
index 0000000..7d27c38
--- /dev/null
+++ b/src/ast/rtl/ast_dft.sv
@@ -0,0 +1,45 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast_dft
+// *Module Description: AST DFT
+//############################################################################
+
+`include "prim_assert.sv"
+
+module ast_dft (
+ output ast_pkg::ast_obs_ctrl_t obs_ctrl_o, // Observe Control
+ output logic [ast_pkg::Ast2PadOutWidth-1:0] ast2padmux_o, // DFT observed outputs
+ // memories read-write margins
+ output ast_pkg::dpm_rm_t dpram_rmf_o, // Dual Port RAM Read-write Margin Fast
+ output ast_pkg::dpm_rm_t dpram_rml_o, // Dual Port RAM Read-write Margin sLow
+ output ast_pkg::spm_rm_t spram_rm_o, // Single Port RAM Read-write Margin
+ output ast_pkg::spm_rm_t sprgf_rm_o, // Single Port Reg-File Read-write Margin
+ output ast_pkg::spm_rm_t sprom_rm_o // Single Port ROM Read-write Margin
+);
+
+// DFT to AST Digital PADs
+assign ast2padmux_o = {ast_pkg::Ast2PadOutWidth{1'b0}};
+
+assign obs_ctrl_o = '{
+ obgsl: 4'h0,
+ obmsl: ast_pkg::ObsNon,
+ obmen: prim_mubi_pkg::MuBi4False
+ };
+
+
+////////////////////////////////////////
+// Memories Read-write Margins
+////////////////////////////////////////
+assign dpram_rmf_o = 10'h000;
+assign dpram_rml_o = 10'h000;
+assign spram_rm_o = 5'h00;
+assign sprgf_rm_o = 5'h00;
+assign sprom_rm_o = 5'h00;
+
+endmodule : ast_dft
diff --git a/src/ast/rtl/ast_entropy.sv b/src/ast/rtl/ast_entropy.sv
new file mode 100644
index 0000000..0efb828
--- /dev/null
+++ b/src/ast/rtl/ast_entropy.sv
@@ -0,0 +1,125 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: ast_entropy
+// *Module Description: AST Entropy
+//############################################################################
+
+module ast_entropy #(
+ parameter int EntropyRateWidth = 4
+) (
+ input edn_pkg::edn_rsp_t entropy_rsp_i, // Entropy Response
+ input [EntropyRateWidth-1:0] entropy_rate_i, // Entropy Rate
+ input clk_ast_es_i, // Entropy Clock
+ input rst_ast_es_ni, // Entropy Reset
+ input clk_src_sys_i, // System Source Clock
+ input rst_src_sys_ni, // System Source Reset
+ input clk_src_sys_val_i, // System Source Clock Valid
+ input clk_src_sys_jen_i, // System Source Clock Jitter Enable
+ output edn_pkg::edn_req_t entropy_req_o // Entropy Request
+);
+
+////////////////////////////////////////
+// Entropy Request FSM
+////////////////////////////////////////
+typedef enum logic [2-1:0] {
+ ERQ_REQ0 = 2'd1, // Device-0 Request (source)
+ ERQ_ACK0 = 2'd3, // Device-0 Acknowledge
+ ERQ_IDLE = 2'd0 // IDLE/RESET
+} erq_sm_e;
+
+erq_sm_e erq_sm;
+logic dev0_wready, dev0_ack;
+logic edn_ack, edn_req;
+logic [32-1:0] edn_bus;
+
+// Pack/Un-pack
+assign entropy_req_o.edn_req = edn_req;
+assign edn_ack = entropy_rsp_i.edn_ack;
+assign edn_bus = entropy_rsp_i.edn_bus;
+
+always_ff @( posedge clk_ast_es_i, negedge rst_ast_es_ni ) begin
+ if ( !rst_ast_es_ni ) begin
+ edn_req <= 1'b0;
+ erq_sm <= ERQ_IDLE;
+ end else begin
+ unique case ( erq_sm )
+ ERQ_IDLE: begin
+ if ( dev0_wready ) begin
+ edn_req <= 1'b1;
+ erq_sm <= ERQ_REQ0;
+ end else begin
+ edn_req <= 1'b0;
+ erq_sm <= ERQ_IDLE;
+ end
+ end
+
+ ERQ_REQ0: begin
+ if ( edn_ack ) begin
+ edn_req <= 1'b0;
+ erq_sm <= ERQ_ACK0;
+ end else begin
+ edn_req <= 1'b1;
+ erq_sm <= ERQ_REQ0;
+ end
+ end
+
+ ERQ_ACK0: begin
+ if ( dev0_wready ) begin
+ edn_req <= 1'b1;
+ erq_sm <= ERQ_REQ0;
+ end else begin
+ edn_req <= 1'b0;
+ erq_sm <= ERQ_ACK0;
+ end
+ end
+
+ default: begin
+ edn_req <= 1'b0;
+ erq_sm <= ERQ_IDLE;
+ end
+ endcase
+ end
+end
+
+assign dev0_ack = edn_ack && ((erq_sm == ERQ_REQ0) || (erq_sm == ERQ_ACK0));
+
+
+////////////////////////////////////////
+// Device 0
+////////////////////////////////////////
+logic dev0_en, dev0_entropy;
+
+assign dev0_en = clk_src_sys_val_i && clk_src_sys_jen_i;
+
+dev_entropy #(
+ .EntropyRateWidth ( EntropyRateWidth )
+) u_dev0_entropy (
+ .clk_i ( clk_ast_es_i ),
+ .rst_ni ( rst_ast_es_ni ),
+ .clk_dev_i ( clk_src_sys_i ),
+ .rst_dev_ni ( rst_src_sys_ni ),
+ .dev_en_i ( dev0_en ),
+ .dev_rate_i ( entropy_rate_i[EntropyRateWidth-1:0] ),
+ .dev_ack_i ( dev0_ack ),
+ .dev_data_i ( edn_bus[32-1:0] ),
+ .dev_wready_o ( dev0_wready ),
+ .dev_data_o ( dev0_entropy )
+);
+
+
+
+/////////////////////
+// Unused Signals
+/////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ entropy_rsp_i.edn_fips,
+ dev0_entropy // Used in ASIC implementation
+ };
+
+endmodule : ast_entropy
diff --git a/src/ast/rtl/ast_pkg.sv b/src/ast/rtl/ast_pkg.sv
new file mode 100644
index 0000000..178172d
--- /dev/null
+++ b/src/ast/rtl/ast_pkg.sv
@@ -0,0 +1,169 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: ast_pkg
+// *Module Description: AST Package
+//############################################################################
+`ifdef __AST_PKG_SV
+`else
+`define __AST_PKG_SV
+
+`define PAD2AST_WIRES \
+{ manual_in_ast_misc, \
+ mio_in_raw[MioPadIoc3], \
+ mio_in_raw[MioPadIoc2], \
+ mio_in_raw[MioPadIoc1], \
+ mio_in_raw[MioPadIob2], \
+ mio_in_raw[MioPadIob1], \
+ mio_in_raw[MioPadIob0], \
+ mio_in_raw[MioPadIoa5], \
+ mio_in_raw[MioPadIoa4] }
+
+package ast_pkg;
+
+parameter int unsigned NumIoRails = 2;
+// Alerts
+parameter int unsigned NumAlerts = 11;
+parameter int unsigned AsSel = 0;
+parameter int unsigned CgSel = 1;
+parameter int unsigned GdSel = 2;
+parameter int unsigned TsHiSel = 3;
+parameter int unsigned TsLoSel = 4;
+parameter int unsigned Ot0Sel = 5;
+parameter int unsigned Ot1Sel = 6;
+parameter int unsigned Ot2Sel = 7;
+parameter int unsigned Ot3Sel = 8;
+parameter int unsigned Ot4Sel = 9;
+parameter int unsigned Ot5Sel = 10;
+//
+parameter int unsigned Lc2HcTrCyc = 102; // ((99+1)+(3+1))x5 = 520 us
+parameter int unsigned Hc2LcTrCyc = 38; // ((35+1)+(3+1))x5 = 200 us
+//
+parameter int unsigned EntropyStreams = 4;
+parameter int unsigned AdcChannels = 2;
+parameter int unsigned AdcDataWidth = 10;
+parameter int unsigned UsbCalibWidth = 20;
+parameter int unsigned Ast2PadOutWidth = 9;
+parameter int unsigned Pad2AstInWidth = 9;
+//
+// AstRegsNum is the number of AST registers programmed during initialization. It includes
+// the register that marks the finalization of init, which asserts the ast_init_done_o.
+// The offset of this register is represented with the AstLastRegOffset parameter.
+parameter int unsigned AstRegsNum = 39;
+parameter int unsigned AstLastRegOffset = (AstRegsNum-1)*4;
+
+// Memories Read-Write Margin Interface
+typedef struct packed {
+ logic marg_en_a;
+ logic [4-1:0] marg_a;
+ logic marg_en_b;
+ logic [4-1:0] marg_b;
+} dpm_rm_t;
+
+typedef struct packed {
+ logic marg_en;
+ logic [4-1:0] marg;
+} spm_rm_t;
+
+// ADC Interface
+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;
+
+// Analog Signal
+ `ifdef ANALOGSIM
+typedef real awire_t;
+ `else
+typedef logic awire_t;
+ `endif
+
+// Clock & Resets Interface
+typedef struct packed {
+ logic clk_sys;
+ logic clk_io;
+ logic clk_usb;
+ logic clk_aon;
+} ast_clks_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 [NumIoRails-1:0] io_pok;
+} ast_status_t;
+
+typedef struct packed {
+ logic aon_pok;
+ logic vcc_pok;
+ logic main_pok;
+ logic [NumIoRails-1:0] io_pok;
+} ast_pwst_t;
+
+// Alerts Interface
+typedef struct packed {
+ logic p;
+ logic n;
+} ast_dif_t;
+
+typedef struct packed {
+ ast_dif_t [NumAlerts-1:0] alerts;
+} ast_alert_req_t;
+
+typedef struct packed {
+ ast_dif_t [NumAlerts-1:0] alerts_ack;
+ ast_dif_t [NumAlerts-1:0] alerts_trig;
+} ast_alert_rsp_t;
+
+// Ack mode enumerations
+typedef enum logic {
+ ImmAck = 0,
+ SwAck = 1
+} ast_ack_mode_e;
+
+// Clocks Oschillator Bypass
+typedef struct packed {
+ logic usb;
+ logic sys;
+ logic io;
+ logic aon;
+} clks_osc_byp_t;
+
+typedef enum logic [4-1:0] {
+ ObsNon = 4'h0, // No module observed (disable)
+ ObsAst = 4'h1, // Observe AST
+ ObsFla = 4'h2, // Observe FLASH
+ ObsOtp = 4'h3, // Observe OTP
+ ObsOt0 = 4'h4, // Observe OT0
+ ObsOt1 = 4'h5, // Observe OT1
+ ObsOt2 = 4'h6, // Observe OT2
+ ObsOt3 = 4'h7, // Observe OT3
+ ObsRs0 = 4'h8, // RESERVED
+ ObsRs1 = 4'h9, // RESERVED
+ ObsRs2 = 4'hA, // RESERVED
+ ObsRs3 = 4'hB, // RESERVED
+ ObsRs4 = 4'hC, // RESERVED
+ ObsRs5 = 4'hD, // RESERVED
+ ObsRs6 = 4'hE, // RESERVED
+ ObsRs7 = 4'hF // RESERVED
+} ast_omdl_e;
+
+typedef struct packed {
+ logic [4-1:0] obgsl;
+ ast_omdl_e obmsl;
+ caliptra_prim_mubi_pkg::mubi4_t obmen;
+} ast_obs_ctrl_t;
+
+endpackage // of ast_pkg
+`endif // of __AST_PKG_SV
diff --git a/src/ast/rtl/ast_pulse_sync.sv b/src/ast/rtl/ast_pulse_sync.sv
new file mode 100644
index 0000000..632e103
--- /dev/null
+++ b/src/ast/rtl/ast_pulse_sync.sv
@@ -0,0 +1,147 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: ast_pulse_symc
+// *Module Description: AST Pulse Synchronizer
+//
+// Synchronizes a pulse from source clock domain (clk_src) to destination
+// clock domain (clk_dst). The source pulse can have any length of the
+// source clock cycle.
+// The destination pulse has the length of one destination clock cycle.
+// Consecutive pulses need to be spaced appropriately apart from each other
+// depending on the clock frequency ratio of the two clock domains.
+//############################################################################
+
+`include "prim_assert.sv"
+
+module ast_pulse_sync (
+ input scan_mode_i,
+ // source clock domain
+ input clk_src_i,
+ input rst_src_ni,
+ input src_pulse_i,
+ output logic src_pulse_en_o,
+ output logic src_busy_o,
+ // destination clock domain
+ input clk_dst_i,
+ input rst_dst_ni,
+ output logic dst_pulse_o
+);
+
+// Reset all flops by both resets
+////////////////////////////////////////
+logic rst_src_n, rst_dst_da_n;
+logic rst_dst_n, rst_src_da_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_dst_da (
+ .clk_i ( clk_src_i),
+ .rst_ni ( rst_dst_ni ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_dst_da_n )
+);
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_src_da (
+ .clk_i ( clk_dst_i),
+ .rst_ni ( rst_src_ni ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_src_da_n )
+);
+
+assign rst_src_n = scan_mode_i ? rst_src_ni : rst_src_ni && rst_dst_da_n;
+assign rst_dst_n = scan_mode_i ? rst_dst_ni : rst_dst_ni && rst_src_da_n;
+
+
+// Pulse Rising Edge Detect & Block
+///////////////////////////////////////
+logic src_pulse_d;
+
+always_ff @( posedge clk_src_i, negedge rst_src_n ) begin
+ if ( !rst_src_n ) begin
+ src_pulse_d <= 1'b0;
+ end else begin
+ src_pulse_d <= src_pulse_i;
+ end
+end
+
+assign src_pulse_en_o = src_pulse_i & !src_pulse_d & !src_busy_o;
+
+
+// Pulse Transformation
+///////////////////////////////////////
+logic src_req;
+
+// Convert src_pulse_en to a level signal
+always_ff @( posedge clk_src_i, negedge rst_src_n ) begin
+ if ( !rst_src_n ) begin
+ src_req <= 1'b0;
+ end else begin
+ src_req <= (src_pulse_en_o ^ src_req);
+ end
+end
+
+
+// SRC_REQ Synchronizer to DST
+///////////////////////////////////////
+logic dst_req;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_dst_req (
+ .clk_i ( clk_dst_i ),
+ .rst_ni ( rst_dst_n ),
+ .d_i ( src_req ),
+ .q_o ( dst_req )
+);
+
+
+// DST_REQ Synchronizer to SRC for ACK
+///////////////////////////////////////
+logic src_ack;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_sync2_ack (
+ .clk_i ( clk_src_i ),
+ .rst_ni ( rst_src_n ),
+ .d_i ( dst_req ),
+ .q_o ( src_ack )
+);
+
+// Source is BUSY when REQ not equel to ACK
+assign src_busy_o = (src_req ^ src_ack);
+
+
+// Pulse Reconstruction
+///////////////////////////////////////
+logic dst_req_d;
+
+always_ff @( posedge clk_dst_i, negedge rst_dst_n ) begin
+ if ( !rst_dst_n ) begin
+ dst_req_d <= 1'b0;
+ end else begin
+ dst_req_d <= dst_req;
+ end
+end
+
+assign dst_pulse_o = (dst_req ^ dst_req_d);
+
+
+////////////////////
+// Assertions
+////////////////////
+
+// A new PULSE can only be introduced when source is not BUSY.
+`ASSERT(NewPulseWhenSrcBusy, $rose(src_pulse_i) |-> !src_busy_o, clk_src_i, !rst_src_n)
+
+`ASSERT(DstPulseCheck_A, dst_pulse_o |=> !dst_pulse_o, clk_dst_i, !rst_dst_n)
+
+endmodule : ast_pulse_sync
diff --git a/src/ast/rtl/ast_reg_pkg.sv b/src/ast/rtl/ast_reg_pkg.sv
new file mode 100644
index 0000000..e81894e
--- /dev/null
+++ b/src/ast/rtl/ast_reg_pkg.sv
@@ -0,0 +1,380 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Package auto-generated by `reggen` containing data structure
+
+package ast_reg_pkg;
+
+ // Param list
+ parameter int NumRegsB = 5;
+ parameter int NumUsbBeaconPulses = 8;
+
+ // Address widths within the block
+ parameter int BlockAw = 10;
+
+ ////////////////////////////
+ // Typedefs for registers //
+ ////////////////////////////
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega0_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega1_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega2_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega3_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega4_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega5_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega6_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega7_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega8_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega9_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega10_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega11_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega12_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega13_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega14_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega15_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega16_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega17_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega18_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega19_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega20_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega21_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega22_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega23_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega24_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega25_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega26_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega27_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega28_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega29_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega30_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega31_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega32_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega33_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega34_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega35_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega36_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_rega37_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } ast_reg2hw_regal_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } ast_reg2hw_regb_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } ast_hw2reg_regal_reg_t;
+
+ // Register -> HW type
+ typedef struct packed {
+ ast_reg2hw_rega0_reg_t rega0; // [1408:1377]
+ ast_reg2hw_rega1_reg_t rega1; // [1376:1345]
+ ast_reg2hw_rega2_reg_t rega2; // [1344:1313]
+ ast_reg2hw_rega3_reg_t rega3; // [1312:1281]
+ ast_reg2hw_rega4_reg_t rega4; // [1280:1249]
+ ast_reg2hw_rega5_reg_t rega5; // [1248:1217]
+ ast_reg2hw_rega6_reg_t rega6; // [1216:1185]
+ ast_reg2hw_rega7_reg_t rega7; // [1184:1153]
+ ast_reg2hw_rega8_reg_t rega8; // [1152:1121]
+ ast_reg2hw_rega9_reg_t rega9; // [1120:1089]
+ ast_reg2hw_rega10_reg_t rega10; // [1088:1057]
+ ast_reg2hw_rega11_reg_t rega11; // [1056:1025]
+ ast_reg2hw_rega12_reg_t rega12; // [1024:993]
+ ast_reg2hw_rega13_reg_t rega13; // [992:961]
+ ast_reg2hw_rega14_reg_t rega14; // [960:929]
+ ast_reg2hw_rega15_reg_t rega15; // [928:897]
+ ast_reg2hw_rega16_reg_t rega16; // [896:865]
+ ast_reg2hw_rega17_reg_t rega17; // [864:833]
+ ast_reg2hw_rega18_reg_t rega18; // [832:801]
+ ast_reg2hw_rega19_reg_t rega19; // [800:769]
+ ast_reg2hw_rega20_reg_t rega20; // [768:737]
+ ast_reg2hw_rega21_reg_t rega21; // [736:705]
+ ast_reg2hw_rega22_reg_t rega22; // [704:673]
+ ast_reg2hw_rega23_reg_t rega23; // [672:641]
+ ast_reg2hw_rega24_reg_t rega24; // [640:609]
+ ast_reg2hw_rega25_reg_t rega25; // [608:577]
+ ast_reg2hw_rega26_reg_t rega26; // [576:545]
+ ast_reg2hw_rega27_reg_t rega27; // [544:513]
+ ast_reg2hw_rega28_reg_t rega28; // [512:481]
+ ast_reg2hw_rega29_reg_t rega29; // [480:449]
+ ast_reg2hw_rega30_reg_t rega30; // [448:417]
+ ast_reg2hw_rega31_reg_t rega31; // [416:385]
+ ast_reg2hw_rega32_reg_t rega32; // [384:353]
+ ast_reg2hw_rega33_reg_t rega33; // [352:321]
+ ast_reg2hw_rega34_reg_t rega34; // [320:289]
+ ast_reg2hw_rega35_reg_t rega35; // [288:257]
+ ast_reg2hw_rega36_reg_t rega36; // [256:225]
+ ast_reg2hw_rega37_reg_t rega37; // [224:193]
+ ast_reg2hw_regal_reg_t regal; // [192:160]
+ ast_reg2hw_regb_mreg_t [4:0] regb; // [159:0]
+ } ast_reg2hw_t;
+
+ // HW -> register type
+ typedef struct packed {
+ ast_hw2reg_regal_reg_t regal; // [31:0]
+ } ast_hw2reg_t;
+
+ // Register offsets
+ parameter logic [BlockAw-1:0] AST_REGA0_OFFSET = 10'h 0;
+ parameter logic [BlockAw-1:0] AST_REGA1_OFFSET = 10'h 4;
+ parameter logic [BlockAw-1:0] AST_REGA2_OFFSET = 10'h 8;
+ parameter logic [BlockAw-1:0] AST_REGA3_OFFSET = 10'h c;
+ parameter logic [BlockAw-1:0] AST_REGA4_OFFSET = 10'h 10;
+ parameter logic [BlockAw-1:0] AST_REGA5_OFFSET = 10'h 14;
+ parameter logic [BlockAw-1:0] AST_REGA6_OFFSET = 10'h 18;
+ parameter logic [BlockAw-1:0] AST_REGA7_OFFSET = 10'h 1c;
+ parameter logic [BlockAw-1:0] AST_REGA8_OFFSET = 10'h 20;
+ parameter logic [BlockAw-1:0] AST_REGA9_OFFSET = 10'h 24;
+ parameter logic [BlockAw-1:0] AST_REGA10_OFFSET = 10'h 28;
+ parameter logic [BlockAw-1:0] AST_REGA11_OFFSET = 10'h 2c;
+ parameter logic [BlockAw-1:0] AST_REGA12_OFFSET = 10'h 30;
+ parameter logic [BlockAw-1:0] AST_REGA13_OFFSET = 10'h 34;
+ parameter logic [BlockAw-1:0] AST_REGA14_OFFSET = 10'h 38;
+ parameter logic [BlockAw-1:0] AST_REGA15_OFFSET = 10'h 3c;
+ parameter logic [BlockAw-1:0] AST_REGA16_OFFSET = 10'h 40;
+ parameter logic [BlockAw-1:0] AST_REGA17_OFFSET = 10'h 44;
+ parameter logic [BlockAw-1:0] AST_REGA18_OFFSET = 10'h 48;
+ parameter logic [BlockAw-1:0] AST_REGA19_OFFSET = 10'h 4c;
+ parameter logic [BlockAw-1:0] AST_REGA20_OFFSET = 10'h 50;
+ parameter logic [BlockAw-1:0] AST_REGA21_OFFSET = 10'h 54;
+ parameter logic [BlockAw-1:0] AST_REGA22_OFFSET = 10'h 58;
+ parameter logic [BlockAw-1:0] AST_REGA23_OFFSET = 10'h 5c;
+ parameter logic [BlockAw-1:0] AST_REGA24_OFFSET = 10'h 60;
+ parameter logic [BlockAw-1:0] AST_REGA25_OFFSET = 10'h 64;
+ parameter logic [BlockAw-1:0] AST_REGA26_OFFSET = 10'h 68;
+ parameter logic [BlockAw-1:0] AST_REGA27_OFFSET = 10'h 6c;
+ parameter logic [BlockAw-1:0] AST_REGA28_OFFSET = 10'h 70;
+ parameter logic [BlockAw-1:0] AST_REGA29_OFFSET = 10'h 74;
+ parameter logic [BlockAw-1:0] AST_REGA30_OFFSET = 10'h 78;
+ parameter logic [BlockAw-1:0] AST_REGA31_OFFSET = 10'h 7c;
+ parameter logic [BlockAw-1:0] AST_REGA32_OFFSET = 10'h 80;
+ parameter logic [BlockAw-1:0] AST_REGA33_OFFSET = 10'h 84;
+ parameter logic [BlockAw-1:0] AST_REGA34_OFFSET = 10'h 88;
+ parameter logic [BlockAw-1:0] AST_REGA35_OFFSET = 10'h 8c;
+ parameter logic [BlockAw-1:0] AST_REGA36_OFFSET = 10'h 90;
+ parameter logic [BlockAw-1:0] AST_REGA37_OFFSET = 10'h 94;
+ parameter logic [BlockAw-1:0] AST_REGAL_OFFSET = 10'h 98;
+ parameter logic [BlockAw-1:0] AST_REGB_0_OFFSET = 10'h 200;
+ parameter logic [BlockAw-1:0] AST_REGB_1_OFFSET = 10'h 204;
+ parameter logic [BlockAw-1:0] AST_REGB_2_OFFSET = 10'h 208;
+ parameter logic [BlockAw-1:0] AST_REGB_3_OFFSET = 10'h 20c;
+ parameter logic [BlockAw-1:0] AST_REGB_4_OFFSET = 10'h 210;
+
+ // Reset values for hwext registers and their fields
+ parameter logic [31:0] AST_REGAL_RESVAL = 32'h 26;
+ parameter logic [31:0] AST_REGAL_REG32_RESVAL = 32'h 26;
+
+ // Register index
+ typedef enum int {
+ AST_REGA0,
+ AST_REGA1,
+ AST_REGA2,
+ AST_REGA3,
+ AST_REGA4,
+ AST_REGA5,
+ AST_REGA6,
+ AST_REGA7,
+ AST_REGA8,
+ AST_REGA9,
+ AST_REGA10,
+ AST_REGA11,
+ AST_REGA12,
+ AST_REGA13,
+ AST_REGA14,
+ AST_REGA15,
+ AST_REGA16,
+ AST_REGA17,
+ AST_REGA18,
+ AST_REGA19,
+ AST_REGA20,
+ AST_REGA21,
+ AST_REGA22,
+ AST_REGA23,
+ AST_REGA24,
+ AST_REGA25,
+ AST_REGA26,
+ AST_REGA27,
+ AST_REGA28,
+ AST_REGA29,
+ AST_REGA30,
+ AST_REGA31,
+ AST_REGA32,
+ AST_REGA33,
+ AST_REGA34,
+ AST_REGA35,
+ AST_REGA36,
+ AST_REGA37,
+ AST_REGAL,
+ AST_REGB_0,
+ AST_REGB_1,
+ AST_REGB_2,
+ AST_REGB_3,
+ AST_REGB_4
+ } ast_id_e;
+
+ // Register width information to check illegal writes
+ parameter logic [3:0] AST_PERMIT [44] = '{
+ 4'b 1111, // index[ 0] AST_REGA0
+ 4'b 1111, // index[ 1] AST_REGA1
+ 4'b 1111, // index[ 2] AST_REGA2
+ 4'b 1111, // index[ 3] AST_REGA3
+ 4'b 1111, // index[ 4] AST_REGA4
+ 4'b 1111, // index[ 5] AST_REGA5
+ 4'b 1111, // index[ 6] AST_REGA6
+ 4'b 1111, // index[ 7] AST_REGA7
+ 4'b 1111, // index[ 8] AST_REGA8
+ 4'b 1111, // index[ 9] AST_REGA9
+ 4'b 1111, // index[10] AST_REGA10
+ 4'b 1111, // index[11] AST_REGA11
+ 4'b 1111, // index[12] AST_REGA12
+ 4'b 1111, // index[13] AST_REGA13
+ 4'b 1111, // index[14] AST_REGA14
+ 4'b 1111, // index[15] AST_REGA15
+ 4'b 1111, // index[16] AST_REGA16
+ 4'b 1111, // index[17] AST_REGA17
+ 4'b 1111, // index[18] AST_REGA18
+ 4'b 1111, // index[19] AST_REGA19
+ 4'b 1111, // index[20] AST_REGA20
+ 4'b 1111, // index[21] AST_REGA21
+ 4'b 1111, // index[22] AST_REGA22
+ 4'b 1111, // index[23] AST_REGA23
+ 4'b 1111, // index[24] AST_REGA24
+ 4'b 1111, // index[25] AST_REGA25
+ 4'b 1111, // index[26] AST_REGA26
+ 4'b 1111, // index[27] AST_REGA27
+ 4'b 1111, // index[28] AST_REGA28
+ 4'b 1111, // index[29] AST_REGA29
+ 4'b 1111, // index[30] AST_REGA30
+ 4'b 1111, // index[31] AST_REGA31
+ 4'b 1111, // index[32] AST_REGA32
+ 4'b 1111, // index[33] AST_REGA33
+ 4'b 1111, // index[34] AST_REGA34
+ 4'b 1111, // index[35] AST_REGA35
+ 4'b 1111, // index[36] AST_REGA36
+ 4'b 1111, // index[37] AST_REGA37
+ 4'b 1111, // index[38] AST_REGAL
+ 4'b 1111, // index[39] AST_REGB_0
+ 4'b 1111, // index[40] AST_REGB_1
+ 4'b 1111, // index[41] AST_REGB_2
+ 4'b 1111, // index[42] AST_REGB_3
+ 4'b 1111 // index[43] AST_REGB_4
+ };
+
+endpackage
diff --git a/src/ast/rtl/ast_reg_top.sv b/src/ast/rtl/ast_reg_top.sv
new file mode 100644
index 0000000..921beb3
--- /dev/null
+++ b/src/ast/rtl/ast_reg_top.sv
@@ -0,0 +1,1969 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "prim_assert.sv"
+
+module ast_reg_top (
+ input clk_i,
+ input rst_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+ // To HW
+ output ast_reg_pkg::ast_reg2hw_t reg2hw, // Write
+ input ast_reg_pkg::ast_hw2reg_t hw2reg, // Read
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import ast_reg_pkg::* ;
+
+ localparam int AW = 10;
+ localparam int DW = 32;
+ localparam int DBW = DW/8; // Byte Width
+
+ // register signals
+ logic reg_we;
+ logic reg_re;
+ logic [AW-1:0] reg_addr;
+ logic [DW-1:0] reg_wdata;
+ logic [DBW-1:0] reg_be;
+ logic [DW-1:0] reg_rdata;
+ logic reg_error;
+
+ logic addrmiss, wr_err;
+
+ logic [DW-1:0] reg_rdata_next;
+ logic reg_busy;
+
+ tlul_pkg::tl_h2d_t tl_reg_h2d;
+ tlul_pkg::tl_d2h_t tl_reg_d2h;
+
+
+ // incoming payload check
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
+ .tl_i(tl_i),
+ .err_o(intg_err)
+ );
+
+ // also check for spurious write enables
+ logic reg_we_err;
+ logic [43:0] reg_we_check;
+ prim_reg_we_check #(
+ .OneHotWidth(44)
+ ) u_prim_reg_we_check (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .oh_i (reg_we_check),
+ .en_i (reg_we && !addrmiss),
+ .err_o (reg_we_err)
+ );
+
+ logic err_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_q <= '0;
+ end else if (intg_err || reg_we_err) begin
+ err_q <= 1'b1;
+ end
+ end
+
+ // integrity error output is permanent and should be used for alert generation
+ // register errors are transactional
+ assign intg_err_o = err_q | intg_err | reg_we_err;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(1)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ assign tl_reg_h2d = tl_i;
+ assign tl_o_pre = tl_reg_d2h;
+
+ tlul_adapter_reg #(
+ .RegAw(AW),
+ .RegDw(DW),
+ .EnableDataIntgGen(0)
+ ) u_reg_if (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ .tl_i (tl_reg_h2d),
+ .tl_o (tl_reg_d2h),
+
+ .en_ifetch_i(prim_mubi_pkg::MuBi4False),
+ .intg_error_o(),
+
+ .we_o (reg_we),
+ .re_o (reg_re),
+ .addr_o (reg_addr),
+ .wdata_o (reg_wdata),
+ .be_o (reg_be),
+ .busy_i (reg_busy),
+ .rdata_i (reg_rdata),
+ .error_i (reg_error)
+ );
+
+ // cdc oversampling signals
+
+ assign reg_rdata = reg_rdata_next ;
+ assign reg_error = addrmiss | wr_err | intg_err;
+
+ // Define SW related signals
+ // Format: __{wd|we|qs}
+ // or _{wd|we|qs} if field == 1 or 0
+ logic [31:0] rega0_qs;
+ logic [31:0] rega1_qs;
+ logic rega2_we;
+ logic [31:0] rega2_qs;
+ logic [31:0] rega2_wd;
+ logic rega3_we;
+ logic [31:0] rega3_qs;
+ logic [31:0] rega3_wd;
+ logic rega4_we;
+ logic [31:0] rega4_qs;
+ logic [31:0] rega4_wd;
+ logic rega5_we;
+ logic [31:0] rega5_qs;
+ logic [31:0] rega5_wd;
+ logic rega6_we;
+ logic [31:0] rega6_qs;
+ logic [31:0] rega6_wd;
+ logic rega7_we;
+ logic [31:0] rega7_qs;
+ logic [31:0] rega7_wd;
+ logic rega8_we;
+ logic [31:0] rega8_qs;
+ logic [31:0] rega8_wd;
+ logic rega9_we;
+ logic [31:0] rega9_qs;
+ logic [31:0] rega9_wd;
+ logic rega10_we;
+ logic [31:0] rega10_qs;
+ logic [31:0] rega10_wd;
+ logic rega11_we;
+ logic [31:0] rega11_qs;
+ logic [31:0] rega11_wd;
+ logic rega12_we;
+ logic [31:0] rega12_qs;
+ logic [31:0] rega12_wd;
+ logic rega13_we;
+ logic [31:0] rega13_qs;
+ logic [31:0] rega13_wd;
+ logic rega14_we;
+ logic [31:0] rega14_qs;
+ logic [31:0] rega14_wd;
+ logic rega15_we;
+ logic [31:0] rega15_qs;
+ logic [31:0] rega15_wd;
+ logic rega16_we;
+ logic [31:0] rega16_qs;
+ logic [31:0] rega16_wd;
+ logic rega17_we;
+ logic [31:0] rega17_qs;
+ logic [31:0] rega17_wd;
+ logic rega18_we;
+ logic [31:0] rega18_qs;
+ logic [31:0] rega18_wd;
+ logic rega19_we;
+ logic [31:0] rega19_qs;
+ logic [31:0] rega19_wd;
+ logic rega20_we;
+ logic [31:0] rega20_qs;
+ logic [31:0] rega20_wd;
+ logic rega21_we;
+ logic [31:0] rega21_qs;
+ logic [31:0] rega21_wd;
+ logic rega22_we;
+ logic [31:0] rega22_qs;
+ logic [31:0] rega22_wd;
+ logic rega23_we;
+ logic [31:0] rega23_qs;
+ logic [31:0] rega23_wd;
+ logic rega24_we;
+ logic [31:0] rega24_qs;
+ logic [31:0] rega24_wd;
+ logic rega25_we;
+ logic [31:0] rega25_qs;
+ logic [31:0] rega25_wd;
+ logic rega26_we;
+ logic [31:0] rega26_qs;
+ logic [31:0] rega26_wd;
+ logic rega27_we;
+ logic [31:0] rega27_qs;
+ logic [31:0] rega27_wd;
+ logic [31:0] rega28_qs;
+ logic rega29_we;
+ logic [31:0] rega29_qs;
+ logic [31:0] rega29_wd;
+ logic rega30_we;
+ logic [31:0] rega30_qs;
+ logic [31:0] rega30_wd;
+ logic rega31_we;
+ logic [31:0] rega31_qs;
+ logic [31:0] rega31_wd;
+ logic rega32_we;
+ logic [31:0] rega32_qs;
+ logic [31:0] rega32_wd;
+ logic rega33_we;
+ logic [31:0] rega33_qs;
+ logic [31:0] rega33_wd;
+ logic rega34_we;
+ logic [31:0] rega34_qs;
+ logic [31:0] rega34_wd;
+ logic rega35_we;
+ logic [31:0] rega35_qs;
+ logic [31:0] rega35_wd;
+ logic rega36_we;
+ logic [31:0] rega36_qs;
+ logic [31:0] rega36_wd;
+ logic rega37_we;
+ logic [31:0] rega37_qs;
+ logic [31:0] rega37_wd;
+ logic regal_we;
+ logic [31:0] regal_wd;
+ logic regb_0_we;
+ logic [31:0] regb_0_qs;
+ logic [31:0] regb_0_wd;
+ logic regb_1_we;
+ logic [31:0] regb_1_qs;
+ logic [31:0] regb_1_wd;
+ logic regb_2_we;
+ logic [31:0] regb_2_qs;
+ logic [31:0] regb_2_wd;
+ logic regb_3_we;
+ logic [31:0] regb_3_qs;
+ logic [31:0] regb_3_wd;
+ logic regb_4_we;
+ logic [31:0] regb_4_qs;
+ logic [31:0] regb_4_wd;
+
+ // Register instances
+ // R[rega0]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRO),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_rega0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega0_qs)
+ );
+
+
+ // R[rega1]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRO),
+ .RESVAL (32'h1),
+ .Mubi (1'b0)
+ ) u_rega1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega1_qs)
+ );
+
+
+ // R[rega2]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h2),
+ .Mubi (1'b0)
+ ) u_rega2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega2_we),
+ .wd (rega2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega2_qs)
+ );
+
+
+ // R[rega3]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h3),
+ .Mubi (1'b0)
+ ) u_rega3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega3_we),
+ .wd (rega3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega3_qs)
+ );
+
+
+ // R[rega4]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h4),
+ .Mubi (1'b0)
+ ) u_rega4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega4_we),
+ .wd (rega4_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega4.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega4_qs)
+ );
+
+
+ // R[rega5]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h5),
+ .Mubi (1'b0)
+ ) u_rega5 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega5_we),
+ .wd (rega5_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega5.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega5_qs)
+ );
+
+
+ // R[rega6]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h6),
+ .Mubi (1'b0)
+ ) u_rega6 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega6_we),
+ .wd (rega6_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega6.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega6_qs)
+ );
+
+
+ // R[rega7]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h7),
+ .Mubi (1'b0)
+ ) u_rega7 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega7_we),
+ .wd (rega7_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega7.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega7_qs)
+ );
+
+
+ // R[rega8]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h8),
+ .Mubi (1'b0)
+ ) u_rega8 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega8_we),
+ .wd (rega8_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega8.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega8_qs)
+ );
+
+
+ // R[rega9]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h9),
+ .Mubi (1'b0)
+ ) u_rega9 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega9_we),
+ .wd (rega9_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega9.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega9_qs)
+ );
+
+
+ // R[rega10]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'ha),
+ .Mubi (1'b0)
+ ) u_rega10 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega10_we),
+ .wd (rega10_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega10.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega10_qs)
+ );
+
+
+ // R[rega11]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'hb),
+ .Mubi (1'b0)
+ ) u_rega11 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega11_we),
+ .wd (rega11_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega11.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega11_qs)
+ );
+
+
+ // R[rega12]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'hc),
+ .Mubi (1'b0)
+ ) u_rega12 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega12_we),
+ .wd (rega12_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega12.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega12_qs)
+ );
+
+
+ // R[rega13]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'hd),
+ .Mubi (1'b0)
+ ) u_rega13 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega13_we),
+ .wd (rega13_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega13.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega13_qs)
+ );
+
+
+ // R[rega14]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'he),
+ .Mubi (1'b0)
+ ) u_rega14 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega14_we),
+ .wd (rega14_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega14.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega14_qs)
+ );
+
+
+ // R[rega15]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'hf),
+ .Mubi (1'b0)
+ ) u_rega15 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega15_we),
+ .wd (rega15_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega15.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega15_qs)
+ );
+
+
+ // R[rega16]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h10),
+ .Mubi (1'b0)
+ ) u_rega16 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega16_we),
+ .wd (rega16_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega16.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega16_qs)
+ );
+
+
+ // R[rega17]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h11),
+ .Mubi (1'b0)
+ ) u_rega17 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega17_we),
+ .wd (rega17_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega17.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega17_qs)
+ );
+
+
+ // R[rega18]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h12),
+ .Mubi (1'b0)
+ ) u_rega18 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega18_we),
+ .wd (rega18_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega18.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega18_qs)
+ );
+
+
+ // R[rega19]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h13),
+ .Mubi (1'b0)
+ ) u_rega19 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega19_we),
+ .wd (rega19_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega19.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega19_qs)
+ );
+
+
+ // R[rega20]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h14),
+ .Mubi (1'b0)
+ ) u_rega20 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega20_we),
+ .wd (rega20_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega20.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega20_qs)
+ );
+
+
+ // R[rega21]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h15),
+ .Mubi (1'b0)
+ ) u_rega21 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega21_we),
+ .wd (rega21_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega21.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega21_qs)
+ );
+
+
+ // R[rega22]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h16),
+ .Mubi (1'b0)
+ ) u_rega22 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega22_we),
+ .wd (rega22_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega22.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega22_qs)
+ );
+
+
+ // R[rega23]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h17),
+ .Mubi (1'b0)
+ ) u_rega23 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega23_we),
+ .wd (rega23_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega23.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega23_qs)
+ );
+
+
+ // R[rega24]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h18),
+ .Mubi (1'b0)
+ ) u_rega24 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega24_we),
+ .wd (rega24_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega24.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega24_qs)
+ );
+
+
+ // R[rega25]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h19),
+ .Mubi (1'b0)
+ ) u_rega25 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega25_we),
+ .wd (rega25_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega25.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega25_qs)
+ );
+
+
+ // R[rega26]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h1a),
+ .Mubi (1'b0)
+ ) u_rega26 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega26_we),
+ .wd (rega26_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega26.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega26_qs)
+ );
+
+
+ // R[rega27]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h1b),
+ .Mubi (1'b0)
+ ) u_rega27 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega27_we),
+ .wd (rega27_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega27.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega27_qs)
+ );
+
+
+ // R[rega28]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRO),
+ .RESVAL (32'h1c),
+ .Mubi (1'b0)
+ ) u_rega28 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega28.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega28_qs)
+ );
+
+
+ // R[rega29]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h1d),
+ .Mubi (1'b0)
+ ) u_rega29 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega29_we),
+ .wd (rega29_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega29.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega29_qs)
+ );
+
+
+ // R[rega30]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h1e),
+ .Mubi (1'b0)
+ ) u_rega30 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega30_we),
+ .wd (rega30_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega30.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega30_qs)
+ );
+
+
+ // R[rega31]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h1f),
+ .Mubi (1'b0)
+ ) u_rega31 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega31_we),
+ .wd (rega31_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega31.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega31_qs)
+ );
+
+
+ // R[rega32]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h20),
+ .Mubi (1'b0)
+ ) u_rega32 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega32_we),
+ .wd (rega32_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega32.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega32_qs)
+ );
+
+
+ // R[rega33]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h21),
+ .Mubi (1'b0)
+ ) u_rega33 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega33_we),
+ .wd (rega33_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega33.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega33_qs)
+ );
+
+
+ // R[rega34]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h22),
+ .Mubi (1'b0)
+ ) u_rega34 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega34_we),
+ .wd (rega34_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega34.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega34_qs)
+ );
+
+
+ // R[rega35]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h23),
+ .Mubi (1'b0)
+ ) u_rega35 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega35_we),
+ .wd (rega35_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega35.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega35_qs)
+ );
+
+
+ // R[rega36]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h24),
+ .Mubi (1'b0)
+ ) u_rega36 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega36_we),
+ .wd (rega36_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega36.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega36_qs)
+ );
+
+
+ // R[rega37]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h25),
+ .Mubi (1'b0)
+ ) u_rega37 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rega37_we),
+ .wd (rega37_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rega37.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rega37_qs)
+ );
+
+
+ // R[regal]: V(True)
+ logic regal_qe;
+ logic [0:0] regal_flds_we;
+ assign regal_qe = ®al_flds_we;
+ prim_subreg_ext #(
+ .DW (32)
+ ) u_regal (
+ .re (1'b0),
+ .we (regal_we),
+ .wd (regal_wd),
+ .d (hw2reg.regal.d),
+ .qre (),
+ .qe (regal_flds_we[0]),
+ .q (reg2hw.regal.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.regal.qe = regal_qe;
+
+
+ // Subregister 0 of Multireg regb
+ // R[regb_0]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_regb_0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (regb_0_we),
+ .wd (regb_0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.regb[0].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (regb_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg regb
+ // R[regb_1]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_regb_1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (regb_1_we),
+ .wd (regb_1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.regb[1].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (regb_1_qs)
+ );
+
+
+ // Subregister 2 of Multireg regb
+ // R[regb_2]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_regb_2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (regb_2_we),
+ .wd (regb_2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.regb[2].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (regb_2_qs)
+ );
+
+
+ // Subregister 3 of Multireg regb
+ // R[regb_3]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_regb_3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (regb_3_we),
+ .wd (regb_3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.regb[3].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (regb_3_qs)
+ );
+
+
+ // Subregister 4 of Multireg regb
+ // R[regb_4]: V(False)
+ prim_subreg #(
+ .DW (32),
+ .SwAccess(prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_regb_4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (regb_4_we),
+ .wd (regb_4_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.regb[4].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (regb_4_qs)
+ );
+
+
+
+ logic [43:0] addr_hit;
+ always_comb begin
+ addr_hit = '0;
+ addr_hit[ 0] = (reg_addr == AST_REGA0_OFFSET);
+ addr_hit[ 1] = (reg_addr == AST_REGA1_OFFSET);
+ addr_hit[ 2] = (reg_addr == AST_REGA2_OFFSET);
+ addr_hit[ 3] = (reg_addr == AST_REGA3_OFFSET);
+ addr_hit[ 4] = (reg_addr == AST_REGA4_OFFSET);
+ addr_hit[ 5] = (reg_addr == AST_REGA5_OFFSET);
+ addr_hit[ 6] = (reg_addr == AST_REGA6_OFFSET);
+ addr_hit[ 7] = (reg_addr == AST_REGA7_OFFSET);
+ addr_hit[ 8] = (reg_addr == AST_REGA8_OFFSET);
+ addr_hit[ 9] = (reg_addr == AST_REGA9_OFFSET);
+ addr_hit[10] = (reg_addr == AST_REGA10_OFFSET);
+ addr_hit[11] = (reg_addr == AST_REGA11_OFFSET);
+ addr_hit[12] = (reg_addr == AST_REGA12_OFFSET);
+ addr_hit[13] = (reg_addr == AST_REGA13_OFFSET);
+ addr_hit[14] = (reg_addr == AST_REGA14_OFFSET);
+ addr_hit[15] = (reg_addr == AST_REGA15_OFFSET);
+ addr_hit[16] = (reg_addr == AST_REGA16_OFFSET);
+ addr_hit[17] = (reg_addr == AST_REGA17_OFFSET);
+ addr_hit[18] = (reg_addr == AST_REGA18_OFFSET);
+ addr_hit[19] = (reg_addr == AST_REGA19_OFFSET);
+ addr_hit[20] = (reg_addr == AST_REGA20_OFFSET);
+ addr_hit[21] = (reg_addr == AST_REGA21_OFFSET);
+ addr_hit[22] = (reg_addr == AST_REGA22_OFFSET);
+ addr_hit[23] = (reg_addr == AST_REGA23_OFFSET);
+ addr_hit[24] = (reg_addr == AST_REGA24_OFFSET);
+ addr_hit[25] = (reg_addr == AST_REGA25_OFFSET);
+ addr_hit[26] = (reg_addr == AST_REGA26_OFFSET);
+ addr_hit[27] = (reg_addr == AST_REGA27_OFFSET);
+ addr_hit[28] = (reg_addr == AST_REGA28_OFFSET);
+ addr_hit[29] = (reg_addr == AST_REGA29_OFFSET);
+ addr_hit[30] = (reg_addr == AST_REGA30_OFFSET);
+ addr_hit[31] = (reg_addr == AST_REGA31_OFFSET);
+ addr_hit[32] = (reg_addr == AST_REGA32_OFFSET);
+ addr_hit[33] = (reg_addr == AST_REGA33_OFFSET);
+ addr_hit[34] = (reg_addr == AST_REGA34_OFFSET);
+ addr_hit[35] = (reg_addr == AST_REGA35_OFFSET);
+ addr_hit[36] = (reg_addr == AST_REGA36_OFFSET);
+ addr_hit[37] = (reg_addr == AST_REGA37_OFFSET);
+ addr_hit[38] = (reg_addr == AST_REGAL_OFFSET);
+ addr_hit[39] = (reg_addr == AST_REGB_0_OFFSET);
+ addr_hit[40] = (reg_addr == AST_REGB_1_OFFSET);
+ addr_hit[41] = (reg_addr == AST_REGB_2_OFFSET);
+ addr_hit[42] = (reg_addr == AST_REGB_3_OFFSET);
+ addr_hit[43] = (reg_addr == AST_REGB_4_OFFSET);
+ end
+
+ assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
+
+ // Check sub-word write is permitted
+ always_comb begin
+ wr_err = (reg_we &
+ ((addr_hit[ 0] & (|(AST_PERMIT[ 0] & ~reg_be))) |
+ (addr_hit[ 1] & (|(AST_PERMIT[ 1] & ~reg_be))) |
+ (addr_hit[ 2] & (|(AST_PERMIT[ 2] & ~reg_be))) |
+ (addr_hit[ 3] & (|(AST_PERMIT[ 3] & ~reg_be))) |
+ (addr_hit[ 4] & (|(AST_PERMIT[ 4] & ~reg_be))) |
+ (addr_hit[ 5] & (|(AST_PERMIT[ 5] & ~reg_be))) |
+ (addr_hit[ 6] & (|(AST_PERMIT[ 6] & ~reg_be))) |
+ (addr_hit[ 7] & (|(AST_PERMIT[ 7] & ~reg_be))) |
+ (addr_hit[ 8] & (|(AST_PERMIT[ 8] & ~reg_be))) |
+ (addr_hit[ 9] & (|(AST_PERMIT[ 9] & ~reg_be))) |
+ (addr_hit[10] & (|(AST_PERMIT[10] & ~reg_be))) |
+ (addr_hit[11] & (|(AST_PERMIT[11] & ~reg_be))) |
+ (addr_hit[12] & (|(AST_PERMIT[12] & ~reg_be))) |
+ (addr_hit[13] & (|(AST_PERMIT[13] & ~reg_be))) |
+ (addr_hit[14] & (|(AST_PERMIT[14] & ~reg_be))) |
+ (addr_hit[15] & (|(AST_PERMIT[15] & ~reg_be))) |
+ (addr_hit[16] & (|(AST_PERMIT[16] & ~reg_be))) |
+ (addr_hit[17] & (|(AST_PERMIT[17] & ~reg_be))) |
+ (addr_hit[18] & (|(AST_PERMIT[18] & ~reg_be))) |
+ (addr_hit[19] & (|(AST_PERMIT[19] & ~reg_be))) |
+ (addr_hit[20] & (|(AST_PERMIT[20] & ~reg_be))) |
+ (addr_hit[21] & (|(AST_PERMIT[21] & ~reg_be))) |
+ (addr_hit[22] & (|(AST_PERMIT[22] & ~reg_be))) |
+ (addr_hit[23] & (|(AST_PERMIT[23] & ~reg_be))) |
+ (addr_hit[24] & (|(AST_PERMIT[24] & ~reg_be))) |
+ (addr_hit[25] & (|(AST_PERMIT[25] & ~reg_be))) |
+ (addr_hit[26] & (|(AST_PERMIT[26] & ~reg_be))) |
+ (addr_hit[27] & (|(AST_PERMIT[27] & ~reg_be))) |
+ (addr_hit[28] & (|(AST_PERMIT[28] & ~reg_be))) |
+ (addr_hit[29] & (|(AST_PERMIT[29] & ~reg_be))) |
+ (addr_hit[30] & (|(AST_PERMIT[30] & ~reg_be))) |
+ (addr_hit[31] & (|(AST_PERMIT[31] & ~reg_be))) |
+ (addr_hit[32] & (|(AST_PERMIT[32] & ~reg_be))) |
+ (addr_hit[33] & (|(AST_PERMIT[33] & ~reg_be))) |
+ (addr_hit[34] & (|(AST_PERMIT[34] & ~reg_be))) |
+ (addr_hit[35] & (|(AST_PERMIT[35] & ~reg_be))) |
+ (addr_hit[36] & (|(AST_PERMIT[36] & ~reg_be))) |
+ (addr_hit[37] & (|(AST_PERMIT[37] & ~reg_be))) |
+ (addr_hit[38] & (|(AST_PERMIT[38] & ~reg_be))) |
+ (addr_hit[39] & (|(AST_PERMIT[39] & ~reg_be))) |
+ (addr_hit[40] & (|(AST_PERMIT[40] & ~reg_be))) |
+ (addr_hit[41] & (|(AST_PERMIT[41] & ~reg_be))) |
+ (addr_hit[42] & (|(AST_PERMIT[42] & ~reg_be))) |
+ (addr_hit[43] & (|(AST_PERMIT[43] & ~reg_be)))));
+ end
+
+ // Generate write-enables
+ assign rega2_we = addr_hit[2] & reg_we & !reg_error;
+
+ assign rega2_wd = reg_wdata[31:0];
+ assign rega3_we = addr_hit[3] & reg_we & !reg_error;
+
+ assign rega3_wd = reg_wdata[31:0];
+ assign rega4_we = addr_hit[4] & reg_we & !reg_error;
+
+ assign rega4_wd = reg_wdata[31:0];
+ assign rega5_we = addr_hit[5] & reg_we & !reg_error;
+
+ assign rega5_wd = reg_wdata[31:0];
+ assign rega6_we = addr_hit[6] & reg_we & !reg_error;
+
+ assign rega6_wd = reg_wdata[31:0];
+ assign rega7_we = addr_hit[7] & reg_we & !reg_error;
+
+ assign rega7_wd = reg_wdata[31:0];
+ assign rega8_we = addr_hit[8] & reg_we & !reg_error;
+
+ assign rega8_wd = reg_wdata[31:0];
+ assign rega9_we = addr_hit[9] & reg_we & !reg_error;
+
+ assign rega9_wd = reg_wdata[31:0];
+ assign rega10_we = addr_hit[10] & reg_we & !reg_error;
+
+ assign rega10_wd = reg_wdata[31:0];
+ assign rega11_we = addr_hit[11] & reg_we & !reg_error;
+
+ assign rega11_wd = reg_wdata[31:0];
+ assign rega12_we = addr_hit[12] & reg_we & !reg_error;
+
+ assign rega12_wd = reg_wdata[31:0];
+ assign rega13_we = addr_hit[13] & reg_we & !reg_error;
+
+ assign rega13_wd = reg_wdata[31:0];
+ assign rega14_we = addr_hit[14] & reg_we & !reg_error;
+
+ assign rega14_wd = reg_wdata[31:0];
+ assign rega15_we = addr_hit[15] & reg_we & !reg_error;
+
+ assign rega15_wd = reg_wdata[31:0];
+ assign rega16_we = addr_hit[16] & reg_we & !reg_error;
+
+ assign rega16_wd = reg_wdata[31:0];
+ assign rega17_we = addr_hit[17] & reg_we & !reg_error;
+
+ assign rega17_wd = reg_wdata[31:0];
+ assign rega18_we = addr_hit[18] & reg_we & !reg_error;
+
+ assign rega18_wd = reg_wdata[31:0];
+ assign rega19_we = addr_hit[19] & reg_we & !reg_error;
+
+ assign rega19_wd = reg_wdata[31:0];
+ assign rega20_we = addr_hit[20] & reg_we & !reg_error;
+
+ assign rega20_wd = reg_wdata[31:0];
+ assign rega21_we = addr_hit[21] & reg_we & !reg_error;
+
+ assign rega21_wd = reg_wdata[31:0];
+ assign rega22_we = addr_hit[22] & reg_we & !reg_error;
+
+ assign rega22_wd = reg_wdata[31:0];
+ assign rega23_we = addr_hit[23] & reg_we & !reg_error;
+
+ assign rega23_wd = reg_wdata[31:0];
+ assign rega24_we = addr_hit[24] & reg_we & !reg_error;
+
+ assign rega24_wd = reg_wdata[31:0];
+ assign rega25_we = addr_hit[25] & reg_we & !reg_error;
+
+ assign rega25_wd = reg_wdata[31:0];
+ assign rega26_we = addr_hit[26] & reg_we & !reg_error;
+
+ assign rega26_wd = reg_wdata[31:0];
+ assign rega27_we = addr_hit[27] & reg_we & !reg_error;
+
+ assign rega27_wd = reg_wdata[31:0];
+ assign rega29_we = addr_hit[29] & reg_we & !reg_error;
+
+ assign rega29_wd = reg_wdata[31:0];
+ assign rega30_we = addr_hit[30] & reg_we & !reg_error;
+
+ assign rega30_wd = reg_wdata[31:0];
+ assign rega31_we = addr_hit[31] & reg_we & !reg_error;
+
+ assign rega31_wd = reg_wdata[31:0];
+ assign rega32_we = addr_hit[32] & reg_we & !reg_error;
+
+ assign rega32_wd = reg_wdata[31:0];
+ assign rega33_we = addr_hit[33] & reg_we & !reg_error;
+
+ assign rega33_wd = reg_wdata[31:0];
+ assign rega34_we = addr_hit[34] & reg_we & !reg_error;
+
+ assign rega34_wd = reg_wdata[31:0];
+ assign rega35_we = addr_hit[35] & reg_we & !reg_error;
+
+ assign rega35_wd = reg_wdata[31:0];
+ assign rega36_we = addr_hit[36] & reg_we & !reg_error;
+
+ assign rega36_wd = reg_wdata[31:0];
+ assign rega37_we = addr_hit[37] & reg_we & !reg_error;
+
+ assign rega37_wd = reg_wdata[31:0];
+ assign regal_we = addr_hit[38] & reg_we & !reg_error;
+
+ assign regal_wd = reg_wdata[31:0];
+ assign regb_0_we = addr_hit[39] & reg_we & !reg_error;
+
+ assign regb_0_wd = reg_wdata[31:0];
+ assign regb_1_we = addr_hit[40] & reg_we & !reg_error;
+
+ assign regb_1_wd = reg_wdata[31:0];
+ assign regb_2_we = addr_hit[41] & reg_we & !reg_error;
+
+ assign regb_2_wd = reg_wdata[31:0];
+ assign regb_3_we = addr_hit[42] & reg_we & !reg_error;
+
+ assign regb_3_wd = reg_wdata[31:0];
+ assign regb_4_we = addr_hit[43] & reg_we & !reg_error;
+
+ assign regb_4_wd = reg_wdata[31:0];
+
+ // Assign write-enables to checker logic vector.
+ always_comb begin
+ reg_we_check = '0;
+ reg_we_check[0] = 1'b0;
+ reg_we_check[1] = 1'b0;
+ reg_we_check[2] = rega2_we;
+ reg_we_check[3] = rega3_we;
+ reg_we_check[4] = rega4_we;
+ reg_we_check[5] = rega5_we;
+ reg_we_check[6] = rega6_we;
+ reg_we_check[7] = rega7_we;
+ reg_we_check[8] = rega8_we;
+ reg_we_check[9] = rega9_we;
+ reg_we_check[10] = rega10_we;
+ reg_we_check[11] = rega11_we;
+ reg_we_check[12] = rega12_we;
+ reg_we_check[13] = rega13_we;
+ reg_we_check[14] = rega14_we;
+ reg_we_check[15] = rega15_we;
+ reg_we_check[16] = rega16_we;
+ reg_we_check[17] = rega17_we;
+ reg_we_check[18] = rega18_we;
+ reg_we_check[19] = rega19_we;
+ reg_we_check[20] = rega20_we;
+ reg_we_check[21] = rega21_we;
+ reg_we_check[22] = rega22_we;
+ reg_we_check[23] = rega23_we;
+ reg_we_check[24] = rega24_we;
+ reg_we_check[25] = rega25_we;
+ reg_we_check[26] = rega26_we;
+ reg_we_check[27] = rega27_we;
+ reg_we_check[28] = 1'b0;
+ reg_we_check[29] = rega29_we;
+ reg_we_check[30] = rega30_we;
+ reg_we_check[31] = rega31_we;
+ reg_we_check[32] = rega32_we;
+ reg_we_check[33] = rega33_we;
+ reg_we_check[34] = rega34_we;
+ reg_we_check[35] = rega35_we;
+ reg_we_check[36] = rega36_we;
+ reg_we_check[37] = rega37_we;
+ reg_we_check[38] = regal_we;
+ reg_we_check[39] = regb_0_we;
+ reg_we_check[40] = regb_1_we;
+ reg_we_check[41] = regb_2_we;
+ reg_we_check[42] = regb_3_we;
+ reg_we_check[43] = regb_4_we;
+ end
+
+ // Read data return
+ always_comb begin
+ reg_rdata_next = '0;
+ unique case (1'b1)
+ addr_hit[0]: begin
+ reg_rdata_next[31:0] = rega0_qs;
+ end
+
+ addr_hit[1]: begin
+ reg_rdata_next[31:0] = rega1_qs;
+ end
+
+ addr_hit[2]: begin
+ reg_rdata_next[31:0] = rega2_qs;
+ end
+
+ addr_hit[3]: begin
+ reg_rdata_next[31:0] = rega3_qs;
+ end
+
+ addr_hit[4]: begin
+ reg_rdata_next[31:0] = rega4_qs;
+ end
+
+ addr_hit[5]: begin
+ reg_rdata_next[31:0] = rega5_qs;
+ end
+
+ addr_hit[6]: begin
+ reg_rdata_next[31:0] = rega6_qs;
+ end
+
+ addr_hit[7]: begin
+ reg_rdata_next[31:0] = rega7_qs;
+ end
+
+ addr_hit[8]: begin
+ reg_rdata_next[31:0] = rega8_qs;
+ end
+
+ addr_hit[9]: begin
+ reg_rdata_next[31:0] = rega9_qs;
+ end
+
+ addr_hit[10]: begin
+ reg_rdata_next[31:0] = rega10_qs;
+ end
+
+ addr_hit[11]: begin
+ reg_rdata_next[31:0] = rega11_qs;
+ end
+
+ addr_hit[12]: begin
+ reg_rdata_next[31:0] = rega12_qs;
+ end
+
+ addr_hit[13]: begin
+ reg_rdata_next[31:0] = rega13_qs;
+ end
+
+ addr_hit[14]: begin
+ reg_rdata_next[31:0] = rega14_qs;
+ end
+
+ addr_hit[15]: begin
+ reg_rdata_next[31:0] = rega15_qs;
+ end
+
+ addr_hit[16]: begin
+ reg_rdata_next[31:0] = rega16_qs;
+ end
+
+ addr_hit[17]: begin
+ reg_rdata_next[31:0] = rega17_qs;
+ end
+
+ addr_hit[18]: begin
+ reg_rdata_next[31:0] = rega18_qs;
+ end
+
+ addr_hit[19]: begin
+ reg_rdata_next[31:0] = rega19_qs;
+ end
+
+ addr_hit[20]: begin
+ reg_rdata_next[31:0] = rega20_qs;
+ end
+
+ addr_hit[21]: begin
+ reg_rdata_next[31:0] = rega21_qs;
+ end
+
+ addr_hit[22]: begin
+ reg_rdata_next[31:0] = rega22_qs;
+ end
+
+ addr_hit[23]: begin
+ reg_rdata_next[31:0] = rega23_qs;
+ end
+
+ addr_hit[24]: begin
+ reg_rdata_next[31:0] = rega24_qs;
+ end
+
+ addr_hit[25]: begin
+ reg_rdata_next[31:0] = rega25_qs;
+ end
+
+ addr_hit[26]: begin
+ reg_rdata_next[31:0] = rega26_qs;
+ end
+
+ addr_hit[27]: begin
+ reg_rdata_next[31:0] = rega27_qs;
+ end
+
+ addr_hit[28]: begin
+ reg_rdata_next[31:0] = rega28_qs;
+ end
+
+ addr_hit[29]: begin
+ reg_rdata_next[31:0] = rega29_qs;
+ end
+
+ addr_hit[30]: begin
+ reg_rdata_next[31:0] = rega30_qs;
+ end
+
+ addr_hit[31]: begin
+ reg_rdata_next[31:0] = rega31_qs;
+ end
+
+ addr_hit[32]: begin
+ reg_rdata_next[31:0] = rega32_qs;
+ end
+
+ addr_hit[33]: begin
+ reg_rdata_next[31:0] = rega33_qs;
+ end
+
+ addr_hit[34]: begin
+ reg_rdata_next[31:0] = rega34_qs;
+ end
+
+ addr_hit[35]: begin
+ reg_rdata_next[31:0] = rega35_qs;
+ end
+
+ addr_hit[36]: begin
+ reg_rdata_next[31:0] = rega36_qs;
+ end
+
+ addr_hit[37]: begin
+ reg_rdata_next[31:0] = rega37_qs;
+ end
+
+ addr_hit[38]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[39]: begin
+ reg_rdata_next[31:0] = regb_0_qs;
+ end
+
+ addr_hit[40]: begin
+ reg_rdata_next[31:0] = regb_1_qs;
+ end
+
+ addr_hit[41]: begin
+ reg_rdata_next[31:0] = regb_2_qs;
+ end
+
+ addr_hit[42]: begin
+ reg_rdata_next[31:0] = regb_3_qs;
+ end
+
+ addr_hit[43]: begin
+ reg_rdata_next[31:0] = regb_4_qs;
+ end
+
+ default: begin
+ reg_rdata_next = '1;
+ end
+ endcase
+ end
+
+ // shadow busy
+ logic shadow_busy;
+ assign shadow_busy = 1'b0;
+
+ // register busy
+ assign reg_busy = shadow_busy;
+
+ // Unused signal tieoff
+
+ // wdata / byte enable are not always fully used
+ // add a blanket unused statement to handle lint waivers
+ logic unused_wdata;
+ logic unused_be;
+ assign unused_wdata = ^reg_wdata;
+ assign unused_be = ^reg_be;
+
+ // Assertions for Register Interface
+ `ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni)
+ `ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni)
+
+ `ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o_pre.d_valid, clk_i, !rst_ni)
+
+ `ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni)
+
+ // this is formulated as an assumption such that the FPV testbenches do disprove this
+ // property by mistake
+ //`ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.chk_en == tlul_pkg::CheckDis)
+
+endmodule
diff --git a/src/ast/rtl/dev_entropy.sv b/src/ast/rtl/dev_entropy.sv
new file mode 100644
index 0000000..301221a
--- /dev/null
+++ b/src/ast/rtl/dev_entropy.sv
@@ -0,0 +1,260 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: dev_entropy
+// *Module Description: Device Entropy
+//############################################################################
+
+module dev_entropy #(
+ parameter int EntropyRateWidth = 4
+) (
+ input clk_i, // Entropy Clock
+ input rst_ni, // Entropy Reset
+ input clk_dev_i, // Device Clock
+ input rst_dev_ni, // Device Reset
+ input dev_en_i, // Device Enable
+ input [EntropyRateWidth-1:0] dev_rate_i, // Entropy Rate
+ input dev_ack_i, // Write Valid (EDN_ACK)
+ input [32-1:0] dev_data_i, // Write Data (EDN_BUS)
+ output logic dev_wready_o, // Write Ready (EDN_REQ)
+ output logic dev_data_o // Entropy Data
+);
+
+
+////////////////////////////////////
+// Device Enable Sync
+////////////////////////////////////
+logic dev_en_dev;
+
+// Sync dev_en to Dev clock
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_dev_en_dev_sync (
+ .clk_i ( clk_dev_i ),
+ .rst_ni ( rst_dev_ni ),
+ .d_i ( dev_en_i ),
+ .q_o ( dev_en_dev )
+);
+
+
+////////////////////////////////////
+// Entropy Rate
+///////////////////////////////////////
+logic fast_start, rate_pulse, rready;
+logic [7-1:0] fast_cnt;
+logic [(1< 1 || EN -> 0
+
+// Clock Output Buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_buf (
+ .clk_i ( clk ),
+ .clk_o ( io_clk_o )
+);
+
+
+`ifdef SYNTHESIS
+/////////////////////////
+// Unused Signals
+/////////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ io_osc_cal_i };
+`endif
+
+endmodule : io_osc
diff --git a/src/ast/rtl/rglts_pdm_3p3v.sv b/src/ast/rtl/rglts_pdm_3p3v.sv
new file mode 100644
index 0000000..f079ed5
--- /dev/null
+++ b/src/ast/rtl/rglts_pdm_3p3v.sv
@@ -0,0 +1,416 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: rglts_pdm_3p3v
+// *Module Description: Regulators (MAIN & AON) & PDM Logic @3.3V
+//############################################################################
+
+`include "prim_assert.sv"
+
+module rglts_pdm_3p3v (
+ input vcc_pok_h_i, // VCC Exist @3.3v
+ input vcaon_pok_por_h_i, // VCAON_POK_POR @1.1v
+ input vcmain_pok_por_h_i, // VCMAIN_POK_POR @1.1v
+ input [2-1:0] vio_pok_h_i, // vioa/b_pok signals @1.1v
+ input clk_src_aon_h_i, // AON Clock @1.1v
+ input main_pd_h_i, // MAIN Regulator Power Down @1.1v
+ input por_sync_h_i, // POR (Sync to AON clock) @1.1v
+ input scan_mode_h_i, // Scan Mode @1.1v
+ input [2-1:0] otp_power_seq_h_i, // MMR0,24 in @1.1v
+ input vcaon_supp_i, //
+ input vcmain_supp_i, //
+ output logic rglssm_vmppr_h_o, // Regulators SM at VMPPR (vcmaim_pok_por_reset) @3.3v
+ output logic rglssm_vcmon_h_o, // Regulators state machine at VCMON @3.3v
+ output logic rglssm_brout_h_o, // Regulators state machine at BROUT @3.3v
+ output logic vcmain_pok_h_o, // VCMAIN POK @3.3v
+ output logic vcmain_pok_por_h_o, // VCMAIN_POK_POR @3.3v
+ output logic vcaon_pok_h_o, // VCAON Exist @3.3v
+ output logic vcaon_pok_1p1_h_o, // VCAON Exist @3.3v for BE 1.1v (UPF issue)
+ output logic vcaon_pok_por_h_o, // VCAON_POK_POR @3.3v
+ output logic [2-1:0] vio_pok_h_o, // vioa/b_pok_h signals @3.3v
+ output logic vcc_pok_str_h_o, // VCC Exist Stretched @3.3V
+ output logic vcc_pok_str_1p1_h_o, // VCC Exist Stretched @3.3V for BE 1.1v (UPF issue)
+ output logic deep_sleep_h_o, // Deep Sleep (main regulator & switch are off) @3.3v
+ output logic flash_power_down_h_o, //
+ output logic flash_power_ready_h_o, //
+ output logic [2-1:0] otp_power_seq_h_o // MMR0,24 masked by PDM, out (VCC)
+);
+
+// Turn 1.1v into 3.3v signals
+////////////////////////////////////////
+assign vcaon_pok_por_h_o = vcaon_pok_por_h_i; // Level Up Shifter
+assign vcmain_pok_por_h_o = vcmain_pok_por_h_i; // Level Up Shifter
+assign vio_pok_h_o[1:0] = vio_pok_h_i[1:0]; // Level Up Shifter
+
+
+///////////////////////////////////////
+// Regulators Enable State Machine
+///////////////////////////////////////
+logic fla_pdm_h, otp_pdm_h;
+logic [9-1:0] dly_cnt, hc2lc_val, lc2hc_val; // upto 255 aon clock (1275us)
+
+// DV Hook
+logic [1:0] dv_hook, dft_sel;
+
+`ifndef SYNTHESIS
+initial begin
+ // Regulator Power-up time (non cold power-up) selected according to 'dv_hook' value:
+ //
+ // 0: hc2lc_val=HC2LCOC; lc2hc_val=LC2HCOC;
+ // 1: hc2lc_val=HC2LCOC*2; lc2hc_val=LC2HCOC*2;
+ // 2: hc2lc_val=9'd2; lc2hc_val=9'd6;
+ // 3: hc2lc_val=9'd4; lc2hc_val=9'd12;
+ //
+ if ( !$value$plusargs("accelerate_regulators_power_up_time=%d", dv_hook) ) begin
+ dv_hook = 2'd0;
+ end
+ `ASSERT_I(accelerate_regulators_power_up_time, dv_hook inside {[0:3]})
+end
+`else
+assign dv_hook = 2'd0;
+`endif
+
+localparam int unsigned HC2LCOC = ast_pkg::Hc2LcTrCyc;
+localparam int unsigned LC2HCOC = ast_pkg::Lc2HcTrCyc;
+logic [9-1:0] cld_pu_val;
+
+`ifndef SYNTHESIS
+initial begin
+ // Cold Power-up time can be selected between 2 and LC2HCOC (default: ast_pkg::Lc2HcTrCyc)
+ if ( !$value$plusargs("accelerate_cold_power_up_time=%d", cld_pu_val) ) begin
+ cld_pu_val = LC2HCOC[9-1:0];
+ end
+ `ASSERT_I(accelerate_cold_power_up_time, cld_pu_val inside {[2:LC2HCOC[9-1:0]]})
+end
+`else
+assign cld_pu_val = LC2HCOC[9-1:0];
+`endif
+
+// Force 2'b11 to reduce LDOs time & double LDOs start-up time
+assign dft_sel = dv_hook;
+
+assign hc2lc_val = (dft_sel == 2'b10) ? 9'd2 :
+ (dft_sel == 2'b11) ? 9'd4 :
+ (dft_sel == 2'b00) ? HC2LCOC[9-1:0] :
+ HC2LCOC[8-1:0]*2;
+
+assign lc2hc_val = (dft_sel == 2'b10) ? 9'd6 :
+ (dft_sel == 2'b11) ? 9'd12 :
+ (dft_sel == 2'b00) ? LC2HCOC[9-1:0] :
+ LC2HCOC[8-1:0]*2;
+
+
+
+///////////////////////////////////////
+// Regulators State Machine
+///////////////////////////////////////
+typedef enum logic [3-1:0] {
+ RGLS_CLDPU = 3'd0, // Cold power-up (MAIN Regulator ON, AON Regulator OFF, Power Switch Enabled)
+ RGLS_VCMON = 3'd1, // MAIN Regulator ON (AON Regulator OFF, Power Switch Enabled)
+ RGLS_VCM2A = 3'd3, // MAIN Regulator ON (AON Regulator rN, Power Switch Enabled->Disabled)
+ RGLS_VCAON = 3'd7, // AON Regulator ON (MAIN Regulator OFF, Power Switch Diabled)
+ RGLS_VCA2M = 3'd5, // AON Regulator ON (MAIN Regulator ON, Power Switch Diabled->Enabled)
+ RGLS_BROUT = 3'd6 // Brownout (MAIN Regulator ON, AON Regulator OFF, Power Switch Enabled)
+} rgls_sm_e;
+
+rgls_sm_e rgls_sm;
+logic vcmain_pok_h, vcaon_pok_h, main_pd_str_h;
+
+// Hold state machin reset on brownout for minimum 13us.
+logic rgls_rst_h_n;
+assign rgls_rst_h_n = vcc_pok_str_h_o;
+
+// Syncronizers
+// First stage clk FE & second clk RE
+///////////////////////////////////////
+logic vcc_pok_fe_h, vcc_pok_s_h;
+
+
+logic clk_src_aon_h_n;
+assign clk_src_aon_h_n = scan_mode_h_i ? clk_src_aon_h_i :
+ !clk_src_aon_h_i;
+
+always_ff @( posedge clk_src_aon_h_n, negedge rgls_rst_h_n ) begin
+ if ( !rgls_rst_h_n ) begin
+ vcc_pok_fe_h <= 1'b0;
+ end else begin
+ vcc_pok_fe_h <= vcc_pok_h_i;
+ end
+end
+
+always_ff @( posedge clk_src_aon_h_i, negedge rgls_rst_h_n ) begin
+ if ( !rgls_rst_h_n ) begin
+ vcc_pok_s_h <= 1'b0;
+ end else begin
+ vcc_pok_s_h <= vcc_pok_fe_h;
+ end
+end
+
+// Regulators State Mashine
+////////////////////////////////////////
+always_ff @( posedge clk_src_aon_h_i, negedge rgls_rst_h_n ) begin
+ if ( !rgls_rst_h_n ) begin
+ vcmain_pok_h <= 1'b0; // VCMAIN Rail Disabled
+ vcaon_pok_h <= 1'b0; // VCAON Rail Disabled
+ main_pd_str_h <= 1'b0; // Power Down Stratch off
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= cld_pu_val; // VCMAIN Regulator power-up time
+ //
+ rgls_sm <= RGLS_CLDPU; // Power VCMAIN (Cold)
+ end else begin
+ unique case ( rgls_sm )
+ RGLS_CLDPU: begin
+ vcmain_pok_h <= 1'b0; // VCMAIN Rail Disabled
+ vcaon_pok_h <= 1'b0; // VCAON Rail Disabled
+ main_pd_str_h <= 1'b0; // Power Down Stratch off
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON)||(rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= dly_cnt - 1'b1;
+ //
+ if (dly_cnt == '0) begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enable
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ rglssm_vcmon_h_o <= 1'b1; // (rgls_sm == RGLS_VCMON)
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ fla_pdm_h <= 1'b0; //
+ rgls_sm <= RGLS_VCMON; // VCMAIN Regultor is ON!
+ end else begin
+ rgls_sm <= RGLS_CLDPU; // Power VCMAIN!
+ end
+ end
+
+ RGLS_VCMON: begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enabled
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ main_pd_str_h <= 1'b0; // Power Down Stratch
+ //
+ rglssm_vcmon_h_o <= 1'b1; // (rgls_sm == RGLS_VCMON)
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b0; //
+ //
+ dly_cnt <= hc2lc_val; // VCAON Regulator power-up time
+ //
+ if ( !vcc_pok_s_h ) begin
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b1; // (rgls_sm == RGLS_BROUT)
+ fla_pdm_h <= 1'b0; //
+ rgls_sm <= RGLS_BROUT; // Brownout
+ end else if ( main_pd_h_i && !por_sync_h_i ) begin
+ main_pd_str_h <= 1'b1; // Power Down Stratch on
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ rgls_sm <= RGLS_VCM2A; // VCMAIN to VCAON Transition
+ end else begin
+ rgls_sm <= RGLS_VCMON; // VCMAIN Regulator is ON!
+ end
+ end
+
+ RGLS_VCM2A: begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enabled
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ main_pd_str_h <= 1'b1; // Power Down Stratch
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= dly_cnt - 1'b1;
+ //
+ if ( por_sync_h_i ) begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enable
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ rglssm_vcmon_h_o <= 1'b1; // (rgls_sm == RGLS_VCMON)
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ fla_pdm_h <= 1'b0; //
+ rgls_sm <= RGLS_VCMON; // VCMAIN Regultor is ON!
+ end else if ( dly_cnt == '0 ) begin
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rgls_sm <= RGLS_VCAON; // VCAON Regulator is ON!
+ end else begin
+ rgls_sm <= RGLS_VCM2A; // VCMAIN to VCAON Transition
+ end
+ end
+
+ RGLS_VCAON: begin
+ vcmain_pok_h <= 1'b0; // VCMAIN Rail Disabled
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ main_pd_str_h <= 1'b1; // Power Down Stratch
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= lc2hc_val; // VCMAIN Regulator power-up time
+ //
+ if ( !main_pd_h_i || por_sync_h_i ) begin
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rgls_sm <= RGLS_VCA2M; // VCAON->VCMAIN Transition
+ end else begin
+ rgls_sm <= RGLS_VCAON; // VCAON Regulator is ON!
+ end
+ end
+
+ RGLS_VCA2M: begin
+ vcmain_pok_h <= 1'b0; // VCMAIN Rail Disable
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ main_pd_str_h <= 1'b0; // Power Down Stratch off
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= dly_cnt - 1'b1;
+ //
+ if ( dly_cnt == '0 ) begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enable
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ rglssm_vcmon_h_o <= 1'b1; // (rgls_sm == RGLS_VCMON)
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ fla_pdm_h <= 1'b0; //
+ rgls_sm <= RGLS_VCMON; // VCMAIN Regulator is ON!
+ end else begin
+ rgls_sm <= RGLS_VCA2M; // VCAON->VCMAIN Transition
+ end
+ end
+
+ RGLS_BROUT: begin
+ vcmain_pok_h <= 1'b1; // VCMAIN Rail Enabled
+ vcaon_pok_h <= 1'b1; // VCAON Rail Enabled
+ main_pd_str_h <= 1'b0; // Powe Down Stratch off
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b0; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b1; // (rgls_sm == RGLS_BROUT)
+ fla_pdm_h <= 1'b0; //
+ //
+ dly_cnt <= lc2hc_val; // VCMAIN Regulator power-up time
+ //
+ rgls_sm <= RGLS_BROUT; // Brownout
+ end
+
+ default: begin
+ vcmain_pok_h <= 1'b0; // VCMAIN Rail Disabled
+ vcaon_pok_h <= 1'b0; // VCAON Rail Disabled
+ main_pd_str_h <= 1'b0; // Powe Down Stratch off
+ //
+ rglssm_vcmon_h_o <= 1'b0; //
+ rglssm_vmppr_h_o <= 1'b1; // (rgls_sm == RRGLS_[CLDPU | VCAON | VCA2M])
+ rglssm_brout_h_o <= 1'b0; //
+ fla_pdm_h <= 1'b1; // !((rgls_sm == RGLS_VCMON) || (rgls_sm == RGLS_BROUT))
+ //
+ dly_cnt <= lc2hc_val; // VCMAIN Regulator power-up time
+ //
+ rgls_sm <= RGLS_CLDPU; // Power VCMAIN (Cold)
+ end
+ endcase
+ end
+end
+
+
+///////////////////////////////////////
+// VCMAIN_POK & VCAON POK
+///////////////////////////////////////
+assign vcmain_pok_h_o = vcmain_pok_h && vcmain_supp_i;
+// VCAON POK is needed for cold power-up to enable the AON clock
+// Therefore, it is connected directly to VCC POK.
+assign vcaon_pok_h_o = vcc_pok_h_i && vcaon_supp_i;
+assign vcaon_pok_1p1_h_o = vcaon_pok_h_o; // For layout separation
+
+
+///////////////////////////////////////
+// Streched VCC_POK During Brownout
+///////////////////////////////////////
+localparam int VccPokStrNum = 4; // (Min-Max) (3-4)x5us=(15-20)us
+
+logic vcc_pok_set_h, vcc_pok_rst_h_n;
+logic [VccPokStrNum-1:0] vcc_pok_str_no_scan_h;
+
+assign vcc_pok_rst_h_n = vcc_pok_h_i || vcaon_pok_h_o; // Non-Scan
+
+// Enable proper order of reset/set execution
+always_comb begin
+ vcc_pok_set_h = vcc_pok_rst_h_n && vcc_pok_h_i;
+end
+
+always_ff @( posedge clk_src_aon_h_i, negedge vcc_pok_rst_h_n, posedge vcc_pok_set_h ) begin
+ if ( !vcc_pok_rst_h_n ) begin
+ vcc_pok_str_no_scan_h[0] <= 1'b0;
+ end else if ( vcc_pok_set_h ) begin
+ vcc_pok_str_no_scan_h[0] <= 1'b1;
+ end else begin
+ vcc_pok_str_no_scan_h[0] <= 1'b0;
+ end
+end
+
+for (genvar i = 1; i < VccPokStrNum; i++ ) begin : gen_vcc_pok_str
+ always_ff @( posedge clk_src_aon_h_i, negedge vcc_pok_rst_h_n, posedge vcc_pok_set_h ) begin
+ if ( !vcc_pok_rst_h_n ) begin
+ vcc_pok_str_no_scan_h[i] <= 1'b0;
+ end else if ( vcc_pok_set_h ) begin
+ vcc_pok_str_no_scan_h[i] <= 1'b1;
+ end else begin
+ vcc_pok_str_no_scan_h[i] <= vcc_pok_str_no_scan_h[i-1];
+ end
+ end
+end
+
+assign vcc_pok_str_h_o = vcc_pok_str_no_scan_h[VccPokStrNum-1];
+assign vcc_pok_str_1p1_h_o = vcc_pok_str_no_scan_h[VccPokStrNum-1];
+
+
+///////////////////////////////////////
+// Deep Sleep Indication
+///////////////////////////////////////
+always_ff @( posedge clk_src_aon_h_i, negedge rgls_rst_h_n ) begin
+ if ( !rgls_rst_h_n ) begin
+ deep_sleep_h_o <= 1'b0;
+ end else begin
+ deep_sleep_h_o <= main_pd_h_i || main_pd_str_h;
+ end
+end
+
+
+///////////////////////////////////////
+// Flash
+///////////////////////////////////////
+// fla_pdm_h = !(rglssm_vcmon || rglssm_brout);
+assign flash_power_down_h_o = scan_mode_h_i || fla_pdm_h;
+assign flash_power_ready_h_o = vcc_pok_h_i;
+
+
+///////////////////////////////////////
+// OTP
+///////////////////////////////////////
+assign otp_pdm_h = !rglssm_vcmon_h_o;
+assign otp_power_seq_h_o[0] = !scan_mode_h_i && !otp_pdm_h && otp_power_seq_h_i[0];
+assign otp_power_seq_h_o[1] = scan_mode_h_i || otp_pdm_h || otp_power_seq_h_i[1];
+
+
+/////////////////////
+// Unused Signals //
+/////////////////////
+logic unused_sigs;
+
+assign unused_sigs = ^{ vcaon_pok_h };
+
+endmodule : rglts_pdm_3p3v
diff --git a/src/ast/rtl/rng.sv b/src/ast/rtl/rng.sv
new file mode 100644
index 0000000..fab38d7
--- /dev/null
+++ b/src/ast/rtl/rng.sv
@@ -0,0 +1,161 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: rng
+// *Module Description: Random (bit/s) Generator (Pseudo Model)
+//############################################################################
+
+`include "prim_assert.sv"
+
+module rng #(
+ parameter int EntropyStreams = 4
+) (
+ input clk_i, // Non-Jittery Clock (TLUL)
+ input rst_ni, // Non-Jittery Reset (TLUL)
+ input clk_ast_rng_i, // Jittery Clock (RNG)
+ input rst_ast_rng_ni, // Jittery Reset (RNG)
+ input rng_en_i, // RNG Enable
+ input rng_fips_i, // RNG FIPS Enable
+ input scan_mode_i, // Scan Mode
+ output logic [EntropyStreams-1:0] rng_b_o, // RNG Bus/Bits Output
+ output logic rng_val_o // RNG Bus/Bits Valid
+);
+
+///////////////////////////////////////
+// RNG Bus using LFSR
+///////////////////////////////////////
+logic rst_n;
+logic[EntropyStreams-1:0] lfsr_val;
+
+assign rst_n = scan_mode_i ? rst_ni : rst_ni && rng_en_i;
+
+// These LFSR parameters have been generated with
+// $ ./util/design/gen-lfsr-seed.py --width 64 --seed 15513 --prefix "Rng"
+localparam int RngLfsrWidth = 64;
+typedef logic [RngLfsrWidth-1:0] rng_lfsr_seed_t;
+typedef logic [RngLfsrWidth-1:0][$clog2(RngLfsrWidth)-1:0] rng_lfsr_perm_t;
+localparam rng_lfsr_seed_t RndCnstRngLfsrSeedDefault = 64'h1d033d20eed3b14;
+localparam rng_lfsr_perm_t RndCnstRngLfsrPermDefault = {
+ 128'h98c2c94ab5e40420ed73f6c7396cd9e1,
+ 256'h58c6d7435ddb2ed1f22400c53a5aaa796ef7785e120628fbabc87f0b3928550f
+};
+
+prim_lfsr #(
+ .LfsrDw ( RngLfsrWidth ),
+ .EntropyDw ( 1 ),
+ .StateOutDw ( EntropyStreams ),
+ .DefaultSeed ( RndCnstRngLfsrSeedDefault ),
+ .StatePermEn ( 1'b1 ),
+ .StatePerm ( RndCnstRngLfsrPermDefault ),
+ .ExtSeedSVA ( 1'b0 ) // ext seed is unused
+) u_rng_lfsr (
+ .clk_i ( clk_i ),
+ .rst_ni ( rst_n ),
+ .lfsr_en_i ( rng_en_i ),
+ .seed_en_i ( 1'b0 ),
+ .seed_i ( '0 ),
+ .entropy_i ( 1'b0 ),
+ .state_o ( lfsr_val )
+);
+
+logic srate_rng_val;
+logic [12-1:0] srate_cnt, srate_value;
+logic [EntropyStreams-1:0] rng_b;
+
+`ifndef SYNTHESIS
+logic [12-1:0] dv_srate_value;
+// 4-bit rng_b needs at least 5 clocks. While the limit for these min and max values is 5:500, the
+// default is set to a shorter window of 32:128 to avoid large runtimes.
+logic [12-1:0] rng_srate_value_min = 12'd32;
+logic [12-1:0] rng_srate_value_max = 12'd128;
+
+initial begin : rng_plusargs
+ void'($value$plusargs("rng_srate_value_min=%0d", rng_srate_value_min));
+ void'($value$plusargs("rng_srate_value_max=%0d", rng_srate_value_max));
+ `ASSERT_I(DvRngSrateMinCheck, rng_srate_value_min inside {[5:500]})
+ `ASSERT_I(DvRngSrateMaxCheck, rng_srate_value_max inside {[5:500]})
+ `ASSERT_I(DvRngSrateBoundsCheck, rng_srate_value_max >= rng_srate_value_min)
+ dv_srate_value = 12'($urandom_range(int'(rng_srate_value_min), int'(rng_srate_value_max)));
+ void'($value$plusargs("rng_srate_value=%0d", dv_srate_value));
+ `ASSERT_I(DvSrateValueCheck, dv_srate_value inside {[5:500]})
+end
+
+assign srate_value = dv_srate_value;
+`else
+assign srate_value = 12'd120;
+`endif
+
+logic src_busy;
+
+always_ff @( posedge clk_i, negedge rst_n ) begin
+ if ( !rst_n ) begin
+ srate_cnt <= 12'h000;
+ srate_rng_val <= 1'b0;
+ end else if ( (srate_cnt == srate_value) && src_busy ) begin
+ srate_rng_val <= 1'b0;
+ end else if ( srate_cnt == srate_value ) begin
+ srate_cnt <= 12'h000;
+ srate_rng_val <= 1'b1;
+ end else begin
+ srate_cnt <= srate_cnt + 1'b1;
+ srate_rng_val <= 1'b0;
+ end
+end
+
+
+////////////////////////////////////////
+// Sychronize Bus & Valid to RNG Clock
+////////////////////////////////////////
+logic sync_rng_val, srate_rng_val_en;
+
+ast_pulse_sync u_rng_val_pulse_sync (
+ .scan_mode_i ( scan_mode_i ),
+ // source clock domain
+ .clk_src_i ( clk_i ),
+ .rst_src_ni ( rst_n ),
+ .src_pulse_i ( srate_rng_val ),
+ .src_pulse_en_o ( srate_rng_val_en ),
+ .src_busy_o ( src_busy ),
+ // destination clock domain
+ .clk_dst_i ( clk_ast_rng_i ),
+ .rst_dst_ni ( rst_ast_rng_ni ),
+ .dst_pulse_o ( sync_rng_val )
+);
+
+// Sanple & Hold the rng_b value until the sync completes
+always_ff @( posedge clk_i, negedge rst_n ) begin
+ if ( !rst_n ) begin
+ rng_b <= {EntropyStreams{1'b0}};
+ end else if ( srate_rng_val_en ) begin
+ rng_b <= lfsr_val[EntropyStreams-1:0];
+ end
+end
+
+//Sync to RNG clock domain
+always_ff @( posedge clk_ast_rng_i, negedge rst_ast_rng_ni ) begin
+ if (!rst_ast_rng_ni ) begin
+ rng_b_o <= {EntropyStreams{1'b0}};
+ rng_val_o <= 1'b0;
+ end else if ( sync_rng_val ) begin
+ rng_b_o <= rng_b[EntropyStreams-1:0];
+ rng_val_o <= 1'b1;
+ end else begin
+ rng_val_o <= 1'b0;
+ end
+end
+
+
+///////////////////////
+// Unused Signals
+///////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{
+ rng_fips_i // Used in ASIC implementation
+ };
+
+endmodule : rng
diff --git a/src/ast/rtl/sys_clk.sv b/src/ast/rtl/sys_clk.sv
new file mode 100644
index 0000000..504dd77
--- /dev/null
+++ b/src/ast/rtl/sys_clk.sv
@@ -0,0 +1,69 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: sys_clk
+// *Module Description: System Clock
+//############################################################################
+
+module sys_clk (
+ input clk_src_sys_jen_i, // System Source Clock Jitter Enable
+ input clk_src_sys_en_i, // System Source Clock Enable
+ input clk_sys_pd_ni, // System Clock Power-down
+ input rst_sys_clk_ni, // System Clock Logic reset
+ input vcore_pok_h_i, // VCORE POK @3.3V (for OSC)
+ input scan_mode_i, // Scan Mode
+ input sys_osc_cal_i, // System Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_sys_ext_i, // FPGA/VERILATOR Clock input
+`endif
+ output logic clk_src_sys_o, // System Source Clock
+ output logic clk_src_sys_val_o // System Source Clock Valid
+);
+
+logic clk, osc_en, sys_clk_en;
+
+assign osc_en = (clk_src_sys_en_i && clk_sys_pd_ni && rst_sys_clk_ni);
+assign sys_clk_en = scan_mode_i || osc_en;
+
+// Clock Oscilator
+///////////////////////////////////////
+sys_osc u_sys_osc (
+ .vcore_pok_h_i ( vcore_pok_h_i ),
+ .sys_en_i ( sys_clk_en ),
+ .sys_jen_i ( clk_src_sys_jen_i ),
+ .sys_osc_cal_i ( sys_osc_cal_i ),
+`ifdef AST_BYPASS_CLK
+ .clk_sys_ext_i ( clk_sys_ext_i ),
+`endif
+ .sys_clk_o ( clk )
+); // of u_sys_osc
+
+// Clock & Valid
+///////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_sys_buf(
+ .clk_i ( clk ),
+ .clk_o ( clk_src_sys_o )
+);
+
+// 2-stage de-assertion
+logic rst_val_n;
+assign rst_val_n = sys_clk_en;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_val_sync (
+ .clk_i ( clk_src_sys_o ),
+ .rst_ni ( rst_val_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( clk_src_sys_val_o )
+);
+
+endmodule : sys_clk
diff --git a/src/ast/rtl/sys_osc.sv b/src/ast/rtl/sys_osc.sv
new file mode 100644
index 0000000..3a3db36
--- /dev/null
+++ b/src/ast/rtl/sys_osc.sv
@@ -0,0 +1,158 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: sys_osc
+// *Module Description: System Clock Oscilator
+//############################################################################
+
+module sys_osc (
+ input vcore_pok_h_i, // VCORE POK @3.3V
+ input sys_en_i, // System Source Clock Enable
+ input sys_jen_i, // System Source Clock Jitter Enable
+ input sys_osc_cal_i, // System Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_sys_ext_i, // FPGA/VERILATOR Clock input
+`endif
+ output logic sys_clk_o // System Clock Output
+);
+
+`ifndef AST_BYPASS_CLK
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+timeunit 1ns / 1ps;
+
+real CLK_PERIOD;
+
+reg init_start;
+initial init_start = 1'b0;
+logic cal_sys_clk_70mhz = 1'b0;
+logic [16-1:0] jrate, jrate_cnt;
+
+initial begin
+ jrate = 16'(1 << $urandom_range(7, 0)) - 1'b1;
+ void'($value$plusargs("cal_sys_clk_70mhz=%0b", cal_sys_clk_70mhz));
+ #1;
+ init_start = 1'b1;
+ #1;
+ $display("\n%m: System Clock Power-up Frequency: %0d Hz", $rtoi(10**9/CLK_PERIOD));
+end
+
+// Enable 5us RC Delay on rise
+wire en_osc_re_buf, en_osc_re, sys_jen;
+buf #(ast_bhv_pkg::SYS_EN_RDLY, 0) b0 (en_osc_re_buf, (vcore_pok_h_i && sys_en_i));
+assign en_osc_re = en_osc_re_buf && init_start;
+assign sys_jen = sys_jen_i && en_osc_re_buf && init_start;
+
+// Clock Oscillator
+////////////////////////////////////////
+real CalSysClkPeriod, UncSysClkPeriod, SysClkPeriod, jitter;
+
+initial CalSysClkPeriod = cal_sys_clk_70mhz ? $itor( 14286 ) : // 14286ps (70MHz)
+ $itor( 10000 ); // 10000ps (100MHz)
+
+initial UncSysClkPeriod = $itor( $urandom_range(40000, 16667) ); // 40000-16667ps (25-60MHz)
+
+assign SysClkPeriod = (sys_osc_cal_i && init_start) ? CalSysClkPeriod : UncSysClkPeriod;
+
+logic clk;
+
+// -20% Jitter on calibrated frequency
+always_ff (* xprop_off *) @( posedge clk, negedge vcore_pok_h_i ) begin
+ if ( !vcore_pok_h_i ) begin
+ jitter <= 0.0;
+ jrate_cnt <= '0;
+ end else if ( !sys_jen ) begin
+ jrate_cnt <= '0;
+ jitter <= 0.0;
+ end else if ( jrate_cnt == '0 ) begin
+ jrate_cnt <= jrate;
+ jitter <= cal_sys_clk_70mhz ? $itor($urandom_range(3571, 0)) : // 56MHz - 70MHz
+ $itor($urandom_range(2500, 0)); // 80MHz - 100MHz
+ end else if ( jrate_cnt > '0 ) begin
+ jrate_cnt <= jrate_cnt - 1'b1;
+ end
+end
+
+assign CLK_PERIOD = (SysClkPeriod + jitter)/1000;
+
+// Free running oscillator
+reg clk_osc;
+initial clk_osc = 1'b1;
+
+always begin
+ #(CLK_PERIOD/2) clk_osc = ~clk_osc;
+end
+
+logic en_osc;
+
+// HDL Clock Gate
+logic en_clk;
+
+always_latch begin
+ if ( !clk_osc ) en_clk = en_osc;
+end
+
+assign clk = clk_osc && en_clk;
+`else // of SYNTHESIS
+// SYNTHESIS/LINTER
+///////////////////////////////////////
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && sys_en_i;
+
+logic clk, en_osc;
+assign clk = 1'b0;
+`endif // of SYNTHESIS
+`else // of AST_BYPASS_CLK
+// VERILATOR/FPGA
+///////////////////////////////////////
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && sys_en_i;
+
+// Clock Oscillator
+////////////////////////////////////////
+logic clk, en_osc;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1 )
+) u_clk_ckgt (
+ .clk_i ( clk_sys_ext_i ),
+ .en_i ( en_osc ),
+ .test_en_i ( 1'b0 ),
+ .clk_o ( clk )
+);
+`endif
+
+logic en_osc_fe;
+
+// Syncronize en_osc to clk FE for glitch free disable
+always_ff @( negedge clk, negedge vcore_pok_h_i ) begin
+ if ( !vcore_pok_h_i ) begin
+ en_osc_fe <= 1'b0;
+ end else begin
+ en_osc_fe <= en_osc_re;
+ end
+end
+
+assign en_osc = en_osc_re || en_osc_fe; // EN -> 1 || EN -> 0
+
+// Clock Output Buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_buf (
+ .clk_i ( clk ),
+ .clk_o ( sys_clk_o )
+);
+
+
+`ifdef SYNTHESIS
+/////////////////////////
+// Unused Signals
+/////////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ sys_osc_cal_i, sys_jen_i };
+`endif
+
+endmodule : sys_osc
diff --git a/src/ast/rtl/usb_clk.sv b/src/ast/rtl/usb_clk.sv
new file mode 100644
index 0000000..e20222e
--- /dev/null
+++ b/src/ast/rtl/usb_clk.sv
@@ -0,0 +1,147 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// -------- W A R N I N G: A U T O - G E N E R A T E D C O D E !! -------- //
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED.
+//
+//############################################################################
+// *Name: usb_clk
+// *Module Description: USB Clock
+//############################################################################
+
+module usb_clk (
+ input vcore_pok_h_i, // VCORE POK @3.3V (for OSC)
+ input clk_usb_pd_ni, // USB Clock Power-down
+ input rst_usb_clk_ni, // USB Clock Logic reset
+ input clk_src_usb_en_i, // USB Source Clock Enable
+ input usb_ref_val_i, // USB Reference (Pulse) Valid
+ input usb_ref_pulse_i, // USB Reference Pulse
+ input clk_ast_usb_i, // USB Bufferd Clock
+ input rst_ast_usb_ni, // USB Bufferd Reset
+ input scan_mode_i, // Scan Mode
+ input usb_osc_cal_i, // USB Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_usb_ext_i, // FPGA/VERILATOR Clock input
+`endif
+ //
+ output logic clk_src_usb_o, // USB Source Clock
+ output logic clk_src_usb_val_o // USB Source Clock Valid
+);
+
+logic clk, osc_en, usb_clk_en;
+
+assign osc_en = (clk_src_usb_en_i && clk_usb_pd_ni && rst_usb_clk_ni);
+assign usb_clk_en = scan_mode_i || osc_en;
+
+logic rst_da_n, rst_n;
+
+// 2-stage de-assertion
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_da (
+ .clk_i ( clk_src_usb_o ),
+ .rst_ni ( rst_usb_clk_ni ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_da_n )
+);
+
+assign rst_n = scan_mode_i ? rst_ast_usb_ni : rst_da_n;
+
+
+///////////////////////////////////////
+// Clock Calibrate & Drift Adjusment
+///////////////////////////////////////
+
+// Reference Pulse Detect
+///////////////////////////////////////
+logic ref_pulse_in, ref_pulse_re, src_pulse_en, src_busy;
+
+assign ref_pulse_in = usb_ref_pulse_i && usb_ref_val_i;
+
+ast_pulse_sync u_ref_pulse_sync (
+ .scan_mode_i ( scan_mode_i ),
+ // source clock domain
+ .clk_src_i ( clk_ast_usb_i ),
+ .rst_src_ni ( rst_ast_usb_ni ),
+ .src_pulse_i ( ref_pulse_in ),
+ .src_pulse_en_o ( src_pulse_en ),
+ .src_busy_o ( src_busy ),
+ // destination clock domain
+ .clk_dst_i ( clk ),
+ .rst_dst_ni ( rst_n ),
+ .dst_pulse_o ( ref_pulse_re )
+);
+
+// Clock Oscilator
+///////////////////////////////////////
+// 2-stage de-assertion
+logic rst_usb_n;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_rst_ast_usb_da (
+ .clk_i ( clk ),
+ .rst_ni ( rst_ast_usb_ni ),
+ .d_i ( 1'b1 ),
+ .q_o ( rst_usb_n )
+);
+
+// Sync usb_ref_val_i to clk
+logic usb_ref_val;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_ref_val_sync (
+ .clk_i ( clk ),
+ .rst_ni ( rst_usb_n ),
+ .d_i ( usb_ref_val_i ),
+ .q_o ( usb_ref_val )
+);
+
+usb_osc u_usb_osc (
+ .vcore_pok_h_i ( vcore_pok_h_i ),
+ .usb_en_i (usb_clk_en ),
+ .usb_ref_pulse_i ( ref_pulse_re ),
+ .usb_ref_val_i ( usb_ref_val ),
+ .usb_osc_cal_i ( usb_osc_cal_i ),
+`ifdef AST_BYPASS_CLK
+ .clk_usb_ext_i ( clk_usb_ext_i ),
+`endif
+ .usb_clk_o ( clk )
+); // u_usb_osc
+
+// Clock & Valid
+///////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_clk_usb_buf(
+ .clk_i ( clk ),
+ .clk_o ( clk_src_usb_o )
+);
+
+// 2-stage de-assertion
+logic rst_val_n;
+assign rst_val_n = usb_clk_en;
+
+prim_flop_2sync #(
+ .Width ( 1 ),
+ .ResetValue ( 1'b0 )
+) u_no_scan_val_sync (
+ .clk_i ( clk_src_usb_o ),
+ .rst_ni ( rst_val_n ),
+ .d_i ( 1'b1 ),
+ .q_o ( clk_src_usb_val_o )
+);
+
+
+/////////////////////////
+// Unused Signals
+/////////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ src_pulse_en, src_busy };
+
+endmodule : usb_clk
diff --git a/src/ast/rtl/usb_osc.sv b/src/ast/rtl/usb_osc.sv
new file mode 100644
index 0000000..707bba5
--- /dev/null
+++ b/src/ast/rtl/usb_osc.sv
@@ -0,0 +1,183 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: usb_osc
+// *Module Description: USB Clock Oscilator
+//############################################################################
+
+module usb_osc (
+ input vcore_pok_h_i, // VCORE POK @3.3V
+ input usb_en_i, // USB Source Clock Enable
+ input usb_ref_pulse_i, // USB Reference Pulse
+ input usb_ref_val_i, // USB Reference Valid
+ input usb_osc_cal_i, // USB Oscillator Calibrated
+`ifdef AST_BYPASS_CLK
+ input clk_usb_ext_i, // FPGA/VERILATOR Clock input
+`endif
+ output logic usb_clk_o // USB Clock Output
+);
+
+`ifndef AST_BYPASS_CLK
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+timeunit 1ns / 1ps;
+
+real CLK_PERIOD;
+integer beacon_rdly;
+bit calibrate_usb_clk, max_drift;
+localparam int MAXUSBDRIFT = 416; // 416 is +/-2% of 48MHz; 694 is +/-3% of 48MHz
+integer usb_clk_drift;
+
+reg init_start;
+initial init_start = 1'b0;
+
+initial begin
+ // With this flag activated, +calibrate_usb_clk=0. the USB clock will be calibrated
+ // as-soon-as the 'ast_init_done_o' gets active (using '=1' will delay by 1 ns).
+ //
+ // | <- BEACON_RDLY in ns -> |
+ // < un-calibrated clock >< calibrated+drift >< calibrated >
+ // _______________________/``````````````````````````````````````````````````` ast_init_done_o
+ //
+ if ( !$value$plusargs("calibrate_usb_clk=%0d", beacon_rdly) ) begin
+ beacon_rdly = 0;
+ calibrate_usb_clk = 1'b0;
+ end else begin
+ calibrate_usb_clk = 1'b1;
+ end
+ // Max USB drift is: +/-2%
+ if ( !$value$plusargs("usb_max_drift=%0b", max_drift) ) begin
+ max_drift = 1'b0;
+ end
+ //
+ #1;
+ init_start = 1'b1;
+ #1;
+ $display("\n%m: USB Clock Power-up Frequency: %0d Hz", $rtoi(10**9/CLK_PERIOD));
+ usb_clk_drift = max_drift ? ($urandom_range(0, 1) ? MAXUSBDRIFT : -MAXUSBDRIFT) : // +2% or -2%
+ ($urandom_range(0, 2*MAXUSBDRIFT) - MAXUSBDRIFT); // Up to +/-2%
+ $display("%m: USB Clock Drift: %0d ps", usb_clk_drift);
+end
+
+// Enable 5us RC Delay on rise
+wire en_osc_re_buf, en_osc_re;
+buf #(ast_bhv_pkg::USB_EN_RDLY, 0) b0 (en_osc_re_buf, (vcore_pok_h_i && usb_en_i));
+assign en_osc_re = en_osc_re_buf && init_start;
+
+logic usb_ref_val_buf, zero_drift;
+
+buf #(ast_bhv_pkg::USB_VAL_RDLY, ast_bhv_pkg::USB_VAL_FDLY) b1
+ (usb_ref_val_buf, (vcore_pok_h_i && usb_ref_val_i));
+
+buf #(beacon_rdly, 0) b2 (usb_beacon_on_buf, (usb_osc_cal_i && calibrate_usb_clk));
+
+assign zero_drift = (usb_ref_val_buf && calibrate_usb_clk || usb_beacon_on_buf) && init_start;
+
+logic [4-1:0] ref_pulse_cnt_down;
+
+always_ff @( posedge usb_clk_o, negedge usb_ref_val_i ) begin
+ if ( !usb_ref_val_i ) begin
+ ref_pulse_cnt_down <= ast_reg_pkg::NumUsbBeaconPulses[4-1:0];
+ end else if ( (ref_pulse_cnt_down > 4'h0) && usb_ref_pulse_i ) begin
+ ref_pulse_cnt_down <= ref_pulse_cnt_down - 1'b1;
+ end
+end
+
+// Clock Oscillator
+////////////////////////////////////////
+real CalUsbClkPeriod, UncUsbClkPeriod, UsbClkPeriod, drift;
+
+initial CalUsbClkPeriod = $itor( 1000000/48 ); // ~20833.33333ps (48MHz)
+initial UncUsbClkPeriod = $itor( $urandom_range(55555, 25000) ); // 55555-25000ps (18-40MHz)
+
+real adj_drift;
+assign adj_drift = $itor(usb_clk_drift) * $itor(ref_pulse_cnt_down) /
+ $itor(ast_reg_pkg::NumUsbBeaconPulses[4-1:0]);
+
+assign drift = zero_drift ? 0.0 : adj_drift;
+
+assign UsbClkPeriod = (usb_osc_cal_i && init_start) ? CalUsbClkPeriod :
+ UncUsbClkPeriod;
+assign CLK_PERIOD = (UsbClkPeriod + drift)/1000;
+
+// Free running oscillator
+reg clk_osc;
+initial clk_osc = 1'b1;
+
+always begin
+ #(CLK_PERIOD/2) clk_osc = ~clk_osc;
+end
+
+logic en_osc;
+
+// HDL Clock Gate
+logic en_clk, clk;
+
+always_latch begin
+ if ( !clk_osc ) en_clk = en_osc;
+end
+
+assign clk = clk_osc && en_clk;
+`else // of SYNTHESIS
+// SYNTHESIS/LINTER
+///////////////////////////////////////
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && usb_en_i;
+
+logic clk, en_osc;
+assign clk = 1'b0;
+`endif // of SYNTHESIS
+`else // of AST_BYPASS_CLK
+// VERILATOR/FPGA
+///////////////////////////////////////
+logic en_osc_re;
+assign en_osc_re = vcore_pok_h_i && usb_en_i;
+
+// Clock Oscillator
+////////////////////////////////////////
+logic clk, en_osc;
+
+prim_clock_gating #(
+ .NoFpgaGate ( 1'b1 )
+) u_clk_ckgt (
+ .clk_i ( clk_usb_ext_i ),
+ .en_i ( en_osc ),
+ .test_en_i ( 1'b0 ),
+ .clk_o ( clk )
+);
+`endif
+
+logic en_osc_fe;
+
+// Syncronize en_osc to clk FE for glitch free disable
+always_ff @( negedge clk, negedge vcore_pok_h_i ) begin
+ if ( !vcore_pok_h_i ) begin
+ en_osc_fe <= 1'b0;
+ end else begin
+ en_osc_fe <= en_osc_re;
+ end
+end
+
+assign en_osc = en_osc_re || en_osc_fe; // EN -> 1 || EN -> 0
+
+// Clock Output Buffer
+////////////////////////////////////////
+prim_clock_buf #(
+ .NoFpgaBuf ( 1'b1 )
+) u_buf (
+ .clk_i ( clk ),
+ .clk_o ( usb_clk_o )
+);
+
+
+`ifdef SYNTHESIS
+///////////////////////
+// Unused Signals
+///////////////////////
+logic unused_sigs;
+assign unused_sigs = ^{ usb_osc_cal_i, usb_ref_pulse_i, usb_ref_val_i };
+`endif
+
+endmodule : usb_osc
diff --git a/src/ast/rtl/vcaon_pgd.sv b/src/ast/rtl/vcaon_pgd.sv
new file mode 100644
index 0000000..e325fb4
--- /dev/null
+++ b/src/ast/rtl/vcaon_pgd.sv
@@ -0,0 +1,57 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: vcaon_pgd
+// *Module Description: VCAON Power Good
+//############################################################################
+`ifdef SYNTHESIS
+`ifndef PRIM_DEFAULT_IMPL
+`define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
+`endif
+`endif
+
+module vcaon_pgd (
+ output logic vcaon_pok_o
+);
+
+// Local signal for testing hook
+logic gen_supp_a;
+assign gen_supp_a = 1'b1;
+
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+// The initial is needed to clear the X of the delays at the start
+// Also to force a power-up effect at the bgining.
+logic init_start;
+
+initial begin
+ init_start = 1'b1; #1;
+ init_start = 1'b0;
+end
+
+always @( * ) begin
+ if ( init_start ) begin
+ vcaon_pok_o <= 1'b0;
+ end else if ( !init_start && gen_supp_a ) begin
+ vcaon_pok_o <= #(ast_bhv_pkg::VCAON_POK_RDLY) gen_supp_a;
+ end else if ( !init_start && !gen_supp_a ) begin
+ vcaon_pok_o <= #(ast_bhv_pkg::VCAON_POK_FDLY) gen_supp_a;
+ end
+end
+`else
+// SYNTHESIS/VERILATOR/LINTER/FPGA
+///////////////////////////////////////
+localparam prim_pkg::impl_e Impl = `PRIM_DEFAULT_IMPL;
+
+if (Impl == prim_pkg::ImplXilinx) begin : gen_xilinx
+ // FPGA Specific (place holder)
+ ///////////////////////////////////////
+ assign vcaon_pok_o = gen_supp_a;
+end else begin : gen_generic
+ assign vcaon_pok_o = gen_supp_a;
+end
+`endif
+
+endmodule : vcaon_pgd
diff --git a/src/ast/rtl/vcc_pgd.sv b/src/ast/rtl/vcc_pgd.sv
new file mode 100644
index 0000000..f66c4b4
--- /dev/null
+++ b/src/ast/rtl/vcc_pgd.sv
@@ -0,0 +1,59 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: vcc_pgd
+// *Module Description: VCC Power Good
+//############################################################################
+`ifdef SYNTHESIS
+`ifndef PRIM_DEFAULT_IMPL
+`define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
+`endif
+`endif
+
+module vcc_pgd (
+ output logic vcc_pok_o
+);
+
+// Local signal for testing hook
+logic gen_supp_a;
+assign gen_supp_a = 1'b1;
+
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+// The initial is needed to clear the X of the delays at the start
+// Also to force a power-up effect at the bgining.
+logic init_start;
+
+initial begin
+ init_start = 1'b1; #1;
+ init_start = 1'b0;
+end
+
+always (* xprop_off *) @( * ) begin
+ if ( init_start ) begin
+ vcc_pok_o <= 1'b0;
+ end
+ if ( !init_start && gen_supp_a ) begin
+ vcc_pok_o <= #(ast_bhv_pkg::VCC_POK_RDLY) gen_supp_a;
+ end
+ if ( !init_start && !gen_supp_a ) begin
+ vcc_pok_o <= #(ast_bhv_pkg::VCC_POK_FDLY) gen_supp_a;
+ end
+end
+`else
+// SYNTHESIS/VERILATOR/LINTER/FPGA
+///////////////////////////////////////
+localparam prim_pkg::impl_e Impl = `PRIM_DEFAULT_IMPL;
+
+if (Impl == prim_pkg::ImplXilinx) begin : gen_xilinx
+ // FPGA Specific (place holder)
+ ///////////////////////////////////////
+ assign vcc_pok_o = gen_supp_a;
+end else begin : gen_generic
+ assign vcc_pok_o = gen_supp_a;
+end
+`endif
+
+endmodule : vcc_pgd
diff --git a/src/ast/rtl/vcmain_pgd.sv b/src/ast/rtl/vcmain_pgd.sv
new file mode 100644
index 0000000..cf73b5f
--- /dev/null
+++ b/src/ast/rtl/vcmain_pgd.sv
@@ -0,0 +1,57 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: vcmain_pgd
+// *Module Description: VCMAIN Power Good
+//############################################################################
+`ifdef SYNTHESIS
+`ifndef PRIM_DEFAULT_IMPL
+`define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
+`endif
+`endif
+
+module vcmain_pgd (
+ output logic vcmain_pok_o
+);
+
+// Local signal for testing hook
+logic gen_supp_a;
+assign gen_supp_a = 1'b1;
+
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+// The initial is needed to clear the X of the delays at the start
+// Also to force a power-up effect at the bgining.
+logic init_start;
+
+initial begin
+ init_start = 1'b1; #1;
+ init_start = 1'b0;
+end
+
+always @( * ) begin
+ if ( init_start ) begin
+ vcmain_pok_o <= 1'b0;
+ end else if ( !init_start && gen_supp_a ) begin
+ vcmain_pok_o <= #(ast_bhv_pkg::VCMAIN_POK_RDLY) gen_supp_a;
+ end else if ( !init_start && !gen_supp_a ) begin
+ vcmain_pok_o <= #(ast_bhv_pkg::VCMAIN_POK_FDLY) gen_supp_a;
+ end
+end
+`else
+// SYNTHESIS/VERILATOR/LINTER/FPGA
+///////////////////////////////////////
+localparam prim_pkg::impl_e Impl = `PRIM_DEFAULT_IMPL;
+
+if (Impl == prim_pkg::ImplXilinx) begin : gen_xilinx
+ // FPGA Specific (place holder)
+ ///////////////////////////////////////
+ assign vcmain_pok_o = gen_supp_a;
+end else begin : gen_generic
+ assign vcmain_pok_o = gen_supp_a;
+end
+`endif
+
+endmodule : vcmain_pgd
diff --git a/src/ast/rtl/vio_pgd.sv b/src/ast/rtl/vio_pgd.sv
new file mode 100644
index 0000000..96c353f
--- /dev/null
+++ b/src/ast/rtl/vio_pgd.sv
@@ -0,0 +1,59 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//############################################################################
+// *Name: vio_pgd
+// *Module Description: VIO Power Good
+//############################################################################
+`ifdef SYNTHESIS
+`ifndef PRIM_DEFAULT_IMPL
+`define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
+`endif
+`endif
+
+module vio_pgd (
+ output logic vio_pok_o
+);
+
+// Local signal for testing hook
+logic gen_supp_a;
+assign gen_supp_a = 1'b1;
+
+`ifndef SYNTHESIS
+// Behavioral Model
+////////////////////////////////////////
+// The initial is needed to clear the X of the delays at the start
+// Also to force a power-up effect at the bgining.
+logic init_start;
+
+initial begin
+ init_start = 1'b1; #1;
+ init_start = 1'b0;
+end
+
+always (* xprop_off *) @( * ) begin
+ if ( init_start ) begin
+ vio_pok_o <= 1'b0;
+ end
+ if ( !init_start && gen_supp_a ) begin
+ vio_pok_o <= #(ast_bhv_pkg::VIO_POK_RDLY) gen_supp_a;
+ end
+ if ( !init_start && !gen_supp_a ) begin
+ vio_pok_o <= #(ast_bhv_pkg::VIO_POK_FDLY) gen_supp_a;
+ end
+end
+`else
+// SYNTHESIS/VERILATOR/LINTER/FPGA
+//////////////////////////////////////
+localparam prim_pkg::impl_e Impl = `PRIM_DEFAULT_IMPL;
+
+if (Impl == prim_pkg::ImplXilinx) begin : gen_xilinx
+ // FPGA Specific (place holder)
+ ///////////////////////////////////////
+ assign vio_pok_o = gen_supp_a;
+end else begin : gen_generic
+ assign vio_pok_o = gen_supp_a;
+end
+`endif
+
+endmodule : vio_pgd
diff --git a/src/axi2tlul/config/compile.yml b/src/axi2tlul/config/compile.yml
new file mode 100644
index 0000000..37e5868
--- /dev/null
+++ b/src/axi2tlul/config/compile.yml
@@ -0,0 +1,29 @@
+---
+provides: [axi2tlul]
+schema_version: 2.4.0
+requires:
+ - axi_pkg
+ - axi_sub
+ - tlul_pkg
+ - caliptra_prim_secded
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/axi2tlul_cmd_intg_gen.sv
+ - $COMPILE_ROOT/rtl/sub2tlul.sv
+ - $COMPILE_ROOT/rtl/axi2tlul.sv
+ tops: [axi2tlul]
+---
+provides: [axi2tlul_tb]
+schema_version: 2.4.0
+requires:
+ - axi2tlul
+targets:
+ tb:
+ directories: [$COMPILE_ROOT/tb]
+ files:
+ - $COMPILE_ROOT/tb/memory_model.sv
+ - $COMPILE_ROOT/tb/axi2tlul_tb.sv
+ tops: [axi2tlul_tb]
+
diff --git a/src/axi2tlul/rtl/axi2tlul.sv b/src/axi2tlul/rtl/axi2tlul.sv
new file mode 100644
index 0000000..583fe39
--- /dev/null
+++ b/src/axi2tlul/rtl/axi2tlul.sv
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS;
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND; either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// -------------------------------------------------------------
+// AXI TLUL Gasket
+// -------------------------------------------------------------
+// Description:
+// Shim to convert AXI protocol writes into TLUL
+//
+// Limitations:
+// - When multiple ID tracking is enabled; write responses are returned in the
+// same order they are received; regardless of ID.
+//
+// -------------------------------------------------------------
+
+module axi2tlul
+ import axi_pkg::*;
+ #(
+ parameter AW = 32, // Address Width
+ parameter DW = 32, // Data Width
+ BC = DW/8, // Byte Count
+ BW = $clog2(BC), // Byte count Width
+ parameter UW = 32, // User Width
+ parameter IW = 1, // ID Width
+ ID_NUM = 1 << IW, // Don't override
+
+ parameter EX_EN = 0, // Enable exclusive access tracking w/ AxLOCK
+ parameter C_LAT = 0 // Component latency in clock cycles from (dv&&!hld) -> rdata
+ // Must be const per component
+ // For registers; typically 0
+ // For SRAM; 1 or more
+ ) (
+ input clk,
+ input rst_n,
+
+ // AXI INF
+ axi_if.w_sub s_axi_w_if,
+ axi_if.r_sub s_axi_r_if,
+
+ // TLUL INF
+ output tlul_pkg::tl_h2d_t tl_o,
+ input tlul_pkg::tl_d2h_t tl_i
+ );
+
+ // Subordinate INF
+ logic dv;
+ logic [AW-1:0] addr;
+ logic write;
+ logic [UW-1:0] user;
+ logic [IW-1:0] id;
+ logic [DW-1:0] wdata; // Requires: Component dwidth == AXI dwidth
+ logic [BC-1:0] wstrb; // Requires: Component dwidth == AXI dwidth
+ logic [2:0] size;
+ logic [DW-1:0] rdata; // Requires: Component dwidth == AXI dwidth
+ logic last; // Asserted with final 'dv' of a burst
+ logic hld;
+ logic rd_err;
+ logic wr_err;
+
+ axi_sub #(
+ .AW (AW),
+ .DW (DW),
+ .UW (UW),
+ .IW (IW),
+ .EX_EN (EX_EN)
+
+ ) i_axi_sub (
+ .clk (clk ),
+ .rst_n (rst_n ),
+
+ // AXI INF
+ .s_axi_w_if (s_axi_w_if ),
+ .s_axi_r_if (s_axi_r_if ),
+
+ // Subordinate INF
+ .dv (dv ),
+ .addr (addr ),
+ .write (write ),
+ .user (user ),
+ .id (id ),
+ .wdata (wdata ),
+ .wstrb (wstrb ),
+ .size (size ),
+ .rdata (rdata ),
+ .last (last ),
+ .hld (hld ),
+ .rd_err (rd_err ),
+ .wr_err (wr_err )
+ );
+
+ sub2tlul #(
+ .AW (AW),
+ .DW (DW),
+ .UW (UW),
+ .IW (IW),
+ .EX_EN (EX_EN)
+ ) i_sub2tlul (
+ .clk (clk ),
+ .rst_n (rst_n ),
+
+ // Subordinate INF
+ .dv (dv ),
+ .addr (addr ),
+ .write (write ),
+ .user (user ),
+ .id (id ),
+ .wdata (wdata ),
+ .wstrb (wstrb ),
+ .size (size ),
+ .rdata (rdata ),
+ .last (last ),
+ .hld (hld ),
+ .rd_err (rd_err ),
+ .wr_err (wr_err ),
+
+ // TLUL INF
+ .tl_o (tl_o ),
+ .tl_i (tl_i )
+ );
+
+endmodule
\ No newline at end of file
diff --git a/src/axi2tlul/rtl/axi2tlul_cmd_intg_gen.sv b/src/axi2tlul/rtl/axi2tlul_cmd_intg_gen.sv
new file mode 100644
index 0000000..cdee92c
--- /dev/null
+++ b/src/axi2tlul/rtl/axi2tlul_cmd_intg_gen.sv
@@ -0,0 +1,65 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+module axi2tlul_cmd_intg_gen
+ import axi_pkg::*;
+ import caliptra_prim_pkg::*;
+ import tlul_pkg::*;
+ #(
+ parameter bit EnableDataIntgGen = 1'b1
+ ) (
+ input caliptra_prim_mubi_pkg::mubi4_t instr_type_i,
+ input [AXI_AW-1:0] addr_i,
+ input tl_a_op_e opcode_i,
+ input [tlul_pkg::TL_DBW-1:0] mask_i,
+ input [tlul_pkg::TL_DW-1:0] data_i,
+
+ output [H2DCmdIntgWidth-1:0] cmd_intg,
+ output [DataIntgWidth-1:0] data_intg
+ );
+
+
+
+ logic [H2DCmdMaxWidth-1:0] unused_cmd_payload;
+ tl_h2d_cmd_intg_t cmd;
+
+ assign cmd = { instr_type_i,
+ addr_i,
+ opcode_i,
+ mask_i };
+
+ caliptra_prim_secded_inv_64_57_enc u_cmd_gen (
+ .data_i(H2DCmdMaxWidth'(cmd)),
+ .data_o({cmd_intg, unused_cmd_payload})
+ );
+
+ logic [tlul_pkg::TL_DW-1:0] data_final;
+
+ if (EnableDataIntgGen) begin : gen_data_intg
+ assign data_final = data_i;
+
+ logic [DataMaxWidth-1:0] unused_data;
+ caliptra_prim_secded_inv_39_32_enc u_data_gen (
+ .data_i(DataMaxWidth'(data_final)),
+ .data_o({data_intg, unused_data})
+ );
+ end else begin : gen_passthrough_data_intg
+ assign data_final = data_i;
+ assign data_intg = '0;
+ end
+
+ //`CALIPTRA_ASSERT_INIT(PayMaxWidthCheck_A, $bits(tl_h2d_cmd_intg_t) <= H2DCmdMaxWidth)
+
+endmodule : axi2tlul_cmd_intg_gen
\ No newline at end of file
diff --git a/src/axi2tlul/rtl/sub2tlul.sv b/src/axi2tlul/rtl/sub2tlul.sv
new file mode 100644
index 0000000..392f45a
--- /dev/null
+++ b/src/axi2tlul/rtl/sub2tlul.sv
@@ -0,0 +1,156 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+// -------------------------------------------------------------
+// AXI TLUL Write Shim
+// -------------------------------------------------------------
+// Description:
+// Shim to convert AXI protocol writes into TLUL
+//
+// Limitations:
+// - When multiple ID tracking is enabled, write responses are returned in the
+// same order they are received, regardless of ID.
+//
+// -------------------------------------------------------------
+
+module sub2tlul
+ import axi_pkg::*;
+ import tlul_pkg::*;
+ #(
+ parameter AW = 32, // Address Width
+ parameter DW = 32, // Data Width
+ BC = DW/8, // Byte Count
+ BW = $clog2(BC), // Byte count Width
+ parameter UW = 32, // User Width
+ parameter IW = 1, // ID Width
+ ID_NUM = 1 << IW, // Don't override
+
+ parameter EX_EN = 0, // Enable exclusive access tracking w/ AxLOCK
+ parameter C_LAT = 0 // Component latency in clock cycles from (dv&&!hld) -> rdata
+ // Must be const per component
+ // For registers, typically 0
+ // For SRAM, 1 or more
+ ) (
+ input clk,
+ input rst_n,
+
+ //COMPONENT INF
+ input logic dv,
+ input logic [AW-1:0] addr, // Byte address
+ input logic write,
+ input logic [UW-1:0] user,
+ input logic [IW-1:0] id,
+ input logic [DW-1:0] wdata, // Requires: Component dwidth == AXI dwidth
+ input logic [BC-1:0] wstrb, // Requires: Component dwidth == AXI dwidth
+ input logic [2:0] size,
+ output logic [DW-1:0] rdata, // Requires: Component dwidth == AXI dwidth
+ input logic last, // Asserted with final 'dv' of a burst
+ output logic hld,
+ output logic rd_err,
+ output logic wr_err,
+
+ //TLUL INF
+ output tlul_pkg::tl_h2d_t tl_o,
+ input tlul_pkg::tl_d2h_t tl_i
+ );
+
+ // Setting instruction type to False as all accesses to OTP are data accesses
+ localparam caliptra_prim_mubi_pkg::mubi4_t instr_type = caliptra_prim_mubi_pkg::MuBi4False;
+
+ // AXI SUB TO TL-UL REQUEST
+ logic pending_txn;
+ tl_a_op_e opcode;
+ logic [3:0] mask_local;
+
+ typedef enum logic [1:0] {
+ no_txn = 2'b00,
+ valid_get_txn = 2'b01,
+ valid_put_txn = 2'b10
+ } txn_state_e;
+
+ txn_state_e cur_txn;
+
+ always @(posedge clk or negedge rst_n) begin
+ if (!rst_n) begin
+ cur_txn <= no_txn;
+ end
+ else if (opcode == Get && tl_o.a_valid) begin
+ cur_txn <= valid_get_txn;
+ end
+ else if (opcode == PutFullData || opcode == PutPartialData && tl_o.a_valid) begin
+ cur_txn <= valid_put_txn;
+ end
+ else if (cur_txn == valid_get_txn && tl_i.d_opcode == AccessAckData && tl_i.d_valid) begin
+ cur_txn <= no_txn;
+ end
+ else if (cur_txn == valid_put_txn && tl_i.d_opcode == AccessAck && tl_i.d_valid) begin
+ cur_txn <= no_txn;
+ end
+ end
+
+ always @(posedge clk or negedge rst_n) begin
+ if (!rst_n) begin
+ pending_txn <= 0;
+ end
+ else if (dv && tl_i.a_ready && ~tl_i.d_valid) begin
+ pending_txn <= 1;
+ end
+ else if (dv && tl_i.d_valid) begin
+ pending_txn <= 0;
+ end
+ end
+
+ assign opcode = !write ? Get : ((wstrb == '1) ? PutFullData : PutPartialData);
+ assign mask_local = !write ? user[21:18] : wstrb;
+
+ assign tl_o.a_address = addr;
+ assign tl_o.a_valid = dv & ~pending_txn;
+ assign tl_o.a_opcode = opcode;
+ assign tl_o.a_source = id;
+ assign tl_o.a_mask = mask_local;
+ assign tl_o.a_data = wdata;
+ assign tl_o.a_size = size;
+
+ // TL-UL TO AXI SUB RESPONSE
+ assign rdata = (dv && tl_i.d_valid && (tl_i.d_source == id)) ? tl_i.d_data : 0;
+ assign hld = dv & tl_o.a_valid & (~tl_i.a_ready | ~tl_i.d_valid) |
+ ((cur_txn == valid_get_txn) & ((tl_i.d_opcode != AccessAckData) | ((tl_i.d_opcode == AccessAckData) & ~tl_i.d_valid)) );
+ assign tl_o.d_ready = tl_i.d_valid;
+ assign rd_err = ~write & tl_i.d_error & tl_i.d_valid;
+ assign wr_err = write & tl_i.d_error & tl_i.d_valid;
+
+ //TLUL unused signals: a_param, d_param, d_sink, d_size (dropped)
+ assign tl_o.a_param = 3'h0;
+
+ logic [H2DCmdIntgWidth-1:0] cmd_intg;
+ logic [DataIntgWidth-1:0] data_intg;
+
+ axi2tlul_cmd_intg_gen #(
+ .EnableDataIntgGen (1)
+ ) u_axi2tlul_cmd_intg_gen (
+ .instr_type_i (instr_type),
+ .addr_i (addr),
+ .opcode_i (opcode),
+ .mask_i (mask_local),
+ .data_i (wdata),
+ .cmd_intg (cmd_intg),
+ .data_intg (data_intg)
+ );
+
+ assign tl_o.a_user = { instr_type,
+ cmd_intg,
+ data_intg };
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/config/compile.yml b/src/caliptra_ss_lc_ctrl/config/compile.yml
new file mode 100644
index 0000000..3e96ae9
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/config/compile.yml
@@ -0,0 +1,86 @@
+---
+provides: [caliptra_ss_lc_ctrl_pkg]
+schema_version: 2.4.0
+requires:
+ - caliptra_prim_pkg
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_state_pkg.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_pkg.sv
+ - $COMPILE_ROOT/rtl/jtag_pkg.sv
+ - $COMPILE_ROOT/rtl/top_pkg.sv
+ - $COMPILE_ROOT/rtl/alert_handler_reg_pkg.sv
+ tb:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_state_pkg.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_pkg.sv
+ - $COMPILE_ROOT/rtl/jtag_pkg.sv
+ - $COMPILE_ROOT/rtl/top_pkg.sv
+ - $COMPILE_ROOT/rtl/alert_handler_reg_pkg.sv
+---
+provides: [lc_kmac_pkg]
+schema_version: 2.4.0
+requires:
+ - caliptra_prim_pkg
+ - caliptra_ss_lc_ctrl_pkg
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_keymgr_pkg.sv
+ - $COMPILE_ROOT/rtl/kmac_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/sha3_pkg.sv
+ - $COMPILE_ROOT/rtl/kmac_pkg.sv
+ tb:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_keymgr_pkg.sv
+ - $COMPILE_ROOT/rtl/kmac_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/sha3_pkg.sv
+ - $COMPILE_ROOT/rtl/kmac_pkg.sv
+---
+provides: [caliptra_ss_lc_ctrl]
+schema_version: 2.4.0
+requires:
+ - caliptra_ss_lc_ctrl_pkg
+ - lc_kmac_pkg
+ - axi_pkg
+ - axi2tlul
+ - tlul_pkg
+ - pwrmgr_pkg
+ - fuse_ctrl_pkg
+ - ast_pkg
+ - edn_pkg
+ - tlul
+ - dmi_jtag
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/keccak_2share.sv
+ - $COMPILE_ROOT/rtl/keccak_round.sv
+ - $COMPILE_ROOT/rtl/sha3pad.sv
+ - $COMPILE_ROOT/rtl/sha3.sv
+ - $COMPILE_ROOT/rtl/kmac_app.sv
+ - $COMPILE_ROOT/rtl/kmac_core.sv
+ - $COMPILE_ROOT/rtl/kmac_entropy.sv
+ - $COMPILE_ROOT/rtl/kmac_errchk.sv
+ - $COMPILE_ROOT/rtl/kmac_msgfifo.sv
+ - $COMPILE_ROOT/rtl/kmac_reduced.sv
+ - $COMPILE_ROOT/rtl/kmac_reg_top.sv
+ - $COMPILE_ROOT/rtl/kmac_staterd.sv
+ - $COMPILE_ROOT/rtl/kmac.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_dmi_reg_top.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_fsm.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_kmac_if.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_regs_reg_top.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_signal_decode.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_state_decode.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl_state_transition.sv
+ - $COMPILE_ROOT/rtl/caliptra_ss_lc_ctrl.sv
+ tops: [caliptra_ss_lc_ctrl]
diff --git a/src/caliptra_ss_lc_ctrl/config/lc_ctrl_pkg.vf b/src/caliptra_ss_lc_ctrl/config/lc_ctrl_pkg.vf
new file mode 100644
index 0000000..ae8daec
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/config/lc_ctrl_pkg.vf
@@ -0,0 +1,13 @@
++incdir+${CALIPTRA_ROOT}/src/caliptra_prim/rtl
++incdir+${CALIPTRA_ROOT}/src/caliptra_ss_lc_ctrl/rtl
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_util_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_alert_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_subreg_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_mubi_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_cipher_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_prim/rtl/caliptra_prim_sparse_fsm_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_pkg.sv
+${CALIPTRA_ROOT}/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_pkg.sv
\ No newline at end of file
diff --git a/src/caliptra_ss_lc_ctrl/rtl/alert_handler_reg_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/alert_handler_reg_pkg.sv
new file mode 100644
index 0000000..9d8fb70
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/alert_handler_reg_pkg.sv
@@ -0,0 +1,1781 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Package auto-generated by `reggen` containing data structure
+
+package alert_handler_reg_pkg;
+
+ // Param list
+ parameter int NAlerts = 65;
+ parameter int NLpg = 24;
+ parameter int NLpgWidth = 5;
+ parameter logic [NAlerts-1:0][NLpgWidth-1:0] LpgMap = {
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd19,
+ 5'd23,
+ 5'd23,
+ 5'd22,
+ 5'd22,
+ 5'd21,
+ 5'd20,
+ 5'd20,
+ 5'd19,
+ 5'd18,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd17,
+ 5'd16,
+ 5'd12,
+ 5'd12,
+ 5'd14,
+ 5'd11,
+ 5'd13,
+ 5'd13,
+ 5'd12,
+ 5'd11,
+ 5'd11,
+ 5'd11,
+ 5'd11,
+ 5'd10,
+ 5'd9,
+ 5'd8,
+ 5'd7,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd6,
+ 5'd5,
+ 5'd0,
+ 5'd4,
+ 5'd3,
+ 5'd2,
+ 5'd1,
+ 5'd0,
+ 5'd0,
+ 5'd0,
+ 5'd0,
+ 5'd0
+};
+ parameter int EscCntDw = 32;
+ parameter int AccuCntDw = 16;
+ parameter logic [NAlerts-1:0] AsyncOn = {
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1,
+ 1'b1
+};
+ parameter int N_CLASSES = 4;
+ parameter int N_ESC_SEV = 4;
+ parameter int N_PHASES = 4;
+ parameter int N_LOC_ALERT = 7;
+ parameter int PING_CNT_DW = 16;
+ parameter int PHASE_DW = 2;
+ parameter int CLASS_DW = 2;
+ parameter int LOCAL_ALERT_ID_ALERT_PINGFAIL = 0;
+ parameter int LOCAL_ALERT_ID_ESC_PINGFAIL = 1;
+ parameter int LOCAL_ALERT_ID_ALERT_INTEGFAIL = 2;
+ parameter int LOCAL_ALERT_ID_ESC_INTEGFAIL = 3;
+ parameter int LOCAL_ALERT_ID_BUS_INTEGFAIL = 4;
+ parameter int LOCAL_ALERT_ID_SHADOW_REG_UPDATE_ERROR = 5;
+ parameter int LOCAL_ALERT_ID_SHADOW_REG_STORAGE_ERROR = 6;
+ parameter int LOCAL_ALERT_ID_LAST = 6;
+
+ // Address widths within the block
+ parameter int BlockAw = 11;
+
+ ////////////////////////////
+ // Typedefs for registers //
+ ////////////////////////////
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } classd;
+ struct packed {
+ logic q;
+ } classc;
+ struct packed {
+ logic q;
+ } classb;
+ struct packed {
+ logic q;
+ } classa;
+ } alert_handler_reg2hw_intr_state_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } classd;
+ struct packed {
+ logic q;
+ } classc;
+ struct packed {
+ logic q;
+ } classb;
+ struct packed {
+ logic q;
+ } classa;
+ } alert_handler_reg2hw_intr_enable_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } classd;
+ struct packed {
+ logic q;
+ logic qe;
+ } classc;
+ struct packed {
+ logic q;
+ logic qe;
+ } classb;
+ struct packed {
+ logic q;
+ logic qe;
+ } classa;
+ } alert_handler_reg2hw_intr_test_reg_t;
+
+ typedef struct packed {
+ logic [15:0] q;
+ } alert_handler_reg2hw_ping_timeout_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_ping_timer_en_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_alert_regwen_mreg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_alert_en_shadowed_mreg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_alert_class_shadowed_mreg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_alert_cause_mreg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_loc_alert_en_shadowed_mreg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_loc_alert_class_shadowed_mreg_t;
+
+ typedef struct packed {
+ logic q;
+ } alert_handler_reg2hw_loc_alert_cause_mreg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [1:0] q;
+ } map_e3;
+ struct packed {
+ logic [1:0] q;
+ } map_e2;
+ struct packed {
+ logic [1:0] q;
+ } map_e1;
+ struct packed {
+ logic [1:0] q;
+ } map_e0;
+ struct packed {
+ logic q;
+ } en_e3;
+ struct packed {
+ logic q;
+ } en_e2;
+ struct packed {
+ logic q;
+ } en_e1;
+ struct packed {
+ logic q;
+ } en_e0;
+ struct packed {
+ logic q;
+ } lock;
+ struct packed {
+ logic q;
+ } en;
+ } alert_handler_reg2hw_classa_ctrl_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } alert_handler_reg2hw_classa_clr_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [15:0] q;
+ } alert_handler_reg2hw_classa_accum_thresh_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classa_timeout_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_classa_crashdump_trigger_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classa_phase0_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classa_phase1_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classa_phase2_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classa_phase3_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [1:0] q;
+ } map_e3;
+ struct packed {
+ logic [1:0] q;
+ } map_e2;
+ struct packed {
+ logic [1:0] q;
+ } map_e1;
+ struct packed {
+ logic [1:0] q;
+ } map_e0;
+ struct packed {
+ logic q;
+ } en_e3;
+ struct packed {
+ logic q;
+ } en_e2;
+ struct packed {
+ logic q;
+ } en_e1;
+ struct packed {
+ logic q;
+ } en_e0;
+ struct packed {
+ logic q;
+ } lock;
+ struct packed {
+ logic q;
+ } en;
+ } alert_handler_reg2hw_classb_ctrl_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } alert_handler_reg2hw_classb_clr_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [15:0] q;
+ } alert_handler_reg2hw_classb_accum_thresh_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classb_timeout_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_classb_crashdump_trigger_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classb_phase0_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classb_phase1_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classb_phase2_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classb_phase3_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [1:0] q;
+ } map_e3;
+ struct packed {
+ logic [1:0] q;
+ } map_e2;
+ struct packed {
+ logic [1:0] q;
+ } map_e1;
+ struct packed {
+ logic [1:0] q;
+ } map_e0;
+ struct packed {
+ logic q;
+ } en_e3;
+ struct packed {
+ logic q;
+ } en_e2;
+ struct packed {
+ logic q;
+ } en_e1;
+ struct packed {
+ logic q;
+ } en_e0;
+ struct packed {
+ logic q;
+ } lock;
+ struct packed {
+ logic q;
+ } en;
+ } alert_handler_reg2hw_classc_ctrl_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } alert_handler_reg2hw_classc_clr_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [15:0] q;
+ } alert_handler_reg2hw_classc_accum_thresh_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classc_timeout_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_classc_crashdump_trigger_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classc_phase0_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classc_phase1_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classc_phase2_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classc_phase3_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [1:0] q;
+ } map_e3;
+ struct packed {
+ logic [1:0] q;
+ } map_e2;
+ struct packed {
+ logic [1:0] q;
+ } map_e1;
+ struct packed {
+ logic [1:0] q;
+ } map_e0;
+ struct packed {
+ logic q;
+ } en_e3;
+ struct packed {
+ logic q;
+ } en_e2;
+ struct packed {
+ logic q;
+ } en_e1;
+ struct packed {
+ logic q;
+ } en_e0;
+ struct packed {
+ logic q;
+ } lock;
+ struct packed {
+ logic q;
+ } en;
+ } alert_handler_reg2hw_classd_ctrl_shadowed_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } alert_handler_reg2hw_classd_clr_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [15:0] q;
+ } alert_handler_reg2hw_classd_accum_thresh_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classd_timeout_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [1:0] q;
+ } alert_handler_reg2hw_classd_crashdump_trigger_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classd_phase0_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classd_phase1_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classd_phase2_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } alert_handler_reg2hw_classd_phase3_cyc_shadowed_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ logic de;
+ } classa;
+ struct packed {
+ logic d;
+ logic de;
+ } classb;
+ struct packed {
+ logic d;
+ logic de;
+ } classc;
+ struct packed {
+ logic d;
+ logic de;
+ } classd;
+ } alert_handler_hw2reg_intr_state_reg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_alert_cause_mreg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_loc_alert_cause_mreg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_classa_clr_regwen_reg_t;
+
+ typedef struct packed {
+ logic [15:0] d;
+ } alert_handler_hw2reg_classa_accum_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } alert_handler_hw2reg_classa_esc_cnt_reg_t;
+
+ typedef struct packed {
+ logic [2:0] d;
+ } alert_handler_hw2reg_classa_state_reg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_classb_clr_regwen_reg_t;
+
+ typedef struct packed {
+ logic [15:0] d;
+ } alert_handler_hw2reg_classb_accum_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } alert_handler_hw2reg_classb_esc_cnt_reg_t;
+
+ typedef struct packed {
+ logic [2:0] d;
+ } alert_handler_hw2reg_classb_state_reg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_classc_clr_regwen_reg_t;
+
+ typedef struct packed {
+ logic [15:0] d;
+ } alert_handler_hw2reg_classc_accum_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } alert_handler_hw2reg_classc_esc_cnt_reg_t;
+
+ typedef struct packed {
+ logic [2:0] d;
+ } alert_handler_hw2reg_classc_state_reg_t;
+
+ typedef struct packed {
+ logic d;
+ logic de;
+ } alert_handler_hw2reg_classd_clr_regwen_reg_t;
+
+ typedef struct packed {
+ logic [15:0] d;
+ } alert_handler_hw2reg_classd_accum_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } alert_handler_hw2reg_classd_esc_cnt_reg_t;
+
+ typedef struct packed {
+ logic [2:0] d;
+ } alert_handler_hw2reg_classd_state_reg_t;
+
+ // Register -> HW type
+ typedef struct packed {
+ alert_handler_reg2hw_intr_state_reg_t intr_state; // [1161:1158]
+ alert_handler_reg2hw_intr_enable_reg_t intr_enable; // [1157:1154]
+ alert_handler_reg2hw_intr_test_reg_t intr_test; // [1153:1146]
+ alert_handler_reg2hw_ping_timeout_cyc_shadowed_reg_t ping_timeout_cyc_shadowed; // [1145:1130]
+ alert_handler_reg2hw_ping_timer_en_shadowed_reg_t ping_timer_en_shadowed; // [1129:1129]
+ alert_handler_reg2hw_alert_regwen_mreg_t [64:0] alert_regwen; // [1128:1064]
+ alert_handler_reg2hw_alert_en_shadowed_mreg_t [64:0] alert_en_shadowed; // [1063:999]
+ alert_handler_reg2hw_alert_class_shadowed_mreg_t [64:0] alert_class_shadowed; // [998:869]
+ alert_handler_reg2hw_alert_cause_mreg_t [64:0] alert_cause; // [868:804]
+ alert_handler_reg2hw_loc_alert_en_shadowed_mreg_t [6:0] loc_alert_en_shadowed; // [803:797]
+ alert_handler_reg2hw_loc_alert_class_shadowed_mreg_t [6:0]
+ loc_alert_class_shadowed; // [796:783]
+ alert_handler_reg2hw_loc_alert_cause_mreg_t [6:0] loc_alert_cause; // [782:776]
+ alert_handler_reg2hw_classa_ctrl_shadowed_reg_t classa_ctrl_shadowed; // [775:762]
+ alert_handler_reg2hw_classa_clr_shadowed_reg_t classa_clr_shadowed; // [761:760]
+ alert_handler_reg2hw_classa_accum_thresh_shadowed_reg_t
+ classa_accum_thresh_shadowed; // [759:744]
+ alert_handler_reg2hw_classa_timeout_cyc_shadowed_reg_t classa_timeout_cyc_shadowed; // [743:712]
+ alert_handler_reg2hw_classa_crashdump_trigger_shadowed_reg_t
+ classa_crashdump_trigger_shadowed; // [711:710]
+ alert_handler_reg2hw_classa_phase0_cyc_shadowed_reg_t classa_phase0_cyc_shadowed; // [709:678]
+ alert_handler_reg2hw_classa_phase1_cyc_shadowed_reg_t classa_phase1_cyc_shadowed; // [677:646]
+ alert_handler_reg2hw_classa_phase2_cyc_shadowed_reg_t classa_phase2_cyc_shadowed; // [645:614]
+ alert_handler_reg2hw_classa_phase3_cyc_shadowed_reg_t classa_phase3_cyc_shadowed; // [613:582]
+ alert_handler_reg2hw_classb_ctrl_shadowed_reg_t classb_ctrl_shadowed; // [581:568]
+ alert_handler_reg2hw_classb_clr_shadowed_reg_t classb_clr_shadowed; // [567:566]
+ alert_handler_reg2hw_classb_accum_thresh_shadowed_reg_t
+ classb_accum_thresh_shadowed; // [565:550]
+ alert_handler_reg2hw_classb_timeout_cyc_shadowed_reg_t classb_timeout_cyc_shadowed; // [549:518]
+ alert_handler_reg2hw_classb_crashdump_trigger_shadowed_reg_t
+ classb_crashdump_trigger_shadowed; // [517:516]
+ alert_handler_reg2hw_classb_phase0_cyc_shadowed_reg_t classb_phase0_cyc_shadowed; // [515:484]
+ alert_handler_reg2hw_classb_phase1_cyc_shadowed_reg_t classb_phase1_cyc_shadowed; // [483:452]
+ alert_handler_reg2hw_classb_phase2_cyc_shadowed_reg_t classb_phase2_cyc_shadowed; // [451:420]
+ alert_handler_reg2hw_classb_phase3_cyc_shadowed_reg_t classb_phase3_cyc_shadowed; // [419:388]
+ alert_handler_reg2hw_classc_ctrl_shadowed_reg_t classc_ctrl_shadowed; // [387:374]
+ alert_handler_reg2hw_classc_clr_shadowed_reg_t classc_clr_shadowed; // [373:372]
+ alert_handler_reg2hw_classc_accum_thresh_shadowed_reg_t
+ classc_accum_thresh_shadowed; // [371:356]
+ alert_handler_reg2hw_classc_timeout_cyc_shadowed_reg_t classc_timeout_cyc_shadowed; // [355:324]
+ alert_handler_reg2hw_classc_crashdump_trigger_shadowed_reg_t
+ classc_crashdump_trigger_shadowed; // [323:322]
+ alert_handler_reg2hw_classc_phase0_cyc_shadowed_reg_t classc_phase0_cyc_shadowed; // [321:290]
+ alert_handler_reg2hw_classc_phase1_cyc_shadowed_reg_t classc_phase1_cyc_shadowed; // [289:258]
+ alert_handler_reg2hw_classc_phase2_cyc_shadowed_reg_t classc_phase2_cyc_shadowed; // [257:226]
+ alert_handler_reg2hw_classc_phase3_cyc_shadowed_reg_t classc_phase3_cyc_shadowed; // [225:194]
+ alert_handler_reg2hw_classd_ctrl_shadowed_reg_t classd_ctrl_shadowed; // [193:180]
+ alert_handler_reg2hw_classd_clr_shadowed_reg_t classd_clr_shadowed; // [179:178]
+ alert_handler_reg2hw_classd_accum_thresh_shadowed_reg_t
+ classd_accum_thresh_shadowed; // [177:162]
+ alert_handler_reg2hw_classd_timeout_cyc_shadowed_reg_t classd_timeout_cyc_shadowed; // [161:130]
+ alert_handler_reg2hw_classd_crashdump_trigger_shadowed_reg_t
+ classd_crashdump_trigger_shadowed; // [129:128]
+ alert_handler_reg2hw_classd_phase0_cyc_shadowed_reg_t classd_phase0_cyc_shadowed; // [127:96]
+ alert_handler_reg2hw_classd_phase1_cyc_shadowed_reg_t classd_phase1_cyc_shadowed; // [95:64]
+ alert_handler_reg2hw_classd_phase2_cyc_shadowed_reg_t classd_phase2_cyc_shadowed; // [63:32]
+ alert_handler_reg2hw_classd_phase3_cyc_shadowed_reg_t classd_phase3_cyc_shadowed; // [31:0]
+ } alert_handler_reg2hw_t;
+
+ // HW -> register type
+ typedef struct packed {
+ alert_handler_hw2reg_intr_state_reg_t intr_state; // [363:356]
+ alert_handler_hw2reg_alert_cause_mreg_t [64:0] alert_cause; // [355:226]
+ alert_handler_hw2reg_loc_alert_cause_mreg_t [6:0] loc_alert_cause; // [225:212]
+ alert_handler_hw2reg_classa_clr_regwen_reg_t classa_clr_regwen; // [211:210]
+ alert_handler_hw2reg_classa_accum_cnt_reg_t classa_accum_cnt; // [209:194]
+ alert_handler_hw2reg_classa_esc_cnt_reg_t classa_esc_cnt; // [193:162]
+ alert_handler_hw2reg_classa_state_reg_t classa_state; // [161:159]
+ alert_handler_hw2reg_classb_clr_regwen_reg_t classb_clr_regwen; // [158:157]
+ alert_handler_hw2reg_classb_accum_cnt_reg_t classb_accum_cnt; // [156:141]
+ alert_handler_hw2reg_classb_esc_cnt_reg_t classb_esc_cnt; // [140:109]
+ alert_handler_hw2reg_classb_state_reg_t classb_state; // [108:106]
+ alert_handler_hw2reg_classc_clr_regwen_reg_t classc_clr_regwen; // [105:104]
+ alert_handler_hw2reg_classc_accum_cnt_reg_t classc_accum_cnt; // [103:88]
+ alert_handler_hw2reg_classc_esc_cnt_reg_t classc_esc_cnt; // [87:56]
+ alert_handler_hw2reg_classc_state_reg_t classc_state; // [55:53]
+ alert_handler_hw2reg_classd_clr_regwen_reg_t classd_clr_regwen; // [52:51]
+ alert_handler_hw2reg_classd_accum_cnt_reg_t classd_accum_cnt; // [50:35]
+ alert_handler_hw2reg_classd_esc_cnt_reg_t classd_esc_cnt; // [34:3]
+ alert_handler_hw2reg_classd_state_reg_t classd_state; // [2:0]
+ } alert_handler_hw2reg_t;
+
+ // Register offsets
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_INTR_STATE_OFFSET = 11'h 0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_INTR_ENABLE_OFFSET = 11'h 4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_INTR_TEST_OFFSET = 11'h 8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_PING_TIMER_REGWEN_OFFSET = 11'h c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED_OFFSET = 11'h 10;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_PING_TIMER_EN_SHADOWED_OFFSET = 11'h 14;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_0_OFFSET = 11'h 18;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_1_OFFSET = 11'h 1c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_2_OFFSET = 11'h 20;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_3_OFFSET = 11'h 24;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_4_OFFSET = 11'h 28;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_5_OFFSET = 11'h 2c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_6_OFFSET = 11'h 30;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_7_OFFSET = 11'h 34;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_8_OFFSET = 11'h 38;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_9_OFFSET = 11'h 3c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_10_OFFSET = 11'h 40;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_11_OFFSET = 11'h 44;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_12_OFFSET = 11'h 48;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_13_OFFSET = 11'h 4c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_14_OFFSET = 11'h 50;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_15_OFFSET = 11'h 54;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_16_OFFSET = 11'h 58;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_17_OFFSET = 11'h 5c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_18_OFFSET = 11'h 60;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_19_OFFSET = 11'h 64;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_20_OFFSET = 11'h 68;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_21_OFFSET = 11'h 6c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_22_OFFSET = 11'h 70;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_23_OFFSET = 11'h 74;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_24_OFFSET = 11'h 78;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_25_OFFSET = 11'h 7c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_26_OFFSET = 11'h 80;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_27_OFFSET = 11'h 84;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_28_OFFSET = 11'h 88;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_29_OFFSET = 11'h 8c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_30_OFFSET = 11'h 90;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_31_OFFSET = 11'h 94;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_32_OFFSET = 11'h 98;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_33_OFFSET = 11'h 9c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_34_OFFSET = 11'h a0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_35_OFFSET = 11'h a4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_36_OFFSET = 11'h a8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_37_OFFSET = 11'h ac;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_38_OFFSET = 11'h b0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_39_OFFSET = 11'h b4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_40_OFFSET = 11'h b8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_41_OFFSET = 11'h bc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_42_OFFSET = 11'h c0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_43_OFFSET = 11'h c4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_44_OFFSET = 11'h c8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_45_OFFSET = 11'h cc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_46_OFFSET = 11'h d0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_47_OFFSET = 11'h d4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_48_OFFSET = 11'h d8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_49_OFFSET = 11'h dc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_50_OFFSET = 11'h e0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_51_OFFSET = 11'h e4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_52_OFFSET = 11'h e8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_53_OFFSET = 11'h ec;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_54_OFFSET = 11'h f0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_55_OFFSET = 11'h f4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_56_OFFSET = 11'h f8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_57_OFFSET = 11'h fc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_58_OFFSET = 11'h 100;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_59_OFFSET = 11'h 104;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_60_OFFSET = 11'h 108;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_61_OFFSET = 11'h 10c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_62_OFFSET = 11'h 110;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_63_OFFSET = 11'h 114;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_REGWEN_64_OFFSET = 11'h 118;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_0_OFFSET = 11'h 11c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_1_OFFSET = 11'h 120;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_2_OFFSET = 11'h 124;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_3_OFFSET = 11'h 128;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_4_OFFSET = 11'h 12c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_5_OFFSET = 11'h 130;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_6_OFFSET = 11'h 134;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_7_OFFSET = 11'h 138;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_8_OFFSET = 11'h 13c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_9_OFFSET = 11'h 140;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_10_OFFSET = 11'h 144;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_11_OFFSET = 11'h 148;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_12_OFFSET = 11'h 14c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_13_OFFSET = 11'h 150;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_14_OFFSET = 11'h 154;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_15_OFFSET = 11'h 158;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_16_OFFSET = 11'h 15c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_17_OFFSET = 11'h 160;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_18_OFFSET = 11'h 164;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_19_OFFSET = 11'h 168;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_20_OFFSET = 11'h 16c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_21_OFFSET = 11'h 170;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_22_OFFSET = 11'h 174;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_23_OFFSET = 11'h 178;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_24_OFFSET = 11'h 17c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_25_OFFSET = 11'h 180;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_26_OFFSET = 11'h 184;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_27_OFFSET = 11'h 188;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_28_OFFSET = 11'h 18c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_29_OFFSET = 11'h 190;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_30_OFFSET = 11'h 194;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_31_OFFSET = 11'h 198;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_32_OFFSET = 11'h 19c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_33_OFFSET = 11'h 1a0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_34_OFFSET = 11'h 1a4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_35_OFFSET = 11'h 1a8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_36_OFFSET = 11'h 1ac;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_37_OFFSET = 11'h 1b0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_38_OFFSET = 11'h 1b4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_39_OFFSET = 11'h 1b8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_40_OFFSET = 11'h 1bc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_41_OFFSET = 11'h 1c0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_42_OFFSET = 11'h 1c4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_43_OFFSET = 11'h 1c8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_44_OFFSET = 11'h 1cc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_45_OFFSET = 11'h 1d0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_46_OFFSET = 11'h 1d4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_47_OFFSET = 11'h 1d8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_48_OFFSET = 11'h 1dc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_49_OFFSET = 11'h 1e0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_50_OFFSET = 11'h 1e4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_51_OFFSET = 11'h 1e8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_52_OFFSET = 11'h 1ec;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_53_OFFSET = 11'h 1f0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_54_OFFSET = 11'h 1f4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_55_OFFSET = 11'h 1f8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_56_OFFSET = 11'h 1fc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_57_OFFSET = 11'h 200;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_58_OFFSET = 11'h 204;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_59_OFFSET = 11'h 208;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_60_OFFSET = 11'h 20c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_61_OFFSET = 11'h 210;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_62_OFFSET = 11'h 214;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_63_OFFSET = 11'h 218;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_EN_SHADOWED_64_OFFSET = 11'h 21c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_0_OFFSET = 11'h 220;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_1_OFFSET = 11'h 224;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_2_OFFSET = 11'h 228;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_3_OFFSET = 11'h 22c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_4_OFFSET = 11'h 230;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_5_OFFSET = 11'h 234;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_6_OFFSET = 11'h 238;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_7_OFFSET = 11'h 23c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_8_OFFSET = 11'h 240;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_9_OFFSET = 11'h 244;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_10_OFFSET = 11'h 248;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_11_OFFSET = 11'h 24c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_12_OFFSET = 11'h 250;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_13_OFFSET = 11'h 254;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_14_OFFSET = 11'h 258;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_15_OFFSET = 11'h 25c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_16_OFFSET = 11'h 260;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_17_OFFSET = 11'h 264;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_18_OFFSET = 11'h 268;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_19_OFFSET = 11'h 26c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_20_OFFSET = 11'h 270;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_21_OFFSET = 11'h 274;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_22_OFFSET = 11'h 278;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_23_OFFSET = 11'h 27c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_24_OFFSET = 11'h 280;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_25_OFFSET = 11'h 284;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_26_OFFSET = 11'h 288;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_27_OFFSET = 11'h 28c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_28_OFFSET = 11'h 290;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_29_OFFSET = 11'h 294;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_30_OFFSET = 11'h 298;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_31_OFFSET = 11'h 29c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_32_OFFSET = 11'h 2a0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_33_OFFSET = 11'h 2a4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_34_OFFSET = 11'h 2a8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_35_OFFSET = 11'h 2ac;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_36_OFFSET = 11'h 2b0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_37_OFFSET = 11'h 2b4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_38_OFFSET = 11'h 2b8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_39_OFFSET = 11'h 2bc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_40_OFFSET = 11'h 2c0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_41_OFFSET = 11'h 2c4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_42_OFFSET = 11'h 2c8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_43_OFFSET = 11'h 2cc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_44_OFFSET = 11'h 2d0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_45_OFFSET = 11'h 2d4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_46_OFFSET = 11'h 2d8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_47_OFFSET = 11'h 2dc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_48_OFFSET = 11'h 2e0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_49_OFFSET = 11'h 2e4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_50_OFFSET = 11'h 2e8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_51_OFFSET = 11'h 2ec;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_52_OFFSET = 11'h 2f0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_53_OFFSET = 11'h 2f4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_54_OFFSET = 11'h 2f8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_55_OFFSET = 11'h 2fc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_56_OFFSET = 11'h 300;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_57_OFFSET = 11'h 304;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_58_OFFSET = 11'h 308;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_59_OFFSET = 11'h 30c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_60_OFFSET = 11'h 310;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_61_OFFSET = 11'h 314;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_62_OFFSET = 11'h 318;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_63_OFFSET = 11'h 31c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CLASS_SHADOWED_64_OFFSET = 11'h 320;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_0_OFFSET = 11'h 324;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_1_OFFSET = 11'h 328;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_2_OFFSET = 11'h 32c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_3_OFFSET = 11'h 330;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_4_OFFSET = 11'h 334;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_5_OFFSET = 11'h 338;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_6_OFFSET = 11'h 33c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_7_OFFSET = 11'h 340;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_8_OFFSET = 11'h 344;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_9_OFFSET = 11'h 348;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_10_OFFSET = 11'h 34c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_11_OFFSET = 11'h 350;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_12_OFFSET = 11'h 354;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_13_OFFSET = 11'h 358;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_14_OFFSET = 11'h 35c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_15_OFFSET = 11'h 360;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_16_OFFSET = 11'h 364;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_17_OFFSET = 11'h 368;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_18_OFFSET = 11'h 36c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_19_OFFSET = 11'h 370;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_20_OFFSET = 11'h 374;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_21_OFFSET = 11'h 378;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_22_OFFSET = 11'h 37c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_23_OFFSET = 11'h 380;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_24_OFFSET = 11'h 384;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_25_OFFSET = 11'h 388;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_26_OFFSET = 11'h 38c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_27_OFFSET = 11'h 390;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_28_OFFSET = 11'h 394;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_29_OFFSET = 11'h 398;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_30_OFFSET = 11'h 39c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_31_OFFSET = 11'h 3a0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_32_OFFSET = 11'h 3a4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_33_OFFSET = 11'h 3a8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_34_OFFSET = 11'h 3ac;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_35_OFFSET = 11'h 3b0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_36_OFFSET = 11'h 3b4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_37_OFFSET = 11'h 3b8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_38_OFFSET = 11'h 3bc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_39_OFFSET = 11'h 3c0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_40_OFFSET = 11'h 3c4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_41_OFFSET = 11'h 3c8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_42_OFFSET = 11'h 3cc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_43_OFFSET = 11'h 3d0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_44_OFFSET = 11'h 3d4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_45_OFFSET = 11'h 3d8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_46_OFFSET = 11'h 3dc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_47_OFFSET = 11'h 3e0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_48_OFFSET = 11'h 3e4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_49_OFFSET = 11'h 3e8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_50_OFFSET = 11'h 3ec;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_51_OFFSET = 11'h 3f0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_52_OFFSET = 11'h 3f4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_53_OFFSET = 11'h 3f8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_54_OFFSET = 11'h 3fc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_55_OFFSET = 11'h 400;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_56_OFFSET = 11'h 404;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_57_OFFSET = 11'h 408;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_58_OFFSET = 11'h 40c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_59_OFFSET = 11'h 410;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_60_OFFSET = 11'h 414;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_61_OFFSET = 11'h 418;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_62_OFFSET = 11'h 41c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_63_OFFSET = 11'h 420;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_ALERT_CAUSE_64_OFFSET = 11'h 424;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_0_OFFSET = 11'h 428;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_1_OFFSET = 11'h 42c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_2_OFFSET = 11'h 430;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_3_OFFSET = 11'h 434;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_4_OFFSET = 11'h 438;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_5_OFFSET = 11'h 43c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_REGWEN_6_OFFSET = 11'h 440;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0_OFFSET = 11'h 444;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1_OFFSET = 11'h 448;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2_OFFSET = 11'h 44c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_3_OFFSET = 11'h 450;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_4_OFFSET = 11'h 454;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_5_OFFSET = 11'h 458;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_6_OFFSET = 11'h 45c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0_OFFSET = 11'h 460;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1_OFFSET = 11'h 464;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2_OFFSET = 11'h 468;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_3_OFFSET = 11'h 46c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_4_OFFSET = 11'h 470;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_5_OFFSET = 11'h 474;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_6_OFFSET = 11'h 478;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_0_OFFSET = 11'h 47c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_1_OFFSET = 11'h 480;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_2_OFFSET = 11'h 484;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_3_OFFSET = 11'h 488;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_4_OFFSET = 11'h 48c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_5_OFFSET = 11'h 490;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_LOC_ALERT_CAUSE_6_OFFSET = 11'h 494;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_REGWEN_OFFSET = 11'h 498;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_CTRL_SHADOWED_OFFSET = 11'h 49c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_CLR_REGWEN_OFFSET = 11'h 4a0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_CLR_SHADOWED_OFFSET = 11'h 4a4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_ACCUM_CNT_OFFSET = 11'h 4a8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED_OFFSET = 11'h 4ac;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED_OFFSET = 11'h 4b0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_CRASHDUMP_TRIGGER_SHADOWED_OFFSET = 11'h 4b4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED_OFFSET = 11'h 4b8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED_OFFSET = 11'h 4bc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED_OFFSET = 11'h 4c0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_PHASE3_CYC_SHADOWED_OFFSET = 11'h 4c4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_ESC_CNT_OFFSET = 11'h 4c8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSA_STATE_OFFSET = 11'h 4cc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_REGWEN_OFFSET = 11'h 4d0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_CTRL_SHADOWED_OFFSET = 11'h 4d4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_CLR_REGWEN_OFFSET = 11'h 4d8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_CLR_SHADOWED_OFFSET = 11'h 4dc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_ACCUM_CNT_OFFSET = 11'h 4e0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED_OFFSET = 11'h 4e4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED_OFFSET = 11'h 4e8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_CRASHDUMP_TRIGGER_SHADOWED_OFFSET = 11'h 4ec;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_PHASE0_CYC_SHADOWED_OFFSET = 11'h 4f0;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED_OFFSET = 11'h 4f4;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED_OFFSET = 11'h 4f8;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED_OFFSET = 11'h 4fc;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_ESC_CNT_OFFSET = 11'h 500;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSB_STATE_OFFSET = 11'h 504;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_REGWEN_OFFSET = 11'h 508;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_CTRL_SHADOWED_OFFSET = 11'h 50c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_CLR_REGWEN_OFFSET = 11'h 510;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_CLR_SHADOWED_OFFSET = 11'h 514;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_ACCUM_CNT_OFFSET = 11'h 518;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_ACCUM_THRESH_SHADOWED_OFFSET = 11'h 51c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_TIMEOUT_CYC_SHADOWED_OFFSET = 11'h 520;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_CRASHDUMP_TRIGGER_SHADOWED_OFFSET = 11'h 524;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_PHASE0_CYC_SHADOWED_OFFSET = 11'h 528;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_PHASE1_CYC_SHADOWED_OFFSET = 11'h 52c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_PHASE2_CYC_SHADOWED_OFFSET = 11'h 530;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_PHASE3_CYC_SHADOWED_OFFSET = 11'h 534;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_ESC_CNT_OFFSET = 11'h 538;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSC_STATE_OFFSET = 11'h 53c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_REGWEN_OFFSET = 11'h 540;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_CTRL_SHADOWED_OFFSET = 11'h 544;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_CLR_REGWEN_OFFSET = 11'h 548;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_CLR_SHADOWED_OFFSET = 11'h 54c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_ACCUM_CNT_OFFSET = 11'h 550;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_ACCUM_THRESH_SHADOWED_OFFSET = 11'h 554;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_TIMEOUT_CYC_SHADOWED_OFFSET = 11'h 558;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_CRASHDUMP_TRIGGER_SHADOWED_OFFSET = 11'h 55c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_PHASE0_CYC_SHADOWED_OFFSET = 11'h 560;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_PHASE1_CYC_SHADOWED_OFFSET = 11'h 564;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_PHASE2_CYC_SHADOWED_OFFSET = 11'h 568;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_PHASE3_CYC_SHADOWED_OFFSET = 11'h 56c;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_ESC_CNT_OFFSET = 11'h 570;
+ parameter logic [BlockAw-1:0] ALERT_HANDLER_CLASSD_STATE_OFFSET = 11'h 574;
+
+ // Reset values for hwext registers and their fields
+ parameter logic [3:0] ALERT_HANDLER_INTR_TEST_RESVAL = 4'h 0;
+ parameter logic [0:0] ALERT_HANDLER_INTR_TEST_CLASSA_RESVAL = 1'h 0;
+ parameter logic [0:0] ALERT_HANDLER_INTR_TEST_CLASSB_RESVAL = 1'h 0;
+ parameter logic [0:0] ALERT_HANDLER_INTR_TEST_CLASSC_RESVAL = 1'h 0;
+ parameter logic [0:0] ALERT_HANDLER_INTR_TEST_CLASSD_RESVAL = 1'h 0;
+ parameter logic [15:0] ALERT_HANDLER_CLASSA_ACCUM_CNT_RESVAL = 16'h 0;
+ parameter logic [31:0] ALERT_HANDLER_CLASSA_ESC_CNT_RESVAL = 32'h 0;
+ parameter logic [2:0] ALERT_HANDLER_CLASSA_STATE_RESVAL = 3'h 0;
+ parameter logic [15:0] ALERT_HANDLER_CLASSB_ACCUM_CNT_RESVAL = 16'h 0;
+ parameter logic [31:0] ALERT_HANDLER_CLASSB_ESC_CNT_RESVAL = 32'h 0;
+ parameter logic [2:0] ALERT_HANDLER_CLASSB_STATE_RESVAL = 3'h 0;
+ parameter logic [15:0] ALERT_HANDLER_CLASSC_ACCUM_CNT_RESVAL = 16'h 0;
+ parameter logic [31:0] ALERT_HANDLER_CLASSC_ESC_CNT_RESVAL = 32'h 0;
+ parameter logic [2:0] ALERT_HANDLER_CLASSC_STATE_RESVAL = 3'h 0;
+ parameter logic [15:0] ALERT_HANDLER_CLASSD_ACCUM_CNT_RESVAL = 16'h 0;
+ parameter logic [31:0] ALERT_HANDLER_CLASSD_ESC_CNT_RESVAL = 32'h 0;
+ parameter logic [2:0] ALERT_HANDLER_CLASSD_STATE_RESVAL = 3'h 0;
+
+ // Register index
+ typedef enum int {
+ ALERT_HANDLER_INTR_STATE,
+ ALERT_HANDLER_INTR_ENABLE,
+ ALERT_HANDLER_INTR_TEST,
+ ALERT_HANDLER_PING_TIMER_REGWEN,
+ ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED,
+ ALERT_HANDLER_PING_TIMER_EN_SHADOWED,
+ ALERT_HANDLER_ALERT_REGWEN_0,
+ ALERT_HANDLER_ALERT_REGWEN_1,
+ ALERT_HANDLER_ALERT_REGWEN_2,
+ ALERT_HANDLER_ALERT_REGWEN_3,
+ ALERT_HANDLER_ALERT_REGWEN_4,
+ ALERT_HANDLER_ALERT_REGWEN_5,
+ ALERT_HANDLER_ALERT_REGWEN_6,
+ ALERT_HANDLER_ALERT_REGWEN_7,
+ ALERT_HANDLER_ALERT_REGWEN_8,
+ ALERT_HANDLER_ALERT_REGWEN_9,
+ ALERT_HANDLER_ALERT_REGWEN_10,
+ ALERT_HANDLER_ALERT_REGWEN_11,
+ ALERT_HANDLER_ALERT_REGWEN_12,
+ ALERT_HANDLER_ALERT_REGWEN_13,
+ ALERT_HANDLER_ALERT_REGWEN_14,
+ ALERT_HANDLER_ALERT_REGWEN_15,
+ ALERT_HANDLER_ALERT_REGWEN_16,
+ ALERT_HANDLER_ALERT_REGWEN_17,
+ ALERT_HANDLER_ALERT_REGWEN_18,
+ ALERT_HANDLER_ALERT_REGWEN_19,
+ ALERT_HANDLER_ALERT_REGWEN_20,
+ ALERT_HANDLER_ALERT_REGWEN_21,
+ ALERT_HANDLER_ALERT_REGWEN_22,
+ ALERT_HANDLER_ALERT_REGWEN_23,
+ ALERT_HANDLER_ALERT_REGWEN_24,
+ ALERT_HANDLER_ALERT_REGWEN_25,
+ ALERT_HANDLER_ALERT_REGWEN_26,
+ ALERT_HANDLER_ALERT_REGWEN_27,
+ ALERT_HANDLER_ALERT_REGWEN_28,
+ ALERT_HANDLER_ALERT_REGWEN_29,
+ ALERT_HANDLER_ALERT_REGWEN_30,
+ ALERT_HANDLER_ALERT_REGWEN_31,
+ ALERT_HANDLER_ALERT_REGWEN_32,
+ ALERT_HANDLER_ALERT_REGWEN_33,
+ ALERT_HANDLER_ALERT_REGWEN_34,
+ ALERT_HANDLER_ALERT_REGWEN_35,
+ ALERT_HANDLER_ALERT_REGWEN_36,
+ ALERT_HANDLER_ALERT_REGWEN_37,
+ ALERT_HANDLER_ALERT_REGWEN_38,
+ ALERT_HANDLER_ALERT_REGWEN_39,
+ ALERT_HANDLER_ALERT_REGWEN_40,
+ ALERT_HANDLER_ALERT_REGWEN_41,
+ ALERT_HANDLER_ALERT_REGWEN_42,
+ ALERT_HANDLER_ALERT_REGWEN_43,
+ ALERT_HANDLER_ALERT_REGWEN_44,
+ ALERT_HANDLER_ALERT_REGWEN_45,
+ ALERT_HANDLER_ALERT_REGWEN_46,
+ ALERT_HANDLER_ALERT_REGWEN_47,
+ ALERT_HANDLER_ALERT_REGWEN_48,
+ ALERT_HANDLER_ALERT_REGWEN_49,
+ ALERT_HANDLER_ALERT_REGWEN_50,
+ ALERT_HANDLER_ALERT_REGWEN_51,
+ ALERT_HANDLER_ALERT_REGWEN_52,
+ ALERT_HANDLER_ALERT_REGWEN_53,
+ ALERT_HANDLER_ALERT_REGWEN_54,
+ ALERT_HANDLER_ALERT_REGWEN_55,
+ ALERT_HANDLER_ALERT_REGWEN_56,
+ ALERT_HANDLER_ALERT_REGWEN_57,
+ ALERT_HANDLER_ALERT_REGWEN_58,
+ ALERT_HANDLER_ALERT_REGWEN_59,
+ ALERT_HANDLER_ALERT_REGWEN_60,
+ ALERT_HANDLER_ALERT_REGWEN_61,
+ ALERT_HANDLER_ALERT_REGWEN_62,
+ ALERT_HANDLER_ALERT_REGWEN_63,
+ ALERT_HANDLER_ALERT_REGWEN_64,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_0,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_1,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_2,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_3,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_4,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_5,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_6,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_7,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_8,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_9,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_10,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_11,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_12,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_13,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_14,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_15,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_16,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_17,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_18,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_19,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_20,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_21,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_22,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_23,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_24,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_25,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_26,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_27,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_28,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_29,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_30,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_31,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_32,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_33,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_34,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_35,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_36,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_37,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_38,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_39,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_40,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_41,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_42,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_43,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_44,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_45,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_46,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_47,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_48,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_49,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_50,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_51,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_52,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_53,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_54,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_55,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_56,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_57,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_58,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_59,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_60,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_61,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_62,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_63,
+ ALERT_HANDLER_ALERT_EN_SHADOWED_64,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_0,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_1,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_2,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_3,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_4,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_5,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_6,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_7,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_8,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_9,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_10,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_11,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_12,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_13,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_14,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_15,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_16,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_17,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_18,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_19,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_20,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_21,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_22,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_23,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_24,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_25,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_26,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_27,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_28,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_29,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_30,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_31,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_32,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_33,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_34,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_35,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_36,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_37,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_38,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_39,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_40,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_41,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_42,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_43,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_44,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_45,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_46,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_47,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_48,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_49,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_50,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_51,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_52,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_53,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_54,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_55,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_56,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_57,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_58,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_59,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_60,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_61,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_62,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_63,
+ ALERT_HANDLER_ALERT_CLASS_SHADOWED_64,
+ ALERT_HANDLER_ALERT_CAUSE_0,
+ ALERT_HANDLER_ALERT_CAUSE_1,
+ ALERT_HANDLER_ALERT_CAUSE_2,
+ ALERT_HANDLER_ALERT_CAUSE_3,
+ ALERT_HANDLER_ALERT_CAUSE_4,
+ ALERT_HANDLER_ALERT_CAUSE_5,
+ ALERT_HANDLER_ALERT_CAUSE_6,
+ ALERT_HANDLER_ALERT_CAUSE_7,
+ ALERT_HANDLER_ALERT_CAUSE_8,
+ ALERT_HANDLER_ALERT_CAUSE_9,
+ ALERT_HANDLER_ALERT_CAUSE_10,
+ ALERT_HANDLER_ALERT_CAUSE_11,
+ ALERT_HANDLER_ALERT_CAUSE_12,
+ ALERT_HANDLER_ALERT_CAUSE_13,
+ ALERT_HANDLER_ALERT_CAUSE_14,
+ ALERT_HANDLER_ALERT_CAUSE_15,
+ ALERT_HANDLER_ALERT_CAUSE_16,
+ ALERT_HANDLER_ALERT_CAUSE_17,
+ ALERT_HANDLER_ALERT_CAUSE_18,
+ ALERT_HANDLER_ALERT_CAUSE_19,
+ ALERT_HANDLER_ALERT_CAUSE_20,
+ ALERT_HANDLER_ALERT_CAUSE_21,
+ ALERT_HANDLER_ALERT_CAUSE_22,
+ ALERT_HANDLER_ALERT_CAUSE_23,
+ ALERT_HANDLER_ALERT_CAUSE_24,
+ ALERT_HANDLER_ALERT_CAUSE_25,
+ ALERT_HANDLER_ALERT_CAUSE_26,
+ ALERT_HANDLER_ALERT_CAUSE_27,
+ ALERT_HANDLER_ALERT_CAUSE_28,
+ ALERT_HANDLER_ALERT_CAUSE_29,
+ ALERT_HANDLER_ALERT_CAUSE_30,
+ ALERT_HANDLER_ALERT_CAUSE_31,
+ ALERT_HANDLER_ALERT_CAUSE_32,
+ ALERT_HANDLER_ALERT_CAUSE_33,
+ ALERT_HANDLER_ALERT_CAUSE_34,
+ ALERT_HANDLER_ALERT_CAUSE_35,
+ ALERT_HANDLER_ALERT_CAUSE_36,
+ ALERT_HANDLER_ALERT_CAUSE_37,
+ ALERT_HANDLER_ALERT_CAUSE_38,
+ ALERT_HANDLER_ALERT_CAUSE_39,
+ ALERT_HANDLER_ALERT_CAUSE_40,
+ ALERT_HANDLER_ALERT_CAUSE_41,
+ ALERT_HANDLER_ALERT_CAUSE_42,
+ ALERT_HANDLER_ALERT_CAUSE_43,
+ ALERT_HANDLER_ALERT_CAUSE_44,
+ ALERT_HANDLER_ALERT_CAUSE_45,
+ ALERT_HANDLER_ALERT_CAUSE_46,
+ ALERT_HANDLER_ALERT_CAUSE_47,
+ ALERT_HANDLER_ALERT_CAUSE_48,
+ ALERT_HANDLER_ALERT_CAUSE_49,
+ ALERT_HANDLER_ALERT_CAUSE_50,
+ ALERT_HANDLER_ALERT_CAUSE_51,
+ ALERT_HANDLER_ALERT_CAUSE_52,
+ ALERT_HANDLER_ALERT_CAUSE_53,
+ ALERT_HANDLER_ALERT_CAUSE_54,
+ ALERT_HANDLER_ALERT_CAUSE_55,
+ ALERT_HANDLER_ALERT_CAUSE_56,
+ ALERT_HANDLER_ALERT_CAUSE_57,
+ ALERT_HANDLER_ALERT_CAUSE_58,
+ ALERT_HANDLER_ALERT_CAUSE_59,
+ ALERT_HANDLER_ALERT_CAUSE_60,
+ ALERT_HANDLER_ALERT_CAUSE_61,
+ ALERT_HANDLER_ALERT_CAUSE_62,
+ ALERT_HANDLER_ALERT_CAUSE_63,
+ ALERT_HANDLER_ALERT_CAUSE_64,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_0,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_1,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_2,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_3,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_4,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_5,
+ ALERT_HANDLER_LOC_ALERT_REGWEN_6,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_3,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_4,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_5,
+ ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_6,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_3,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_4,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_5,
+ ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_6,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_0,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_1,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_2,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_3,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_4,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_5,
+ ALERT_HANDLER_LOC_ALERT_CAUSE_6,
+ ALERT_HANDLER_CLASSA_REGWEN,
+ ALERT_HANDLER_CLASSA_CTRL_SHADOWED,
+ ALERT_HANDLER_CLASSA_CLR_REGWEN,
+ ALERT_HANDLER_CLASSA_CLR_SHADOWED,
+ ALERT_HANDLER_CLASSA_ACCUM_CNT,
+ ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED,
+ ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSA_CRASHDUMP_TRIGGER_SHADOWED,
+ ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSA_PHASE3_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSA_ESC_CNT,
+ ALERT_HANDLER_CLASSA_STATE,
+ ALERT_HANDLER_CLASSB_REGWEN,
+ ALERT_HANDLER_CLASSB_CTRL_SHADOWED,
+ ALERT_HANDLER_CLASSB_CLR_REGWEN,
+ ALERT_HANDLER_CLASSB_CLR_SHADOWED,
+ ALERT_HANDLER_CLASSB_ACCUM_CNT,
+ ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED,
+ ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSB_CRASHDUMP_TRIGGER_SHADOWED,
+ ALERT_HANDLER_CLASSB_PHASE0_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSB_ESC_CNT,
+ ALERT_HANDLER_CLASSB_STATE,
+ ALERT_HANDLER_CLASSC_REGWEN,
+ ALERT_HANDLER_CLASSC_CTRL_SHADOWED,
+ ALERT_HANDLER_CLASSC_CLR_REGWEN,
+ ALERT_HANDLER_CLASSC_CLR_SHADOWED,
+ ALERT_HANDLER_CLASSC_ACCUM_CNT,
+ ALERT_HANDLER_CLASSC_ACCUM_THRESH_SHADOWED,
+ ALERT_HANDLER_CLASSC_TIMEOUT_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSC_CRASHDUMP_TRIGGER_SHADOWED,
+ ALERT_HANDLER_CLASSC_PHASE0_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSC_PHASE1_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSC_PHASE2_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSC_PHASE3_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSC_ESC_CNT,
+ ALERT_HANDLER_CLASSC_STATE,
+ ALERT_HANDLER_CLASSD_REGWEN,
+ ALERT_HANDLER_CLASSD_CTRL_SHADOWED,
+ ALERT_HANDLER_CLASSD_CLR_REGWEN,
+ ALERT_HANDLER_CLASSD_CLR_SHADOWED,
+ ALERT_HANDLER_CLASSD_ACCUM_CNT,
+ ALERT_HANDLER_CLASSD_ACCUM_THRESH_SHADOWED,
+ ALERT_HANDLER_CLASSD_TIMEOUT_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSD_CRASHDUMP_TRIGGER_SHADOWED,
+ ALERT_HANDLER_CLASSD_PHASE0_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSD_PHASE1_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSD_PHASE2_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSD_PHASE3_CYC_SHADOWED,
+ ALERT_HANDLER_CLASSD_ESC_CNT,
+ ALERT_HANDLER_CLASSD_STATE
+ } alert_handler_id_e;
+
+ // Register width information to check illegal writes
+ parameter logic [3:0] ALERT_HANDLER_PERMIT [350] = '{
+ 4'b 0001, // index[ 0] ALERT_HANDLER_INTR_STATE
+ 4'b 0001, // index[ 1] ALERT_HANDLER_INTR_ENABLE
+ 4'b 0001, // index[ 2] ALERT_HANDLER_INTR_TEST
+ 4'b 0001, // index[ 3] ALERT_HANDLER_PING_TIMER_REGWEN
+ 4'b 0011, // index[ 4] ALERT_HANDLER_PING_TIMEOUT_CYC_SHADOWED
+ 4'b 0001, // index[ 5] ALERT_HANDLER_PING_TIMER_EN_SHADOWED
+ 4'b 0001, // index[ 6] ALERT_HANDLER_ALERT_REGWEN_0
+ 4'b 0001, // index[ 7] ALERT_HANDLER_ALERT_REGWEN_1
+ 4'b 0001, // index[ 8] ALERT_HANDLER_ALERT_REGWEN_2
+ 4'b 0001, // index[ 9] ALERT_HANDLER_ALERT_REGWEN_3
+ 4'b 0001, // index[ 10] ALERT_HANDLER_ALERT_REGWEN_4
+ 4'b 0001, // index[ 11] ALERT_HANDLER_ALERT_REGWEN_5
+ 4'b 0001, // index[ 12] ALERT_HANDLER_ALERT_REGWEN_6
+ 4'b 0001, // index[ 13] ALERT_HANDLER_ALERT_REGWEN_7
+ 4'b 0001, // index[ 14] ALERT_HANDLER_ALERT_REGWEN_8
+ 4'b 0001, // index[ 15] ALERT_HANDLER_ALERT_REGWEN_9
+ 4'b 0001, // index[ 16] ALERT_HANDLER_ALERT_REGWEN_10
+ 4'b 0001, // index[ 17] ALERT_HANDLER_ALERT_REGWEN_11
+ 4'b 0001, // index[ 18] ALERT_HANDLER_ALERT_REGWEN_12
+ 4'b 0001, // index[ 19] ALERT_HANDLER_ALERT_REGWEN_13
+ 4'b 0001, // index[ 20] ALERT_HANDLER_ALERT_REGWEN_14
+ 4'b 0001, // index[ 21] ALERT_HANDLER_ALERT_REGWEN_15
+ 4'b 0001, // index[ 22] ALERT_HANDLER_ALERT_REGWEN_16
+ 4'b 0001, // index[ 23] ALERT_HANDLER_ALERT_REGWEN_17
+ 4'b 0001, // index[ 24] ALERT_HANDLER_ALERT_REGWEN_18
+ 4'b 0001, // index[ 25] ALERT_HANDLER_ALERT_REGWEN_19
+ 4'b 0001, // index[ 26] ALERT_HANDLER_ALERT_REGWEN_20
+ 4'b 0001, // index[ 27] ALERT_HANDLER_ALERT_REGWEN_21
+ 4'b 0001, // index[ 28] ALERT_HANDLER_ALERT_REGWEN_22
+ 4'b 0001, // index[ 29] ALERT_HANDLER_ALERT_REGWEN_23
+ 4'b 0001, // index[ 30] ALERT_HANDLER_ALERT_REGWEN_24
+ 4'b 0001, // index[ 31] ALERT_HANDLER_ALERT_REGWEN_25
+ 4'b 0001, // index[ 32] ALERT_HANDLER_ALERT_REGWEN_26
+ 4'b 0001, // index[ 33] ALERT_HANDLER_ALERT_REGWEN_27
+ 4'b 0001, // index[ 34] ALERT_HANDLER_ALERT_REGWEN_28
+ 4'b 0001, // index[ 35] ALERT_HANDLER_ALERT_REGWEN_29
+ 4'b 0001, // index[ 36] ALERT_HANDLER_ALERT_REGWEN_30
+ 4'b 0001, // index[ 37] ALERT_HANDLER_ALERT_REGWEN_31
+ 4'b 0001, // index[ 38] ALERT_HANDLER_ALERT_REGWEN_32
+ 4'b 0001, // index[ 39] ALERT_HANDLER_ALERT_REGWEN_33
+ 4'b 0001, // index[ 40] ALERT_HANDLER_ALERT_REGWEN_34
+ 4'b 0001, // index[ 41] ALERT_HANDLER_ALERT_REGWEN_35
+ 4'b 0001, // index[ 42] ALERT_HANDLER_ALERT_REGWEN_36
+ 4'b 0001, // index[ 43] ALERT_HANDLER_ALERT_REGWEN_37
+ 4'b 0001, // index[ 44] ALERT_HANDLER_ALERT_REGWEN_38
+ 4'b 0001, // index[ 45] ALERT_HANDLER_ALERT_REGWEN_39
+ 4'b 0001, // index[ 46] ALERT_HANDLER_ALERT_REGWEN_40
+ 4'b 0001, // index[ 47] ALERT_HANDLER_ALERT_REGWEN_41
+ 4'b 0001, // index[ 48] ALERT_HANDLER_ALERT_REGWEN_42
+ 4'b 0001, // index[ 49] ALERT_HANDLER_ALERT_REGWEN_43
+ 4'b 0001, // index[ 50] ALERT_HANDLER_ALERT_REGWEN_44
+ 4'b 0001, // index[ 51] ALERT_HANDLER_ALERT_REGWEN_45
+ 4'b 0001, // index[ 52] ALERT_HANDLER_ALERT_REGWEN_46
+ 4'b 0001, // index[ 53] ALERT_HANDLER_ALERT_REGWEN_47
+ 4'b 0001, // index[ 54] ALERT_HANDLER_ALERT_REGWEN_48
+ 4'b 0001, // index[ 55] ALERT_HANDLER_ALERT_REGWEN_49
+ 4'b 0001, // index[ 56] ALERT_HANDLER_ALERT_REGWEN_50
+ 4'b 0001, // index[ 57] ALERT_HANDLER_ALERT_REGWEN_51
+ 4'b 0001, // index[ 58] ALERT_HANDLER_ALERT_REGWEN_52
+ 4'b 0001, // index[ 59] ALERT_HANDLER_ALERT_REGWEN_53
+ 4'b 0001, // index[ 60] ALERT_HANDLER_ALERT_REGWEN_54
+ 4'b 0001, // index[ 61] ALERT_HANDLER_ALERT_REGWEN_55
+ 4'b 0001, // index[ 62] ALERT_HANDLER_ALERT_REGWEN_56
+ 4'b 0001, // index[ 63] ALERT_HANDLER_ALERT_REGWEN_57
+ 4'b 0001, // index[ 64] ALERT_HANDLER_ALERT_REGWEN_58
+ 4'b 0001, // index[ 65] ALERT_HANDLER_ALERT_REGWEN_59
+ 4'b 0001, // index[ 66] ALERT_HANDLER_ALERT_REGWEN_60
+ 4'b 0001, // index[ 67] ALERT_HANDLER_ALERT_REGWEN_61
+ 4'b 0001, // index[ 68] ALERT_HANDLER_ALERT_REGWEN_62
+ 4'b 0001, // index[ 69] ALERT_HANDLER_ALERT_REGWEN_63
+ 4'b 0001, // index[ 70] ALERT_HANDLER_ALERT_REGWEN_64
+ 4'b 0001, // index[ 71] ALERT_HANDLER_ALERT_EN_SHADOWED_0
+ 4'b 0001, // index[ 72] ALERT_HANDLER_ALERT_EN_SHADOWED_1
+ 4'b 0001, // index[ 73] ALERT_HANDLER_ALERT_EN_SHADOWED_2
+ 4'b 0001, // index[ 74] ALERT_HANDLER_ALERT_EN_SHADOWED_3
+ 4'b 0001, // index[ 75] ALERT_HANDLER_ALERT_EN_SHADOWED_4
+ 4'b 0001, // index[ 76] ALERT_HANDLER_ALERT_EN_SHADOWED_5
+ 4'b 0001, // index[ 77] ALERT_HANDLER_ALERT_EN_SHADOWED_6
+ 4'b 0001, // index[ 78] ALERT_HANDLER_ALERT_EN_SHADOWED_7
+ 4'b 0001, // index[ 79] ALERT_HANDLER_ALERT_EN_SHADOWED_8
+ 4'b 0001, // index[ 80] ALERT_HANDLER_ALERT_EN_SHADOWED_9
+ 4'b 0001, // index[ 81] ALERT_HANDLER_ALERT_EN_SHADOWED_10
+ 4'b 0001, // index[ 82] ALERT_HANDLER_ALERT_EN_SHADOWED_11
+ 4'b 0001, // index[ 83] ALERT_HANDLER_ALERT_EN_SHADOWED_12
+ 4'b 0001, // index[ 84] ALERT_HANDLER_ALERT_EN_SHADOWED_13
+ 4'b 0001, // index[ 85] ALERT_HANDLER_ALERT_EN_SHADOWED_14
+ 4'b 0001, // index[ 86] ALERT_HANDLER_ALERT_EN_SHADOWED_15
+ 4'b 0001, // index[ 87] ALERT_HANDLER_ALERT_EN_SHADOWED_16
+ 4'b 0001, // index[ 88] ALERT_HANDLER_ALERT_EN_SHADOWED_17
+ 4'b 0001, // index[ 89] ALERT_HANDLER_ALERT_EN_SHADOWED_18
+ 4'b 0001, // index[ 90] ALERT_HANDLER_ALERT_EN_SHADOWED_19
+ 4'b 0001, // index[ 91] ALERT_HANDLER_ALERT_EN_SHADOWED_20
+ 4'b 0001, // index[ 92] ALERT_HANDLER_ALERT_EN_SHADOWED_21
+ 4'b 0001, // index[ 93] ALERT_HANDLER_ALERT_EN_SHADOWED_22
+ 4'b 0001, // index[ 94] ALERT_HANDLER_ALERT_EN_SHADOWED_23
+ 4'b 0001, // index[ 95] ALERT_HANDLER_ALERT_EN_SHADOWED_24
+ 4'b 0001, // index[ 96] ALERT_HANDLER_ALERT_EN_SHADOWED_25
+ 4'b 0001, // index[ 97] ALERT_HANDLER_ALERT_EN_SHADOWED_26
+ 4'b 0001, // index[ 98] ALERT_HANDLER_ALERT_EN_SHADOWED_27
+ 4'b 0001, // index[ 99] ALERT_HANDLER_ALERT_EN_SHADOWED_28
+ 4'b 0001, // index[100] ALERT_HANDLER_ALERT_EN_SHADOWED_29
+ 4'b 0001, // index[101] ALERT_HANDLER_ALERT_EN_SHADOWED_30
+ 4'b 0001, // index[102] ALERT_HANDLER_ALERT_EN_SHADOWED_31
+ 4'b 0001, // index[103] ALERT_HANDLER_ALERT_EN_SHADOWED_32
+ 4'b 0001, // index[104] ALERT_HANDLER_ALERT_EN_SHADOWED_33
+ 4'b 0001, // index[105] ALERT_HANDLER_ALERT_EN_SHADOWED_34
+ 4'b 0001, // index[106] ALERT_HANDLER_ALERT_EN_SHADOWED_35
+ 4'b 0001, // index[107] ALERT_HANDLER_ALERT_EN_SHADOWED_36
+ 4'b 0001, // index[108] ALERT_HANDLER_ALERT_EN_SHADOWED_37
+ 4'b 0001, // index[109] ALERT_HANDLER_ALERT_EN_SHADOWED_38
+ 4'b 0001, // index[110] ALERT_HANDLER_ALERT_EN_SHADOWED_39
+ 4'b 0001, // index[111] ALERT_HANDLER_ALERT_EN_SHADOWED_40
+ 4'b 0001, // index[112] ALERT_HANDLER_ALERT_EN_SHADOWED_41
+ 4'b 0001, // index[113] ALERT_HANDLER_ALERT_EN_SHADOWED_42
+ 4'b 0001, // index[114] ALERT_HANDLER_ALERT_EN_SHADOWED_43
+ 4'b 0001, // index[115] ALERT_HANDLER_ALERT_EN_SHADOWED_44
+ 4'b 0001, // index[116] ALERT_HANDLER_ALERT_EN_SHADOWED_45
+ 4'b 0001, // index[117] ALERT_HANDLER_ALERT_EN_SHADOWED_46
+ 4'b 0001, // index[118] ALERT_HANDLER_ALERT_EN_SHADOWED_47
+ 4'b 0001, // index[119] ALERT_HANDLER_ALERT_EN_SHADOWED_48
+ 4'b 0001, // index[120] ALERT_HANDLER_ALERT_EN_SHADOWED_49
+ 4'b 0001, // index[121] ALERT_HANDLER_ALERT_EN_SHADOWED_50
+ 4'b 0001, // index[122] ALERT_HANDLER_ALERT_EN_SHADOWED_51
+ 4'b 0001, // index[123] ALERT_HANDLER_ALERT_EN_SHADOWED_52
+ 4'b 0001, // index[124] ALERT_HANDLER_ALERT_EN_SHADOWED_53
+ 4'b 0001, // index[125] ALERT_HANDLER_ALERT_EN_SHADOWED_54
+ 4'b 0001, // index[126] ALERT_HANDLER_ALERT_EN_SHADOWED_55
+ 4'b 0001, // index[127] ALERT_HANDLER_ALERT_EN_SHADOWED_56
+ 4'b 0001, // index[128] ALERT_HANDLER_ALERT_EN_SHADOWED_57
+ 4'b 0001, // index[129] ALERT_HANDLER_ALERT_EN_SHADOWED_58
+ 4'b 0001, // index[130] ALERT_HANDLER_ALERT_EN_SHADOWED_59
+ 4'b 0001, // index[131] ALERT_HANDLER_ALERT_EN_SHADOWED_60
+ 4'b 0001, // index[132] ALERT_HANDLER_ALERT_EN_SHADOWED_61
+ 4'b 0001, // index[133] ALERT_HANDLER_ALERT_EN_SHADOWED_62
+ 4'b 0001, // index[134] ALERT_HANDLER_ALERT_EN_SHADOWED_63
+ 4'b 0001, // index[135] ALERT_HANDLER_ALERT_EN_SHADOWED_64
+ 4'b 0001, // index[136] ALERT_HANDLER_ALERT_CLASS_SHADOWED_0
+ 4'b 0001, // index[137] ALERT_HANDLER_ALERT_CLASS_SHADOWED_1
+ 4'b 0001, // index[138] ALERT_HANDLER_ALERT_CLASS_SHADOWED_2
+ 4'b 0001, // index[139] ALERT_HANDLER_ALERT_CLASS_SHADOWED_3
+ 4'b 0001, // index[140] ALERT_HANDLER_ALERT_CLASS_SHADOWED_4
+ 4'b 0001, // index[141] ALERT_HANDLER_ALERT_CLASS_SHADOWED_5
+ 4'b 0001, // index[142] ALERT_HANDLER_ALERT_CLASS_SHADOWED_6
+ 4'b 0001, // index[143] ALERT_HANDLER_ALERT_CLASS_SHADOWED_7
+ 4'b 0001, // index[144] ALERT_HANDLER_ALERT_CLASS_SHADOWED_8
+ 4'b 0001, // index[145] ALERT_HANDLER_ALERT_CLASS_SHADOWED_9
+ 4'b 0001, // index[146] ALERT_HANDLER_ALERT_CLASS_SHADOWED_10
+ 4'b 0001, // index[147] ALERT_HANDLER_ALERT_CLASS_SHADOWED_11
+ 4'b 0001, // index[148] ALERT_HANDLER_ALERT_CLASS_SHADOWED_12
+ 4'b 0001, // index[149] ALERT_HANDLER_ALERT_CLASS_SHADOWED_13
+ 4'b 0001, // index[150] ALERT_HANDLER_ALERT_CLASS_SHADOWED_14
+ 4'b 0001, // index[151] ALERT_HANDLER_ALERT_CLASS_SHADOWED_15
+ 4'b 0001, // index[152] ALERT_HANDLER_ALERT_CLASS_SHADOWED_16
+ 4'b 0001, // index[153] ALERT_HANDLER_ALERT_CLASS_SHADOWED_17
+ 4'b 0001, // index[154] ALERT_HANDLER_ALERT_CLASS_SHADOWED_18
+ 4'b 0001, // index[155] ALERT_HANDLER_ALERT_CLASS_SHADOWED_19
+ 4'b 0001, // index[156] ALERT_HANDLER_ALERT_CLASS_SHADOWED_20
+ 4'b 0001, // index[157] ALERT_HANDLER_ALERT_CLASS_SHADOWED_21
+ 4'b 0001, // index[158] ALERT_HANDLER_ALERT_CLASS_SHADOWED_22
+ 4'b 0001, // index[159] ALERT_HANDLER_ALERT_CLASS_SHADOWED_23
+ 4'b 0001, // index[160] ALERT_HANDLER_ALERT_CLASS_SHADOWED_24
+ 4'b 0001, // index[161] ALERT_HANDLER_ALERT_CLASS_SHADOWED_25
+ 4'b 0001, // index[162] ALERT_HANDLER_ALERT_CLASS_SHADOWED_26
+ 4'b 0001, // index[163] ALERT_HANDLER_ALERT_CLASS_SHADOWED_27
+ 4'b 0001, // index[164] ALERT_HANDLER_ALERT_CLASS_SHADOWED_28
+ 4'b 0001, // index[165] ALERT_HANDLER_ALERT_CLASS_SHADOWED_29
+ 4'b 0001, // index[166] ALERT_HANDLER_ALERT_CLASS_SHADOWED_30
+ 4'b 0001, // index[167] ALERT_HANDLER_ALERT_CLASS_SHADOWED_31
+ 4'b 0001, // index[168] ALERT_HANDLER_ALERT_CLASS_SHADOWED_32
+ 4'b 0001, // index[169] ALERT_HANDLER_ALERT_CLASS_SHADOWED_33
+ 4'b 0001, // index[170] ALERT_HANDLER_ALERT_CLASS_SHADOWED_34
+ 4'b 0001, // index[171] ALERT_HANDLER_ALERT_CLASS_SHADOWED_35
+ 4'b 0001, // index[172] ALERT_HANDLER_ALERT_CLASS_SHADOWED_36
+ 4'b 0001, // index[173] ALERT_HANDLER_ALERT_CLASS_SHADOWED_37
+ 4'b 0001, // index[174] ALERT_HANDLER_ALERT_CLASS_SHADOWED_38
+ 4'b 0001, // index[175] ALERT_HANDLER_ALERT_CLASS_SHADOWED_39
+ 4'b 0001, // index[176] ALERT_HANDLER_ALERT_CLASS_SHADOWED_40
+ 4'b 0001, // index[177] ALERT_HANDLER_ALERT_CLASS_SHADOWED_41
+ 4'b 0001, // index[178] ALERT_HANDLER_ALERT_CLASS_SHADOWED_42
+ 4'b 0001, // index[179] ALERT_HANDLER_ALERT_CLASS_SHADOWED_43
+ 4'b 0001, // index[180] ALERT_HANDLER_ALERT_CLASS_SHADOWED_44
+ 4'b 0001, // index[181] ALERT_HANDLER_ALERT_CLASS_SHADOWED_45
+ 4'b 0001, // index[182] ALERT_HANDLER_ALERT_CLASS_SHADOWED_46
+ 4'b 0001, // index[183] ALERT_HANDLER_ALERT_CLASS_SHADOWED_47
+ 4'b 0001, // index[184] ALERT_HANDLER_ALERT_CLASS_SHADOWED_48
+ 4'b 0001, // index[185] ALERT_HANDLER_ALERT_CLASS_SHADOWED_49
+ 4'b 0001, // index[186] ALERT_HANDLER_ALERT_CLASS_SHADOWED_50
+ 4'b 0001, // index[187] ALERT_HANDLER_ALERT_CLASS_SHADOWED_51
+ 4'b 0001, // index[188] ALERT_HANDLER_ALERT_CLASS_SHADOWED_52
+ 4'b 0001, // index[189] ALERT_HANDLER_ALERT_CLASS_SHADOWED_53
+ 4'b 0001, // index[190] ALERT_HANDLER_ALERT_CLASS_SHADOWED_54
+ 4'b 0001, // index[191] ALERT_HANDLER_ALERT_CLASS_SHADOWED_55
+ 4'b 0001, // index[192] ALERT_HANDLER_ALERT_CLASS_SHADOWED_56
+ 4'b 0001, // index[193] ALERT_HANDLER_ALERT_CLASS_SHADOWED_57
+ 4'b 0001, // index[194] ALERT_HANDLER_ALERT_CLASS_SHADOWED_58
+ 4'b 0001, // index[195] ALERT_HANDLER_ALERT_CLASS_SHADOWED_59
+ 4'b 0001, // index[196] ALERT_HANDLER_ALERT_CLASS_SHADOWED_60
+ 4'b 0001, // index[197] ALERT_HANDLER_ALERT_CLASS_SHADOWED_61
+ 4'b 0001, // index[198] ALERT_HANDLER_ALERT_CLASS_SHADOWED_62
+ 4'b 0001, // index[199] ALERT_HANDLER_ALERT_CLASS_SHADOWED_63
+ 4'b 0001, // index[200] ALERT_HANDLER_ALERT_CLASS_SHADOWED_64
+ 4'b 0001, // index[201] ALERT_HANDLER_ALERT_CAUSE_0
+ 4'b 0001, // index[202] ALERT_HANDLER_ALERT_CAUSE_1
+ 4'b 0001, // index[203] ALERT_HANDLER_ALERT_CAUSE_2
+ 4'b 0001, // index[204] ALERT_HANDLER_ALERT_CAUSE_3
+ 4'b 0001, // index[205] ALERT_HANDLER_ALERT_CAUSE_4
+ 4'b 0001, // index[206] ALERT_HANDLER_ALERT_CAUSE_5
+ 4'b 0001, // index[207] ALERT_HANDLER_ALERT_CAUSE_6
+ 4'b 0001, // index[208] ALERT_HANDLER_ALERT_CAUSE_7
+ 4'b 0001, // index[209] ALERT_HANDLER_ALERT_CAUSE_8
+ 4'b 0001, // index[210] ALERT_HANDLER_ALERT_CAUSE_9
+ 4'b 0001, // index[211] ALERT_HANDLER_ALERT_CAUSE_10
+ 4'b 0001, // index[212] ALERT_HANDLER_ALERT_CAUSE_11
+ 4'b 0001, // index[213] ALERT_HANDLER_ALERT_CAUSE_12
+ 4'b 0001, // index[214] ALERT_HANDLER_ALERT_CAUSE_13
+ 4'b 0001, // index[215] ALERT_HANDLER_ALERT_CAUSE_14
+ 4'b 0001, // index[216] ALERT_HANDLER_ALERT_CAUSE_15
+ 4'b 0001, // index[217] ALERT_HANDLER_ALERT_CAUSE_16
+ 4'b 0001, // index[218] ALERT_HANDLER_ALERT_CAUSE_17
+ 4'b 0001, // index[219] ALERT_HANDLER_ALERT_CAUSE_18
+ 4'b 0001, // index[220] ALERT_HANDLER_ALERT_CAUSE_19
+ 4'b 0001, // index[221] ALERT_HANDLER_ALERT_CAUSE_20
+ 4'b 0001, // index[222] ALERT_HANDLER_ALERT_CAUSE_21
+ 4'b 0001, // index[223] ALERT_HANDLER_ALERT_CAUSE_22
+ 4'b 0001, // index[224] ALERT_HANDLER_ALERT_CAUSE_23
+ 4'b 0001, // index[225] ALERT_HANDLER_ALERT_CAUSE_24
+ 4'b 0001, // index[226] ALERT_HANDLER_ALERT_CAUSE_25
+ 4'b 0001, // index[227] ALERT_HANDLER_ALERT_CAUSE_26
+ 4'b 0001, // index[228] ALERT_HANDLER_ALERT_CAUSE_27
+ 4'b 0001, // index[229] ALERT_HANDLER_ALERT_CAUSE_28
+ 4'b 0001, // index[230] ALERT_HANDLER_ALERT_CAUSE_29
+ 4'b 0001, // index[231] ALERT_HANDLER_ALERT_CAUSE_30
+ 4'b 0001, // index[232] ALERT_HANDLER_ALERT_CAUSE_31
+ 4'b 0001, // index[233] ALERT_HANDLER_ALERT_CAUSE_32
+ 4'b 0001, // index[234] ALERT_HANDLER_ALERT_CAUSE_33
+ 4'b 0001, // index[235] ALERT_HANDLER_ALERT_CAUSE_34
+ 4'b 0001, // index[236] ALERT_HANDLER_ALERT_CAUSE_35
+ 4'b 0001, // index[237] ALERT_HANDLER_ALERT_CAUSE_36
+ 4'b 0001, // index[238] ALERT_HANDLER_ALERT_CAUSE_37
+ 4'b 0001, // index[239] ALERT_HANDLER_ALERT_CAUSE_38
+ 4'b 0001, // index[240] ALERT_HANDLER_ALERT_CAUSE_39
+ 4'b 0001, // index[241] ALERT_HANDLER_ALERT_CAUSE_40
+ 4'b 0001, // index[242] ALERT_HANDLER_ALERT_CAUSE_41
+ 4'b 0001, // index[243] ALERT_HANDLER_ALERT_CAUSE_42
+ 4'b 0001, // index[244] ALERT_HANDLER_ALERT_CAUSE_43
+ 4'b 0001, // index[245] ALERT_HANDLER_ALERT_CAUSE_44
+ 4'b 0001, // index[246] ALERT_HANDLER_ALERT_CAUSE_45
+ 4'b 0001, // index[247] ALERT_HANDLER_ALERT_CAUSE_46
+ 4'b 0001, // index[248] ALERT_HANDLER_ALERT_CAUSE_47
+ 4'b 0001, // index[249] ALERT_HANDLER_ALERT_CAUSE_48
+ 4'b 0001, // index[250] ALERT_HANDLER_ALERT_CAUSE_49
+ 4'b 0001, // index[251] ALERT_HANDLER_ALERT_CAUSE_50
+ 4'b 0001, // index[252] ALERT_HANDLER_ALERT_CAUSE_51
+ 4'b 0001, // index[253] ALERT_HANDLER_ALERT_CAUSE_52
+ 4'b 0001, // index[254] ALERT_HANDLER_ALERT_CAUSE_53
+ 4'b 0001, // index[255] ALERT_HANDLER_ALERT_CAUSE_54
+ 4'b 0001, // index[256] ALERT_HANDLER_ALERT_CAUSE_55
+ 4'b 0001, // index[257] ALERT_HANDLER_ALERT_CAUSE_56
+ 4'b 0001, // index[258] ALERT_HANDLER_ALERT_CAUSE_57
+ 4'b 0001, // index[259] ALERT_HANDLER_ALERT_CAUSE_58
+ 4'b 0001, // index[260] ALERT_HANDLER_ALERT_CAUSE_59
+ 4'b 0001, // index[261] ALERT_HANDLER_ALERT_CAUSE_60
+ 4'b 0001, // index[262] ALERT_HANDLER_ALERT_CAUSE_61
+ 4'b 0001, // index[263] ALERT_HANDLER_ALERT_CAUSE_62
+ 4'b 0001, // index[264] ALERT_HANDLER_ALERT_CAUSE_63
+ 4'b 0001, // index[265] ALERT_HANDLER_ALERT_CAUSE_64
+ 4'b 0001, // index[266] ALERT_HANDLER_LOC_ALERT_REGWEN_0
+ 4'b 0001, // index[267] ALERT_HANDLER_LOC_ALERT_REGWEN_1
+ 4'b 0001, // index[268] ALERT_HANDLER_LOC_ALERT_REGWEN_2
+ 4'b 0001, // index[269] ALERT_HANDLER_LOC_ALERT_REGWEN_3
+ 4'b 0001, // index[270] ALERT_HANDLER_LOC_ALERT_REGWEN_4
+ 4'b 0001, // index[271] ALERT_HANDLER_LOC_ALERT_REGWEN_5
+ 4'b 0001, // index[272] ALERT_HANDLER_LOC_ALERT_REGWEN_6
+ 4'b 0001, // index[273] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_0
+ 4'b 0001, // index[274] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_1
+ 4'b 0001, // index[275] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_2
+ 4'b 0001, // index[276] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_3
+ 4'b 0001, // index[277] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_4
+ 4'b 0001, // index[278] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_5
+ 4'b 0001, // index[279] ALERT_HANDLER_LOC_ALERT_EN_SHADOWED_6
+ 4'b 0001, // index[280] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_0
+ 4'b 0001, // index[281] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_1
+ 4'b 0001, // index[282] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_2
+ 4'b 0001, // index[283] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_3
+ 4'b 0001, // index[284] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_4
+ 4'b 0001, // index[285] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_5
+ 4'b 0001, // index[286] ALERT_HANDLER_LOC_ALERT_CLASS_SHADOWED_6
+ 4'b 0001, // index[287] ALERT_HANDLER_LOC_ALERT_CAUSE_0
+ 4'b 0001, // index[288] ALERT_HANDLER_LOC_ALERT_CAUSE_1
+ 4'b 0001, // index[289] ALERT_HANDLER_LOC_ALERT_CAUSE_2
+ 4'b 0001, // index[290] ALERT_HANDLER_LOC_ALERT_CAUSE_3
+ 4'b 0001, // index[291] ALERT_HANDLER_LOC_ALERT_CAUSE_4
+ 4'b 0001, // index[292] ALERT_HANDLER_LOC_ALERT_CAUSE_5
+ 4'b 0001, // index[293] ALERT_HANDLER_LOC_ALERT_CAUSE_6
+ 4'b 0001, // index[294] ALERT_HANDLER_CLASSA_REGWEN
+ 4'b 0011, // index[295] ALERT_HANDLER_CLASSA_CTRL_SHADOWED
+ 4'b 0001, // index[296] ALERT_HANDLER_CLASSA_CLR_REGWEN
+ 4'b 0001, // index[297] ALERT_HANDLER_CLASSA_CLR_SHADOWED
+ 4'b 0011, // index[298] ALERT_HANDLER_CLASSA_ACCUM_CNT
+ 4'b 0011, // index[299] ALERT_HANDLER_CLASSA_ACCUM_THRESH_SHADOWED
+ 4'b 1111, // index[300] ALERT_HANDLER_CLASSA_TIMEOUT_CYC_SHADOWED
+ 4'b 0001, // index[301] ALERT_HANDLER_CLASSA_CRASHDUMP_TRIGGER_SHADOWED
+ 4'b 1111, // index[302] ALERT_HANDLER_CLASSA_PHASE0_CYC_SHADOWED
+ 4'b 1111, // index[303] ALERT_HANDLER_CLASSA_PHASE1_CYC_SHADOWED
+ 4'b 1111, // index[304] ALERT_HANDLER_CLASSA_PHASE2_CYC_SHADOWED
+ 4'b 1111, // index[305] ALERT_HANDLER_CLASSA_PHASE3_CYC_SHADOWED
+ 4'b 1111, // index[306] ALERT_HANDLER_CLASSA_ESC_CNT
+ 4'b 0001, // index[307] ALERT_HANDLER_CLASSA_STATE
+ 4'b 0001, // index[308] ALERT_HANDLER_CLASSB_REGWEN
+ 4'b 0011, // index[309] ALERT_HANDLER_CLASSB_CTRL_SHADOWED
+ 4'b 0001, // index[310] ALERT_HANDLER_CLASSB_CLR_REGWEN
+ 4'b 0001, // index[311] ALERT_HANDLER_CLASSB_CLR_SHADOWED
+ 4'b 0011, // index[312] ALERT_HANDLER_CLASSB_ACCUM_CNT
+ 4'b 0011, // index[313] ALERT_HANDLER_CLASSB_ACCUM_THRESH_SHADOWED
+ 4'b 1111, // index[314] ALERT_HANDLER_CLASSB_TIMEOUT_CYC_SHADOWED
+ 4'b 0001, // index[315] ALERT_HANDLER_CLASSB_CRASHDUMP_TRIGGER_SHADOWED
+ 4'b 1111, // index[316] ALERT_HANDLER_CLASSB_PHASE0_CYC_SHADOWED
+ 4'b 1111, // index[317] ALERT_HANDLER_CLASSB_PHASE1_CYC_SHADOWED
+ 4'b 1111, // index[318] ALERT_HANDLER_CLASSB_PHASE2_CYC_SHADOWED
+ 4'b 1111, // index[319] ALERT_HANDLER_CLASSB_PHASE3_CYC_SHADOWED
+ 4'b 1111, // index[320] ALERT_HANDLER_CLASSB_ESC_CNT
+ 4'b 0001, // index[321] ALERT_HANDLER_CLASSB_STATE
+ 4'b 0001, // index[322] ALERT_HANDLER_CLASSC_REGWEN
+ 4'b 0011, // index[323] ALERT_HANDLER_CLASSC_CTRL_SHADOWED
+ 4'b 0001, // index[324] ALERT_HANDLER_CLASSC_CLR_REGWEN
+ 4'b 0001, // index[325] ALERT_HANDLER_CLASSC_CLR_SHADOWED
+ 4'b 0011, // index[326] ALERT_HANDLER_CLASSC_ACCUM_CNT
+ 4'b 0011, // index[327] ALERT_HANDLER_CLASSC_ACCUM_THRESH_SHADOWED
+ 4'b 1111, // index[328] ALERT_HANDLER_CLASSC_TIMEOUT_CYC_SHADOWED
+ 4'b 0001, // index[329] ALERT_HANDLER_CLASSC_CRASHDUMP_TRIGGER_SHADOWED
+ 4'b 1111, // index[330] ALERT_HANDLER_CLASSC_PHASE0_CYC_SHADOWED
+ 4'b 1111, // index[331] ALERT_HANDLER_CLASSC_PHASE1_CYC_SHADOWED
+ 4'b 1111, // index[332] ALERT_HANDLER_CLASSC_PHASE2_CYC_SHADOWED
+ 4'b 1111, // index[333] ALERT_HANDLER_CLASSC_PHASE3_CYC_SHADOWED
+ 4'b 1111, // index[334] ALERT_HANDLER_CLASSC_ESC_CNT
+ 4'b 0001, // index[335] ALERT_HANDLER_CLASSC_STATE
+ 4'b 0001, // index[336] ALERT_HANDLER_CLASSD_REGWEN
+ 4'b 0011, // index[337] ALERT_HANDLER_CLASSD_CTRL_SHADOWED
+ 4'b 0001, // index[338] ALERT_HANDLER_CLASSD_CLR_REGWEN
+ 4'b 0001, // index[339] ALERT_HANDLER_CLASSD_CLR_SHADOWED
+ 4'b 0011, // index[340] ALERT_HANDLER_CLASSD_ACCUM_CNT
+ 4'b 0011, // index[341] ALERT_HANDLER_CLASSD_ACCUM_THRESH_SHADOWED
+ 4'b 1111, // index[342] ALERT_HANDLER_CLASSD_TIMEOUT_CYC_SHADOWED
+ 4'b 0001, // index[343] ALERT_HANDLER_CLASSD_CRASHDUMP_TRIGGER_SHADOWED
+ 4'b 1111, // index[344] ALERT_HANDLER_CLASSD_PHASE0_CYC_SHADOWED
+ 4'b 1111, // index[345] ALERT_HANDLER_CLASSD_PHASE1_CYC_SHADOWED
+ 4'b 1111, // index[346] ALERT_HANDLER_CLASSD_PHASE2_CYC_SHADOWED
+ 4'b 1111, // index[347] ALERT_HANDLER_CLASSD_PHASE3_CYC_SHADOWED
+ 4'b 1111, // index[348] ALERT_HANDLER_CLASSD_ESC_CNT
+ 4'b 0001 // index[349] ALERT_HANDLER_CLASSD_STATE
+ };
+
+endpackage
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl.sv
new file mode 100644
index 0000000..42ffa30
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl.sv
@@ -0,0 +1,991 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle controller top.
+//
+
+`include "caliptra_prim_assert.sv"
+
+module caliptra_ss_lc_ctrl
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_reg_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+ import axi_pkg::*;
+ import kmac_pkg::*;
+#(
+ // Enable asynchronous transitions on alerts.
+ parameter logic [NumAlerts-1:0] AlertAsyncOn = {NumAlerts{1'b1}},
+ // Hardware revision numbers exposed in the CSRs.
+ parameter logic [SiliconCreatorIdWidth-1:0] SiliconCreatorId = '0,
+ parameter logic [ProductIdWidth-1:0] ProductId = '0,
+ parameter logic [RevisionIdWidth-1:0] RevisionId = '0,
+ // Idcode value for the JTAG.
+ parameter logic [31:0] IdcodeValue = 32'h00000001,
+ parameter bit UseDmiInterface = 1'b0,
+ // Random netlist constants
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4),
+ parameter caliptra_ss_lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}},
+ parameter bit SecVolatileRawUnlockEn = 0
+) (
+ // Life cycle controller clock
+ input clk_i,
+ input rst_ni,
+ // Clock for KMAC interface
+ // input clk_kmac_i,
+ // input rst_kmac_ni,
+ // // Bus Interface (device)
+ // input tlul_pkg::tl_h2d_t tl_i,
+ // output tlul_pkg::tl_d2h_t tl_o,
+
+ input axi_struct_pkg::axi_wr_req_t axi_wr_req,
+ output axi_struct_pkg::axi_wr_rsp_t axi_wr_rsp,
+ input axi_struct_pkg::axi_rd_req_t axi_rd_req,
+ output axi_struct_pkg::axi_rd_rsp_t axi_rd_rsp,
+
+ input tlul_pkg::tl_h2d_t dmi_tl_i,
+ output tlul_pkg::tl_d2h_t dmi_tl_o,
+
+ // // AXI interface (device)
+ // axi_if.w_sub s_caliptra_ss_lc_axi_w_if,
+ // axi_if.r_sub s_caliptra_ss_lc_axi_r_if,
+
+ // JTAG TAP.
+ input jtag_pkg::jtag_req_t jtag_i,
+ output jtag_pkg::jtag_rsp_t jtag_o,
+ // This bypasses the clock inverter inside the JTAG TAP for scanmmode.
+ input scan_rst_ni,
+ input caliptra_prim_mubi_pkg::mubi4_t scanmode_i,
+ // Alert outputs.
+ input caliptra_prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i,
+ output caliptra_prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o,
+ // Escalation inputs (severity 1 and 2).
+ // These need not be synchronized since the alert handler is
+ // in the same clock domain as the LC controller.
+ input caliptra_prim_esc_pkg::esc_rx_t esc_scrap_state0_tx_i,
+ output caliptra_prim_esc_pkg::esc_tx_t esc_scrap_state0_rx_o,
+ input caliptra_prim_esc_pkg::esc_rx_t esc_scrap_state1_tx_i,
+ output caliptra_prim_esc_pkg::esc_tx_t esc_scrap_state1_rx_o,
+ // Power manager interface (inputs are synced to lifecycle clock domain).
+ input pwrmgr_pkg::pwr_caliptra_ss_lc_req_t pwr_caliptra_ss_lc_i,
+ output pwrmgr_pkg::pwr_caliptra_ss_lc_rsp_t pwr_caliptra_ss_lc_o,
+ // Strap sampling override that is only used when SecVolatileRawUnlockEn = 1,
+ // Otherwise this output is tied off to 0.
+ output logic strap_en_override_o,
+ // Strap override - this is only used when
+ // Macro-specific test registers going to lifecycle TAP
+ output otp_ctrl_pkg::caliptra_ss_lc_otp_vendor_test_req_t caliptra_ss_lc_otp_vendor_test_o,
+ input otp_ctrl_pkg::caliptra_ss_lc_otp_vendor_test_rsp_t caliptra_ss_lc_otp_vendor_test_i,
+ // Life cycle transition command interface.
+ // No sync required since LC and OTP are in the same clock domain.
+ output otp_ctrl_pkg::caliptra_ss_lc_otp_program_req_t caliptra_ss_lc_otp_program_o,
+ input otp_ctrl_pkg::caliptra_ss_lc_otp_program_rsp_t caliptra_ss_lc_otp_program_i,
+ // Life cycle hashing interface for raw unlock
+ // Synchronized in the life cycle controller.
+ // SEC_CM: TOKEN.DIGEST
+ //-- input kmac_pkg::app_rsp_t kmac_data_i,
+ //-- output kmac_pkg::app_req_t kmac_data_o,
+ // OTP broadcast outputs
+ // No sync required since LC and OTP are in the same clock domain.
+ // SEC_CM: TOKEN_VALID.CTRL.MUBI
+ input otp_ctrl_pkg::otp_caliptra_ss_lc_data_t otp_caliptra_ss_lc_data_i,
+ // Life cycle broadcast outputs (all of them are registered).
+ // SEC_CM: INTERSIG.MUBI
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_nvm_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_hw_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_cpu_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_owner_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_wr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_seed_hw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_keymgr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_check_byp_en_o,
+ // Request and feedback to/from clock manager and AST.
+ // The ack is synced to the lc clock domain using prim_caliptra_ss_lc_sync.
+ // SEC_CM: INTERSIG.MUBI
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_clk_byp_req_o,
+ input caliptra_ss_lc_tx_t caliptra_ss_lc_clk_byp_ack_i,
+ // Request and feedback to/from flash controller.
+ // The ack is synced to the lc clock domain using prim_caliptra_ss_lc_sync.
+ output caliptra_ss_lc_flash_rma_seed_t caliptra_ss_lc_flash_rma_seed_o,
+ // SEC_CM: INTERSIG.MUBI
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_flash_rma_req_o,
+ input caliptra_ss_lc_tx_t [NumRmaAckSigs-1:0] caliptra_ss_lc_flash_rma_ack_i,
+ // State group diversification value for keymgr.
+ output caliptra_ss_lc_keymgr_div_t caliptra_ss_lc_keymgr_div_o,
+ // Hardware config input, needed for the DEVICE_ID field.
+ input otp_ctrl_pkg::otp_device_id_t otp_device_id_i,
+ // Hardware config input, needed for the MANUF_STATE field.
+ input otp_ctrl_pkg::otp_device_id_t otp_manuf_state_i,
+ // Hardware revision output (static)
+ output caliptra_ss_lc_hw_rev_t hw_rev_o
+);
+
+ import caliptra_prim_mubi_pkg::mubi8_t;
+ import caliptra_prim_mubi_pkg::MuBi8False;
+ import caliptra_prim_mubi_pkg::mubi8_test_true_strict;
+ import caliptra_prim_mubi_pkg::mubi8_test_false_loose;
+
+ // AXI2TLUL interface signals
+ tlul_pkg::tl_h2d_t regs_tl_i;
+ tlul_pkg::tl_d2h_t regs_tl_o;
+
+ axi_if axi_if(
+ .clk(clk_i),
+ .rst_n(rst_ni)
+ );
+
+ assign axi_if.awaddr = axi_wr_req.awaddr;
+ assign axi_if.awburst = axi_wr_req.awburst;
+ assign axi_if.awsize = axi_wr_req.awsize;
+ assign axi_if.awlen = axi_wr_req.awlen;
+ assign axi_if.awuser = axi_wr_req.awuser;
+ assign axi_if.awid = axi_wr_req.awid;
+ assign axi_if.awlock = axi_wr_req.awlock;
+ assign axi_if.awvalid = axi_wr_req.awvalid;
+ assign axi_wr_rsp.awready = axi_if.awready;
+
+ assign axi_if.wdata = axi_wr_req.wdata;
+ assign axi_if.wstrb = axi_wr_req.wstrb;
+ assign axi_if.wlast = axi_wr_req.wlast;
+ assign axi_if.wvalid = axi_wr_req.wvalid;
+ assign axi_wr_rsp.wready = axi_if.wready;
+
+ assign axi_wr_rsp.bresp = axi_if.bresp;
+ assign axi_wr_rsp.bid = axi_if.bid;
+ assign axi_wr_rsp.bvalid = axi_if.bvalid;
+ assign axi_if.bready = axi_wr_req.bready;
+
+ assign axi_if.araddr = axi_rd_req.araddr;
+ assign axi_if.arburst = axi_rd_req.arburst;
+ assign axi_if.arsize = axi_rd_req.arsize;
+ assign axi_if.arlen = axi_rd_req.arlen;
+ assign axi_if.aruser = axi_rd_req.aruser;
+ assign axi_if.arid = axi_rd_req.arid;
+ assign axi_if.arlock = axi_rd_req.arlock;
+ assign axi_if.arvalid = axi_rd_req.arvalid;
+ assign axi_rd_rsp.arready = axi_if.arready;
+
+ assign axi_rd_rsp.rdata = axi_if.rdata;
+ assign axi_rd_rsp.rresp = axi_if.rresp;
+ assign axi_rd_rsp.rid = axi_if.rid;
+ assign axi_rd_rsp.rlast = axi_if.rlast;
+ assign axi_rd_rsp.rvalid = axi_if.rvalid;
+ assign axi_if.rready = axi_rd_req.rready;
+
+ // AXI2TLUL instance
+ axi2tlul #(
+ .AW (32),
+ .DW (32),
+ .UW (32),
+ .IW (8 )
+ ) u_caliptra_ss_lc_axi2tlul (
+ .clk (clk_i),
+ .rst_n (rst_ni),
+ .s_axi_w_if (axi_if.w_sub),
+ .s_axi_r_if (axi_if.r_sub),
+ .tl_o (regs_tl_i),
+ .tl_i (regs_tl_o)
+ );
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ // Check that the CSR parameters correspond with the ones used in the design.
+ `CALIPTRA_ASSERT_INIT(DecLcStateWidthCheck_A, CsrLcStateWidth == ExtDecLcStateWidth)
+ `CALIPTRA_ASSERT_INIT(DecLcCountWidthCheck_A, CsrLcCountWidth == DecLcCountWidth)
+ `CALIPTRA_ASSERT_INIT(DecLcIdStateWidthCheck_A, CsrLcIdStateWidth == ExtDecLcIdStateWidth)
+ `CALIPTRA_ASSERT_INIT(NumTokenWordsCheck_A, NumTokenWords == LcTokenWidth/32)
+ `CALIPTRA_ASSERT_INIT(OtpTestCtrlWidth_A, otp_ctrl_pkg::OtpTestCtrlWidth == CsrOtpTestCtrlWidth)
+
+ /////////////
+ // Regfile //
+ /////////////
+
+ caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_reg2hw_t reg2hw;
+ caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_hw2reg_t hw2reg;
+
+ // SEC_CM: TRANSITION.CONFIG.REGWEN, STATE.CONFIG.SPARSE
+ logic fatal_bus_integ_error_q, fatal_bus_integ_error_csr_d, fatal_bus_integ_error_tap_dmi_d;
+ caliptra_ss_lc_ctrl_regs_reg_top u_reg_regs (
+ .clk_i,
+ .rst_ni,
+ .tl_i ( regs_tl_i ),
+ .tl_o ( regs_tl_o ),
+ .reg2hw ( reg2hw ),
+ .hw2reg ( hw2reg ),
+ // SEC_CM: BUS.INTEGRITY
+ .intg_err_o( fatal_bus_integ_error_csr_d )
+ );
+
+ /////////////////////////////
+ // Life Cycle TAP/DMI Regs //
+ /////////////////////////////
+
+ caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_reg2hw_t tap_dmi_reg2hw;
+ caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_hw2reg_t tap_dmi_hw2reg;
+
+ tlul_pkg::tl_h2d_t tap_dmi_tl_h2d;
+ tlul_pkg::tl_d2h_t tap_dmi_tl_d2h;
+ tlul_pkg::tl_h2d_t tap_tl_h2d;
+ tlul_pkg::tl_d2h_t tap_tl_d2h;
+
+ // Statically mux DMI TLUL port and the one coming from the JTAG TAP
+ if (UseDmiInterface) begin : gen_dmi_tlul_ports
+ assign tap_dmi_tl_h2d = dmi_tl_i;
+ assign dmi_tl_o = tap_dmi_tl_d2h;
+ end else begin : gen_tap_tlul_ports
+ assign tap_dmi_tl_h2d = tap_tl_h2d;
+ assign tap_tl_d2h = tap_dmi_tl_d2h;
+ // Tie-off other port
+ assign dmi_tl_o = tlul_pkg::TL_D2H_DEFAULT;
+ logic unused_signal;
+ assign unused_signal = ^{dmi_tl_i};
+ end
+
+ caliptra_ss_lc_ctrl_regs_reg_top u_reg_tap_dmi (
+ .clk_i,
+ .rst_ni,
+ .tl_i ( tap_dmi_tl_h2d ),
+ .tl_o ( tap_dmi_tl_d2h ),
+ .reg2hw ( tap_dmi_reg2hw ),
+ .hw2reg ( tap_dmi_hw2reg ),
+ // SEC_CM: BUS.INTEGRITY
+ // While the TAP does not have bus integrity, it does have a WE checker
+ // that feeds into intg_err_o - hence this is wired up to the fatal_bus_integ_error.
+ .intg_err_o( fatal_bus_integ_error_tap_dmi_d )
+ );
+
+ if (!UseDmiInterface) begin : gen_tap_tlul
+ // This reuses the JTAG DTM and DMI from the RISC-V external
+ // debug v0.13 specification to read and write the caliptra_ss_lc_ctrl CSRs:
+ // https://github.com/riscv/riscv-debug-spec/blob/release/riscv-debug-release.pdf
+ // The register addresses correspond to the byte offsets of the caliptra_ss_lc_ctrl CSRs, divided by 4.
+ // Note that the DMI reset does not affect the LC controller in any way.
+ dm::dmi_req_t dmi_req;
+ logic dmi_req_valid;
+ logic dmi_req_ready;
+ dm::dmi_resp_t dmi_resp;
+ logic dmi_resp_ready;
+ logic dmi_resp_valid;
+
+ logic scanmode;
+ caliptra_prim_mubi4_dec u_prim_mubi4_dec (
+ .mubi_i(scanmode_i),
+ .mubi_dec_o(scanmode)
+ );
+
+ logic tck_muxed;
+ logic trst_n_muxed;
+ caliptra_prim_clock_mux2 #(
+ .NoFpgaBufG(1'b1)
+ ) u_prim_clock_mux2 (
+ .clk0_i(jtag_i.tck),
+ .clk1_i(clk_i),
+ .sel_i (scanmode),
+ .clk_o (tck_muxed)
+ );
+
+ caliptra_prim_clock_mux2 #(
+ .NoFpgaBufG(1'b1)
+ ) u_prim_rst_n_mux2 (
+ .clk0_i(jtag_i.trst_n),
+ .clk1_i(scan_rst_ni),
+ .sel_i (scanmode),
+ .clk_o (trst_n_muxed)
+ );
+
+ logic req_ready;
+ assign req_ready = dmi_req_ready & dmi_resp_ready;
+ dmi_jtag #(
+ .IdcodeValue(IdcodeValue),
+ .NumDmiWordAbits(7)
+ ) u_dmi_jtag (
+ .clk_i,
+ .rst_ni,
+ .testmode_i ( scanmode ),
+ .test_rst_ni ( scan_rst_ni ),
+ .dmi_rst_no ( ), // unused
+ .dmi_req_o ( dmi_req ),
+ .dmi_req_valid_o ( dmi_req_valid ),
+ // unless there is room for response, stall
+ .dmi_req_ready_i ( req_ready ),
+ .dmi_resp_i ( dmi_resp ),
+ .dmi_resp_ready_o ( dmi_resp_ready ),
+ .dmi_resp_valid_i ( dmi_resp_valid ),
+ .tck_i ( tck_muxed ),
+ .tms_i ( jtag_i.tms ),
+ .trst_ni ( trst_n_muxed ),
+ .td_i ( jtag_i.tdi ),
+ .td_o ( jtag_o.tdo ),
+ .tdo_oe_o ( jtag_o.tdo_oe )
+ );
+
+ // DMI to TL-UL transducing
+ tlul_adapter_host #(
+ .EnableDataIntgGen(1)
+ ) u_tap_tlul_host (
+ .clk_i,
+ .rst_ni,
+ // do not make a request unless there is room for the response
+ .req_i ( dmi_req_valid & dmi_resp_ready ),
+ .gnt_o ( dmi_req_ready ),
+ .addr_i ( top_pkg::TL_AW'({dmi_req.addr, 2'b00}) ),
+ .we_i ( dmi_req.op == dm::DTM_WRITE ),
+ .wdata_i ( dmi_req.data ),
+ .wdata_intg_i ('0 ),
+ .be_i ( {top_pkg::TL_DBW{1'b1}} ),
+ .user_rsvd_i ('0 ),
+ .instr_type_i ( caliptra_prim_mubi_pkg::MuBi4False ),
+ .valid_o ( dmi_resp_valid ),
+ .rdata_o ( dmi_resp.data ),
+ .rdata_intg_o ( ),
+ .err_o ( ),
+ .intg_err_o ( ),
+ .tl_o ( tap_tl_h2d ),
+ .tl_i ( tap_tl_d2h )
+ );
+
+ // TL-UL to DMI transducing
+ assign dmi_resp.resp = '0; // unused inside dmi_jtag
+
+ // These signals are unused
+ logic unused_tap_tl_d2h;
+ assign unused_tap_tl_d2h = ^{
+ dmi_req.addr[31:30],
+ tap_tl_d2h.d_opcode,
+ tap_tl_d2h.d_param,
+ tap_tl_d2h.d_size,
+ tap_tl_d2h.d_source,
+ tap_tl_d2h.d_sink,
+ tap_tl_d2h.d_user,
+ tap_tl_d2h.d_error
+ };
+ end else begin : gen_dmi_tlul
+ // No scan chain needed in the DMI configuration
+ logic unused_signals;
+ assign unused_signals = ^{scan_rst_ni, scanmode_i};
+ end
+
+ ///////////////////////////////////////
+ // Transition Interface and HW Mutex //
+ ///////////////////////////////////////
+
+ // All registers are HWext
+ logic trans_success_d, trans_success_q;
+ logic trans_cnt_oflw_error_d, trans_cnt_oflw_error_q;
+ logic trans_invalid_error_d, trans_invalid_error_q;
+ logic token_invalid_error_d, token_invalid_error_q;
+ logic flash_rma_error_d, flash_rma_error_q;
+ logic otp_prog_error_d, fatal_prog_error_q;
+ logic state_invalid_error_d, fatal_state_error_q;
+ logic otp_part_error_q;
+ mubi8_t sw_claim_transition_if_d, sw_claim_transition_if_q;
+ mubi8_t tap_dmi_claim_transition_if_d, tap_dmi_claim_transition_if_q;
+ logic transition_cmd;
+ caliptra_ss_lc_token_t transition_token_d, transition_token_q;
+ ext_dec_caliptra_ss_lc_state_t transition_target_d, transition_target_q;
+ // No need to register these.
+ ext_dec_caliptra_ss_lc_state_t dec_caliptra_ss_lc_state;
+ dec_caliptra_ss_lc_cnt_t dec_caliptra_ss_lc_cnt;
+ dec_caliptra_ss_lc_id_state_e dec_caliptra_ss_lc_id_state;
+
+ logic caliptra_ss_lc_idle_d, caliptra_ss_lc_done_d;
+
+ // Assign hardware revision output
+ assign hw_rev_o = '{silicon_creator_id: SiliconCreatorId,
+ product_id: ProductId,
+ revision_id: RevisionId,
+ reserved: '0};
+
+ // OTP Vendor control bits
+ logic ext_clock_switched;
+ logic use_ext_clock_d, use_ext_clock_q;
+ logic volatile_raw_unlock_d, volatile_raw_unlock_q;
+ logic [CsrOtpTestCtrlWidth-1:0] otp_vendor_test_ctrl_d, otp_vendor_test_ctrl_q;
+ logic [CsrOtpTestStatusWidth-1:0] otp_vendor_test_status;
+
+ always_comb begin : p_csr_assign_outputs
+ hw2reg = '0;
+ hw2reg.status.initialized = caliptra_ss_lc_done_d;
+ hw2reg.status.ready = caliptra_ss_lc_idle_d;
+ hw2reg.status.ext_clock_switched = ext_clock_switched;
+ hw2reg.status.transition_successful = trans_success_q;
+ hw2reg.status.transition_count_error = trans_cnt_oflw_error_q;
+ hw2reg.status.transition_error = trans_invalid_error_q;
+ hw2reg.status.token_error = token_invalid_error_q;
+ hw2reg.status.flash_rma_error = flash_rma_error_q;
+ hw2reg.status.otp_error = fatal_prog_error_q;
+ hw2reg.status.state_error = fatal_state_error_q;
+ hw2reg.status.otp_partition_error = otp_part_error_q;
+ hw2reg.status.bus_integ_error = fatal_bus_integ_error_q;
+ hw2reg.caliptra_ss_lc_state = dec_caliptra_ss_lc_state;
+ hw2reg.caliptra_ss_lc_transition_cnt = dec_caliptra_ss_lc_cnt;
+ hw2reg.caliptra_ss_lc_id_state = {DecLcIdStateNumRep{dec_caliptra_ss_lc_id_state}};
+ hw2reg.device_id = otp_device_id_i;
+ hw2reg.manuf_state = otp_manuf_state_i;
+ hw2reg.hw_revision0.silicon_creator_id = hw_rev_o.silicon_creator_id;
+ hw2reg.hw_revision0.product_id = hw_rev_o.product_id;
+ hw2reg.hw_revision1.revision_id = hw_rev_o.revision_id;
+ hw2reg.hw_revision1.reserved = '0;
+
+ // The assignments above are identical for the TAP/DMI.
+ tap_dmi_hw2reg = hw2reg;
+
+ // Assignments gated by mutex. Again, the DMI has priority.
+ tap_dmi_hw2reg.claim_transition_if = tap_dmi_claim_transition_if_q;
+ hw2reg.claim_transition_if = sw_claim_transition_if_q;
+ if (mubi8_test_true_strict(tap_dmi_claim_transition_if_q)) begin
+ tap_dmi_hw2reg.transition_ctrl.ext_clock_en = use_ext_clock_q;
+ tap_dmi_hw2reg.transition_ctrl.volatile_raw_unlock = volatile_raw_unlock_q;
+ tap_dmi_hw2reg.transition_token = transition_token_q;
+ tap_dmi_hw2reg.transition_target = transition_target_q;
+ // SEC_CM: TRANSITION.CONFIG.REGWEN
+ tap_dmi_hw2reg.transition_regwen = caliptra_ss_lc_idle_d;
+ tap_dmi_hw2reg.otp_vendor_test_ctrl = otp_vendor_test_ctrl_q;
+ tap_dmi_hw2reg.otp_vendor_test_status = otp_vendor_test_status;
+ end else if (mubi8_test_true_strict(sw_claim_transition_if_q)) begin
+ hw2reg.transition_ctrl.ext_clock_en = use_ext_clock_q;
+ hw2reg.transition_ctrl.volatile_raw_unlock = volatile_raw_unlock_q;
+ hw2reg.transition_token = transition_token_q;
+ hw2reg.transition_target = transition_target_q;
+ // SEC_CM: TRANSITION.CONFIG.REGWEN
+ hw2reg.transition_regwen = caliptra_ss_lc_idle_d;
+ hw2reg.otp_vendor_test_ctrl = otp_vendor_test_ctrl_q;
+ hw2reg.otp_vendor_test_status = otp_vendor_test_status;
+ end
+ end
+
+ always_comb begin : p_csr_assign_inputs
+ sw_claim_transition_if_d = sw_claim_transition_if_q;
+ tap_dmi_claim_transition_if_d = tap_dmi_claim_transition_if_q;
+ transition_token_d = transition_token_q;
+ transition_target_d = transition_target_q;
+ transition_cmd = 1'b0;
+ otp_vendor_test_ctrl_d = otp_vendor_test_ctrl_q;
+ use_ext_clock_d = use_ext_clock_q;
+ volatile_raw_unlock_d = volatile_raw_unlock_q;
+
+ // Note that the mutex claims from the TAP/DMI and SW side could arrive within the same cycle.
+ // In that case we give priority to the TAP/DMI mutex claim in order to avoid a race condition.
+ // TAP/DMI mutex claim.
+ if (mubi8_test_false_loose(sw_claim_transition_if_q) &&
+ tap_dmi_reg2hw.claim_transition_if.qe) begin
+ tap_dmi_claim_transition_if_d = mubi8_t'(tap_dmi_reg2hw.claim_transition_if.q);
+ // SW mutex claim.
+ end else if (mubi8_test_false_loose(tap_dmi_claim_transition_if_q) &&
+ reg2hw.claim_transition_if.qe) begin
+ sw_claim_transition_if_d = mubi8_t'(reg2hw.claim_transition_if.q);
+ end
+
+
+ // The idle signal serves as the REGWEN in this case.
+ if (caliptra_ss_lc_idle_d) begin
+ // The DMI has priority.
+ if (mubi8_test_true_strict(tap_dmi_claim_transition_if_q)) begin
+ transition_cmd = tap_dmi_reg2hw.transition_cmd.q &
+ tap_dmi_reg2hw.transition_cmd.qe;
+
+ if (tap_dmi_reg2hw.transition_ctrl.ext_clock_en.qe) begin
+ use_ext_clock_d |= tap_dmi_reg2hw.transition_ctrl.ext_clock_en.q;
+ end
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ if (tap_dmi_reg2hw.transition_ctrl.volatile_raw_unlock.qe) begin
+ volatile_raw_unlock_d = tap_dmi_reg2hw.transition_ctrl.volatile_raw_unlock.q;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ for (int k = 0; k < LcTokenWidth/32; k++) begin
+ if (tap_dmi_reg2hw.transition_token[k].qe) begin
+ transition_token_d[k*32 +: 32] = tap_dmi_reg2hw.transition_token[k].q;
+ end
+ end
+
+ if (tap_dmi_reg2hw.transition_target.qe) begin
+ for (int k = 0; k < DecLcStateNumRep; k++) begin
+ transition_target_d[k] = dec_caliptra_ss_lc_state_e'(
+ tap_dmi_reg2hw.transition_target.q[k*DecLcStateWidth +: DecLcStateWidth]);
+ end
+ end
+
+ if (tap_dmi_reg2hw.otp_vendor_test_ctrl.qe) begin
+ otp_vendor_test_ctrl_d = tap_dmi_reg2hw.otp_vendor_test_ctrl.q;
+ end
+ end else if (mubi8_test_true_strict(sw_claim_transition_if_q)) begin
+ transition_cmd = reg2hw.transition_cmd.q &
+ reg2hw.transition_cmd.qe;
+
+ if (reg2hw.transition_ctrl.ext_clock_en.qe) begin
+ use_ext_clock_d |= reg2hw.transition_ctrl.ext_clock_en.q;
+ end
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ if (reg2hw.transition_ctrl.volatile_raw_unlock.qe) begin
+ volatile_raw_unlock_d = reg2hw.transition_ctrl.volatile_raw_unlock.q;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ for (int k = 0; k < LcTokenWidth/32; k++) begin
+ if (reg2hw.transition_token[k].qe) begin
+ transition_token_d[k*32 +: 32] = reg2hw.transition_token[k].q;
+ end
+ end
+
+ if (reg2hw.transition_target.qe) begin
+ for (int k = 0; k < DecLcStateNumRep; k++) begin
+ transition_target_d[k] = dec_caliptra_ss_lc_state_e'(
+ reg2hw.transition_target.q[k*DecLcStateWidth +: DecLcStateWidth]);
+ end
+ end
+
+ if (reg2hw.otp_vendor_test_ctrl.qe) begin
+ otp_vendor_test_ctrl_d = reg2hw.otp_vendor_test_ctrl.q;
+ end
+ end
+ end
+ end
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_csrs
+ if (!rst_ni) begin
+ trans_success_q <= 1'b0;
+ trans_cnt_oflw_error_q <= 1'b0;
+ trans_invalid_error_q <= 1'b0;
+ token_invalid_error_q <= 1'b0;
+ flash_rma_error_q <= 1'b0;
+ fatal_prog_error_q <= 1'b0;
+ fatal_state_error_q <= 1'b0;
+ sw_claim_transition_if_q <= MuBi8False;
+ tap_dmi_claim_transition_if_q <= MuBi8False;
+ transition_token_q <= '0;
+ transition_target_q <= {DecLcStateNumRep{DecLcStRaw}};
+ otp_part_error_q <= 1'b0;
+ fatal_bus_integ_error_q <= 1'b0;
+ otp_vendor_test_ctrl_q <= '0;
+ use_ext_clock_q <= 1'b0;
+ end else begin
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ // In case of a volatile RAW unlock, this bit has to be cleared when the volatile
+ // unlock is followed by a real transition.
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+ if (SecVolatileRawUnlockEn && transition_cmd && !volatile_raw_unlock_q) begin
+ trans_success_q <= 1'b0;
+ end else begin
+ trans_success_q <= trans_success_d | trans_success_q;
+ end
+ // All other status and error bits are terminal and require a reset cycle.
+ trans_cnt_oflw_error_q <= trans_cnt_oflw_error_d | trans_cnt_oflw_error_q;
+ trans_invalid_error_q <= trans_invalid_error_d | trans_invalid_error_q;
+ token_invalid_error_q <= token_invalid_error_d | token_invalid_error_q;
+ flash_rma_error_q <= flash_rma_error_d | flash_rma_error_q;
+ fatal_prog_error_q <= otp_prog_error_d | fatal_prog_error_q;
+ fatal_state_error_q <= state_invalid_error_d | fatal_state_error_q;
+ otp_part_error_q <= otp_caliptra_ss_lc_data_i.error | otp_part_error_q;
+ fatal_bus_integ_error_q <= fatal_bus_integ_error_csr_d |
+ fatal_bus_integ_error_tap_dmi_d |
+ fatal_bus_integ_error_q;
+ // Other regs, gated by mutex further below.
+ sw_claim_transition_if_q <= sw_claim_transition_if_d;
+ tap_dmi_claim_transition_if_q <= tap_dmi_claim_transition_if_d;
+ transition_token_q <= transition_token_d;
+ transition_target_q <= transition_target_d;
+ otp_vendor_test_ctrl_q <= otp_vendor_test_ctrl_d;
+ use_ext_clock_q <= use_ext_clock_d;
+ end
+ end
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ // If not enabled, this register will become a constant.
+ if (SecVolatileRawUnlockEn) begin : gen_volatile_raw_unlock_reg
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_volatile_raw_unlock_reg
+ if (!rst_ni) begin
+ volatile_raw_unlock_q <= 1'b0;
+ end else begin
+ volatile_raw_unlock_q <= volatile_raw_unlock_d;
+ end
+ end
+ end else begin : gen_volatile_raw_unlock_const
+ logic unused_volatile_raw_unlock;
+ assign unused_volatile_raw_unlock = ^volatile_raw_unlock_d;
+ assign volatile_raw_unlock_q = 1'b0;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ assign caliptra_ss_lc_flash_rma_seed_o = transition_token_q[RmaSeedWidth-1:0];
+
+ // Gate the vendor specific test ctrl/status bits to zero in production states.
+ // Buffer the enable signal to prevent optimization of the multibit signal.
+ caliptra_ss_lc_tx_t caliptra_ss_lc_raw_test_rma;
+ caliptra_ss_lc_tx_t [1:0] caliptra_ss_lc_raw_test_rma_buf;
+ caliptra_prim_lc_sync #(
+ .NumCopies(2),
+ .AsyncOn(0)
+ ) u_prim_caliptra_ss_lc_sync (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_raw_test_rma),
+ .lc_en_o(caliptra_ss_lc_raw_test_rma_buf)
+ );
+
+ assign caliptra_ss_lc_otp_vendor_test_o.ctrl = (caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_raw_test_rma_buf[0])) ?
+ otp_vendor_test_ctrl_q : '0;
+ assign otp_vendor_test_status = (caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_raw_test_rma_buf[1])) ?
+ caliptra_ss_lc_otp_vendor_test_i.status : '0;
+
+ //////////////////
+ // Alert Sender //
+ //////////////////
+
+ logic [NumAlerts-1:0] alerts;
+ logic [NumAlerts-1:0] alert_test;
+ logic [NumAlerts-1:0] tap_dmi_alert_test;
+
+ assign alerts = {
+ fatal_bus_integ_error_q,
+ fatal_state_error_q,
+ fatal_prog_error_q
+ };
+
+ assign alert_test = {
+ reg2hw.alert_test.fatal_bus_integ_error.q &
+ reg2hw.alert_test.fatal_bus_integ_error.qe,
+ reg2hw.alert_test.fatal_state_error.q &
+ reg2hw.alert_test.fatal_state_error.qe,
+ reg2hw.alert_test.fatal_prog_error.q &
+ reg2hw.alert_test.fatal_prog_error.qe
+ };
+
+ assign tap_dmi_alert_test = {
+ tap_dmi_reg2hw.alert_test.fatal_bus_integ_error.q &
+ tap_dmi_reg2hw.alert_test.fatal_bus_integ_error.qe,
+ tap_dmi_reg2hw.alert_test.fatal_state_error.q &
+ tap_dmi_reg2hw.alert_test.fatal_state_error.qe,
+ tap_dmi_reg2hw.alert_test.fatal_prog_error.q &
+ tap_dmi_reg2hw.alert_test.fatal_prog_error.qe
+ };
+
+ for (genvar k = 0; k < NumAlerts; k++) begin : gen_alert_tx
+ caliptra_prim_alert_sender #(
+ .AsyncOn(AlertAsyncOn[k]),
+ .IsFatal(1)
+ ) u_prim_alert_sender (
+ .clk_i,
+ .rst_ni,
+ .alert_test_i ( alert_test[k] |
+ tap_dmi_alert_test[k] ),
+ .alert_req_i ( alerts[k] ),
+ .alert_ack_o ( ),
+ .alert_state_o ( ),
+ .alert_rx_i ( alert_rx_i[k] ),
+ .alert_tx_o ( alert_tx_o[k] )
+ );
+ end
+
+ ///////////////////////////////
+ // KMAC design Instance
+ ///////////////////////////////
+
+ kmac_pkg::app_rsp_t kmac_data_i;
+ kmac_pkg::app_req_t kmac_data_o;
+ wire caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_int;
+ wire app_req_t [2:0] app_req;
+ wire app_rsp_t [2:0] app_rsp;
+
+ assign caliptra_ss_lc_escalate_en_int = caliptra_ss_lc_escalate_en_o;
+
+ assign app_req[0] = '0;
+ assign app_req[1] = kmac_data_o;
+ assign app_req[2] = '0;
+
+ assign kmac_data_i = app_rsp[1];
+
+ kmac #(
+ .EnMasking(0),
+ .SwKeyMasked(0),
+ .NumAppIntf(3)
+ ) kmac (
+ .clk_i,
+ .rst_ni,
+ .rst_shadowed_ni (rst_ni),
+ // TLUL interface
+ .tl_i ('0),
+ .tl_o ( ),
+ // alert interface
+ .alert_rx_i ('0),
+ .alert_tx_o ( ),
+
+ // escalate en
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en_int),
+
+ // KeyMgr sideload key interface
+ .keymgr_key_i ('0),
+
+ // KeyMgr KDF datapath
+ .app_i ( app_req ),
+ .app_o ( app_rsp ),
+
+ // Interrupts
+ .intr_kmac_done_o ( ),
+ .intr_fifo_empty_o ( ),
+ .intr_kmac_err_o ( ),
+
+ // Idle interface
+ .idle_o ( ),
+ .en_masking_o ( ),
+
+ // EDN interface
+ .clk_edn_i (clk_i),
+ .rst_edn_ni (rst_ni),
+ .entropy_o ( ),
+ .entropy_i ('0)
+ );
+
+
+ //////////////////////////
+ // Escalation Receivers //
+ //////////////////////////
+
+ // SEC_CM: MAIN.FSM.GLOBAL_ESC
+ // We still have two escalation receivers here for historical reasons.
+ // The two actions "wipe secrets" and "scrap lifecycle state" have been
+ // combined in order to simplify both DV and the design, as otherwise
+ // this separation of very intertwined actions would have caused too many
+ // unnecessary corner cases. The escalation receivers are now redundant and
+ // trigger both actions at once.
+
+ // This escalation action moves the life cycle
+ // state into a temporary "SCRAP" state named "ESCALATE",
+ // and asserts the caliptra_ss_lc_escalate_en life cycle control signal.
+ logic esc_scrap_state0;
+ caliptra_prim_esc_receiver #(
+ .N_ESC_SEV (alert_handler_reg_pkg::N_ESC_SEV),
+ .PING_CNT_DW (alert_handler_reg_pkg::PING_CNT_DW)
+ ) u_prim_esc_receiver0 (
+ .clk_i,
+ .rst_ni,
+ .esc_req_o (esc_scrap_state0),
+ .esc_rx_o (esc_scrap_state0_rx_o),
+ .esc_tx_i (esc_scrap_state0_tx_i)
+ );
+
+ // This escalation action moves the life cycle
+ // state into a temporary "SCRAP" state named "ESCALATE".
+ logic esc_scrap_state1;
+ caliptra_prim_esc_receiver #(
+ .N_ESC_SEV (alert_handler_reg_pkg::N_ESC_SEV),
+ .PING_CNT_DW (alert_handler_reg_pkg::PING_CNT_DW)
+ ) u_prim_esc_receiver1 (
+ .clk_i,
+ .rst_ni,
+ .esc_req_o (esc_scrap_state1),
+ .esc_rx_o (esc_scrap_state1_rx_o),
+ .esc_tx_i (esc_scrap_state1_tx_i)
+ );
+
+ ////////////////////////////
+ // Synchronization of IOs //
+ ////////////////////////////
+
+ // Signals going to and coming from power manager.
+ logic caliptra_ss_lc_init;
+ caliptra_prim_flop_2sync #(
+ .Width(1)
+ ) u_prim_flop_2sync_init (
+ .clk_i,
+ .rst_ni,
+ .d_i(pwr_caliptra_ss_lc_i.caliptra_ss_lc_init),
+ .q_o(caliptra_ss_lc_init)
+ );
+
+ logic caliptra_ss_lc_done_q;
+ logic caliptra_ss_lc_idle_q;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_sync_regs
+ if (!rst_ni) begin
+ caliptra_ss_lc_done_q <= 1'b0;
+ caliptra_ss_lc_idle_q <= 1'b0;
+ end else begin
+ caliptra_ss_lc_done_q <= caliptra_ss_lc_done_d;
+ caliptra_ss_lc_idle_q <= caliptra_ss_lc_idle_d;
+ end
+ end
+
+ assign pwr_caliptra_ss_lc_o.caliptra_ss_lc_done = caliptra_ss_lc_done_q;
+ assign pwr_caliptra_ss_lc_o.caliptra_ss_lc_idle = caliptra_ss_lc_idle_q;
+
+ ////////////////////
+ // KMAC Interface //
+ ////////////////////
+
+ logic token_hash_req, token_hash_req_chk, token_hash_ack, token_hash_err, token_if_fsm_err;
+ caliptra_ss_lc_token_t hashed_token;
+ caliptra_ss_lc_ctrl_kmac_if u_caliptra_ss_lc_ctrl_kmac_if (
+ .clk_i,
+ .rst_ni,
+ .clk_kmac_i (clk_i),
+ .rst_kmac_ni (rst_ni),
+ .kmac_data_i,
+ .kmac_data_o,
+ .transition_token_i ( transition_token_q ),
+ .token_hash_req_i ( token_hash_req ),
+ .token_hash_req_chk_i ( token_hash_req_chk ),
+ .token_hash_ack_o ( token_hash_ack ),
+ .token_hash_err_o ( token_hash_err ),
+ .token_if_fsm_err_o ( token_if_fsm_err ),
+ .hashed_token_o ( hashed_token )
+ );
+
+ ////////////
+ // LC FSM //
+ ////////////
+
+ caliptra_ss_lc_ctrl_fsm #(
+ .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ),
+ .RndCnstLcKeymgrDivTestUnlocked( RndCnstLcKeymgrDivTestUnlocked ),
+ .RndCnstLcKeymgrDivDev ( RndCnstLcKeymgrDivDev ),
+ .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ),
+ .RndCnstLcKeymgrDivRma ( RndCnstLcKeymgrDivRma ),
+ .RndCnstInvalidTokens ( RndCnstInvalidTokens ),
+ .SecVolatileRawUnlockEn ( SecVolatileRawUnlockEn )
+ ) u_caliptra_ss_lc_ctrl_fsm (
+ .clk_i,
+ .rst_ni,
+ .init_req_i ( caliptra_ss_lc_init ),
+ .init_done_o ( caliptra_ss_lc_done_d ),
+ .idle_o ( caliptra_ss_lc_idle_d ),
+ .esc_scrap_state0_i ( esc_scrap_state0 ),
+ .esc_scrap_state1_i ( esc_scrap_state1 ),
+ .caliptra_ss_lc_state_valid_i ( otp_caliptra_ss_lc_data_i.valid ),
+ .caliptra_ss_lc_state_i ( caliptra_ss_lc_state_e'(otp_caliptra_ss_lc_data_i.state) ),
+ .secrets_valid_i ( otp_caliptra_ss_lc_data_i.secrets_valid ),
+ .caliptra_ss_lc_cnt_i ( caliptra_ss_lc_cnt_e'(otp_caliptra_ss_lc_data_i.count) ),
+ .use_ext_clock_i ( use_ext_clock_q ),
+ .ext_clock_switched_o ( ext_clock_switched ),
+ .volatile_raw_unlock_i ( volatile_raw_unlock_q ),
+ .strap_en_override_o,
+ .test_unlock_token_i ( otp_caliptra_ss_lc_data_i.test_unlock_token ),
+ .test_exit_token_i ( otp_caliptra_ss_lc_data_i.test_exit_token ),
+ .test_tokens_valid_i ( otp_caliptra_ss_lc_data_i.test_tokens_valid ),
+ .rma_token_i ( otp_caliptra_ss_lc_data_i.rma_token ),
+ .rma_token_valid_i ( otp_caliptra_ss_lc_data_i.rma_token_valid ),
+ .trans_cmd_i ( transition_cmd ),
+ .trans_target_i ( transition_target_q ),
+ .dec_caliptra_ss_lc_state_o ( dec_caliptra_ss_lc_state ),
+ .dec_caliptra_ss_lc_cnt_o ( dec_caliptra_ss_lc_cnt ),
+ .dec_caliptra_ss_lc_id_state_o ( dec_caliptra_ss_lc_id_state ),
+ .token_hash_req_o ( token_hash_req ),
+ .token_hash_req_chk_o ( token_hash_req_chk ),
+ .token_hash_ack_i ( token_hash_ack ),
+ .token_hash_err_i ( token_hash_err ),
+ .token_if_fsm_err_i ( token_if_fsm_err ),
+ .hashed_token_i ( hashed_token ),
+ .unhashed_token_i ( transition_token_q ),
+ .otp_prog_req_o ( caliptra_ss_lc_otp_program_o.req ),
+ .otp_prog_caliptra_ss_lc_state_o ( caliptra_ss_lc_otp_program_o.state ),
+ .otp_prog_caliptra_ss_lc_cnt_o ( caliptra_ss_lc_otp_program_o.count ),
+ .otp_prog_ack_i ( caliptra_ss_lc_otp_program_i.ack ),
+ .otp_prog_err_i ( caliptra_ss_lc_otp_program_i.err ),
+ .trans_success_o ( trans_success_d ),
+ .trans_cnt_oflw_error_o ( trans_cnt_oflw_error_d ),
+ .trans_invalid_error_o ( trans_invalid_error_d ),
+ .token_invalid_error_o ( token_invalid_error_d ),
+ .flash_rma_error_o ( flash_rma_error_d ),
+ .otp_prog_error_o ( otp_prog_error_d ),
+ .state_invalid_error_o ( state_invalid_error_d ),
+ .caliptra_ss_lc_raw_test_rma_o ( caliptra_ss_lc_raw_test_rma ),
+ .caliptra_ss_lc_dft_en_o,
+ .caliptra_ss_lc_nvm_debug_en_o,
+ .caliptra_ss_lc_hw_debug_en_o,
+ .caliptra_ss_lc_cpu_en_o,
+ .caliptra_ss_lc_creator_seed_sw_rw_en_o,
+ .caliptra_ss_lc_owner_seed_sw_rw_en_o,
+ .caliptra_ss_lc_iso_part_sw_rd_en_o,
+ .caliptra_ss_lc_iso_part_sw_wr_en_o,
+ .caliptra_ss_lc_seed_hw_rd_en_o,
+ .caliptra_ss_lc_keymgr_en_o,
+ .caliptra_ss_lc_escalate_en_o,
+ .caliptra_ss_lc_check_byp_en_o,
+ .caliptra_ss_lc_clk_byp_req_o,
+ .caliptra_ss_lc_clk_byp_ack_i,
+ .caliptra_ss_lc_flash_rma_req_o,
+ .caliptra_ss_lc_flash_rma_ack_i,
+ .caliptra_ss_lc_keymgr_div_o
+ );
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_KNOWN(RegsTlOKnown, regs_tl_o )
+ `CALIPTRA_ASSERT_KNOWN(DmiTlOKnown, dmi_tl_o )
+ `CALIPTRA_ASSERT_KNOWN(AlertTxKnown_A, alert_tx_o )
+ `CALIPTRA_ASSERT_KNOWN(PwrLcKnown_A, pwr_caliptra_ss_lc_o )
+ `CALIPTRA_ASSERT_KNOWN(LcOtpProgramKnown_A, caliptra_ss_lc_otp_program_o )
+ `CALIPTRA_ASSERT_KNOWN(LcOtpTokenKnown_A, kmac_data_o )
+ `CALIPTRA_ASSERT_KNOWN(LcDftEnKnown_A, caliptra_ss_lc_dft_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcNvmDebugEnKnown_A, caliptra_ss_lc_nvm_debug_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcHwDebugEnKnown_A, caliptra_ss_lc_hw_debug_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcCpuEnKnown_A, caliptra_ss_lc_cpu_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcCreatorSwRwEn_A, caliptra_ss_lc_creator_seed_sw_rw_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcOwnerSwRwEn_A, caliptra_ss_lc_owner_seed_sw_rw_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcIsoSwRwEn_A, caliptra_ss_lc_iso_part_sw_rd_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcIsoSwWrEn_A, caliptra_ss_lc_iso_part_sw_wr_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcSeedHwRdEn_A, caliptra_ss_lc_seed_hw_rd_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcKeymgrEnKnown_A, caliptra_ss_lc_keymgr_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcEscalateEnKnown_A, caliptra_ss_lc_escalate_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcCheckBypassEnKnown_A, caliptra_ss_lc_check_byp_en_o )
+ `CALIPTRA_ASSERT_KNOWN(LcClkBypReqKnown_A, caliptra_ss_lc_clk_byp_req_o )
+ `CALIPTRA_ASSERT_KNOWN(LcFlashRmaSeedKnown_A, caliptra_ss_lc_flash_rma_seed_o )
+ `CALIPTRA_ASSERT_KNOWN(LcFlashRmaReqKnown_A, caliptra_ss_lc_flash_rma_req_o )
+ `CALIPTRA_ASSERT_KNOWN(LcKeymgrDiv_A, caliptra_ss_lc_keymgr_div_o )
+
+ // Alert assertions for sparse FSMs.
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlLcFsmCheck_A,
+ u_caliptra_ss_lc_ctrl_fsm.u_fsm_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlLcStateCheck_A,
+ u_caliptra_ss_lc_ctrl_fsm.u_state_regs, alert_tx_o[1],
+ !$past(otp_caliptra_ss_lc_data_i.valid) ||
+ u_caliptra_ss_lc_ctrl_fsm.fsm_state_q inside {ResetSt, EscalateSt, PostTransSt, InvalidSt, ScrapSt} ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state0_i ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state1_i)
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlLcCntCheck_A,
+ u_caliptra_ss_lc_ctrl_fsm.u_cnt_regs, alert_tx_o[1],
+ !$past(otp_caliptra_ss_lc_data_i.valid) ||
+ u_caliptra_ss_lc_ctrl_fsm.fsm_state_q inside {ResetSt, EscalateSt, PostTransSt, InvalidSt, ScrapSt} ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state0_i ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state1_i)
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlKmacIfFsmCheck_A,
+ u_caliptra_ss_lc_ctrl_kmac_if.u_state_regs, alert_tx_o[1],
+ u_caliptra_ss_lc_ctrl_fsm.fsm_state_q inside {EscalateSt} ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state0_i ||
+ u_caliptra_ss_lc_ctrl_fsm.esc_scrap_state1_i)
+
+ // Alert assertions for reg_we onehot check
+ `CALIPTRA_ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ALERT(RegsWeOnehotCheck_A, u_reg_regs, alert_tx_o[2])
+ `CALIPTRA_ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ALERT(TapDmiWeOnehotCheck_A,
+ u_reg_tap_dmi, alert_tx_o[2], 0)
+endmodule : caliptra_ss_lc_ctrl
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_dmi_reg_top.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_dmi_reg_top.sv
new file mode 100644
index 0000000..ba58f40
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_dmi_reg_top.sv
@@ -0,0 +1,60 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "caliptra_prim_assert.sv"
+
+module caliptra_ss_lc_ctrl_dmi_reg_top (
+ input clk_i,
+ input rst_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+
+ // Output port for window
+ output tlul_pkg::tl_h2d_t tl_win_o,
+ input tlul_pkg::tl_d2h_t tl_win_i,
+
+ // To HW
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import caliptra_ss_lc_ctrl_reg_pkg::* ;
+
+
+ // Add an unloaded flop to make use of clock / reset
+ // This is done to specifically address lint complaints of unused clocks/resets
+ // Since the flop is unloaded it will be removed during synthesis
+ logic unused_reg;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ unused_reg <= '0;
+ end else begin
+ unused_reg <= tl_i.a_valid;
+ end
+ end
+
+
+
+ // Since there are no registers in this block, commands are routed through to windows which
+ // can report their own integrity errors.
+ assign intg_err_o = 1'b0;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(0)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ assign tl_win_o = tl_i;
+ assign tl_o_pre = tl_win_i;
+
+ // Unused signal tieoff
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_fsm.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_fsm.sv
new file mode 100644
index 0000000..b1fc182
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_fsm.sv
@@ -0,0 +1,884 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Main Life Cycle Controller FSM.
+
+`include "caliptra_prim_assert.sv"
+
+module caliptra_ss_lc_ctrl_fsm
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_reg_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+#(// Random netlist constants
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3),
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4),
+ parameter caliptra_ss_lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}},
+ parameter bit SecVolatileRawUnlockEn = 0
+) (
+ // This module is combinational, but we
+ // need the clock and reset for the assertions.
+ input clk_i,
+ input rst_ni,
+ // Initialization request from power manager.
+ input init_req_i,
+ output logic init_done_o,
+ output logic idle_o,
+ // Escalation input
+ input esc_scrap_state0_i,
+ input esc_scrap_state1_i,
+ // Life cycle state vector from OTP.
+ input caliptra_ss_lc_state_valid_i,
+ input caliptra_ss_lc_state_e caliptra_ss_lc_state_i,
+ input caliptra_ss_lc_cnt_e caliptra_ss_lc_cnt_i,
+ input caliptra_ss_lc_tx_t secrets_valid_i,
+ // Defines whether we switch to an external clock when initiating a transition.
+ input use_ext_clock_i,
+ output logic ext_clock_switched_o,
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ input logic volatile_raw_unlock_i,
+ output logic strap_en_override_o,
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+ // Token input from OTP (these are all hash post-images).
+ input caliptra_ss_lc_token_t test_unlock_token_i,
+ input caliptra_ss_lc_token_t test_exit_token_i,
+ input caliptra_ss_lc_tx_t test_tokens_valid_i,
+ input caliptra_ss_lc_token_t rma_token_i,
+ input caliptra_ss_lc_tx_t rma_token_valid_i,
+ // Transition trigger interface.
+ input trans_cmd_i,
+ input ext_dec_caliptra_ss_lc_state_t trans_target_i,
+ // Decoded life cycle state for CSRs.
+ output ext_dec_caliptra_ss_lc_state_t dec_caliptra_ss_lc_state_o,
+ output dec_caliptra_ss_lc_cnt_t dec_caliptra_ss_lc_cnt_o,
+ output dec_caliptra_ss_lc_id_state_e dec_caliptra_ss_lc_id_state_o,
+ // Token hashing interface
+ output logic token_hash_req_o,
+ output logic token_hash_req_chk_o,
+ input token_hash_ack_i,
+ input token_hash_err_i,
+ input token_if_fsm_err_i,
+ input caliptra_ss_lc_token_t hashed_token_i,
+ input caliptra_ss_lc_token_t unhashed_token_i,
+ // OTP programming interface
+ output logic otp_prog_req_o,
+ output caliptra_ss_lc_state_e otp_prog_caliptra_ss_lc_state_o,
+ output caliptra_ss_lc_cnt_e otp_prog_caliptra_ss_lc_cnt_o,
+ input otp_prog_ack_i,
+ input otp_prog_err_i,
+ // Error outputs going to CSRs
+ output logic trans_success_o,
+ output logic trans_cnt_oflw_error_o,
+ output logic trans_invalid_error_o,
+ output logic token_invalid_error_o,
+ output logic flash_rma_error_o,
+ output logic otp_prog_error_o,
+ output logic state_invalid_error_o,
+ // Local life cycle signal
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_raw_test_rma_o,
+ // Life cycle broadcast outputs.
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_nvm_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_hw_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_cpu_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_owner_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_wr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_seed_hw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_keymgr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_check_byp_en_o,
+ // Request and feedback to/from clock manager and AST.
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_clk_byp_req_o,
+ input caliptra_ss_lc_tx_t caliptra_ss_lc_clk_byp_ack_i,
+ // Request and feedback to/from flash controller
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_flash_rma_req_o,
+ input caliptra_ss_lc_tx_t [NumRmaAckSigs-1:0] caliptra_ss_lc_flash_rma_ack_i,
+ // State group diversification value for keymgr
+ output caliptra_ss_lc_keymgr_div_t caliptra_ss_lc_keymgr_div_o
+);
+
+ /////////////////////////////
+ // Synchronizers / Buffers //
+ /////////////////////////////
+
+ // We use multiple copies of these signals in the
+ // FSM checks below.
+ caliptra_ss_lc_tx_t [3:0] caliptra_ss_lc_clk_byp_ack;
+ caliptra_prim_lc_sync #(
+ .NumCopies(4)
+ ) u_caliptra_prim_lc_sync_clk_byp_ack (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_clk_byp_ack_i),
+ .lc_en_o(caliptra_ss_lc_clk_byp_ack)
+ );
+
+ // Indication for CSRs
+ assign ext_clock_switched_o = caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_clk_byp_ack[3]);
+
+ // We have multiple response channels for this signal since the RMA wiping requests can go to
+ // multiple modules that perform wiping in parallel. For security reasons, this signal is not
+ // daisy-chained - see #19136 for context. Synchronize ACK signals separately, combine with
+ // bitwise LC AND function and feed into FSM.
+ caliptra_ss_lc_tx_t [NumRmaAckSigs-1:0] caliptra_ss_lc_flash_rma_ack;
+ for (genvar k = 0; k < NumRmaAckSigs; k++) begin : gen_syncs
+ caliptra_prim_lc_sync #(
+ .NumCopies(1)
+ ) u_caliptra_prim_lc_sync_flash_rma_ack(
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_flash_rma_ack_i[k]),
+ .lc_en_o({caliptra_ss_lc_flash_rma_ack[k]})
+ );
+ end
+
+ caliptra_ss_lc_tx_t caliptra_ss_lc_flash_rma_ack_combined;
+ always_comb begin
+ caliptra_ss_lc_flash_rma_ack_combined = On;
+ for (int k = 0; k < NumRmaAckSigs; k++) begin
+ caliptra_ss_lc_flash_rma_ack_combined = caliptra_ss_lc_tx_and_hi(caliptra_ss_lc_flash_rma_ack_combined, caliptra_ss_lc_flash_rma_ack[k]);
+ end
+ end
+
+ // Make buffered copies for consumption in the FSM below.
+ caliptra_ss_lc_tx_t [2:0] caliptra_ss_lc_flash_rma_ack_buf;
+ caliptra_prim_lc_sync #(
+ .NumCopies(3),
+ .AsyncOn(0)
+ ) u_caliptra_prim_lc_sync_flash_rma_ack_buf (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_flash_rma_ack_combined),
+ .lc_en_o(caliptra_ss_lc_flash_rma_ack_buf)
+ );
+
+ ///////////////
+ // FSM Logic //
+ ///////////////
+ fsm_state_e fsm_state_d, fsm_state_q;
+
+ // Continuously feed in valid signal for LC state.
+ logic caliptra_ss_lc_state_valid_d, caliptra_ss_lc_state_valid_q;
+ assign caliptra_ss_lc_state_valid_d = caliptra_ss_lc_state_valid_i;
+
+ // Encoded state vector.
+ caliptra_ss_lc_state_e caliptra_ss_lc_state_d, caliptra_ss_lc_state_q, next_caliptra_ss_lc_state;
+ caliptra_ss_lc_cnt_e caliptra_ss_lc_cnt_d, caliptra_ss_lc_cnt_q, next_caliptra_ss_lc_cnt;
+
+ // Feed the next lc state reg back to the programming interface of OTP.
+ assign otp_prog_caliptra_ss_lc_state_o = next_caliptra_ss_lc_state;
+ assign otp_prog_caliptra_ss_lc_cnt_o = next_caliptra_ss_lc_cnt;
+
+ // Conditional LC signal outputs
+ caliptra_ss_lc_tx_t caliptra_ss_lc_clk_byp_req, caliptra_ss_lc_flash_rma_req, caliptra_ss_lc_check_byp_en;
+
+ `CALIPTRA_ASSERT_KNOWN(LcStateKnown_A, caliptra_ss_lc_state_q )
+ `CALIPTRA_ASSERT_KNOWN(LcCntKnown_A, caliptra_ss_lc_cnt_q )
+ `CALIPTRA_ASSERT_KNOWN(FsmStateKnown_A, fsm_state_q )
+
+ // Hashed token to compare against.
+ logic [1:0] hashed_token_valid_mux;
+ caliptra_ss_lc_token_t hashed_token_mux;
+
+ // Multibit state error from state decoder
+ logic [5:0] state_invalid_error;
+
+ // Strap sample override signal.
+ logic set_strap_en_override;
+
+ // Registers whether volatile unlock has been successful
+ caliptra_prim_mubi_pkg::mubi8_t volatile_raw_unlock_success_d, volatile_raw_unlock_success_q;
+
+ // SEC_CM: MAIN.CTRL_FLOW.CONSISTENCY
+ always_comb begin : p_fsm
+ // FSM default state assignments.
+ fsm_state_d = fsm_state_q;
+ caliptra_ss_lc_state_d = caliptra_ss_lc_state_q;
+ caliptra_ss_lc_cnt_d = caliptra_ss_lc_cnt_q;
+
+ // Token hashing.
+ token_hash_req_o = 1'b0;
+ token_hash_req_chk_o = 1'b1;
+
+ // OTP Interface
+ otp_prog_req_o = 1'b0;
+
+ // Defaults for status/error signals.
+ token_invalid_error_o = 1'b0;
+ otp_prog_error_o = 1'b0;
+ flash_rma_error_o = 1'b0;
+ trans_success_o = 1'b0;
+ state_invalid_error_o = 1'b0;
+
+ // Status indication going to power manager.
+ init_done_o = 1'b1;
+ idle_o = 1'b0;
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ set_strap_en_override = 1'b0;
+ volatile_raw_unlock_success_d = volatile_raw_unlock_success_q;
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ // These signals remain asserted once set to On.
+ // Note that the remaining life cycle signals are decoded in
+ // the caliptra_ss_lc_ctrl_signal_decode submodule.
+ caliptra_ss_lc_clk_byp_req = caliptra_ss_lc_clk_byp_req_o;
+ caliptra_ss_lc_flash_rma_req = caliptra_ss_lc_flash_rma_req_o;
+ caliptra_ss_lc_check_byp_en = caliptra_ss_lc_check_byp_en_o;
+
+ unique case (fsm_state_q)
+ ///////////////////////////////////////////////////////////////////
+ // Wait here until OTP has initialized and the
+ // power manager sends an initialization request.
+ ResetSt: begin
+ init_done_o = 1'b0;
+ caliptra_ss_lc_clk_byp_req = Off;
+ caliptra_ss_lc_flash_rma_req = Off;
+ caliptra_ss_lc_check_byp_en = Off;
+ if (init_req_i && caliptra_ss_lc_state_valid_q) begin
+ fsm_state_d = IdleSt;
+ // Fetch LC state vector from OTP.
+ caliptra_ss_lc_state_d = caliptra_ss_lc_state_i;
+ caliptra_ss_lc_cnt_d = caliptra_ss_lc_cnt_i;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Idle state where life cycle control signals are broadcast.
+ // Note that the life cycle signals are decoded and broadcast
+ // in the caliptra_ss_lc_ctrl_signal_decode submodule.
+ IdleSt: begin
+ idle_o = 1'b1;
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ // Note that if the volatile unlock mechanism is available,
+ // we have to stop fetching the OTP value after a volatile unlock has succeeded.
+ // Otherwise we unconditionally fetch from OTP in this state.
+ if (!(SecVolatileRawUnlockEn && caliptra_ss_lc_state_q == LcStTestUnlocked0 && caliptra_ss_lc_cnt_q != LcCnt0) ||
+ caliptra_prim_mubi_pkg::mubi8_test_false_loose(volatile_raw_unlock_success_q)) begin
+ // Continuously fetch LC state vector from OTP.
+ // The state is locked in once a transition is started.
+ caliptra_ss_lc_state_d = caliptra_ss_lc_state_i;
+ caliptra_ss_lc_cnt_d = caliptra_ss_lc_cnt_i;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ // If the life cycle state is SCRAP, we move the FSM into a terminal
+ // SCRAP state that does not allow any transitions to be initiated anymore.
+ if (caliptra_ss_lc_state_q == LcStScrap) begin
+ fsm_state_d = ScrapSt;
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ // Only enter here if volatile RAW unlock is available and enabled.
+ end else if (SecVolatileRawUnlockEn && volatile_raw_unlock_i && trans_cmd_i) begin
+ // We only allow transitions from RAW -> TEST_UNLOCKED0
+ if (caliptra_ss_lc_state_q == LcStRaw &&
+ trans_target_i == {DecLcStateNumRep{DecLcStTestUnlocked0}} &&
+ !trans_invalid_error_o) begin
+ // 128bit token check (without passing it through the KMAC)
+ if (unhashed_token_i == RndCnstRawUnlockTokenHashed) begin
+ // We stay in Idle, but update the life cycle state register (volatile).
+ caliptra_ss_lc_state_d = LcStTestUnlocked0;
+ // If the count is 0, we set it to 1 - otherwise we just leave it as is so that the
+ // register value is in sync with what has been programmed to OTP already (there may
+ // have been unsuccessul raw unlock attempts before that already incremented it).
+ caliptra_ss_lc_cnt_d = (caliptra_ss_lc_cnt_q == LcCnt0) ? LcCnt1 : caliptra_ss_lc_cnt_q;
+ // Re-sample the DFT straps in the pinmux.
+ // This signal will be delayed by several cycles so that the LC_CTRL signals
+ // have time to propagate.
+ set_strap_en_override = 1'b1;
+ // We have to remember that the transition was successful in order to correctly
+ // disable the continuos sampling of the life cycle state vector coming from OTP.
+ volatile_raw_unlock_success_d = caliptra_prim_mubi_pkg::MuBi8True;
+ // Indicate that the transition was successful.
+ trans_success_o = 1'b1;
+ end else begin
+ token_invalid_error_o = 1'b1;
+ fsm_state_d = PostTransSt;
+ end
+ end else begin
+ // Transition invalid error is set by caliptra_ss_lc_ctrl_state_transition module.
+ fsm_state_d = PostTransSt;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+ // Initiate a transition. This will first increment the
+ // life cycle counter before hashing and checking the token.
+ end else if (trans_cmd_i) begin
+ fsm_state_d = ClkMuxSt;
+ end
+ // If we are in a non-PROD life cycle state, steer the clock mux if requested. This
+ // action is available in IdleSt so that the mux can be steered without having to initiate
+ // a life cycle transition. If a transition is initiated however, the life cycle controller
+ // will wait for the clock mux acknowledgement in the ClkMuxSt state before proceeding.
+ if (caliptra_ss_lc_state_q inside {LcStRaw,
+ LcStTestLocked0,
+ LcStTestLocked1,
+ LcStTestLocked2,
+ LcStTestLocked3,
+ LcStTestLocked4,
+ LcStTestLocked5,
+ LcStTestLocked6,
+ LcStTestUnlocked0,
+ LcStTestUnlocked1,
+ LcStTestUnlocked2,
+ LcStTestUnlocked3,
+ LcStTestUnlocked4,
+ LcStTestUnlocked5,
+ LcStTestUnlocked6,
+ LcStTestUnlocked7,
+ LcStRma}) begin
+ if (use_ext_clock_i) begin
+ caliptra_ss_lc_clk_byp_req = On;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Clock mux state. If we are in RAW, TEST* or RMA, it is permissible
+ // to switch to an external clock source. If the bypass request is
+ // asserted, we have to wait until the clock mux and clock manager
+ // have switched the mux and the clock divider. Also, we disable the
+ // life cycle partition checks at this point since we are going to
+ // alter the contents in the OTP memory array, which could lead to
+ // spurious escalations.
+ ClkMuxSt: begin
+ caliptra_ss_lc_check_byp_en = On;
+ if (caliptra_ss_lc_state_q inside {LcStRaw,
+ LcStTestLocked0,
+ LcStTestLocked1,
+ LcStTestLocked2,
+ LcStTestLocked3,
+ LcStTestLocked4,
+ LcStTestLocked5,
+ LcStTestLocked6,
+ LcStTestUnlocked0,
+ LcStTestUnlocked1,
+ LcStTestUnlocked2,
+ LcStTestUnlocked3,
+ LcStTestUnlocked4,
+ LcStTestUnlocked5,
+ LcStTestUnlocked6,
+ LcStTestUnlocked7,
+ LcStRma}) begin
+ if (use_ext_clock_i) begin
+ caliptra_ss_lc_clk_byp_req = On;
+ if (caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_clk_byp_ack[0])) begin
+ fsm_state_d = CntIncrSt;
+ end
+ end else begin
+ fsm_state_d = CntIncrSt;
+ end
+ end else begin
+ fsm_state_d = CntIncrSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This increments the life cycle counter state.
+ CntIncrSt: begin
+ // If the counter has reached the maximum, bail out.
+ if (trans_cnt_oflw_error_o) begin
+ fsm_state_d = PostTransSt;
+ end else begin
+ fsm_state_d = CntProgSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This programs the life cycle counter state.
+ CntProgSt: begin
+ otp_prog_req_o = 1'b1;
+
+ // If the clock mux has been steered, double check that this is still the case.
+ // Otherwise abort the transition operation.
+ if (caliptra_ss_lc_clk_byp_req_o != caliptra_ss_lc_clk_byp_ack[1]) begin
+ fsm_state_d = PostTransSt;
+ otp_prog_error_o = 1'b1;
+ end
+
+ // Check return value and abort if there
+ // was an error.
+ if (otp_prog_ack_i) begin
+ if (otp_prog_err_i) begin
+ fsm_state_d = PostTransSt;
+ otp_prog_error_o = 1'b1;
+ end else begin
+ fsm_state_d = TransCheckSt;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // First transition valid check. This will be repeated several
+ // times below.
+ TransCheckSt: begin
+ if (trans_invalid_error_o) begin
+ fsm_state_d = PostTransSt;
+ end else begin
+ fsm_state_d = TokenHashSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Hash and compare the token, no matter whether this transition
+ // is conditional or not. Unconditional transitions just use a known
+ // all-zero token value. That way, we always compare a hashed token
+ // and guarantee that no other control flow path exists that could
+ // bypass the token check.
+ // SEC_CM: TOKEN.DIGEST
+ TokenHashSt: begin
+ token_hash_req_o = 1'b1;
+ if (token_hash_ack_i) begin
+ // This is the first comparison.
+ // The token is compared two more times further below.
+ // Also note that conditional transitions won't be possible if the
+ // corresponding token is not valid. This only applies to tokens stored in
+ // OTP. I.e., these tokens first have to be provisioned, before they can be used.
+ if (hashed_token_i == hashed_token_mux &&
+ !token_hash_err_i &&
+ &hashed_token_valid_mux) begin
+ fsm_state_d = FlashRmaSt;
+ end else begin
+ fsm_state_d = PostTransSt;
+ token_invalid_error_o = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Flash RMA state. Note that we check the flash response again
+ // two times later below.
+ FlashRmaSt: begin
+ if (trans_target_i == {DecLcStateNumRep{DecLcStRma}}) begin
+ caliptra_ss_lc_flash_rma_req = On;
+ if (caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_flash_rma_ack_buf[0])) begin
+ fsm_state_d = TokenCheck0St;
+ end
+ end else begin
+ fsm_state_d = TokenCheck0St;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Check again two times whether this transition and the hashed
+ // token are valid. Also check again whether the flash RMA
+ // response is valid.
+ // SEC_CM: TOKEN.DIGEST
+ TokenCheck0St,
+ TokenCheck1St: begin
+ if (trans_invalid_error_o) begin
+ fsm_state_d = PostTransSt;
+ end else begin
+ // If any of these RMA are conditions are true,
+ // all of them must be true at the same time.
+ if ((trans_target_i != {DecLcStateNumRep{DecLcStRma}} &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_flash_rma_req_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_flash_rma_ack_buf[1])) ||
+ (trans_target_i == {DecLcStateNumRep{DecLcStRma}} &&
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_flash_rma_req_o) &&
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_flash_rma_ack_buf[1]))) begin
+ if (hashed_token_i == hashed_token_mux &&
+ !token_hash_err_i &&
+ &hashed_token_valid_mux) begin
+ if (fsm_state_q == TokenCheck1St) begin
+ // This is the only way we can get into the
+ // programming state.
+ fsm_state_d = TransProgSt;
+ end else begin
+ fsm_state_d = TokenCheck1St;
+ end
+ end else begin
+ fsm_state_d = PostTransSt;
+ token_invalid_error_o = 1'b1;
+ end
+ // The flash RMA process failed.
+ end else begin
+ fsm_state_d = PostTransSt;
+ flash_rma_error_o = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Initiate OTP transaction. Note that the concurrent
+ // LC state check is continuously checking whether the
+ // new LC state remains valid. Once the ack returns we are
+ // done with the transition and can go into the terminal PosTransSt.
+ TransProgSt: begin
+ otp_prog_req_o = 1'b1;
+
+ // If the clock mux has been steered, double check that this is still the case.
+ // Otherwise abort the transition operation.
+ if (caliptra_ss_lc_clk_byp_req_o != caliptra_ss_lc_clk_byp_ack[2]) begin
+ fsm_state_d = PostTransSt;
+ otp_prog_error_o = 1'b1;
+ // Also double check that the RMA signals remain stable.
+ // Otherwise abort the transition operation.
+ end else if ((trans_target_i != {DecLcStateNumRep{DecLcStRma}} &&
+ (caliptra_ss_lc_flash_rma_req_o != Off || caliptra_ss_lc_flash_rma_ack_buf[2] != Off)) ||
+ (trans_target_i == {DecLcStateNumRep{DecLcStRma}} &&
+ (caliptra_ss_lc_flash_rma_req_o != On || caliptra_ss_lc_flash_rma_ack_buf[2] != On))) begin
+ fsm_state_d = PostTransSt;
+ flash_rma_error_o = 1'b1;
+ end else if (otp_prog_ack_i) begin
+ fsm_state_d = PostTransSt;
+ otp_prog_error_o = otp_prog_err_i;
+ trans_success_o = ~otp_prog_err_i;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal states.
+ ScrapSt,
+ PostTransSt: ;
+
+
+ EscalateSt: begin
+ // During an escalation it is okay to de-assert token_hash_req without receivng ACK.
+ token_hash_req_chk_o = 1'b0;
+ end
+
+ InvalidSt: begin
+ // During an escalation it is okay to de-assert token_hash_req without receivng ACK.
+ token_hash_req_chk_o = 1'b0;
+ state_invalid_error_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Go to terminal error state if we get here.
+ default: begin
+ fsm_state_d = InvalidSt;
+ state_invalid_error_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase
+
+ // SEC_CM: MAIN.FSM.GLOBAL_ESC
+ if (esc_scrap_state0_i || esc_scrap_state1_i) begin
+ fsm_state_d = EscalateSt;
+ // SEC_CM: MAIN.FSM.LOCAL_ESC
+ // If at any time the life cycle state encoding or any other FSM state within this module
+ // is not valid, we jump into the terminal error state right away.
+ // Note that state_invalid_error is a multibit error signal
+ // with different error sources - need to reduce this to one bit here.
+ end else if ((|state_invalid_error | token_if_fsm_err_i) && (fsm_state_q != EscalateSt)) begin
+ fsm_state_d = InvalidSt;
+ state_invalid_error_o = 1'b1;
+ end
+ end
+
+ /////////////////
+ // State Flops //
+ /////////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_fsm_state_regs, fsm_state_d, fsm_state_q, fsm_state_e, ResetSt)
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, caliptra_ss_lc_state_d, caliptra_ss_lc_state_q, caliptra_ss_lc_state_e, LcStScrap)
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_cnt_regs, caliptra_ss_lc_cnt_d, caliptra_ss_lc_cnt_q, caliptra_ss_lc_cnt_e, LcCnt24)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ caliptra_ss_lc_state_valid_q <= 1'b0;
+ end else begin
+ caliptra_ss_lc_state_valid_q <= caliptra_ss_lc_state_valid_d;
+ end
+ end
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ if (SecVolatileRawUnlockEn) begin : gen_strap_delay_regs
+ // The delay on the life cycle signals is 1 sender + 2 receiver domain
+ // cycles. We are delaying this cycle several cycles more than that so
+ // that the life cycle signals have time to propagate (for good measure).
+ localparam int NumStrapDelayRegs = 10;
+ logic [NumStrapDelayRegs-1:0] strap_en_override_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_volatile_raw_unlock_reg
+ if(!rst_ni) begin
+ strap_en_override_q <= '0;
+ volatile_raw_unlock_success_q <= caliptra_prim_mubi_pkg::MuBi8False;
+ end else begin
+ strap_en_override_q <= {strap_en_override_q[NumStrapDelayRegs-2:0],
+ // This is a set-reg that will stay high until the next reset.
+ set_strap_en_override || strap_en_override_q[0]};
+ volatile_raw_unlock_success_q <= volatile_raw_unlock_success_d;
+ end
+ end
+
+ assign strap_en_override_o = strap_en_override_q[NumStrapDelayRegs-1];
+ end else begin : gen_no_strap_delay_regs
+ // In this case we tie the strap sampling off.
+ logic unused_sigs;
+ assign unused_sigs = ^{set_strap_en_override,
+ volatile_raw_unlock_success_d};
+ assign strap_en_override_o = 1'b0;
+ assign volatile_raw_unlock_success_q = caliptra_prim_mubi_pkg::MuBi8False;
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ ///////////////
+ // Token mux //
+ ///////////////
+
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [3:0] rma_token_valid;
+ caliptra_prim_lc_sync #(
+ .NumCopies(4),
+ .AsyncOn(0),
+ .ResetValueIsOn(0)
+ ) u_caliptra_prim_lc_sync_rma_token_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(rma_token_valid_i),
+ .lc_en_o(rma_token_valid)
+ );
+
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [7:0] test_tokens_valid;
+ caliptra_prim_lc_sync #(
+ .NumCopies(8),
+ .AsyncOn(0),
+ .ResetValueIsOn(0)
+ ) u_caliptra_prim_lc_sync_test_token_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(test_tokens_valid_i),
+ .lc_en_o(test_tokens_valid)
+ );
+
+ // SEC_CM: TOKEN_MUX.CTRL.REDUN
+ // The token mux is split into two halves for which we use separate mux select signals
+ // that have both been generated from separately buffered multibit lifecycle signals.
+ logic [2**TokenIdxWidth-1:0][LcTokenWidth/2-1:0] hashed_tokens_lower, hashed_tokens_upper;
+ // These helper signals are only there to increase readability of the mux code below.
+ logic [LcTokenWidth/2-1:0] test_unlock_token_lower, test_unlock_token_upper;
+ logic [LcTokenWidth/2-1:0] test_exit_token_lower, test_exit_token_upper;
+ logic [LcTokenWidth/2-1:0] rma_token_lower, rma_token_upper;
+ assign {test_unlock_token_lower, test_unlock_token_upper} = test_unlock_token_i;
+ assign {test_exit_token_lower, test_exit_token_upper} = test_exit_token_i;
+ assign {rma_token_lower, rma_token_upper} = rma_token_i;
+
+ // SEC_CM: TOKEN.DIGEST
+ // This indexes the correct token, based on the transition arc.
+ // Note that we always perform a token comparison, even in case of
+ // unconditional transitions. In the case of unconditional tokens
+ // we just pass an all-zero constant through the hashing function.
+ always_comb begin : p_token_assign
+ // Set the invalid token indices to a random netlist constant, rather than all-zero.
+ {hashed_tokens_lower, hashed_tokens_upper} = RndCnstInvalidTokens;
+ // All-zero token for unconditional transitions.
+ {hashed_tokens_lower[ZeroTokenIdx],
+ hashed_tokens_upper[ZeroTokenIdx]} = AllZeroTokenHashed;
+ {hashed_tokens_lower[RawUnlockTokenIdx],
+ hashed_tokens_upper[RawUnlockTokenIdx]} = RndCnstRawUnlockTokenHashed;
+ // This mux has two separate halves, steered with separately buffered life cycle signals.
+ if (caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[0])) begin
+ hashed_tokens_lower[TestUnlockTokenIdx] = test_unlock_token_lower;
+ end
+ if (caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[1])) begin
+ hashed_tokens_upper[TestUnlockTokenIdx] = test_unlock_token_upper;
+ end
+ // This mux has two separate halves, steered with separately buffered life cycle signals.
+ if (caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[2])) begin
+ hashed_tokens_lower[TestExitTokenIdx] = test_exit_token_lower;
+ end
+ if (caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[3])) begin
+ hashed_tokens_upper[TestExitTokenIdx] = test_exit_token_upper;
+ end
+ // This mux has two separate halves, steered with separately buffered life cycle signals.
+ if (caliptra_ss_lc_tx_test_true_strict(rma_token_valid[0])) begin
+ hashed_tokens_lower[RmaTokenIdx] = rma_token_lower;
+ end
+ if (caliptra_ss_lc_tx_test_true_strict(rma_token_valid[1])) begin
+ hashed_tokens_upper[RmaTokenIdx] = rma_token_upper;
+ end
+ end
+
+ // SEC_CM: TOKEN_VALID.MUX.REDUN
+ // The token valid mux is duplicated.
+ logic [TokenIdxWidth-1:0] token_idx0, token_idx1;
+ logic [2**TokenIdxWidth-1:0] hashed_tokens_valid0, hashed_tokens_valid1;
+ always_comb begin : p_token_valid_assign
+ // First mux
+ hashed_tokens_valid0 = '0;
+ hashed_tokens_valid0[ZeroTokenIdx] = 1'b1; // always valid
+ hashed_tokens_valid0[RawUnlockTokenIdx] = 1'b1; // always valid
+ hashed_tokens_valid0[TestUnlockTokenIdx] = caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[4]);
+ hashed_tokens_valid0[TestExitTokenIdx] = caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[5]);
+ hashed_tokens_valid0[RmaTokenIdx] = caliptra_ss_lc_tx_test_true_strict(rma_token_valid[2]);
+ hashed_tokens_valid0[InvalidTokenIdx] = 1'b0; // always invalid
+ // Second mux
+ hashed_tokens_valid1 = '0;
+ hashed_tokens_valid1[ZeroTokenIdx] = 1'b1; // always valid
+ hashed_tokens_valid1[RawUnlockTokenIdx] = 1'b1; // always valid
+ hashed_tokens_valid1[TestUnlockTokenIdx] = caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[6]);
+ hashed_tokens_valid1[TestExitTokenIdx] = caliptra_ss_lc_tx_test_true_strict(test_tokens_valid[7]);
+ hashed_tokens_valid1[RmaTokenIdx] = caliptra_ss_lc_tx_test_true_strict(rma_token_valid[3]);
+ hashed_tokens_valid1[InvalidTokenIdx] = 1'b0; // always invalid
+ end
+
+ // SEC_CM: STATE.CONFIG.SPARSE
+ // The trans_target_i signal comes from the CSR and uses a replication encoding,
+ // hence we can use different indices of the array.
+ assign token_idx0 = (int'(dec_caliptra_ss_lc_state_o[0]) < NumLcStates &&
+ int'(trans_target_i[0]) < NumLcStates) ?
+ TransTokenIdxMatrix[dec_caliptra_ss_lc_state_o[0]][trans_target_i[0]] :
+ InvalidTokenIdx;
+ assign token_idx1 = (int'(dec_caliptra_ss_lc_state_o[1]) < NumLcStates &&
+ int'(trans_target_i[1]) < NumLcStates) ?
+ TransTokenIdxMatrix[dec_caliptra_ss_lc_state_o[1]][trans_target_i[1]] :
+ InvalidTokenIdx;
+ assign hashed_token_mux = {hashed_tokens_lower[token_idx0],
+ hashed_tokens_upper[token_idx1]};
+ assign hashed_token_valid_mux = {hashed_tokens_valid0[token_idx0],
+ hashed_tokens_valid1[token_idx1]};
+
+ // If the indices are inconsistent, we also trigger a transition error.
+ // We do not trigger an alert right away if this happens, since it could
+ // be due to an invalid value programmed to the CSRs.
+ logic trans_invalid_error;
+ assign trans_invalid_error_o = trans_invalid_error || (token_idx0 != token_idx1);
+
+ ////////////////////////////////////////////////////////////////////
+ // Decoding and transition logic for redundantly encoded LC state //
+ ////////////////////////////////////////////////////////////////////
+
+ // This decodes the state into a format that can be exposed in the CSRs,
+ // and flags any errors in the state encoding. Errors will move the
+ // main FSM into INVALID right away.
+ caliptra_ss_lc_ctrl_state_decode u_caliptra_ss_lc_ctrl_state_decode (
+ .caliptra_ss_lc_state_valid_i ( caliptra_ss_lc_state_valid_q ),
+ .caliptra_ss_lc_state_i ( caliptra_ss_lc_state_q ),
+ .caliptra_ss_lc_cnt_i ( caliptra_ss_lc_cnt_q ),
+ .secrets_valid_i,
+ .fsm_state_i ( fsm_state_q ),
+ .dec_caliptra_ss_lc_state_o,
+ .dec_caliptra_ss_lc_id_state_o,
+ .dec_caliptra_ss_lc_cnt_o,
+ .state_invalid_error_o (state_invalid_error)
+ );
+
+ // LC transition checker logic and next state generation.
+ caliptra_ss_lc_ctrl_state_transition #(
+ .SecVolatileRawUnlockEn(SecVolatileRawUnlockEn)
+ ) u_caliptra_ss_lc_ctrl_state_transition (
+ .caliptra_ss_lc_state_i ( caliptra_ss_lc_state_q ),
+ .caliptra_ss_lc_cnt_i ( caliptra_ss_lc_cnt_q ),
+ .dec_caliptra_ss_lc_state_i ( dec_caliptra_ss_lc_state_o ),
+ .fsm_state_i ( fsm_state_q ),
+ .trans_target_i,
+ .volatile_raw_unlock_i,
+ .trans_cmd_i,
+ .next_caliptra_ss_lc_state_o ( next_caliptra_ss_lc_state ),
+ .next_caliptra_ss_lc_cnt_o ( next_caliptra_ss_lc_cnt ),
+ .trans_cnt_oflw_error_o,
+ .trans_invalid_error_o ( trans_invalid_error )
+ );
+
+ // LC signal decoder and broadcasting logic.
+ caliptra_ss_lc_ctrl_signal_decode #(
+ .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ),
+ .RndCnstLcKeymgrDivTestUnlocked( RndCnstLcKeymgrDivTestUnlocked ),
+ .RndCnstLcKeymgrDivDev ( RndCnstLcKeymgrDivDev ),
+ .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ),
+ .RndCnstLcKeymgrDivRma ( RndCnstLcKeymgrDivRma )
+ ) u_caliptra_ss_lc_ctrl_signal_decode (
+ .clk_i,
+ .rst_ni,
+ .caliptra_ss_lc_state_valid_i ( caliptra_ss_lc_state_valid_q ),
+ .caliptra_ss_lc_state_i ( caliptra_ss_lc_state_q ),
+ .secrets_valid_i,
+ .fsm_state_i ( fsm_state_q ),
+ .caliptra_ss_lc_raw_test_rma_o,
+ .caliptra_ss_lc_dft_en_o,
+ .caliptra_ss_lc_nvm_debug_en_o,
+ .caliptra_ss_lc_hw_debug_en_o,
+ .caliptra_ss_lc_cpu_en_o,
+ .caliptra_ss_lc_creator_seed_sw_rw_en_o,
+ .caliptra_ss_lc_owner_seed_sw_rw_en_o,
+ .caliptra_ss_lc_iso_part_sw_rd_en_o,
+ .caliptra_ss_lc_iso_part_sw_wr_en_o,
+ .caliptra_ss_lc_seed_hw_rd_en_o,
+ .caliptra_ss_lc_keymgr_en_o,
+ .caliptra_ss_lc_escalate_en_o,
+ .caliptra_ss_lc_keymgr_div_o
+ );
+
+
+ // Conditional signals set by main FSM.
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_clk_byp_req (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_clk_byp_req),
+ .lc_en_o(caliptra_ss_lc_clk_byp_req_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_flash_rma_req (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_flash_rma_req),
+ .lc_en_o(caliptra_ss_lc_flash_rma_req_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_check_byp_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_check_byp_en),
+ .lc_en_o(caliptra_ss_lc_check_byp_en_o)
+ );
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT(EscStaysOnOnceAsserted_A,
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_escalate_en_o)
+ |=>
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_escalate_en_o))
+
+ `CALIPTRA_ASSERT(ClkBypStaysOnOnceAsserted_A,
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_clk_byp_req_o)
+ |=>
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_clk_byp_req_o))
+
+ `CALIPTRA_ASSERT(FlashRmaStaysOnOnceAsserted_A,
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_flash_rma_req_o)
+ |=>
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_flash_rma_req_o))
+
+ `CALIPTRA_ASSERT(NoClkBypInProdStates_A,
+ caliptra_ss_lc_state_q inside {LcStProd, LcStProdEnd, LcStDev}
+ |=>
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_clk_byp_req_o))
+
+ `CALIPTRA_ASSERT(SecCmCFITerminal0_A,
+ fsm_state_q == PostTransSt
+ |=>
+ fsm_state_q inside {PostTransSt, InvalidSt, EscalateSt})
+
+ `CALIPTRA_ASSERT(SecCmCFITerminal1_A,
+ fsm_state_q == ScrapSt
+ |=>
+ fsm_state_q inside {ScrapSt, InvalidSt, EscalateSt})
+
+ `CALIPTRA_ASSERT(SecCmCFITerminal2_A,
+ fsm_state_q == EscalateSt
+ |=>
+ fsm_state_q == EscalateSt)
+
+ `CALIPTRA_ASSERT(SecCmCFITerminal3_A,
+ fsm_state_q == InvalidSt
+ |=>
+ fsm_state_q inside {InvalidSt, EscalateSt})
+
+ // Check that the FSM is linear and does not contain any loops
+ `CALIPTRA_ASSERT_FPV_LINEAR_FSM(SecCmCFILinear_A, fsm_state_q, fsm_state_e)
+
+endmodule : caliptra_ss_lc_ctrl_fsm
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_keymgr_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_keymgr_pkg.sv
new file mode 100644
index 0000000..13347a2
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_keymgr_pkg.sv
@@ -0,0 +1,278 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// key manager package
+//
+
+package caliptra_ss_lc_ctrl_keymgr_pkg;
+
+ parameter int KeyWidth = 256;
+ parameter int CDIs = 2; // 2 different CDIs, sealing / attestation
+ parameter int CdiWidth = caliptra_prim_util_pkg::vbits(CDIs);
+ parameter int OtbnKeyWidth = 384;
+ parameter int DigestWidth = 128; // uses truncated hash
+ parameter int KmacDataIfWidth = 64; // KMAC interface data width
+ parameter int KeyMgrStages = 3; // Number of key manager stages (creator, ownerInt, owner)
+ parameter int SwBindingWidth = 32 * 1;
+ parameter int SaltWidth = 32 * 1;
+ parameter int Shares = 2; // number of key shares
+ parameter int EdnWidth = 1;
+ parameter int KeyVersionWidth = 32; // Key version length for individual DICE stage
+
+ // These should be defined in another module's package
+ parameter int HealthStateWidth = 128;
+ parameter int DevIdWidth = 256;
+ parameter int MaxWidth = 256;
+
+ // Default seeds
+ // These are generated using random.org byte dumper
+ typedef logic [KeyWidth-1:0] seed_t;
+ parameter seed_t RndCnstRevisionSeedDefault =
+ 256'h3a0a6d73cd50897de4d744bd65ebdb3837ea77087d878651c517c18a5742b2f9;
+ parameter seed_t RndCnstCreatorIdentitySeedDefault =
+ 256'h6d234651d535ebb0dce4d82f503096614355fc7b84595e4f67a866177d421df6;
+ parameter seed_t RndCnstOwnerIntIdentitySeedDefault =
+ 256'hdba98db4fb1413b32fd5a4deac3ce546966a4bc2761235643358c8e76083d382;
+ parameter seed_t RndCnstOwnerIdentitySeedDefault =
+ 256'h8c0a27ef53e0e0bf5f5f5e26a30a0d0db10761ed802c6d2fd22873209976021e;
+ parameter seed_t RndCnstSoftOutputSeedDefault =
+ 256'h99cadb2c2d9b438591d943a89bc64dbb3bc2abc842eeea5faf74d27f7a7c99b6;
+ parameter seed_t RndCnstHardOutputSeedDefault =
+ 256'hd551b351decbb6f687c7f5c845363f12d6411fae812e16b23bc8ae59885a56b1;
+
+ // Target based deriviation seeds
+ // These are used during the generation stages for sideload
+ parameter seed_t RndCnstNoneSeedDefault =
+ 256'h6EECBF9FC3C64230421DA1EAEC48F871070A3582E71AD4059D5D550784E9B9DE;
+ parameter seed_t RndCnstAesSeedDefault =
+ 256'hC1104CD94EBA084FA6438188038006489F3DF38771214AE0BBA65CEB9BC2366F;
+ parameter seed_t RndCnstKmacSeedDefault =
+ 256'h0A5CCCD9627BF6169B3A765D3D6D0CD89DBDCB7B6DF8D3C03746D60A0145D3ED;
+ parameter seed_t RndCnstOtbnSeedDefault =
+ 256'h17B0AF865F8ACDDFC7580C2B7BC3FB33FC9BB5A4B292216C123ACF99A7861F96;
+ parameter seed_t RndCnstCdiDefault =
+ 256'hC69C544D153A692AEEC4A0887BD5255F5C588C63A8BD94479BCFF7432DC55E3B;
+
+ // Default Lfsr configurations
+ // These LFSR parameters have been generated with
+ // $ util/design/gen-lfsr-seed.py --width 64 --seed 691876113 --prefix ""
+ parameter int LfsrWidth = 64;
+ typedef logic [LfsrWidth-1:0] lfsr_seed_t;
+ typedef logic [LfsrWidth-1:0][$clog2(LfsrWidth)-1:0] lfsr_perm_t;
+ parameter lfsr_seed_t RndCnstLfsrSeedDefault = 64'h22d326255bd24320;
+ parameter lfsr_perm_t RndCnstLfsrPermDefault = {
+ 128'h16108c9f9008aa37e5118d1ec1df64a7,
+ 256'h24f3f1b73537f42d38383ee8f897286df81d49ab54b6bbbb666cbd1a16c41252
+ };
+
+ // Random permutation
+ parameter int RandWidth = LfsrWidth / 2;
+ typedef logic [RandWidth-1:0][$clog2(RandWidth)-1:0] rand_perm_t;
+ parameter rand_perm_t RndCnstRandPermDefault = {
+ 160'h62089181d2a6be2ce145e2e27099ededbd7dceb0
+ };
+
+ // Width calculations
+ // These are the largest calculations in use across all stages
+ parameter int AdvDataWidth = SwBindingWidth + 2*KeyWidth + DevIdWidth + HealthStateWidth;
+ parameter int IdDataWidth = KeyWidth;
+ // key version + salt + key ID + constant
+ parameter int GenDataWidth = 32 + SaltWidth + KeyWidth*2;
+ parameter int StageWidth = $clog2(KeyMgrStages);
+ // Max Payload Width to derivation function
+ // see security strength description https://keccak.team/keccak.html
+ // The max width here is chosen arbitrarily to ensure we do not get out of hand.
+ // Since KMAC is a MAC operation, the data can be as long as we need.
+ parameter int KDFMaxWidth = 1984;
+
+ // Enumeration for operations
+ typedef enum logic [1:0] {
+ Creator,
+ OwnerInt,
+ Owner,
+ Disable
+ } keymgr_stage_e;
+
+ // Enumeration for sideload sel
+ typedef enum logic [1:0] {
+ None,
+ Aes,
+ Kmac,
+ Otbn
+ } keymgr_key_dest_e;
+
+ // Enumeration for actual key slot idx
+ typedef enum logic [1:0] {
+ AesIdx,
+ KmacIdx,
+ OtbnIdx,
+ LastIdx
+ } keymgr_sideload_slot_idx_e;
+
+ // Enumeration for key select
+ typedef enum logic {
+ HwKey = 0,
+ SwKey = 1
+ } keymgr_gen_out_e;
+
+ // Enumeration for operation
+ typedef enum logic [2:0] {
+ OpAdvance = 0,
+ OpGenId = 1,
+ OpGenSwOut = 2,
+ OpGenHwOut = 3,
+ OpDisable = 4
+ } keymgr_ops_e;
+
+ // Enumeration for working state exposed to software
+ typedef enum logic [2:0] {
+ StReset,
+ StInit,
+ StCreatorRootKey,
+ StOwnerIntKey,
+ StOwnerKey,
+ StDisabled,
+ StInvalid
+ } keymgr_working_state_e;
+
+ // Enumeration for operation status
+ typedef enum logic [1:0] {
+ OpIdle = 0,
+ OpWip = 1,
+ OpDoneSuccess = 2,
+ OpDoneFail = 3
+ } keymgr_op_status_e;
+
+ // keymgr has 4 categories of errors
+ // sync errors - recoverable errors that happen during keymgr operation
+ // async errors - recoverable errors that happen asynchronously
+ // sync faults - fatal errors that happen during keymgr operation
+ // async faults - fatal errors that happen asynchronously
+
+ typedef enum logic [1:0] {
+ SyncErrInvalidOp,
+ SyncErrInvalidIn,
+ SyncErrLastIdx
+ } keymgr_sync_error_e;
+
+ typedef enum logic [1:0] {
+ AsyncErrShadowUpdate,
+ AsyncErrLastIdx
+ } keymgr_async_error_e;
+
+ typedef enum logic [1:0] {
+ SyncFaultKmacOp,
+ SyncFaultKmacOut,
+ SyncFaultSideSel,
+ SyncFaultLastIdx
+ } keymgr_sync_fault_e;
+
+ typedef enum logic [3:0] {
+ AsyncFaultKmacCmd,
+ AsyncFaultKmacFsm,
+ AsyncFaultKmacDone,
+ AsyncFaultRegIntg,
+ AsyncFaultShadow,
+ AsyncFaultFsmIntg,
+ AsyncFaultFsmChk,
+ AsyncFaultCntErr,
+ AsyncFaultRCntErr,
+ AsyncFaultSideErr,
+ AsyncFaultKeyEcc,
+ AsyncFaultLastIdx
+ } keymgr_async_fault_e;
+
+
+ // Bit position of error code
+ // Error is encoded as 1 error per bit
+ typedef enum logic [2:0] {
+ ErrInvalidOp,
+ ErrInvalidIn,
+ ErrShadowUpdate,
+ ErrLastPos
+ } keymgr_err_pos_e;
+
+ // Bit position of fault status
+ typedef enum logic [3:0] {
+ FaultKmacCmd,
+ FaultKmacFsm,
+ FaultKmacDone,
+ FaultKmacOp,
+ FaultKmacOut,
+ FaultRegIntg,
+ FaultShadow,
+ FaultCtrlFsm,
+ FaultCtrlFsmChk,
+ FaultCtrlCnt,
+ FaultReseedCnt,
+ FaultSideFsm,
+ FaultSideSel,
+ FaultKeyEcc,
+ FaultLastPos
+ } keymgr_fault_pos_e;
+
+ typedef enum logic [2:0] {
+ KeyUpdateIdle,
+ KeyUpdateRandom,
+ KeyUpdateRoot,
+ KeyUpdateKmac,
+ KeyUpdateWipe
+ } keymgr_key_update_e;
+
+ typedef enum logic [2:0] {
+ SideLoadClrIdle,
+ SideLoadClrAes,
+ SideLoadClrKmac,
+ SideLoadClrOtbn
+ } keymgr_sideload_clr_e;
+
+ // Key connection to various symmetric modules
+ typedef struct packed {
+ logic valid;
+ logic [Shares-1:0][KeyWidth-1:0] key;
+ } hw_key_req_t;
+
+ // Key connection to otbn
+ typedef struct packed {
+ logic valid;
+ logic [Shares-1:0][OtbnKeyWidth-1:0] key;
+ } otbn_key_req_t;
+
+ parameter hw_key_req_t HW_KEY_REQ_DEFAULT = '{
+ valid: 1'b0,
+ key: {Shares{KeyWidth'(32'hDEADBEEF)}}
+ };
+
+ parameter otbn_key_req_t OTBN_KEY_REQ_DEFAULT = '{
+ valid: 1'b0,
+ key: {Shares{OtbnKeyWidth'(32'hDEADBEEF)}}
+ };
+
+ // The following structs should be sourced from other modules
+ // defined here temporarily
+
+ // lc keymgr enable usage
+ typedef enum logic [1:0] {
+ KeyMgrEnCtrl,
+ KeyMgrEnCfgEn,
+ KeyMgrEnSwBindingEn,
+ KeyMgrEnLast
+ } keymgr_caliptra_ss_lc_en_usage_e;
+
+ // perm_data
+ function automatic logic[RandWidth-1:0] perm_data (logic [RandWidth-1:0] data,
+ rand_perm_t perm_sel);
+
+ for (int k = 0; k < 32; k++) begin : gen_data_loop
+ perm_data[k] = data[perm_sel[k]];
+ end
+
+ endfunction
+
+ // checks for all 0's or all 1's of value
+ function automatic logic valid_data_chk (logic [KeyWidth-1:0] value);
+ return |value & ~&value;
+ endfunction
+
+endpackage : caliptra_ss_lc_ctrl_keymgr_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_kmac_if.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_kmac_if.sv
new file mode 100644
index 0000000..711519c
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_kmac_if.sv
@@ -0,0 +1,213 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Synchronization interface between LC FSM and KMAC.
+//
+
+`include "caliptra_prim_assert.sv"
+
+module caliptra_ss_lc_ctrl_kmac_if
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+(
+ // Life cycle controller clock
+ input clk_i,
+ input rst_ni,
+ // Clock for KMAC interface
+ input clk_kmac_i,
+ input rst_kmac_ni,
+ // Life cycle hashing interface for raw unlock
+ // Synchronized in the life cycle controller.
+ input kmac_pkg::app_rsp_t kmac_data_i,
+ output kmac_pkg::app_req_t kmac_data_o,
+ // Token hashing interface to LC FSM'
+ input caliptra_ss_lc_token_t transition_token_i,
+ input token_hash_req_i,
+ // Used for gating assertions inside CDC caliptra_primitives.
+ input token_hash_req_chk_i,
+ output logic token_hash_ack_o,
+ output logic token_hash_err_o,
+ output logic token_if_fsm_err_o,
+ output caliptra_ss_lc_token_t hashed_token_o
+);
+
+ //////////////////////////////////////
+ // Data and Handshake Synchronizers //
+ //////////////////////////////////////
+
+
+ // The transition_token_i register is guaranteed to remain stable once a life cycle
+ // transition has been initiated.
+ // Hence no further synchronization registers are required on the outgoing data.
+ caliptra_ss_lc_token_t kmac_transition_token;
+ assign kmac_transition_token = transition_token_i;
+
+ // SRC domain cannot change data while waiting for ACK.
+ `CALIPTRA_ASSERT(DataStable_A, token_hash_req_i && !token_hash_ack_o |-> $stable(transition_token_i))
+
+ // Second synchronizer instance for handshake and return data synchronization.
+ logic kmac_req, kmac_ack;
+ logic token_hash_req;
+ logic token_hash_ack_d, token_hash_ack_q;
+ logic token_hash_err_q, token_hash_err_d;
+ caliptra_ss_lc_token_t hashed_token_q, hashed_token_d;
+ caliptra_prim_sync_reqack_data #(
+ // Token + Error bit
+ .Width (LcTokenWidth + 1),
+ .DataSrc2Dst(1'b0),
+ // This instantiates a data register
+ // on the destination side.
+ .DataReg (1'b1)
+ ) u_caliptra_prim_sync_reqack_data_in (
+ .clk_src_i ( clk_i ),
+ .rst_src_ni ( rst_ni ),
+ .clk_dst_i ( clk_kmac_i ),
+ .rst_dst_ni ( rst_kmac_ni ),
+ .req_chk_i ( token_hash_req_chk_i ),
+ .src_req_i ( token_hash_req ),
+ .src_ack_o ( token_hash_ack_d ),
+ .dst_req_o ( kmac_req ),
+ .dst_ack_i ( kmac_ack ),
+ // Truncate hash to 128bit and remove masking (not required here).
+ .data_i ( {kmac_data_i.error,
+ kmac_data_i.digest_share0[LcTokenWidth-1:0] ^
+ kmac_data_i.digest_share1[LcTokenWidth-1:0]} ),
+ .data_o ( {token_hash_err_d,
+ hashed_token_d} )
+ );
+
+ logic unused_sigs;
+ assign unused_sigs = ^{
+ kmac_data_i.digest_share0[LcTokenWidth +: (kmac_pkg::AppDigestW - LcTokenWidth)],
+ kmac_data_i.digest_share1[LcTokenWidth +: (kmac_pkg::AppDigestW - LcTokenWidth)]
+ };
+
+ // Hashed Token Register Running on LC Clock
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_caliptra_ss_lc_regs
+ if (!rst_ni) begin
+ token_hash_ack_q <= 1'b0;
+ token_hash_err_q <= 1'b0;
+ hashed_token_q <= {LcTokenWidth{1'b1}};
+ end else begin
+ token_hash_ack_q <= token_hash_ack_d;
+ // Latch synchronized token and error bit
+ if (token_hash_req_i && token_hash_ack_d) begin
+ token_hash_err_q <= token_hash_err_d;
+ hashed_token_q <= hashed_token_d;
+ end
+ end
+ end
+
+ assign token_hash_ack_o = token_hash_ack_q;
+ assign token_hash_err_o = token_hash_err_q;
+ assign hashed_token_o = hashed_token_q;
+
+ // Stop requesting tokens upon latching on LC side.
+ assign token_hash_req = token_hash_req_i & ~token_hash_ack_q;
+
+ // Need to synchronize this error signal separately.
+ logic kmac_fsm_err_d, kmac_fsm_err_q;
+ caliptra_prim_flop_2sync #(
+ .Width(1),
+ .ResetValue(0)
+ ) u_caliptra_prim_flop_2sync (
+ .clk_i,
+ .rst_ni,
+ .d_i(kmac_fsm_err_q),
+ .q_o(token_if_fsm_err_o)
+ );
+
+ /////////////////////////////////////////////
+ // Serialization FSM Running on KMAC Clock //
+ /////////////////////////////////////////////
+
+ // SEC_CM: KMAC.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 4 -n 8 \
+ // -s 3343913945 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (66.67%)
+ // 6: |||||||||| (33.33%)
+ // 7: --
+ // 8: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 6
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 6
+ //
+ localparam int StateWidth = 8;
+ typedef enum logic [StateWidth-1:0] {
+ FirstSt = 8'b01011011,
+ SecondSt = 8'b10010100,
+ WaitSt = 8'b11100111,
+ DoneSt = 8'b00101000
+ } state_e;
+
+ state_e state_d, state_q;
+
+ // Serialize the 128bit token into two 64bit beats.
+ always_comb begin : p_kmac
+ state_d = state_q;
+ kmac_data_o = '0;
+ kmac_ack = 1'b0;
+ kmac_fsm_err_d = 1'b0;
+
+ unique case (state_q)
+ // Wait for request and transfer first half of
+ // LC token.
+ FirstSt: begin
+ if (kmac_req) begin
+ kmac_data_o.valid = 1'b1;
+ kmac_data_o.strb = 8'hFF;
+ kmac_data_o.data = kmac_transition_token[0 +: 64];
+ if (kmac_data_i.ready) begin
+ state_d = SecondSt;
+ end
+ end
+ end
+ // Transfer second half of LC token.
+ SecondSt: begin
+ kmac_data_o.valid = 1'b1;
+ kmac_data_o.strb = 8'hFF;
+ kmac_data_o.last = 1'b1;
+ kmac_data_o.data = kmac_transition_token[64 +: 64];
+ if (kmac_data_i.ready) begin
+ state_d = WaitSt;
+ end
+ end
+ // Wait for hashed token response and go to terminal state.
+ WaitSt: begin
+ if (kmac_data_i.done) begin
+ kmac_ack = 1'b1;
+ state_d = DoneSt;
+ end
+ end
+ // Terminal state (by design we can only perform
+ // one token hashing operation per reset cycle).
+ DoneSt: ;
+ default: begin
+ kmac_fsm_err_d = 1'b1;
+ end
+ endcase // state_q
+ end
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, FirstSt, clk_kmac_i, rst_kmac_ni)
+
+ always_ff @(posedge clk_kmac_i or negedge rst_kmac_ni) begin : p_kmac_fsm_err
+ if (!rst_kmac_ni) begin
+ kmac_fsm_err_q <= 1'b0;
+ end else begin
+ kmac_fsm_err_q <= kmac_fsm_err_d;
+ end
+ end
+
+endmodule : caliptra_ss_lc_ctrl_kmac_if
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_pkg.sv
new file mode 100644
index 0000000..02eb54c
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_pkg.sv
@@ -0,0 +1,365 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+
+`include "caliptra_prim_assert.sv"
+
+package caliptra_ss_lc_ctrl_pkg;
+
+ import caliptra_prim_util_pkg::vbits;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+
+ ///////////////////////////////////////
+ // Netlist Constants (Hashed Tokens) //
+ ///////////////////////////////////////
+
+ parameter int NumTokens = 6;
+ parameter int TokenIdxWidth = vbits(NumTokens);
+ typedef enum logic [TokenIdxWidth-1:0] {
+ // This is the index for the hashed all-zero constant.
+ // All unconditional transitions use this token.
+ ZeroTokenIdx = 3'h0,
+ RawUnlockTokenIdx = 3'h1,
+ TestUnlockTokenIdx = 3'h2,
+ TestExitTokenIdx = 3'h3,
+ RmaTokenIdx = 3'h4,
+ // This is the index for an all-zero value (i.e., hashed value = '0).
+ // This is used as an additional blocker for some invalid state transition edges.
+ InvalidTokenIdx = 3'h5
+ } token_idx_e;
+
+ parameter int TokenMuxBits = 2**TokenIdxWidth*LcTokenWidth;
+ typedef logic [TokenMuxBits-1:0] caliptra_ss_lc_token_mux_t;
+
+ ////////////////////////////////
+ // Typedefs for LC Interfaces //
+ ////////////////////////////////
+
+ parameter int TxWidth = 4;
+
+ // Note that changing this encoding has implications on isolation cell
+ // values in RTL. Do not change this unless absolutely needed.
+ typedef enum logic [TxWidth-1:0] {
+ On = 4'b0101,
+ Off = 4'b1010
+ } caliptra_ss_lc_tx_t;
+
+ parameter caliptra_ss_lc_tx_t LC_TX_DEFAULT = caliptra_ss_lc_tx_t'(Off);
+
+ parameter int RmaSeedWidth = 32;
+ typedef logic [RmaSeedWidth-1:0] caliptra_ss_lc_flash_rma_seed_t;
+ parameter caliptra_ss_lc_flash_rma_seed_t LC_FLASH_RMA_SEED_DEFAULT = '0;
+
+ parameter int LcKeymgrDivWidth = 128;
+ typedef logic [LcKeymgrDivWidth-1:0] caliptra_ss_lc_keymgr_div_t;
+
+ typedef struct packed {
+ logic [caliptra_ss_lc_ctrl_reg_pkg::SiliconCreatorIdWidth-1:0] silicon_creator_id;
+ logic [caliptra_ss_lc_ctrl_reg_pkg::ProductIdWidth-1:0] product_id;
+ logic [caliptra_ss_lc_ctrl_reg_pkg::RevisionIdWidth-1:0] revision_id;
+ logic [32-caliptra_ss_lc_ctrl_reg_pkg::RevisionIdWidth-1:0] reserved;
+ } caliptra_ss_lc_hw_rev_t;
+
+ /////////////////////////////////////////////
+ // Helper Functions for Life Cycle Signals //
+ /////////////////////////////////////////////
+
+ // This is a prerequisite for the multibit functions below to work.
+ `CALIPTRA_ASSERT_STATIC_IN_PACKAGE(CheckLcTxValsComplementary_A, On == ~Off)
+ // Check for bit-width matching between caliptra_ss_lc_tx_t and mubi4_t
+ `CALIPTRA_ASSERT_STATIC_IN_PACKAGE(LcMuBiWidthCheck_A, $bits(TxWidth) == $bits(caliptra_prim_mubi_pkg::MuBi4Width))
+
+ // Convert a life cycle signal to mubi4
+ // If in the future other versions are desired, this should really be
+ // moved to caliptra_prim_mubi_pkg
+ //
+ // The On ^ MuBi4True determines the bit differences between
+ // an caliptra_ss_lc_ctrl_pkg::On and caliptra_prim_mubi_pkg::MuBi4True.
+ // Once the required inversions are determined, it is then applied
+ // to the incoming value. If the incoming value is true, it will
+ // appropriately flip to the correct MuBiValue.
+ // Since the false value is always complement of the true value,
+ // this mechanism will also work for the other polarity.
+ function automatic caliptra_prim_mubi_pkg::mubi4_t caliptra_ss_lc_to_mubi4(caliptra_ss_lc_tx_t val);
+ return caliptra_prim_mubi_pkg::mubi4_t'(val ^ (On ^ caliptra_prim_mubi_pkg::MuBi4True));
+ endfunction : caliptra_ss_lc_to_mubi4
+
+ function automatic caliptra_ss_lc_tx_t mubi4_to_lc(caliptra_prim_mubi_pkg::mubi4_t val);
+ return caliptra_ss_lc_tx_t'(val ^ (caliptra_prim_mubi_pkg::MuBi4True ^ On));
+ endfunction : mubi4_to_lc
+
+ // same function as above, but for an input that is MuBi4True, return Off
+ // for an input that is MuBi4False, return On
+ function automatic caliptra_ss_lc_tx_t mubi4_to_caliptra_ss_lc_inv(caliptra_prim_mubi_pkg::mubi4_t val);
+ return caliptra_ss_lc_tx_t'(val ^ (caliptra_prim_mubi_pkg::MuBi4True ^ Off));
+ endfunction : mubi4_to_caliptra_ss_lc_inv
+
+ // Test whether the value is supplied is one of the valid enumerations
+ function automatic logic caliptra_ss_lc_tx_test_invalid(caliptra_ss_lc_tx_t val);
+ return ~(val inside {On, Off});
+ endfunction : caliptra_ss_lc_tx_test_invalid
+
+ // Convert a 1 input value to a caliptra_ss_lc_tx output
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_bool_to_caliptra_ss_lc_tx(logic val);
+ return (val ? On : Off);
+ endfunction : caliptra_ss_lc_tx_bool_to_caliptra_ss_lc_tx
+
+ // Test whether the multibit value signals an "enabled" condition.
+ // The strict version of this function requires
+ // the multibit value to equal True.
+ function automatic logic caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_tx_t val);
+ return On == val;
+ endfunction : caliptra_ss_lc_tx_test_true_strict
+
+ // Test whether the multibit value signals a "disabled" condition.
+ // The strict version of this function requires
+ // the multibit value to equal False.
+ function automatic logic caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_tx_t val);
+ return Off == val;
+ endfunction : caliptra_ss_lc_tx_test_false_strict
+
+ // Test whether the multibit value signals an "enabled" condition.
+ // The loose version of this function interprets all
+ // values other than False as "enabled".
+ function automatic logic caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_tx_t val);
+ return Off != val;
+ endfunction : caliptra_ss_lc_tx_test_true_loose
+
+ // Test whether the multibit value signals a "disabled" condition.
+ // The loose version of this function interprets all
+ // values other than True as "disabled".
+ function automatic logic caliptra_ss_lc_tx_test_false_loose(caliptra_ss_lc_tx_t val);
+ return On != val;
+ endfunction : caliptra_ss_lc_tx_test_false_loose
+
+
+ // Performs a logical OR operation between two multibit values.
+ // This treats "act" as logical 1, and all other values are
+ // treated as 0. Truth table:
+ //
+ // A | B | OUT
+ //------+------+-----
+ // !act | !act | !act
+ // act | !act | act
+ // !act | act | act
+ // act | act | act
+ //
+ // Note: due to the nature of the caliptra_ss_lc_tx_or() function, it is possible that two
+ // non-strictly "act" values may produce a strictly "act" value. If this is
+ // of concern, e.g. if the output is consumed with a strict check on "act",
+ // consider using the caliptra_prim_caliptra_ss_lc_or_hardened caliptra_primitive instead.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_or(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b, caliptra_ss_lc_tx_t act);
+ logic [TxWidth-1:0] a_in, b_in, act_in, out;
+ a_in = a;
+ b_in = b;
+ act_in = act;
+ for (int k = 0; k < TxWidth; k++) begin
+ if (act_in[k]) begin
+ out[k] = a_in[k] || b_in[k];
+ end else begin
+ out[k] = a_in[k] && b_in[k];
+ end
+ end
+ return caliptra_ss_lc_tx_t'(out);
+ endfunction : caliptra_ss_lc_tx_or
+
+ // Performs a logical AND operation between two multibit values.
+ // This treats "act" as logical 1, and all other values are
+ // treated as 0. Truth table:
+ //
+ // A | B | OUT
+ //------+------+-----
+ // !act | !act | !act
+ // act | !act | !act
+ // !act | act | !act
+ // act | act | act
+ //
+ // Noite: The caliptra_ss_lc_tx_and() function does not suffer from the strictness problem
+ // that the caliptra_ss_lc_tx_or function above does, since only one output value in the
+ // truth table is strictly "act". It can hence be used in most scenarios without issues.
+ // If however the caliptra_ss_lc_tx_and() function should be strictly rectifying (i.e., only
+ // output "act" or ~"act"), the caliptra_prim_caliptra_ss_lc_and_hardened can be used.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_and(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b, caliptra_ss_lc_tx_t act);
+ logic [TxWidth-1:0] a_in, b_in, act_in, out;
+ a_in = a;
+ b_in = b;
+ act_in = act;
+ for (int k = 0; k < TxWidth; k++) begin
+ if (act_in[k]) begin
+ out[k] = a_in[k] && b_in[k];
+ end else begin
+ out[k] = a_in[k] || b_in[k];
+ end
+ end
+ return caliptra_ss_lc_tx_t'(out);
+ endfunction : caliptra_ss_lc_tx_and
+
+ // Performs a logical OR operation between two multibit values.
+ // This treats "True" as logical 1, and all other values are
+ // treated as 0.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_or_hi(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b);
+ return caliptra_ss_lc_tx_or(a, b, On);
+ endfunction : caliptra_ss_lc_tx_or_hi
+
+ // Performs a logical AND operation between two multibit values.
+ // This treats "True" as logical 1, and all other values are
+ // treated as 0.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_and_hi(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b);
+ return caliptra_ss_lc_tx_and(a, b, On);
+ endfunction : caliptra_ss_lc_tx_and_hi
+
+ // Performs a logical OR operation between two multibit values.
+ // This treats "False" as logical 1, and all other values are
+ // treated as 0.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_or_lo(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b);
+ return caliptra_ss_lc_tx_or(a, b, Off);
+ endfunction : caliptra_ss_lc_tx_or_lo
+
+ // Performs a logical AND operation between two multibit values.
+ // Tlos treats "False" as logical 1, and all other values are
+ // treated as 0.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_and_lo(caliptra_ss_lc_tx_t a, caliptra_ss_lc_tx_t b);
+ return caliptra_ss_lc_tx_and(a, b, Off);
+ endfunction : caliptra_ss_lc_tx_and_lo
+
+ // Inverts the logical meaning of the multibit value.
+ function automatic caliptra_ss_lc_tx_t caliptra_ss_lc_tx_inv(caliptra_ss_lc_tx_t a);
+ return caliptra_ss_lc_tx_t'(~TxWidth'(a));
+ endfunction : caliptra_ss_lc_tx_inv
+
+ ////////////////////
+ // Main FSM State //
+ ////////////////////
+
+ // SEC_CM: MAIN.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 15 -n 16 \
+ // -s 2934212379 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: ||||||| (7.62%)
+ // 6: ||||||||| (9.52%)
+ // 7: |||||||||||||||| (17.14%)
+ // 8: |||||||||||||||||||| (20.95%)
+ // 9: ||||||||||||||||| (18.10%)
+ // 10: ||||||||||||| (14.29%)
+ // 11: |||||| (6.67%)
+ // 12: ||| (3.81%)
+ // 13: | (1.90%)
+ // 14: --
+ // 15: --
+ // 16: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 13
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 11
+ //
+ localparam int FsmStateWidth = 16;
+ typedef enum logic [FsmStateWidth-1:0] {
+ ResetSt = 16'b1111011010111100,
+ IdleSt = 16'b0000011110101101,
+ ClkMuxSt = 16'b1100111011001001,
+ CntIncrSt = 16'b0011001111000111,
+ CntProgSt = 16'b0000110001010100,
+ TransCheckSt = 16'b0110111010110000,
+ TokenHashSt = 16'b1101001000111111,
+ FlashRmaSt = 16'b1110100010001111,
+ TokenCheck0St = 16'b0010000011000000,
+ TokenCheck1St = 16'b1101010101101111,
+ TransProgSt = 16'b1000000110101011,
+ PostTransSt = 16'b0110110100101100,
+ ScrapSt = 16'b1010100001010001,
+ EscalateSt = 16'b1011110110011011,
+ InvalidSt = 16'b0011000101001100
+ } fsm_state_e;
+
+ ///////////////////////////////////////////
+ // Manufacturing State Transition Matrix //
+ ///////////////////////////////////////////
+
+ // Helper macro to assemble the token index matrix below.
+ // From TEST_UNLOCKED(N)
+ // -> SCRAP, RMA
+ // -> PROD, PROD_END, DEV
+ // -> TEST_UNLOCKED(N+1)-7
+ // -> TEST_LOCKED(N)-6
+ // -> TEST_UNLOCKED0-(N), RAW
+ `define TEST_UNLOCKED(idx) \
+ {2{ZeroTokenIdx}}, \
+ {3{TestExitTokenIdx}}, \
+ {(7-idx){InvalidTokenIdx, \
+ ZeroTokenIdx}}, \
+ {(2*idx+2){InvalidTokenIdx}}
+
+ // Helper macro to assemble the token index matrix below.
+ // From TEST_LOCKED(N)
+ // -> SCRAP
+ // -> RMA
+ // -> PROD, PROD_END, DEV
+ // -> TEST_UNLOCKED(N+1)-7
+ // -> TEST_LOCKED(N)-6
+ // -> TEST_UNLOCKED0-(N), RAW
+ `define TEST_LOCKED(idx) \
+ ZeroTokenIdx, \
+ InvalidTokenIdx, \
+ {3{TestExitTokenIdx}}, \
+ {(7-idx){TestUnlockTokenIdx, \
+ InvalidTokenIdx}}, \
+ {(2*idx+2){InvalidTokenIdx}}
+
+ // The token index matrix below encodes 1) which transition edges are valid and 2) which token
+ // to use for a given transition edge. Note that unconditional but otherwise valid transitions
+ // are assigned the ZeroTokenIdx, whereas invalid transitions are assigned an InvalidTokenIdx.
+ parameter token_idx_e [NumLcStates-1:0][NumLcStates-1:0] TransTokenIdxMatrix = {
+ // SCRAP
+ {21{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA, SCRAP
+ // RMA
+ ZeroTokenIdx, // -> SCRAP
+ {20{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA
+ // PROD_END
+ ZeroTokenIdx, // -> SCRAP
+ {20{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END, RMA
+ // PROD
+ ZeroTokenIdx, // -> SCRAP
+ RmaTokenIdx, // -> RMA
+ {19{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END
+ // DEV
+ ZeroTokenIdx, // -> SCRAP
+ RmaTokenIdx, // -> RMA
+ {19{InvalidTokenIdx}}, // -> TEST_LOCKED0-6, TEST_UNLOCKED0-7, DEV, PROD, PROD_END
+ // TEST_UNLOCKED0-7, TEST_LOCKED0-6
+ `TEST_UNLOCKED(7),
+ `TEST_LOCKED(6),
+ `TEST_UNLOCKED(6),
+ `TEST_LOCKED(5),
+ `TEST_UNLOCKED(5),
+ `TEST_LOCKED(4),
+ `TEST_UNLOCKED(4),
+ `TEST_LOCKED(3),
+ `TEST_UNLOCKED(3),
+ `TEST_LOCKED(2),
+ `TEST_UNLOCKED(2),
+ `TEST_LOCKED(1),
+ `TEST_UNLOCKED(1),
+ `TEST_LOCKED(0),
+ `TEST_UNLOCKED(0),
+ // RAW
+ ZeroTokenIdx, // -> SCRAP
+ {4{InvalidTokenIdx}}, // -> RMA, PROD, PROD_END, DEV
+ {8{RawUnlockTokenIdx, // -> TEST_UNLOCKED0-7
+ InvalidTokenIdx}} // -> RAW, TEST_LOCKED0-6
+ };
+
+ // These macros are only used locally.
+ `undef TEST_LOCKED
+ `undef TEST_UNLOCKED
+
+endpackage : caliptra_ss_lc_ctrl_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv
new file mode 100644
index 0000000..33589cd
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_reg_pkg.sv
@@ -0,0 +1,385 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Package auto-generated by `reggen` containing data structure
+
+package caliptra_ss_lc_ctrl_reg_pkg;
+
+ // Param list
+ parameter int SiliconCreatorIdWidth = 16;
+ parameter int ProductIdWidth = 16;
+ parameter int RevisionIdWidth = 8;
+ parameter int NumTokenWords = 4;
+ parameter int CsrLcStateWidth = 30;
+ parameter int CsrLcCountWidth = 5;
+ parameter int CsrLcIdStateWidth = 32;
+ parameter int CsrOtpTestCtrlWidth = 32;
+ parameter int CsrOtpTestStatusWidth = 32;
+ parameter int NumDeviceIdWords = 8;
+ parameter int NumManufStateWords = 8;
+ parameter int NumRmaAckSigs = 2;
+ parameter int NumAlerts = 3;
+
+ // Address widths within the block
+ parameter int RegsAw = 8;
+ parameter int DmiAw = 12;
+
+ ///////////////////////////////////////////////
+ // Typedefs for registers for regs interface //
+ ///////////////////////////////////////////////
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_bus_integ_error;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_state_error;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_prog_error;
+ } caliptra_ss_lc_ctrl_reg2hw_alert_test_reg_t;
+
+ typedef struct packed {
+ logic [7:0] q;
+ logic qe;
+ } caliptra_ss_lc_ctrl_reg2hw_claim_transition_if_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } caliptra_ss_lc_ctrl_reg2hw_transition_cmd_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } volatile_raw_unlock;
+ struct packed {
+ logic q;
+ logic qe;
+ } ext_clock_en;
+ } caliptra_ss_lc_ctrl_reg2hw_transition_ctrl_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } caliptra_ss_lc_ctrl_reg2hw_transition_token_mreg_t;
+
+ typedef struct packed {
+ logic [29:0] q;
+ logic qe;
+ } caliptra_ss_lc_ctrl_reg2hw_transition_target_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } caliptra_ss_lc_ctrl_reg2hw_otp_vendor_test_ctrl_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ } initialized;
+ struct packed {
+ logic d;
+ } ready;
+ struct packed {
+ logic d;
+ } ext_clock_switched;
+ struct packed {
+ logic d;
+ } transition_successful;
+ struct packed {
+ logic d;
+ } transition_count_error;
+ struct packed {
+ logic d;
+ } transition_error;
+ struct packed {
+ logic d;
+ } token_error;
+ struct packed {
+ logic d;
+ } flash_rma_error;
+ struct packed {
+ logic d;
+ } otp_error;
+ struct packed {
+ logic d;
+ } state_error;
+ struct packed {
+ logic d;
+ } bus_integ_error;
+ struct packed {
+ logic d;
+ } otp_partition_error;
+ } caliptra_ss_lc_ctrl_hw2reg_status_reg_t;
+
+ typedef struct packed {
+ logic [7:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_claim_transition_if_reg_t;
+
+ typedef struct packed {
+ logic d;
+ } caliptra_ss_lc_ctrl_hw2reg_transition_regwen_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ } ext_clock_en;
+ struct packed {
+ logic d;
+ } volatile_raw_unlock;
+ } caliptra_ss_lc_ctrl_hw2reg_transition_ctrl_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_transition_token_mreg_t;
+
+ typedef struct packed {
+ logic [29:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_transition_target_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_otp_vendor_test_ctrl_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_otp_vendor_test_status_reg_t;
+
+ typedef struct packed {
+ logic [29:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_state_reg_t;
+
+ typedef struct packed {
+ logic [4:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_transition_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_id_state_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [15:0] d;
+ } product_id;
+ struct packed {
+ logic [15:0] d;
+ } silicon_creator_id;
+ } caliptra_ss_lc_ctrl_hw2reg_hw_revision0_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [7:0] d;
+ } revision_id;
+ struct packed {
+ logic [23:0] d;
+ } reserved;
+ } caliptra_ss_lc_ctrl_hw2reg_hw_revision1_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_device_id_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } caliptra_ss_lc_ctrl_hw2reg_manuf_state_mreg_t;
+
+ // Register -> HW type for regs interface
+ typedef struct packed {
+ caliptra_ss_lc_ctrl_reg2hw_alert_test_reg_t alert_test; // [216:211]
+ caliptra_ss_lc_ctrl_reg2hw_claim_transition_if_reg_t claim_transition_if; // [210:202]
+ caliptra_ss_lc_ctrl_reg2hw_transition_cmd_reg_t transition_cmd; // [201:200]
+ caliptra_ss_lc_ctrl_reg2hw_transition_ctrl_reg_t transition_ctrl; // [199:196]
+ caliptra_ss_lc_ctrl_reg2hw_transition_token_mreg_t [3:0] transition_token; // [195:64]
+ caliptra_ss_lc_ctrl_reg2hw_transition_target_reg_t transition_target; // [63:33]
+ caliptra_ss_lc_ctrl_reg2hw_otp_vendor_test_ctrl_reg_t otp_vendor_test_ctrl; // [32:0]
+ } caliptra_ss_lc_ctrl_regs_reg2hw_t;
+
+ // HW -> register type for regs interface
+ typedef struct packed {
+ caliptra_ss_lc_ctrl_hw2reg_status_reg_t status; // [887:876]
+ caliptra_ss_lc_ctrl_hw2reg_claim_transition_if_reg_t claim_transition_if; // [875:868]
+ caliptra_ss_lc_ctrl_hw2reg_transition_regwen_reg_t transition_regwen; // [867:867]
+ caliptra_ss_lc_ctrl_hw2reg_transition_ctrl_reg_t transition_ctrl; // [866:865]
+ caliptra_ss_lc_ctrl_hw2reg_transition_token_mreg_t [3:0] transition_token; // [864:737]
+ caliptra_ss_lc_ctrl_hw2reg_transition_target_reg_t transition_target; // [736:707]
+ caliptra_ss_lc_ctrl_hw2reg_otp_vendor_test_ctrl_reg_t otp_vendor_test_ctrl; // [706:675]
+ caliptra_ss_lc_ctrl_hw2reg_otp_vendor_test_status_reg_t otp_vendor_test_status; // [674:643]
+ caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_state_reg_t caliptra_ss_lc_state; // [642:613]
+ caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_transition_cnt_reg_t caliptra_ss_lc_transition_cnt; // [612:608]
+ caliptra_ss_lc_ctrl_hw2reg_caliptra_ss_lc_id_state_reg_t caliptra_ss_lc_id_state; // [607:576]
+ caliptra_ss_lc_ctrl_hw2reg_hw_revision0_reg_t hw_revision0; // [575:544]
+ caliptra_ss_lc_ctrl_hw2reg_hw_revision1_reg_t hw_revision1; // [543:512]
+ caliptra_ss_lc_ctrl_hw2reg_device_id_mreg_t [7:0] device_id; // [511:256]
+ caliptra_ss_lc_ctrl_hw2reg_manuf_state_mreg_t [7:0] manuf_state; // [255:0]
+ } caliptra_ss_lc_ctrl_regs_hw2reg_t;
+
+ // Register offsets for regs interface
+ parameter logic [RegsAw-1:0] LC_CTRL_ALERT_TEST_OFFSET = 8'h 0;
+ parameter logic [RegsAw-1:0] LC_CTRL_STATUS_OFFSET = 8'h 4;
+ parameter logic [RegsAw-1:0] LC_CTRL_CLAIM_TRANSITION_IF_REGWEN_OFFSET = 8'h 8;
+ parameter logic [RegsAw-1:0] LC_CTRL_CLAIM_TRANSITION_IF_OFFSET = 8'h c;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_REGWEN_OFFSET = 8'h 10;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_CMD_OFFSET = 8'h 14;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_CTRL_OFFSET = 8'h 18;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_TOKEN_0_OFFSET = 8'h 1c;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_TOKEN_1_OFFSET = 8'h 20;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_TOKEN_2_OFFSET = 8'h 24;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_TOKEN_3_OFFSET = 8'h 28;
+ parameter logic [RegsAw-1:0] LC_CTRL_TRANSITION_TARGET_OFFSET = 8'h 2c;
+ parameter logic [RegsAw-1:0] LC_CTRL_OTP_VENDOR_TEST_CTRL_OFFSET = 8'h 30;
+ parameter logic [RegsAw-1:0] LC_CTRL_OTP_VENDOR_TEST_STATUS_OFFSET = 8'h 34;
+ parameter logic [RegsAw-1:0] LC_CTRL_LC_STATE_OFFSET = 8'h 38;
+ parameter logic [RegsAw-1:0] LC_CTRL_LC_TRANSITION_CNT_OFFSET = 8'h 3c;
+ parameter logic [RegsAw-1:0] LC_CTRL_LC_ID_STATE_OFFSET = 8'h 40;
+ parameter logic [RegsAw-1:0] LC_CTRL_HW_REVISION0_OFFSET = 8'h 44;
+ parameter logic [RegsAw-1:0] LC_CTRL_HW_REVISION1_OFFSET = 8'h 48;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_0_OFFSET = 8'h 4c;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_1_OFFSET = 8'h 50;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_2_OFFSET = 8'h 54;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_3_OFFSET = 8'h 58;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_4_OFFSET = 8'h 5c;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_5_OFFSET = 8'h 60;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_6_OFFSET = 8'h 64;
+ parameter logic [RegsAw-1:0] LC_CTRL_DEVICE_ID_7_OFFSET = 8'h 68;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_0_OFFSET = 8'h 6c;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_1_OFFSET = 8'h 70;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_2_OFFSET = 8'h 74;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_3_OFFSET = 8'h 78;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_4_OFFSET = 8'h 7c;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_5_OFFSET = 8'h 80;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_6_OFFSET = 8'h 84;
+ parameter logic [RegsAw-1:0] LC_CTRL_MANUF_STATE_7_OFFSET = 8'h 88;
+
+ // Reset values for hwext registers and their fields for regs interface
+ parameter logic [2:0] LC_CTRL_ALERT_TEST_RESVAL = 3'h 0;
+ parameter logic [0:0] LC_CTRL_ALERT_TEST_FATAL_PROG_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] LC_CTRL_ALERT_TEST_FATAL_STATE_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] LC_CTRL_ALERT_TEST_FATAL_BUS_INTEG_ERROR_RESVAL = 1'h 0;
+ parameter logic [11:0] LC_CTRL_STATUS_RESVAL = 12'h 0;
+ parameter logic [7:0] LC_CTRL_CLAIM_TRANSITION_IF_RESVAL = 8'h 69;
+ parameter logic [7:0] LC_CTRL_CLAIM_TRANSITION_IF_MUTEX_RESVAL = 8'h 69;
+ parameter logic [0:0] LC_CTRL_TRANSITION_REGWEN_RESVAL = 1'h 0;
+ parameter logic [0:0] LC_CTRL_TRANSITION_REGWEN_TRANSITION_REGWEN_RESVAL = 1'h 0;
+ parameter logic [0:0] LC_CTRL_TRANSITION_CMD_RESVAL = 1'h 0;
+ parameter logic [1:0] LC_CTRL_TRANSITION_CTRL_RESVAL = 2'h 0;
+ parameter logic [31:0] LC_CTRL_TRANSITION_TOKEN_0_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_TRANSITION_TOKEN_1_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_TRANSITION_TOKEN_2_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_TRANSITION_TOKEN_3_RESVAL = 32'h 0;
+ parameter logic [29:0] LC_CTRL_TRANSITION_TARGET_RESVAL = 30'h 0;
+ parameter logic [31:0] LC_CTRL_OTP_VENDOR_TEST_CTRL_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_OTP_VENDOR_TEST_STATUS_RESVAL = 32'h 0;
+ parameter logic [29:0] LC_CTRL_LC_STATE_RESVAL = 30'h 0;
+ parameter logic [4:0] LC_CTRL_LC_TRANSITION_CNT_RESVAL = 5'h 0;
+ parameter logic [31:0] LC_CTRL_LC_ID_STATE_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_HW_REVISION0_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_HW_REVISION1_RESVAL = 32'h 0;
+ parameter logic [23:0] LC_CTRL_HW_REVISION1_RESERVED_RESVAL = 24'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_0_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_1_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_2_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_3_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_4_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_5_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_6_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_DEVICE_ID_7_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_0_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_1_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_2_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_3_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_4_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_5_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_6_RESVAL = 32'h 0;
+ parameter logic [31:0] LC_CTRL_MANUF_STATE_7_RESVAL = 32'h 0;
+
+ // Register index for regs interface
+ typedef enum int {
+ LC_CTRL_ALERT_TEST,
+ LC_CTRL_STATUS,
+ LC_CTRL_CLAIM_TRANSITION_IF_REGWEN,
+ LC_CTRL_CLAIM_TRANSITION_IF,
+ LC_CTRL_TRANSITION_REGWEN,
+ LC_CTRL_TRANSITION_CMD,
+ LC_CTRL_TRANSITION_CTRL,
+ LC_CTRL_TRANSITION_TOKEN_0,
+ LC_CTRL_TRANSITION_TOKEN_1,
+ LC_CTRL_TRANSITION_TOKEN_2,
+ LC_CTRL_TRANSITION_TOKEN_3,
+ LC_CTRL_TRANSITION_TARGET,
+ LC_CTRL_OTP_VENDOR_TEST_CTRL,
+ LC_CTRL_OTP_VENDOR_TEST_STATUS,
+ LC_CTRL_LC_STATE,
+ LC_CTRL_LC_TRANSITION_CNT,
+ LC_CTRL_LC_ID_STATE,
+ LC_CTRL_HW_REVISION0,
+ LC_CTRL_HW_REVISION1,
+ LC_CTRL_DEVICE_ID_0,
+ LC_CTRL_DEVICE_ID_1,
+ LC_CTRL_DEVICE_ID_2,
+ LC_CTRL_DEVICE_ID_3,
+ LC_CTRL_DEVICE_ID_4,
+ LC_CTRL_DEVICE_ID_5,
+ LC_CTRL_DEVICE_ID_6,
+ LC_CTRL_DEVICE_ID_7,
+ LC_CTRL_MANUF_STATE_0,
+ LC_CTRL_MANUF_STATE_1,
+ LC_CTRL_MANUF_STATE_2,
+ LC_CTRL_MANUF_STATE_3,
+ LC_CTRL_MANUF_STATE_4,
+ LC_CTRL_MANUF_STATE_5,
+ LC_CTRL_MANUF_STATE_6,
+ LC_CTRL_MANUF_STATE_7
+ } caliptra_ss_lc_ctrl_regs_id_e;
+
+ // Register width information to check illegal writes for regs interface
+ parameter logic [3:0] LC_CTRL_REGS_PERMIT [35] = '{
+ 4'b 0001, // index[ 0] LC_CTRL_ALERT_TEST
+ 4'b 0011, // index[ 1] LC_CTRL_STATUS
+ 4'b 0001, // index[ 2] LC_CTRL_CLAIM_TRANSITION_IF_REGWEN
+ 4'b 0001, // index[ 3] LC_CTRL_CLAIM_TRANSITION_IF
+ 4'b 0001, // index[ 4] LC_CTRL_TRANSITION_REGWEN
+ 4'b 0001, // index[ 5] LC_CTRL_TRANSITION_CMD
+ 4'b 0001, // index[ 6] LC_CTRL_TRANSITION_CTRL
+ 4'b 1111, // index[ 7] LC_CTRL_TRANSITION_TOKEN_0
+ 4'b 1111, // index[ 8] LC_CTRL_TRANSITION_TOKEN_1
+ 4'b 1111, // index[ 9] LC_CTRL_TRANSITION_TOKEN_2
+ 4'b 1111, // index[10] LC_CTRL_TRANSITION_TOKEN_3
+ 4'b 1111, // index[11] LC_CTRL_TRANSITION_TARGET
+ 4'b 1111, // index[12] LC_CTRL_OTP_VENDOR_TEST_CTRL
+ 4'b 1111, // index[13] LC_CTRL_OTP_VENDOR_TEST_STATUS
+ 4'b 1111, // index[14] LC_CTRL_LC_STATE
+ 4'b 0001, // index[15] LC_CTRL_LC_TRANSITION_CNT
+ 4'b 1111, // index[16] LC_CTRL_LC_ID_STATE
+ 4'b 1111, // index[17] LC_CTRL_HW_REVISION0
+ 4'b 1111, // index[18] LC_CTRL_HW_REVISION1
+ 4'b 1111, // index[19] LC_CTRL_DEVICE_ID_0
+ 4'b 1111, // index[20] LC_CTRL_DEVICE_ID_1
+ 4'b 1111, // index[21] LC_CTRL_DEVICE_ID_2
+ 4'b 1111, // index[22] LC_CTRL_DEVICE_ID_3
+ 4'b 1111, // index[23] LC_CTRL_DEVICE_ID_4
+ 4'b 1111, // index[24] LC_CTRL_DEVICE_ID_5
+ 4'b 1111, // index[25] LC_CTRL_DEVICE_ID_6
+ 4'b 1111, // index[26] LC_CTRL_DEVICE_ID_7
+ 4'b 1111, // index[27] LC_CTRL_MANUF_STATE_0
+ 4'b 1111, // index[28] LC_CTRL_MANUF_STATE_1
+ 4'b 1111, // index[29] LC_CTRL_MANUF_STATE_2
+ 4'b 1111, // index[30] LC_CTRL_MANUF_STATE_3
+ 4'b 1111, // index[31] LC_CTRL_MANUF_STATE_4
+ 4'b 1111, // index[32] LC_CTRL_MANUF_STATE_5
+ 4'b 1111, // index[33] LC_CTRL_MANUF_STATE_6
+ 4'b 1111 // index[34] LC_CTRL_MANUF_STATE_7
+ };
+
+ // Window parameters for dmi interface
+ parameter logic [DmiAw-1:0] LC_CTRL_DMI_OFFSET = 12'h 0;
+ parameter int unsigned LC_CTRL_DMI_SIZE = 'h 1000;
+ parameter int unsigned LC_CTRL_DMI_IDX = 0;
+
+endpackage
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_regs_reg_top.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_regs_reg_top.sv
new file mode 100644
index 0000000..e77c6ff
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_regs_reg_top.sv
@@ -0,0 +1,1528 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "caliptra_prim_assert.sv"
+
+module caliptra_ss_lc_ctrl_regs_reg_top
+(
+ input clk_i,
+ input rst_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+ // To HW
+ output caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_reg2hw_t reg2hw, // Write
+ input caliptra_ss_lc_ctrl_reg_pkg::caliptra_ss_lc_ctrl_regs_hw2reg_t hw2reg, // Read
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import caliptra_ss_lc_ctrl_reg_pkg::* ;
+
+ localparam int AW = 8;
+ localparam int DW = 32;
+ localparam int DBW = DW/8; // Byte Width
+
+ // register signals
+ logic reg_we;
+ logic reg_re;
+ logic [AW-1:0] reg_addr;
+ logic [DW-1:0] reg_wdata;
+ logic [DBW-1:0] reg_be;
+ logic [DW-1:0] reg_rdata;
+ logic reg_error;
+
+ logic addrmiss, wr_err;
+
+ logic [DW-1:0] reg_rdata_next;
+ logic reg_busy;
+
+ tlul_pkg::tl_h2d_t tl_reg_h2d;
+ tlul_pkg::tl_d2h_t tl_reg_d2h;
+
+
+ // incoming payload check
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
+ .tl_i(tl_i),
+ .err_o(intg_err)
+ );
+
+ // also check for spurious write enables
+ logic reg_we_err;
+ logic [34:0] reg_we_check;
+ caliptra_prim_reg_we_check #(
+ .OneHotWidth(35)
+ ) u_caliptra_prim_reg_we_check (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .oh_i (reg_we_check),
+ .en_i (reg_we && !addrmiss),
+ .err_o (reg_we_err)
+ );
+
+ logic err_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_q <= '0;
+ end else if (intg_err || reg_we_err) begin
+ err_q <= 1'b1;
+ end
+ end
+
+ // integrity error output is permanent and should be used for alert generation
+ // register errors are transactional
+ assign intg_err_o = err_q | intg_err | reg_we_err;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(1)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ assign tl_reg_h2d = tl_i;
+ assign tl_o_pre = tl_reg_d2h;
+
+ tlul_adapter_reg #(
+ .RegAw(AW),
+ .RegDw(DW),
+ .EnableDataIntgGen(0)
+ ) u_reg_if (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ .tl_i (tl_reg_h2d),
+ .tl_o (tl_reg_d2h),
+
+ .en_ifetch_i(caliptra_prim_mubi_pkg::MuBi4False),
+ .intg_error_o(),
+
+ .we_o (reg_we),
+ .re_o (reg_re),
+ .addr_o (reg_addr),
+ .wdata_o (reg_wdata),
+ .be_o (reg_be),
+ .busy_i (reg_busy),
+ .rdata_i (reg_rdata),
+ .error_i (reg_error)
+ );
+
+ // cdc oversampling signals
+
+ assign reg_rdata = reg_rdata_next ;
+ assign reg_error = addrmiss | wr_err | intg_err;
+
+ // Define SW related signals
+ // Format: __{wd|we|qs}
+ // or _{wd|we|qs} if field == 1 or 0
+ logic alert_test_we;
+ logic alert_test_fatal_prog_error_wd;
+ logic alert_test_fatal_state_error_wd;
+ logic alert_test_fatal_bus_integ_error_wd;
+ logic status_re;
+ logic status_initialized_qs;
+ logic status_ready_qs;
+ logic status_ext_clock_switched_qs;
+ logic status_transition_successful_qs;
+ logic status_transition_count_error_qs;
+ logic status_transition_error_qs;
+ logic status_token_error_qs;
+ logic status_flash_rma_error_qs;
+ logic status_otp_error_qs;
+ logic status_state_error_qs;
+ logic status_bus_integ_error_qs;
+ logic status_otp_partition_error_qs;
+ logic claim_transition_if_regwen_we;
+ logic claim_transition_if_regwen_qs;
+ logic claim_transition_if_regwen_wd;
+ logic claim_transition_if_re;
+ logic claim_transition_if_we;
+ logic [7:0] claim_transition_if_qs;
+ logic [7:0] claim_transition_if_wd;
+ logic transition_regwen_re;
+ logic transition_regwen_qs;
+ logic transition_cmd_we;
+ logic transition_cmd_wd;
+ logic transition_ctrl_re;
+ logic transition_ctrl_we;
+ logic transition_ctrl_ext_clock_en_qs;
+ logic transition_ctrl_ext_clock_en_wd;
+ logic transition_ctrl_volatile_raw_unlock_qs;
+ logic transition_ctrl_volatile_raw_unlock_wd;
+ logic transition_token_0_re;
+ logic transition_token_0_we;
+ logic [31:0] transition_token_0_qs;
+ logic [31:0] transition_token_0_wd;
+ logic transition_token_1_re;
+ logic transition_token_1_we;
+ logic [31:0] transition_token_1_qs;
+ logic [31:0] transition_token_1_wd;
+ logic transition_token_2_re;
+ logic transition_token_2_we;
+ logic [31:0] transition_token_2_qs;
+ logic [31:0] transition_token_2_wd;
+ logic transition_token_3_re;
+ logic transition_token_3_we;
+ logic [31:0] transition_token_3_qs;
+ logic [31:0] transition_token_3_wd;
+ logic transition_target_re;
+ logic transition_target_we;
+ logic [29:0] transition_target_qs;
+ logic [29:0] transition_target_wd;
+ logic otp_vendor_test_ctrl_re;
+ logic otp_vendor_test_ctrl_we;
+ logic [31:0] otp_vendor_test_ctrl_qs;
+ logic [31:0] otp_vendor_test_ctrl_wd;
+ logic otp_vendor_test_status_re;
+ logic [31:0] otp_vendor_test_status_qs;
+ logic caliptra_ss_lc_state_re;
+ logic [29:0] caliptra_ss_lc_state_qs;
+ logic caliptra_ss_lc_transition_cnt_re;
+ logic [4:0] caliptra_ss_lc_transition_cnt_qs;
+ logic caliptra_ss_lc_id_state_re;
+ logic [31:0] caliptra_ss_lc_id_state_qs;
+ logic hw_revision0_re;
+ logic [15:0] hw_revision0_product_id_qs;
+ logic [15:0] hw_revision0_silicon_creator_id_qs;
+ logic hw_revision1_re;
+ logic [7:0] hw_revision1_revision_id_qs;
+ logic [23:0] hw_revision1_reserved_qs;
+ logic device_id_0_re;
+ logic [31:0] device_id_0_qs;
+ logic device_id_1_re;
+ logic [31:0] device_id_1_qs;
+ logic device_id_2_re;
+ logic [31:0] device_id_2_qs;
+ logic device_id_3_re;
+ logic [31:0] device_id_3_qs;
+ logic device_id_4_re;
+ logic [31:0] device_id_4_qs;
+ logic device_id_5_re;
+ logic [31:0] device_id_5_qs;
+ logic device_id_6_re;
+ logic [31:0] device_id_6_qs;
+ logic device_id_7_re;
+ logic [31:0] device_id_7_qs;
+ logic manuf_state_0_re;
+ logic [31:0] manuf_state_0_qs;
+ logic manuf_state_1_re;
+ logic [31:0] manuf_state_1_qs;
+ logic manuf_state_2_re;
+ logic [31:0] manuf_state_2_qs;
+ logic manuf_state_3_re;
+ logic [31:0] manuf_state_3_qs;
+ logic manuf_state_4_re;
+ logic [31:0] manuf_state_4_qs;
+ logic manuf_state_5_re;
+ logic [31:0] manuf_state_5_qs;
+ logic manuf_state_6_re;
+ logic [31:0] manuf_state_6_qs;
+ logic manuf_state_7_re;
+ logic [31:0] manuf_state_7_qs;
+
+ // Register instances
+ // R[alert_test]: V(True)
+ logic alert_test_qe;
+ logic [2:0] alert_test_flds_we;
+ assign alert_test_qe = &alert_test_flds_we;
+ // F[fatal_prog_error]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_prog_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_prog_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[0]),
+ .q (reg2hw.alert_test.fatal_prog_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_prog_error.qe = alert_test_qe;
+
+ // F[fatal_state_error]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_state_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_state_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[1]),
+ .q (reg2hw.alert_test.fatal_state_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_state_error.qe = alert_test_qe;
+
+ // F[fatal_bus_integ_error]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_bus_integ_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_bus_integ_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[2]),
+ .q (reg2hw.alert_test.fatal_bus_integ_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_bus_integ_error.qe = alert_test_qe;
+
+
+ // R[status]: V(True)
+ // F[initialized]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_initialized (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.initialized.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_initialized_qs)
+ );
+
+ // F[ready]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_ready (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.ready.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_ready_qs)
+ );
+
+ // F[ext_clock_switched]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_ext_clock_switched (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.ext_clock_switched.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_ext_clock_switched_qs)
+ );
+
+ // F[transition_successful]: 3:3
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_transition_successful (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.transition_successful.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_transition_successful_qs)
+ );
+
+ // F[transition_count_error]: 4:4
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_transition_count_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.transition_count_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_transition_count_error_qs)
+ );
+
+ // F[transition_error]: 5:5
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_transition_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.transition_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_transition_error_qs)
+ );
+
+ // F[token_error]: 6:6
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_token_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.token_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_token_error_qs)
+ );
+
+ // F[flash_rma_error]: 7:7
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_flash_rma_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.flash_rma_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_flash_rma_error_qs)
+ );
+
+ // F[otp_error]: 8:8
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_otp_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.otp_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_otp_error_qs)
+ );
+
+ // F[state_error]: 9:9
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_state_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.state_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_state_error_qs)
+ );
+
+ // F[bus_integ_error]: 10:10
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_bus_integ_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.bus_integ_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_bus_integ_error_qs)
+ );
+
+ // F[otp_partition_error]: 11:11
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_otp_partition_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.otp_partition_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_otp_partition_error_qs)
+ );
+
+
+ // R[claim_transition_if_regwen]: V(False)
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_claim_transition_if_regwen (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (claim_transition_if_regwen_we),
+ .wd (claim_transition_if_regwen_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+ .ds (),
+
+ // to register interface (read)
+ .qs (claim_transition_if_regwen_qs)
+ );
+
+
+ // R[claim_transition_if]: V(True)
+ logic claim_transition_if_qe;
+ logic [0:0] claim_transition_if_flds_we;
+ assign claim_transition_if_qe = &claim_transition_if_flds_we;
+ // Create REGWEN-gated WE signal
+ logic claim_transition_if_gated_we;
+ assign claim_transition_if_gated_we = claim_transition_if_we & claim_transition_if_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (8)
+ ) u_claim_transition_if (
+ .re (claim_transition_if_re),
+ .we (claim_transition_if_gated_we),
+ .wd (claim_transition_if_wd),
+ .d (hw2reg.claim_transition_if.d),
+ .qre (),
+ .qe (claim_transition_if_flds_we[0]),
+ .q (reg2hw.claim_transition_if.q),
+ .ds (),
+ .qs (claim_transition_if_qs)
+ );
+ assign reg2hw.claim_transition_if.qe = claim_transition_if_qe;
+
+
+ // R[transition_regwen]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_transition_regwen (
+ .re (transition_regwen_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.transition_regwen.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (transition_regwen_qs)
+ );
+
+
+ // R[transition_cmd]: V(True)
+ logic transition_cmd_qe;
+ logic [0:0] transition_cmd_flds_we;
+ assign transition_cmd_qe = &transition_cmd_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_cmd_gated_we;
+ assign transition_cmd_gated_we = transition_cmd_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_transition_cmd (
+ .re (1'b0),
+ .we (transition_cmd_gated_we),
+ .wd (transition_cmd_wd),
+ .d ('0),
+ .qre (),
+ .qe (transition_cmd_flds_we[0]),
+ .q (reg2hw.transition_cmd.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.transition_cmd.qe = transition_cmd_qe;
+
+
+ // R[transition_ctrl]: V(True)
+ logic transition_ctrl_qe;
+ logic [1:0] transition_ctrl_flds_we;
+ assign transition_ctrl_qe = &transition_ctrl_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_ctrl_gated_we;
+ assign transition_ctrl_gated_we = transition_ctrl_we & transition_regwen_qs;
+ // F[ext_clock_en]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_transition_ctrl_ext_clock_en (
+ .re (transition_ctrl_re),
+ .we (transition_ctrl_gated_we),
+ .wd (transition_ctrl_ext_clock_en_wd),
+ .d (hw2reg.transition_ctrl.ext_clock_en.d),
+ .qre (),
+ .qe (transition_ctrl_flds_we[0]),
+ .q (reg2hw.transition_ctrl.ext_clock_en.q),
+ .ds (),
+ .qs (transition_ctrl_ext_clock_en_qs)
+ );
+ assign reg2hw.transition_ctrl.ext_clock_en.qe = transition_ctrl_qe;
+
+ // F[volatile_raw_unlock]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_transition_ctrl_volatile_raw_unlock (
+ .re (transition_ctrl_re),
+ .we (transition_ctrl_gated_we),
+ .wd (transition_ctrl_volatile_raw_unlock_wd),
+ .d (hw2reg.transition_ctrl.volatile_raw_unlock.d),
+ .qre (),
+ .qe (transition_ctrl_flds_we[1]),
+ .q (reg2hw.transition_ctrl.volatile_raw_unlock.q),
+ .ds (),
+ .qs (transition_ctrl_volatile_raw_unlock_qs)
+ );
+ assign reg2hw.transition_ctrl.volatile_raw_unlock.qe = transition_ctrl_qe;
+
+
+ // Subregister 0 of Multireg transition_token
+ // R[transition_token_0]: V(True)
+ logic transition_token_0_qe;
+ logic [0:0] transition_token_0_flds_we;
+ assign transition_token_0_qe = &transition_token_0_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_token_0_gated_we;
+ assign transition_token_0_gated_we = transition_token_0_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_transition_token_0 (
+ .re (transition_token_0_re),
+ .we (transition_token_0_gated_we),
+ .wd (transition_token_0_wd),
+ .d (hw2reg.transition_token[0].d),
+ .qre (),
+ .qe (transition_token_0_flds_we[0]),
+ .q (reg2hw.transition_token[0].q),
+ .ds (),
+ .qs (transition_token_0_qs)
+ );
+ assign reg2hw.transition_token[0].qe = transition_token_0_qe;
+
+
+ // Subregister 1 of Multireg transition_token
+ // R[transition_token_1]: V(True)
+ logic transition_token_1_qe;
+ logic [0:0] transition_token_1_flds_we;
+ assign transition_token_1_qe = &transition_token_1_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_token_1_gated_we;
+ assign transition_token_1_gated_we = transition_token_1_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_transition_token_1 (
+ .re (transition_token_1_re),
+ .we (transition_token_1_gated_we),
+ .wd (transition_token_1_wd),
+ .d (hw2reg.transition_token[1].d),
+ .qre (),
+ .qe (transition_token_1_flds_we[0]),
+ .q (reg2hw.transition_token[1].q),
+ .ds (),
+ .qs (transition_token_1_qs)
+ );
+ assign reg2hw.transition_token[1].qe = transition_token_1_qe;
+
+
+ // Subregister 2 of Multireg transition_token
+ // R[transition_token_2]: V(True)
+ logic transition_token_2_qe;
+ logic [0:0] transition_token_2_flds_we;
+ assign transition_token_2_qe = &transition_token_2_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_token_2_gated_we;
+ assign transition_token_2_gated_we = transition_token_2_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_transition_token_2 (
+ .re (transition_token_2_re),
+ .we (transition_token_2_gated_we),
+ .wd (transition_token_2_wd),
+ .d (hw2reg.transition_token[2].d),
+ .qre (),
+ .qe (transition_token_2_flds_we[0]),
+ .q (reg2hw.transition_token[2].q),
+ .ds (),
+ .qs (transition_token_2_qs)
+ );
+ assign reg2hw.transition_token[2].qe = transition_token_2_qe;
+
+
+ // Subregister 3 of Multireg transition_token
+ // R[transition_token_3]: V(True)
+ logic transition_token_3_qe;
+ logic [0:0] transition_token_3_flds_we;
+ assign transition_token_3_qe = &transition_token_3_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_token_3_gated_we;
+ assign transition_token_3_gated_we = transition_token_3_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_transition_token_3 (
+ .re (transition_token_3_re),
+ .we (transition_token_3_gated_we),
+ .wd (transition_token_3_wd),
+ .d (hw2reg.transition_token[3].d),
+ .qre (),
+ .qe (transition_token_3_flds_we[0]),
+ .q (reg2hw.transition_token[3].q),
+ .ds (),
+ .qs (transition_token_3_qs)
+ );
+ assign reg2hw.transition_token[3].qe = transition_token_3_qe;
+
+
+ // R[transition_target]: V(True)
+ logic transition_target_qe;
+ logic [0:0] transition_target_flds_we;
+ assign transition_target_qe = &transition_target_flds_we;
+ // Create REGWEN-gated WE signal
+ logic transition_target_gated_we;
+ assign transition_target_gated_we = transition_target_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (30)
+ ) u_transition_target (
+ .re (transition_target_re),
+ .we (transition_target_gated_we),
+ .wd (transition_target_wd),
+ .d (hw2reg.transition_target.d),
+ .qre (),
+ .qe (transition_target_flds_we[0]),
+ .q (reg2hw.transition_target.q),
+ .ds (),
+ .qs (transition_target_qs)
+ );
+ assign reg2hw.transition_target.qe = transition_target_qe;
+
+
+ // R[otp_vendor_test_ctrl]: V(True)
+ logic otp_vendor_test_ctrl_qe;
+ logic [0:0] otp_vendor_test_ctrl_flds_we;
+ assign otp_vendor_test_ctrl_qe = &otp_vendor_test_ctrl_flds_we;
+ // Create REGWEN-gated WE signal
+ logic otp_vendor_test_ctrl_gated_we;
+ assign otp_vendor_test_ctrl_gated_we = otp_vendor_test_ctrl_we & transition_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_otp_vendor_test_ctrl (
+ .re (otp_vendor_test_ctrl_re),
+ .we (otp_vendor_test_ctrl_gated_we),
+ .wd (otp_vendor_test_ctrl_wd),
+ .d (hw2reg.otp_vendor_test_ctrl.d),
+ .qre (),
+ .qe (otp_vendor_test_ctrl_flds_we[0]),
+ .q (reg2hw.otp_vendor_test_ctrl.q),
+ .ds (),
+ .qs (otp_vendor_test_ctrl_qs)
+ );
+ assign reg2hw.otp_vendor_test_ctrl.qe = otp_vendor_test_ctrl_qe;
+
+
+ // R[otp_vendor_test_status]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_otp_vendor_test_status (
+ .re (otp_vendor_test_status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.otp_vendor_test_status.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (otp_vendor_test_status_qs)
+ );
+
+
+ // R[caliptra_ss_lc_state]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (30)
+ ) u_caliptra_ss_lc_state (
+ .re (caliptra_ss_lc_state_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.caliptra_ss_lc_state.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (caliptra_ss_lc_state_qs)
+ );
+
+
+ // R[caliptra_ss_lc_transition_cnt]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (5)
+ ) u_caliptra_ss_lc_transition_cnt (
+ .re (caliptra_ss_lc_transition_cnt_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.caliptra_ss_lc_transition_cnt.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (caliptra_ss_lc_transition_cnt_qs)
+ );
+
+
+ // R[caliptra_ss_lc_id_state]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_caliptra_ss_lc_id_state (
+ .re (caliptra_ss_lc_id_state_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.caliptra_ss_lc_id_state.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (caliptra_ss_lc_id_state_qs)
+ );
+
+
+ // R[hw_revision0]: V(True)
+ // F[product_id]: 15:0
+ caliptra_prim_subreg_ext #(
+ .DW (16)
+ ) u_hw_revision0_product_id (
+ .re (hw_revision0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_revision0.product_id.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_revision0_product_id_qs)
+ );
+
+ // F[silicon_creator_id]: 31:16
+ caliptra_prim_subreg_ext #(
+ .DW (16)
+ ) u_hw_revision0_silicon_creator_id (
+ .re (hw_revision0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_revision0.silicon_creator_id.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_revision0_silicon_creator_id_qs)
+ );
+
+
+ // R[hw_revision1]: V(True)
+ // F[revision_id]: 7:0
+ caliptra_prim_subreg_ext #(
+ .DW (8)
+ ) u_hw_revision1_revision_id (
+ .re (hw_revision1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_revision1.revision_id.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_revision1_revision_id_qs)
+ );
+
+ // F[reserved]: 31:8
+ caliptra_prim_subreg_ext #(
+ .DW (24)
+ ) u_hw_revision1_reserved (
+ .re (hw_revision1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_revision1.reserved.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_revision1_reserved_qs)
+ );
+
+
+ // Subregister 0 of Multireg device_id
+ // R[device_id_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_0 (
+ .re (device_id_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg device_id
+ // R[device_id_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_1 (
+ .re (device_id_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_1_qs)
+ );
+
+
+ // Subregister 2 of Multireg device_id
+ // R[device_id_2]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_2 (
+ .re (device_id_2_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[2].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_2_qs)
+ );
+
+
+ // Subregister 3 of Multireg device_id
+ // R[device_id_3]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_3 (
+ .re (device_id_3_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[3].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_3_qs)
+ );
+
+
+ // Subregister 4 of Multireg device_id
+ // R[device_id_4]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_4 (
+ .re (device_id_4_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[4].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_4_qs)
+ );
+
+
+ // Subregister 5 of Multireg device_id
+ // R[device_id_5]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_5 (
+ .re (device_id_5_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[5].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_5_qs)
+ );
+
+
+ // Subregister 6 of Multireg device_id
+ // R[device_id_6]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_6 (
+ .re (device_id_6_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[6].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_6_qs)
+ );
+
+
+ // Subregister 7 of Multireg device_id
+ // R[device_id_7]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_device_id_7 (
+ .re (device_id_7_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.device_id[7].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (device_id_7_qs)
+ );
+
+
+ // Subregister 0 of Multireg manuf_state
+ // R[manuf_state_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_0 (
+ .re (manuf_state_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg manuf_state
+ // R[manuf_state_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_1 (
+ .re (manuf_state_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_1_qs)
+ );
+
+
+ // Subregister 2 of Multireg manuf_state
+ // R[manuf_state_2]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_2 (
+ .re (manuf_state_2_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[2].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_2_qs)
+ );
+
+
+ // Subregister 3 of Multireg manuf_state
+ // R[manuf_state_3]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_3 (
+ .re (manuf_state_3_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[3].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_3_qs)
+ );
+
+
+ // Subregister 4 of Multireg manuf_state
+ // R[manuf_state_4]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_4 (
+ .re (manuf_state_4_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[4].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_4_qs)
+ );
+
+
+ // Subregister 5 of Multireg manuf_state
+ // R[manuf_state_5]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_5 (
+ .re (manuf_state_5_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[5].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_5_qs)
+ );
+
+
+ // Subregister 6 of Multireg manuf_state
+ // R[manuf_state_6]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_6 (
+ .re (manuf_state_6_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[6].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_6_qs)
+ );
+
+
+ // Subregister 7 of Multireg manuf_state
+ // R[manuf_state_7]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_manuf_state_7 (
+ .re (manuf_state_7_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.manuf_state[7].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (manuf_state_7_qs)
+ );
+
+
+
+ logic [34:0] addr_hit;
+ always_comb begin
+ addr_hit = '0;
+ addr_hit[ 0] = (reg_addr == LC_CTRL_ALERT_TEST_OFFSET);
+ addr_hit[ 1] = (reg_addr == LC_CTRL_STATUS_OFFSET);
+ addr_hit[ 2] = (reg_addr == LC_CTRL_CLAIM_TRANSITION_IF_REGWEN_OFFSET);
+ addr_hit[ 3] = (reg_addr == LC_CTRL_CLAIM_TRANSITION_IF_OFFSET);
+ addr_hit[ 4] = (reg_addr == LC_CTRL_TRANSITION_REGWEN_OFFSET);
+ addr_hit[ 5] = (reg_addr == LC_CTRL_TRANSITION_CMD_OFFSET);
+ addr_hit[ 6] = (reg_addr == LC_CTRL_TRANSITION_CTRL_OFFSET);
+ addr_hit[ 7] = (reg_addr == LC_CTRL_TRANSITION_TOKEN_0_OFFSET);
+ addr_hit[ 8] = (reg_addr == LC_CTRL_TRANSITION_TOKEN_1_OFFSET);
+ addr_hit[ 9] = (reg_addr == LC_CTRL_TRANSITION_TOKEN_2_OFFSET);
+ addr_hit[10] = (reg_addr == LC_CTRL_TRANSITION_TOKEN_3_OFFSET);
+ addr_hit[11] = (reg_addr == LC_CTRL_TRANSITION_TARGET_OFFSET);
+ addr_hit[12] = (reg_addr == LC_CTRL_OTP_VENDOR_TEST_CTRL_OFFSET);
+ addr_hit[13] = (reg_addr == LC_CTRL_OTP_VENDOR_TEST_STATUS_OFFSET);
+ addr_hit[14] = (reg_addr == LC_CTRL_LC_STATE_OFFSET);
+ addr_hit[15] = (reg_addr == LC_CTRL_LC_TRANSITION_CNT_OFFSET);
+ addr_hit[16] = (reg_addr == LC_CTRL_LC_ID_STATE_OFFSET);
+ addr_hit[17] = (reg_addr == LC_CTRL_HW_REVISION0_OFFSET);
+ addr_hit[18] = (reg_addr == LC_CTRL_HW_REVISION1_OFFSET);
+ addr_hit[19] = (reg_addr == LC_CTRL_DEVICE_ID_0_OFFSET);
+ addr_hit[20] = (reg_addr == LC_CTRL_DEVICE_ID_1_OFFSET);
+ addr_hit[21] = (reg_addr == LC_CTRL_DEVICE_ID_2_OFFSET);
+ addr_hit[22] = (reg_addr == LC_CTRL_DEVICE_ID_3_OFFSET);
+ addr_hit[23] = (reg_addr == LC_CTRL_DEVICE_ID_4_OFFSET);
+ addr_hit[24] = (reg_addr == LC_CTRL_DEVICE_ID_5_OFFSET);
+ addr_hit[25] = (reg_addr == LC_CTRL_DEVICE_ID_6_OFFSET);
+ addr_hit[26] = (reg_addr == LC_CTRL_DEVICE_ID_7_OFFSET);
+ addr_hit[27] = (reg_addr == LC_CTRL_MANUF_STATE_0_OFFSET);
+ addr_hit[28] = (reg_addr == LC_CTRL_MANUF_STATE_1_OFFSET);
+ addr_hit[29] = (reg_addr == LC_CTRL_MANUF_STATE_2_OFFSET);
+ addr_hit[30] = (reg_addr == LC_CTRL_MANUF_STATE_3_OFFSET);
+ addr_hit[31] = (reg_addr == LC_CTRL_MANUF_STATE_4_OFFSET);
+ addr_hit[32] = (reg_addr == LC_CTRL_MANUF_STATE_5_OFFSET);
+ addr_hit[33] = (reg_addr == LC_CTRL_MANUF_STATE_6_OFFSET);
+ addr_hit[34] = (reg_addr == LC_CTRL_MANUF_STATE_7_OFFSET);
+ end
+
+ assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
+
+ // Check sub-word write is permitted
+ always_comb begin
+ wr_err = (reg_we &
+ ((addr_hit[ 0] & (|(LC_CTRL_REGS_PERMIT[ 0] & ~reg_be))) |
+ (addr_hit[ 1] & (|(LC_CTRL_REGS_PERMIT[ 1] & ~reg_be))) |
+ (addr_hit[ 2] & (|(LC_CTRL_REGS_PERMIT[ 2] & ~reg_be))) |
+ (addr_hit[ 3] & (|(LC_CTRL_REGS_PERMIT[ 3] & ~reg_be))) |
+ (addr_hit[ 4] & (|(LC_CTRL_REGS_PERMIT[ 4] & ~reg_be))) |
+ (addr_hit[ 5] & (|(LC_CTRL_REGS_PERMIT[ 5] & ~reg_be))) |
+ (addr_hit[ 6] & (|(LC_CTRL_REGS_PERMIT[ 6] & ~reg_be))) |
+ (addr_hit[ 7] & (|(LC_CTRL_REGS_PERMIT[ 7] & ~reg_be))) |
+ (addr_hit[ 8] & (|(LC_CTRL_REGS_PERMIT[ 8] & ~reg_be))) |
+ (addr_hit[ 9] & (|(LC_CTRL_REGS_PERMIT[ 9] & ~reg_be))) |
+ (addr_hit[10] & (|(LC_CTRL_REGS_PERMIT[10] & ~reg_be))) |
+ (addr_hit[11] & (|(LC_CTRL_REGS_PERMIT[11] & ~reg_be))) |
+ (addr_hit[12] & (|(LC_CTRL_REGS_PERMIT[12] & ~reg_be))) |
+ (addr_hit[13] & (|(LC_CTRL_REGS_PERMIT[13] & ~reg_be))) |
+ (addr_hit[14] & (|(LC_CTRL_REGS_PERMIT[14] & ~reg_be))) |
+ (addr_hit[15] & (|(LC_CTRL_REGS_PERMIT[15] & ~reg_be))) |
+ (addr_hit[16] & (|(LC_CTRL_REGS_PERMIT[16] & ~reg_be))) |
+ (addr_hit[17] & (|(LC_CTRL_REGS_PERMIT[17] & ~reg_be))) |
+ (addr_hit[18] & (|(LC_CTRL_REGS_PERMIT[18] & ~reg_be))) |
+ (addr_hit[19] & (|(LC_CTRL_REGS_PERMIT[19] & ~reg_be))) |
+ (addr_hit[20] & (|(LC_CTRL_REGS_PERMIT[20] & ~reg_be))) |
+ (addr_hit[21] & (|(LC_CTRL_REGS_PERMIT[21] & ~reg_be))) |
+ (addr_hit[22] & (|(LC_CTRL_REGS_PERMIT[22] & ~reg_be))) |
+ (addr_hit[23] & (|(LC_CTRL_REGS_PERMIT[23] & ~reg_be))) |
+ (addr_hit[24] & (|(LC_CTRL_REGS_PERMIT[24] & ~reg_be))) |
+ (addr_hit[25] & (|(LC_CTRL_REGS_PERMIT[25] & ~reg_be))) |
+ (addr_hit[26] & (|(LC_CTRL_REGS_PERMIT[26] & ~reg_be))) |
+ (addr_hit[27] & (|(LC_CTRL_REGS_PERMIT[27] & ~reg_be))) |
+ (addr_hit[28] & (|(LC_CTRL_REGS_PERMIT[28] & ~reg_be))) |
+ (addr_hit[29] & (|(LC_CTRL_REGS_PERMIT[29] & ~reg_be))) |
+ (addr_hit[30] & (|(LC_CTRL_REGS_PERMIT[30] & ~reg_be))) |
+ (addr_hit[31] & (|(LC_CTRL_REGS_PERMIT[31] & ~reg_be))) |
+ (addr_hit[32] & (|(LC_CTRL_REGS_PERMIT[32] & ~reg_be))) |
+ (addr_hit[33] & (|(LC_CTRL_REGS_PERMIT[33] & ~reg_be))) |
+ (addr_hit[34] & (|(LC_CTRL_REGS_PERMIT[34] & ~reg_be)))));
+ end
+
+ // Generate write-enables
+ assign alert_test_we = addr_hit[0] & reg_we & !reg_error;
+
+ assign alert_test_fatal_prog_error_wd = reg_wdata[0];
+
+ assign alert_test_fatal_state_error_wd = reg_wdata[1];
+
+ assign alert_test_fatal_bus_integ_error_wd = reg_wdata[2];
+ assign status_re = addr_hit[1] & reg_re & !reg_error;
+ assign claim_transition_if_regwen_we = addr_hit[2] & reg_we & !reg_error;
+
+ assign claim_transition_if_regwen_wd = reg_wdata[0];
+ assign claim_transition_if_re = addr_hit[3] & reg_re & !reg_error;
+ assign claim_transition_if_we = addr_hit[3] & reg_we & !reg_error;
+
+ assign claim_transition_if_wd = reg_wdata[7:0];
+ assign transition_regwen_re = addr_hit[4] & reg_re & !reg_error;
+ assign transition_cmd_we = addr_hit[5] & reg_we & !reg_error;
+
+ assign transition_cmd_wd = reg_wdata[0];
+ assign transition_ctrl_re = addr_hit[6] & reg_re & !reg_error;
+ assign transition_ctrl_we = addr_hit[6] & reg_we & !reg_error;
+
+ assign transition_ctrl_ext_clock_en_wd = reg_wdata[0];
+
+ assign transition_ctrl_volatile_raw_unlock_wd = reg_wdata[1];
+ assign transition_token_0_re = addr_hit[7] & reg_re & !reg_error;
+ assign transition_token_0_we = addr_hit[7] & reg_we & !reg_error;
+
+ assign transition_token_0_wd = reg_wdata[31:0];
+ assign transition_token_1_re = addr_hit[8] & reg_re & !reg_error;
+ assign transition_token_1_we = addr_hit[8] & reg_we & !reg_error;
+
+ assign transition_token_1_wd = reg_wdata[31:0];
+ assign transition_token_2_re = addr_hit[9] & reg_re & !reg_error;
+ assign transition_token_2_we = addr_hit[9] & reg_we & !reg_error;
+
+ assign transition_token_2_wd = reg_wdata[31:0];
+ assign transition_token_3_re = addr_hit[10] & reg_re & !reg_error;
+ assign transition_token_3_we = addr_hit[10] & reg_we & !reg_error;
+
+ assign transition_token_3_wd = reg_wdata[31:0];
+ assign transition_target_re = addr_hit[11] & reg_re & !reg_error;
+ assign transition_target_we = addr_hit[11] & reg_we & !reg_error;
+
+ assign transition_target_wd = reg_wdata[29:0];
+ assign otp_vendor_test_ctrl_re = addr_hit[12] & reg_re & !reg_error;
+ assign otp_vendor_test_ctrl_we = addr_hit[12] & reg_we & !reg_error;
+
+ assign otp_vendor_test_ctrl_wd = reg_wdata[31:0];
+ assign otp_vendor_test_status_re = addr_hit[13] & reg_re & !reg_error;
+ assign caliptra_ss_lc_state_re = addr_hit[14] & reg_re & !reg_error;
+ assign caliptra_ss_lc_transition_cnt_re = addr_hit[15] & reg_re & !reg_error;
+ assign caliptra_ss_lc_id_state_re = addr_hit[16] & reg_re & !reg_error;
+ assign hw_revision0_re = addr_hit[17] & reg_re & !reg_error;
+ assign hw_revision1_re = addr_hit[18] & reg_re & !reg_error;
+ assign device_id_0_re = addr_hit[19] & reg_re & !reg_error;
+ assign device_id_1_re = addr_hit[20] & reg_re & !reg_error;
+ assign device_id_2_re = addr_hit[21] & reg_re & !reg_error;
+ assign device_id_3_re = addr_hit[22] & reg_re & !reg_error;
+ assign device_id_4_re = addr_hit[23] & reg_re & !reg_error;
+ assign device_id_5_re = addr_hit[24] & reg_re & !reg_error;
+ assign device_id_6_re = addr_hit[25] & reg_re & !reg_error;
+ assign device_id_7_re = addr_hit[26] & reg_re & !reg_error;
+ assign manuf_state_0_re = addr_hit[27] & reg_re & !reg_error;
+ assign manuf_state_1_re = addr_hit[28] & reg_re & !reg_error;
+ assign manuf_state_2_re = addr_hit[29] & reg_re & !reg_error;
+ assign manuf_state_3_re = addr_hit[30] & reg_re & !reg_error;
+ assign manuf_state_4_re = addr_hit[31] & reg_re & !reg_error;
+ assign manuf_state_5_re = addr_hit[32] & reg_re & !reg_error;
+ assign manuf_state_6_re = addr_hit[33] & reg_re & !reg_error;
+ assign manuf_state_7_re = addr_hit[34] & reg_re & !reg_error;
+
+ // Assign write-enables to checker logic vector.
+ always_comb begin
+ reg_we_check = '0;
+ reg_we_check[0] = alert_test_we;
+ reg_we_check[1] = 1'b0;
+ reg_we_check[2] = claim_transition_if_regwen_we;
+ reg_we_check[3] = claim_transition_if_gated_we;
+ reg_we_check[4] = 1'b0;
+ reg_we_check[5] = transition_cmd_gated_we;
+ reg_we_check[6] = transition_ctrl_gated_we;
+ reg_we_check[7] = transition_token_0_gated_we;
+ reg_we_check[8] = transition_token_1_gated_we;
+ reg_we_check[9] = transition_token_2_gated_we;
+ reg_we_check[10] = transition_token_3_gated_we;
+ reg_we_check[11] = transition_target_gated_we;
+ reg_we_check[12] = otp_vendor_test_ctrl_gated_we;
+ reg_we_check[13] = 1'b0;
+ reg_we_check[14] = 1'b0;
+ reg_we_check[15] = 1'b0;
+ reg_we_check[16] = 1'b0;
+ reg_we_check[17] = 1'b0;
+ reg_we_check[18] = 1'b0;
+ reg_we_check[19] = 1'b0;
+ reg_we_check[20] = 1'b0;
+ reg_we_check[21] = 1'b0;
+ reg_we_check[22] = 1'b0;
+ reg_we_check[23] = 1'b0;
+ reg_we_check[24] = 1'b0;
+ reg_we_check[25] = 1'b0;
+ reg_we_check[26] = 1'b0;
+ reg_we_check[27] = 1'b0;
+ reg_we_check[28] = 1'b0;
+ reg_we_check[29] = 1'b0;
+ reg_we_check[30] = 1'b0;
+ reg_we_check[31] = 1'b0;
+ reg_we_check[32] = 1'b0;
+ reg_we_check[33] = 1'b0;
+ reg_we_check[34] = 1'b0;
+ end
+
+ // Read data return
+ always_comb begin
+ reg_rdata_next = '0;
+ unique case (1'b1)
+ addr_hit[0]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ reg_rdata_next[2] = '0;
+ end
+
+ addr_hit[1]: begin
+ reg_rdata_next[0] = status_initialized_qs;
+ reg_rdata_next[1] = status_ready_qs;
+ reg_rdata_next[2] = status_ext_clock_switched_qs;
+ reg_rdata_next[3] = status_transition_successful_qs;
+ reg_rdata_next[4] = status_transition_count_error_qs;
+ reg_rdata_next[5] = status_transition_error_qs;
+ reg_rdata_next[6] = status_token_error_qs;
+ reg_rdata_next[7] = status_flash_rma_error_qs;
+ reg_rdata_next[8] = status_otp_error_qs;
+ reg_rdata_next[9] = status_state_error_qs;
+ reg_rdata_next[10] = status_bus_integ_error_qs;
+ reg_rdata_next[11] = status_otp_partition_error_qs;
+ end
+
+ addr_hit[2]: begin
+ reg_rdata_next[0] = claim_transition_if_regwen_qs;
+ end
+
+ addr_hit[3]: begin
+ reg_rdata_next[7:0] = claim_transition_if_qs;
+ end
+
+ addr_hit[4]: begin
+ reg_rdata_next[0] = transition_regwen_qs;
+ end
+
+ addr_hit[5]: begin
+ reg_rdata_next[0] = '0;
+ end
+
+ addr_hit[6]: begin
+ reg_rdata_next[0] = transition_ctrl_ext_clock_en_qs;
+ reg_rdata_next[1] = transition_ctrl_volatile_raw_unlock_qs;
+ end
+
+ addr_hit[7]: begin
+ reg_rdata_next[31:0] = transition_token_0_qs;
+ end
+
+ addr_hit[8]: begin
+ reg_rdata_next[31:0] = transition_token_1_qs;
+ end
+
+ addr_hit[9]: begin
+ reg_rdata_next[31:0] = transition_token_2_qs;
+ end
+
+ addr_hit[10]: begin
+ reg_rdata_next[31:0] = transition_token_3_qs;
+ end
+
+ addr_hit[11]: begin
+ reg_rdata_next[29:0] = transition_target_qs;
+ end
+
+ addr_hit[12]: begin
+ reg_rdata_next[31:0] = otp_vendor_test_ctrl_qs;
+ end
+
+ addr_hit[13]: begin
+ reg_rdata_next[31:0] = otp_vendor_test_status_qs;
+ end
+
+ addr_hit[14]: begin
+ reg_rdata_next[29:0] = caliptra_ss_lc_state_qs;
+ end
+
+ addr_hit[15]: begin
+ reg_rdata_next[4:0] = caliptra_ss_lc_transition_cnt_qs;
+ end
+
+ addr_hit[16]: begin
+ reg_rdata_next[31:0] = caliptra_ss_lc_id_state_qs;
+ end
+
+ addr_hit[17]: begin
+ reg_rdata_next[15:0] = hw_revision0_product_id_qs;
+ reg_rdata_next[31:16] = hw_revision0_silicon_creator_id_qs;
+ end
+
+ addr_hit[18]: begin
+ reg_rdata_next[7:0] = hw_revision1_revision_id_qs;
+ reg_rdata_next[31:8] = hw_revision1_reserved_qs;
+ end
+
+ addr_hit[19]: begin
+ reg_rdata_next[31:0] = device_id_0_qs;
+ end
+
+ addr_hit[20]: begin
+ reg_rdata_next[31:0] = device_id_1_qs;
+ end
+
+ addr_hit[21]: begin
+ reg_rdata_next[31:0] = device_id_2_qs;
+ end
+
+ addr_hit[22]: begin
+ reg_rdata_next[31:0] = device_id_3_qs;
+ end
+
+ addr_hit[23]: begin
+ reg_rdata_next[31:0] = device_id_4_qs;
+ end
+
+ addr_hit[24]: begin
+ reg_rdata_next[31:0] = device_id_5_qs;
+ end
+
+ addr_hit[25]: begin
+ reg_rdata_next[31:0] = device_id_6_qs;
+ end
+
+ addr_hit[26]: begin
+ reg_rdata_next[31:0] = device_id_7_qs;
+ end
+
+ addr_hit[27]: begin
+ reg_rdata_next[31:0] = manuf_state_0_qs;
+ end
+
+ addr_hit[28]: begin
+ reg_rdata_next[31:0] = manuf_state_1_qs;
+ end
+
+ addr_hit[29]: begin
+ reg_rdata_next[31:0] = manuf_state_2_qs;
+ end
+
+ addr_hit[30]: begin
+ reg_rdata_next[31:0] = manuf_state_3_qs;
+ end
+
+ addr_hit[31]: begin
+ reg_rdata_next[31:0] = manuf_state_4_qs;
+ end
+
+ addr_hit[32]: begin
+ reg_rdata_next[31:0] = manuf_state_5_qs;
+ end
+
+ addr_hit[33]: begin
+ reg_rdata_next[31:0] = manuf_state_6_qs;
+ end
+
+ addr_hit[34]: begin
+ reg_rdata_next[31:0] = manuf_state_7_qs;
+ end
+
+ default: begin
+ reg_rdata_next = '1;
+ end
+ endcase
+ end
+
+ // shadow busy
+ logic shadow_busy;
+ assign shadow_busy = 1'b0;
+
+ // register busy
+ assign reg_busy = shadow_busy;
+
+ // Unused signal tieoff
+
+ // wdata / byte enable are not always fully used
+ // add a blanket unused statement to handle lint waivers
+ logic unused_wdata;
+ logic unused_be;
+ assign unused_wdata = ^reg_wdata;
+ assign unused_be = ^reg_be;
+
+ // Assertions for Register Interface
+ `CALIPTRA_ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni)
+ `CALIPTRA_ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o_pre.d_valid, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni)
+
+ // this is formulated as an assumption such that the FPV testbenches do disprove this
+ // property by mistake
+ //`CALIPTRA_ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.chk_en == tlul_pkg::CheckDis)
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_signal_decode.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_signal_decode.sv
new file mode 100644
index 0000000..d83de79
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_signal_decode.sv
@@ -0,0 +1,402 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle signal decoder and sender module.
+
+module caliptra_ss_lc_ctrl_signal_decode
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+#(
+ // Random netlist constants
+ // SCRAP, RAW, TEST_LOCKED*, INVALID
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0),
+ // TEST_UNLOCKED*
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1),
+ // DEV
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2),
+ // PROD, PROD_END
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3),
+ // RMA
+ parameter caliptra_ss_lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4)
+ ) (
+ input clk_i,
+ input rst_ni,
+ // Life cycle state vector.
+ input logic caliptra_ss_lc_state_valid_i,
+ input caliptra_ss_lc_state_e caliptra_ss_lc_state_i,
+ input fsm_state_e fsm_state_i,
+ input caliptra_ss_lc_tx_t secrets_valid_i,
+ // Local life cycle signal
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_raw_test_rma_o,
+ // Life cycle broadcast outputs.
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_nvm_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_hw_debug_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_cpu_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_owner_seed_sw_rw_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_wr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_seed_hw_rd_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_keymgr_en_o,
+ output caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_o,
+ // State group diversification value for keymgr
+ output caliptra_ss_lc_keymgr_div_t caliptra_ss_lc_keymgr_div_o
+);
+
+ //////////////////////////
+ // Signal Decoder Logic //
+ //////////////////////////
+
+ caliptra_ss_lc_tx_t caliptra_ss_lc_raw_test_rma;
+ caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en, caliptra_ss_lc_nvm_debug_en, caliptra_ss_lc_hw_debug_en, caliptra_ss_lc_cpu_en, caliptra_ss_lc_keymgr_en, caliptra_ss_lc_escalate_en;
+ caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en, caliptra_ss_lc_owner_seed_sw_rw_en, caliptra_ss_lc_iso_part_sw_rd_en;
+ caliptra_ss_lc_tx_t caliptra_ss_lc_iso_part_sw_wr_en, caliptra_ss_lc_seed_hw_rd_en;
+ caliptra_ss_lc_keymgr_div_t caliptra_ss_lc_keymgr_div_d, caliptra_ss_lc_keymgr_div_q;
+
+ always_comb begin : p_caliptra_ss_lc_signal_decode
+ // Life cycle control signal defaults
+ caliptra_ss_lc_raw_test_rma = Off;
+ caliptra_ss_lc_dft_en = Off;
+ caliptra_ss_lc_nvm_debug_en = Off;
+ caliptra_ss_lc_hw_debug_en = Off;
+ caliptra_ss_lc_cpu_en = Off;
+ caliptra_ss_lc_creator_seed_sw_rw_en = Off;
+ caliptra_ss_lc_owner_seed_sw_rw_en = Off;
+ caliptra_ss_lc_iso_part_sw_rd_en = Off;
+ caliptra_ss_lc_iso_part_sw_wr_en = Off;
+ caliptra_ss_lc_seed_hw_rd_en = Off;
+ caliptra_ss_lc_keymgr_en = Off;
+ // This ensures that once escalation has been triggered, it cannot go back to Off.
+ caliptra_ss_lc_escalate_en = caliptra_ss_lc_tx_or_hi(Off, caliptra_ss_lc_escalate_en_o);
+ // Set to invalid diversification value by default.
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivInvalid;
+
+ unique case (fsm_state_i)
+ ///////////////////////////////////////////////////////////////////
+ // Don't broadcast anything in this state.
+ ResetSt: ;
+ ///////////////////////////////////////////////////////////////////
+ // Broadcasting of most signals is only enabled during the following life cycle states.
+ IdleSt,
+ ClkMuxSt,
+ CntIncrSt,
+ CntProgSt,
+ TransCheckSt,
+ FlashRmaSt,
+ TokenHashSt,
+ TokenCheck0St,
+ TokenCheck1St,
+ TransProgSt: begin
+ if (caliptra_ss_lc_state_valid_i) begin
+ unique case (caliptra_ss_lc_state_i)
+ ///////////////////////////////////////////////////////////////////
+ // Only enable life cycle TAP register for OTP test mechanisms.
+ LcStRaw,
+ LcStTestLocked0,
+ LcStTestLocked1,
+ LcStTestLocked2,
+ LcStTestLocked3,
+ LcStTestLocked4,
+ LcStTestLocked5,
+ LcStTestLocked6: begin
+ caliptra_ss_lc_raw_test_rma = On;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Enable DFT and debug functionality, including the CPU in the
+ // test unlocked states.
+ LcStTestUnlocked0,
+ LcStTestUnlocked1,
+ LcStTestUnlocked2,
+ LcStTestUnlocked3,
+ LcStTestUnlocked4,
+ LcStTestUnlocked5,
+ LcStTestUnlocked6: begin
+ caliptra_ss_lc_raw_test_rma = On;
+ caliptra_ss_lc_dft_en = On;
+ caliptra_ss_lc_nvm_debug_en = On;
+ caliptra_ss_lc_hw_debug_en = On;
+ caliptra_ss_lc_cpu_en = On;
+ caliptra_ss_lc_iso_part_sw_wr_en = On;
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivTestUnlocked;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This is the last TEST_UNLOCKED state. The same feature set is enabled
+ // as in the other TEST_UNLOCKED states above, except for NVM debug en,
+ // which is disabled in this state.
+ LcStTestUnlocked7: begin
+ caliptra_ss_lc_raw_test_rma = On;
+ caliptra_ss_lc_dft_en = On;
+ caliptra_ss_lc_hw_debug_en = On;
+ caliptra_ss_lc_cpu_en = On;
+ caliptra_ss_lc_iso_part_sw_wr_en = On;
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivTestUnlocked;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Enable production functions
+ LcStProd,
+ LcStProdEnd: begin
+ caliptra_ss_lc_cpu_en = On;
+ caliptra_ss_lc_keymgr_en = On;
+ caliptra_ss_lc_owner_seed_sw_rw_en = On;
+ caliptra_ss_lc_iso_part_sw_wr_en = On;
+ caliptra_ss_lc_iso_part_sw_rd_en = On;
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivProduction;
+ // Only allow provisioning if the device has not yet been personalized.
+ // If secrets_valid_i is set to ON, we output OFF.
+ // Note that we can convert ON to OFF with a bitwise inversion due to the encoding.
+ caliptra_ss_lc_creator_seed_sw_rw_en = caliptra_ss_lc_tx_t'(~secrets_valid_i);
+ // Only allow hardware to consume the seeds once personalized.
+ // If secrets_valid_i is set to ON, we output ON.
+ caliptra_ss_lc_seed_hw_rd_en = secrets_valid_i;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Similar functions as PROD, with the following differences:
+ // - hardware debug functionality (CPU TAP) is enabled,
+ // - access to the isolated flash partition is disabled.
+ LcStDev: begin
+ caliptra_ss_lc_hw_debug_en = On;
+ caliptra_ss_lc_cpu_en = On;
+ caliptra_ss_lc_keymgr_en = On;
+ caliptra_ss_lc_owner_seed_sw_rw_en = On;
+ caliptra_ss_lc_iso_part_sw_wr_en = On;
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivDev;
+ // Only allow provisioning if the device has not yet been personalized.
+ // If secrets_valid_i is set to ON, we output OFF.
+ // Note that we can convert ON to OFF with a bitwise inversion due to the encoding.
+ caliptra_ss_lc_creator_seed_sw_rw_en = caliptra_ss_lc_tx_t'(~secrets_valid_i);
+ // Only allow hardware to consume the seeds once personalized.
+ // If secrets_valid_i is set to ON, we output ON.
+ caliptra_ss_lc_seed_hw_rd_en = secrets_valid_i;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Enable all test and production functions.
+ LcStRma: begin
+ caliptra_ss_lc_raw_test_rma = On;
+ caliptra_ss_lc_dft_en = On;
+ caliptra_ss_lc_nvm_debug_en = On;
+ caliptra_ss_lc_hw_debug_en = On;
+ caliptra_ss_lc_cpu_en = On;
+ caliptra_ss_lc_keymgr_en = On;
+ caliptra_ss_lc_creator_seed_sw_rw_en = On;
+ caliptra_ss_lc_owner_seed_sw_rw_en = On;
+ caliptra_ss_lc_iso_part_sw_wr_en = On;
+ caliptra_ss_lc_iso_part_sw_rd_en = On;
+ caliptra_ss_lc_seed_hw_rd_en = On;
+ caliptra_ss_lc_keymgr_div_d = RndCnstLcKeymgrDivRma;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Invalid or scrapped life cycle state, make sure the escalation
+ // signal is also asserted in this case.
+ default: begin
+ caliptra_ss_lc_escalate_en = On;
+ end
+ endcase // caliptra_ss_lc_state_i
+ end else begin
+ caliptra_ss_lc_escalate_en = On;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Post-transition state. Behaves similarly to the virtual scrap
+ // states below, with the exception that escalate_en is NOT asserted,
+ // since that could trigger unwanted alerts / escalations and system resets.
+ PostTransSt: ;
+ ///////////////////////////////////////////////////////////////////
+ // Virtual scrap states, make sure the escalation signal is
+ // also asserted in this case.
+ ScrapSt,
+ EscalateSt,
+ InvalidSt: begin
+ caliptra_ss_lc_escalate_en = On;
+ end
+ default: begin
+ caliptra_ss_lc_escalate_en = On;
+ end
+ endcase // fsm_state_i
+ end
+
+ /////////////////////////////////
+ // Control signal output flops //
+ /////////////////////////////////
+
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_raw_test_rma (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_raw_test_rma),
+ .lc_en_o(caliptra_ss_lc_raw_test_rma_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_dft_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_dft_en),
+ .lc_en_o(caliptra_ss_lc_dft_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_nvm_debug_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_nvm_debug_en),
+ .lc_en_o(caliptra_ss_lc_nvm_debug_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_hw_debug_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_hw_debug_en),
+ .lc_en_o(caliptra_ss_lc_hw_debug_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_cpu_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_cpu_en),
+ .lc_en_o(caliptra_ss_lc_cpu_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_creator_seed_sw_rw_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_creator_seed_sw_rw_en),
+ .lc_en_o(caliptra_ss_lc_creator_seed_sw_rw_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_owner_seed_sw_rw_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_owner_seed_sw_rw_en),
+ .lc_en_o(caliptra_ss_lc_owner_seed_sw_rw_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_iso_part_sw_rd_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_iso_part_sw_rd_en),
+ .lc_en_o(caliptra_ss_lc_iso_part_sw_rd_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_iso_part_sw_wr_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_iso_part_sw_wr_en),
+ .lc_en_o(caliptra_ss_lc_iso_part_sw_wr_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_seed_hw_rd_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_seed_hw_rd_en),
+ .lc_en_o(caliptra_ss_lc_seed_hw_rd_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_keymgr_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_keymgr_en),
+ .lc_en_o(caliptra_ss_lc_keymgr_en_o)
+ );
+ caliptra_prim_lc_sender u_caliptra_prim_lc_sender_escalate_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_escalate_en),
+ .lc_en_o(caliptra_ss_lc_escalate_en_o)
+ );
+
+ assign caliptra_ss_lc_keymgr_div_o = caliptra_ss_lc_keymgr_div_q;
+
+ caliptra_prim_flop #(
+ .Width(LcKeymgrDivWidth),
+ .ResetValue(RndCnstLcKeymgrDivInvalid)
+ ) u_caliptra_prim_flop_keymgr_div (
+ .clk_i ( clk_i ),
+ .rst_ni ( rst_ni ),
+ .d_i ( caliptra_ss_lc_keymgr_div_d ),
+ .q_o ( caliptra_ss_lc_keymgr_div_q )
+ );
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Need to make sure that the random netlist constants are all unique.
+ `CALIPTRA_ASSERT_INIT(LcKeymgrDivUnique0_A,
+ !(RndCnstLcKeymgrDivInvalid inside {RndCnstLcKeymgrDivTestUnlocked,
+ RndCnstLcKeymgrDivDev,
+ RndCnstLcKeymgrDivRma,
+ RndCnstLcKeymgrDivProduction}))
+ `CALIPTRA_ASSERT_INIT(LcKeymgrDivUnique1_A,
+ !(RndCnstLcKeymgrDivTestUnlocked inside {RndCnstLcKeymgrDivInvalid,
+ RndCnstLcKeymgrDivDev,
+ RndCnstLcKeymgrDivRma,
+ RndCnstLcKeymgrDivProduction}))
+ `CALIPTRA_ASSERT_INIT(LcKeymgrDivUnique2_A,
+ !(RndCnstLcKeymgrDivDev inside {RndCnstLcKeymgrDivInvalid,
+ RndCnstLcKeymgrDivTestUnlocked,
+ RndCnstLcKeymgrDivRma,
+ RndCnstLcKeymgrDivProduction}))
+ `CALIPTRA_ASSERT_INIT(LcKeymgrDivUnique3_A,
+ !(RndCnstLcKeymgrDivRma inside {RndCnstLcKeymgrDivInvalid,
+ RndCnstLcKeymgrDivTestUnlocked,
+ RndCnstLcKeymgrDivDev,
+ RndCnstLcKeymgrDivProduction}))
+
+ `CALIPTRA_ASSERT(SignalsAreOffWhenNotEnabled_A,
+ !caliptra_ss_lc_state_valid_i
+ |=>
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_raw_test_rma_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_dft_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_nvm_debug_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_hw_debug_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_cpu_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_creator_seed_sw_rw_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_owner_seed_sw_rw_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_iso_part_sw_rd_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_iso_part_sw_wr_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_seed_hw_rd_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_keymgr_en_o) &&
+ caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_dft_en_o) &&
+ caliptra_ss_lc_keymgr_div_o == RndCnstLcKeymgrDivInvalid)
+
+
+ `CALIPTRA_ASSERT(FsmInScrap_A,
+ !(fsm_state_i inside {ResetSt,
+ TransProgSt,
+ IdleSt,
+ ClkMuxSt,
+ CntIncrSt,
+ CntProgSt,
+ TransCheckSt,
+ FlashRmaSt,
+ TokenHashSt,
+ TokenCheck0St,
+ TokenCheck1St,
+ PostTransSt})
+ |=>
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_escalate_en_o))
+
+ `CALIPTRA_ASSERT(StateInScrap_A,
+ caliptra_ss_lc_state_valid_i &&
+ fsm_state_i inside {IdleSt,
+ ClkMuxSt,
+ CntIncrSt,
+ CntProgSt,
+ TransCheckSt,
+ FlashRmaSt,
+ TokenHashSt,
+ TokenCheck0St,
+ TokenCheck1St} &&
+ !(caliptra_ss_lc_state_i inside {LcStRaw,
+ LcStTestUnlocked0,
+ LcStTestUnlocked1,
+ LcStTestUnlocked2,
+ LcStTestUnlocked3,
+ LcStTestUnlocked4,
+ LcStTestUnlocked5,
+ LcStTestUnlocked6,
+ LcStTestUnlocked7,
+ LcStTestLocked0,
+ LcStTestLocked1,
+ LcStTestLocked2,
+ LcStTestLocked3,
+ LcStTestLocked4,
+ LcStTestLocked5,
+ LcStTestLocked6,
+ LcStDev,
+ LcStProd,
+ LcStProdEnd,
+ LcStRma})
+ |=>
+ caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_escalate_en_o))
+
+endmodule : caliptra_ss_lc_ctrl_signal_decode
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_decode.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_decode.sv
new file mode 100644
index 0000000..a30995c
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_decode.sv
@@ -0,0 +1,167 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle state decoder. This is a purely combinational module.
+
+module caliptra_ss_lc_ctrl_state_decode
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+(
+ // Life cycle state vector.
+ input logic caliptra_ss_lc_state_valid_i,
+ input caliptra_ss_lc_state_e caliptra_ss_lc_state_i,
+ input caliptra_ss_lc_cnt_e caliptra_ss_lc_cnt_i,
+ input caliptra_ss_lc_tx_t secrets_valid_i,
+ // Main FSM state.
+ input fsm_state_e fsm_state_i,
+ // Decoded state vector.
+ output ext_dec_caliptra_ss_lc_state_t dec_caliptra_ss_lc_state_o,
+ output dec_caliptra_ss_lc_id_state_e dec_caliptra_ss_lc_id_state_o,
+ output dec_caliptra_ss_lc_cnt_t dec_caliptra_ss_lc_cnt_o,
+ output logic [5:0] state_invalid_error_o
+);
+
+ //////////////////////////
+ // Signal Decoder Logic //
+ //////////////////////////
+
+ // SEC_CM: STATE.CONFIG.SPARSE
+ // The decoded life cycle state uses a redundant representation that is used internally
+ // and in the CSR node.
+ ext_dec_caliptra_ss_lc_state_t dec_caliptra_ss_lc_state;
+ logic [$bits(ext_dec_caliptra_ss_lc_state_t)-1:0] dec_caliptra_ss_lc_state_buf;
+ caliptra_prim_sec_anchor_buf #(
+ .Width($bits(ext_dec_caliptra_ss_lc_state_t))
+ ) u_prim_sec_anchor_buf (
+ .in_i(dec_caliptra_ss_lc_state),
+ .out_o(dec_caliptra_ss_lc_state_buf)
+ );
+
+ // This cast is needed so that VCS does not throw warnings.
+ for (genvar k = 0; k < DecLcStateNumRep; k++) begin : gen_enum_casts
+ assign dec_caliptra_ss_lc_state_o[k] = dec_caliptra_ss_lc_state_e'(dec_caliptra_ss_lc_state_buf[k*DecLcStateWidth +:
+ DecLcStateWidth]);
+ end
+ // The decoder logic below decodes the life cycle state vector and counter
+ // into a format that can be exposed in the CSRs. If the state is invalid,
+ // this will be flagged as well.
+
+ always_comb begin : p_caliptra_ss_lc_state_decode
+ // Decoded state defaults
+ dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStInvalid}};
+ dec_caliptra_ss_lc_cnt_o = {DecLcCountWidth{1'b1}};
+ dec_caliptra_ss_lc_id_state_o = DecLcIdInvalid;
+ state_invalid_error_o = '0;
+
+ unique case (fsm_state_i)
+ // Don't decode anything in ResetSt
+ ResetSt: ;
+ // These are temporary, terminal states that are not encoded
+ // in the persistent LC state vector from OTP, hence we decode them first.
+ EscalateSt: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStEscalate}};
+ PostTransSt: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStPostTrans}};
+ InvalidSt: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStInvalid}};
+ ScrapSt: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStScrap}};
+ // Otherwise check and decode the life cycle state continously.
+ default: begin
+ // Note that we require that the valid signal from OTP is
+ // asserted at all times except when the LC controller is in ResetSt.
+ // This will trigger an invalid_state_error when the OTP partition
+ // is corrupt and moved into an error state, where the valid bit is
+ // deasserted.
+ state_invalid_error_o[0] = ~caliptra_ss_lc_state_valid_i;
+
+ unique case (caliptra_ss_lc_state_i)
+ LcStRaw: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStRaw}};
+ LcStTestUnlocked0: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked0}};
+ LcStTestLocked0: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked0}};
+ LcStTestUnlocked1: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked1}};
+ LcStTestLocked1: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked1}};
+ LcStTestUnlocked2: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked2}};
+ LcStTestLocked2: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked2}};
+ LcStTestUnlocked3: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked3}};
+ LcStTestLocked3: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked3}};
+ LcStTestUnlocked4: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked4}};
+ LcStTestLocked4: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked4}};
+ LcStTestUnlocked5: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked5}};
+ LcStTestLocked5: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked5}};
+ LcStTestUnlocked6: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked6}};
+ LcStTestLocked6: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestLocked6}};
+ LcStTestUnlocked7: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStTestUnlocked7}};
+ LcStDev: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStDev}};
+ LcStProd: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStProd}};
+ LcStProdEnd: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStProdEnd}};
+ LcStRma: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStRma}};
+ LcStScrap: dec_caliptra_ss_lc_state = {DecLcStateNumRep{DecLcStScrap}};
+ // SEC_CM: MANUF.STATE.BKGN_CHK
+ default: state_invalid_error_o[1] = 1'b1;
+ endcase // caliptra_ss_lc_state_i
+
+ unique case (caliptra_ss_lc_cnt_i)
+ LcCnt0: dec_caliptra_ss_lc_cnt_o = 5'd0;
+ LcCnt1: dec_caliptra_ss_lc_cnt_o = 5'd1;
+ LcCnt2: dec_caliptra_ss_lc_cnt_o = 5'd2;
+ LcCnt3: dec_caliptra_ss_lc_cnt_o = 5'd3;
+ LcCnt4: dec_caliptra_ss_lc_cnt_o = 5'd4;
+ LcCnt5: dec_caliptra_ss_lc_cnt_o = 5'd5;
+ LcCnt6: dec_caliptra_ss_lc_cnt_o = 5'd6;
+ LcCnt7: dec_caliptra_ss_lc_cnt_o = 5'd7;
+ LcCnt8: dec_caliptra_ss_lc_cnt_o = 5'd8;
+ LcCnt9: dec_caliptra_ss_lc_cnt_o = 5'd9;
+ LcCnt10: dec_caliptra_ss_lc_cnt_o = 5'd10;
+ LcCnt11: dec_caliptra_ss_lc_cnt_o = 5'd11;
+ LcCnt12: dec_caliptra_ss_lc_cnt_o = 5'd12;
+ LcCnt13: dec_caliptra_ss_lc_cnt_o = 5'd13;
+ LcCnt14: dec_caliptra_ss_lc_cnt_o = 5'd14;
+ LcCnt15: dec_caliptra_ss_lc_cnt_o = 5'd15;
+ LcCnt16: dec_caliptra_ss_lc_cnt_o = 5'd16;
+ LcCnt17: dec_caliptra_ss_lc_cnt_o = 5'd17;
+ LcCnt18: dec_caliptra_ss_lc_cnt_o = 5'd18;
+ LcCnt19: dec_caliptra_ss_lc_cnt_o = 5'd19;
+ LcCnt20: dec_caliptra_ss_lc_cnt_o = 5'd20;
+ LcCnt21: dec_caliptra_ss_lc_cnt_o = 5'd21;
+ LcCnt22: dec_caliptra_ss_lc_cnt_o = 5'd22;
+ LcCnt23: dec_caliptra_ss_lc_cnt_o = 5'd23;
+ LcCnt24: dec_caliptra_ss_lc_cnt_o = 5'd24;
+ // SEC_CM: TRANSITION.CTR.BKGN_CHK
+ default: state_invalid_error_o[2] = 1'b1;
+ endcase // caliptra_ss_lc_cnt_i
+
+ // SEC_CM: MANUF.STATE.BKGN_CHK
+ unique case (secrets_valid_i)
+ // If the secrets have not been provisioned, the ID state is "blank".
+ Off: dec_caliptra_ss_lc_id_state_o = DecLcIdBlank;
+ // If the secrets have been provisioned, the ID state is "personalized".
+ On: dec_caliptra_ss_lc_id_state_o = DecLcIdPersonalized;
+ default: state_invalid_error_o[3] = 1'b1;
+ endcase // secrets_valid_i
+
+ // Require that any non-raw state has a valid, nonzero
+ // transition count.
+ // SEC_CM: TRANSITION.CTR.BKGN_CHK
+ if (caliptra_ss_lc_state_i != LcStRaw && caliptra_ss_lc_cnt_i == LcCnt0) begin
+ state_invalid_error_o[4] = 1'b1;
+ end
+
+ // We can't have a personalized device that is
+ // still in RAW or any of the test states.
+ // SEC_CM: MANUF.STATE.BKGN_CHK
+ if (caliptra_ss_lc_tx_test_true_strict(secrets_valid_i) &&
+ !(caliptra_ss_lc_state_i inside {LcStDev,
+ LcStProd,
+ LcStProdEnd,
+ LcStRma,
+ LcStScrap})) begin
+ state_invalid_error_o[5] = 1'b1;
+ end
+ end
+ endcase // caliptra_ss_lc_id_state_i
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+
+endmodule : caliptra_ss_lc_ctrl_state_decode
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_pkg.sv
new file mode 100644
index 0000000..5bda57f
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_pkg.sv
@@ -0,0 +1,433 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle state encoding definition.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with
+// $ ./util/design/gen-lc-state-enc.py --seed 40182201019264397688411770949626922549663256047001778394918990008320537410392
+//
+package caliptra_ss_lc_ctrl_state_pkg;
+
+ import caliptra_prim_util_pkg::vbits;
+
+ ///////////////////////////////
+ // General size declarations //
+ ///////////////////////////////
+
+ parameter int LcValueWidth = 16;
+
+ parameter int NumLcStateValues = 20;
+ parameter int LcStateWidth = NumLcStateValues * LcValueWidth;
+ parameter int NumLcStates = 21;
+ parameter int DecLcStateWidth = vbits(NumLcStates);
+ parameter int NumSocDbgStateValues = 2;
+ parameter int SocDbgStateWidth = NumSocDbgStateValues * LcValueWidth;
+ parameter int NumOwnershipStateValues = 8;
+ parameter int OwnershipStateWidth = NumOwnershipStateValues * LcValueWidth;
+ parameter int NumAuthStateValues = 2;
+ parameter int AuthStateWidth = NumAuthStateValues * LcValueWidth;
+
+ // Redundant version used in the CSRs.
+ parameter int DecLcStateNumRep = 32/DecLcStateWidth;
+ parameter int ExtDecLcStateWidth = DecLcStateNumRep*DecLcStateWidth;
+
+ parameter int NumLcCountValues = 24;
+ parameter int LcCountWidth = NumLcCountValues * LcValueWidth;
+ parameter int NumLcCountStates = 25;
+ parameter int DecLcCountWidth = vbits(NumLcCountStates);
+
+ // This state is not stored in OTP, but inferred from the locked
+ // status of the secret partitions. Hence, only the decoded ID state
+ // is declared here for exposure through the CSR interface.
+ parameter int NumLcIdStates = 2;
+ parameter int DecLcIdStateWidth = vbits(NumLcIdStates+1);
+ // Redundant version used in the CSRs.
+ parameter int DecLcIdStateNumRep = 32/DecLcIdStateWidth;
+ parameter int ExtDecLcIdStateWidth = DecLcIdStateNumRep*DecLcIdStateWidth;
+
+ /////////////////////////////////////////////
+ // Life cycle manufacturing state encoding //
+ /////////////////////////////////////////////
+
+ // These values have been generated such that they are incrementally writeable with respect
+ // to the ECC polynomial specified. The values are used to define the life cycle manufacturing
+ // state and transition counter encoding in caliptra_ss_lc_ctrl_pkg.sv.
+ //
+ // The values are unique and have the following statistics (considering all 16
+ // data and 6 ECC bits):
+ //
+ // - Minimum Hamming weight: 6
+ // - Maximum Hamming weight: 16
+ // - Minimum Hamming distance from any other value: 6
+ // - Maximum Hamming distance from any other value: 18
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: --
+ // 6: ||| (5.04%)
+ // 7: --
+ // 8: ||||||||||| (16.97%)
+ // 9: --
+ // 10: |||||||||||||||||||| (30.12%)
+ // 11: --
+ // 12: ||||||||||||||||||| (29.34%)
+ // 13: --
+ // 14: ||||||||| (14.35%)
+ // 15: --
+ // 16: || (3.80%)
+ // 17: --
+ // 18: (0.39%)
+ // 19: --
+ // 20: --
+ // 21: --
+ // 22: --
+ //
+ //
+ // Note that the ECC bits are not defined in this package as they will be calculated by
+ // the OTP ECC logic at runtime.
+
+ // SEC_CM: MANUF.STATE.SPARSE
+ // The A/B values are used for the encoded LC state.
+ parameter logic [15:0] A0 = 16'b0110010010101110; // ECC: 6'b001010
+ parameter logic [15:0] B0 = 16'b0111010111101110; // ECC: 6'b111110
+
+ parameter logic [15:0] A1 = 16'b0000011110110100; // ECC: 6'b100101
+ parameter logic [15:0] B1 = 16'b0000111111111110; // ECC: 6'b111101
+
+ parameter logic [15:0] A2 = 16'b0011000111010010; // ECC: 6'b000111
+ parameter logic [15:0] B2 = 16'b0111101111111110; // ECC: 6'b000111
+
+ parameter logic [15:0] A3 = 16'b0010111001001101; // ECC: 6'b001010
+ parameter logic [15:0] B3 = 16'b0011111101101111; // ECC: 6'b111010
+
+ parameter logic [15:0] A4 = 16'b0100000111111000; // ECC: 6'b011010
+ parameter logic [15:0] B4 = 16'b0101111111111100; // ECC: 6'b011110
+
+ parameter logic [15:0] A5 = 16'b1010110010000101; // ECC: 6'b110001
+ parameter logic [15:0] B5 = 16'b1111110110011111; // ECC: 6'b110001
+
+ parameter logic [15:0] A6 = 16'b1001100110001100; // ECC: 6'b010110
+ parameter logic [15:0] B6 = 16'b1111100110011111; // ECC: 6'b011110
+
+ parameter logic [15:0] A7 = 16'b0101001100001111; // ECC: 6'b100010
+ parameter logic [15:0] B7 = 16'b1101101101101111; // ECC: 6'b100111
+
+ parameter logic [15:0] A8 = 16'b0111000101100000; // ECC: 6'b111001
+ parameter logic [15:0] B8 = 16'b0111001101111111; // ECC: 6'b111001
+
+ parameter logic [15:0] A9 = 16'b0010110001100011; // ECC: 6'b101010
+ parameter logic [15:0] B9 = 16'b0110110001101111; // ECC: 6'b111111
+
+ parameter logic [15:0] A10 = 16'b0110110100001000; // ECC: 6'b110011
+ parameter logic [15:0] B10 = 16'b0110111110011110; // ECC: 6'b111011
+
+ parameter logic [15:0] A11 = 16'b1001001001001100; // ECC: 6'b000011
+ parameter logic [15:0] B11 = 16'b1101001111011100; // ECC: 6'b111111
+
+ parameter logic [15:0] A12 = 16'b0111000001000000; // ECC: 6'b011110
+ parameter logic [15:0] B12 = 16'b0111011101010010; // ECC: 6'b111110
+
+ parameter logic [15:0] A13 = 16'b1001001010111110; // ECC: 6'b000010
+ parameter logic [15:0] B13 = 16'b1111001011111110; // ECC: 6'b101110
+
+ parameter logic [15:0] A14 = 16'b1001010011010010; // ECC: 6'b100011
+ parameter logic [15:0] B14 = 16'b1011110111010011; // ECC: 6'b101111
+
+ parameter logic [15:0] A15 = 16'b0110001010001101; // ECC: 6'b000111
+ parameter logic [15:0] B15 = 16'b0110111111001101; // ECC: 6'b011111
+
+ parameter logic [15:0] A16 = 16'b1011001000101000; // ECC: 6'b010111
+ parameter logic [15:0] B16 = 16'b1011001011111011; // ECC: 6'b011111
+
+ parameter logic [15:0] A17 = 16'b0001111001110001; // ECC: 6'b001001
+ parameter logic [15:0] B17 = 16'b1001111111110101; // ECC: 6'b011011
+
+ parameter logic [15:0] A18 = 16'b0010110110011011; // ECC: 6'b000100
+ parameter logic [15:0] B18 = 16'b0011111111011111; // ECC: 6'b010101
+
+ parameter logic [15:0] A19 = 16'b0100110110001100; // ECC: 6'b101010
+ parameter logic [15:0] B19 = 16'b1101110110111110; // ECC: 6'b101011
+
+
+ // SEC_CM: TRANSITION.CTR.SPARSE
+ // The C/D values are used for the encoded LC transition counter.
+ parameter logic [15:0] C0 = 16'b0001010010011110; // ECC: 6'b011100
+ parameter logic [15:0] D0 = 16'b1011011011011111; // ECC: 6'b111100
+
+ parameter logic [15:0] C1 = 16'b0101101011000100; // ECC: 6'b111000
+ parameter logic [15:0] D1 = 16'b1111101011110100; // ECC: 6'b111101
+
+ parameter logic [15:0] C2 = 16'b0001111100100100; // ECC: 6'b100011
+ parameter logic [15:0] D2 = 16'b0001111110111111; // ECC: 6'b100111
+
+ parameter logic [15:0] C3 = 16'b1100111010000101; // ECC: 6'b011000
+ parameter logic [15:0] D3 = 16'b1100111011101111; // ECC: 6'b011011
+
+ parameter logic [15:0] C4 = 16'b0100001010011111; // ECC: 6'b011000
+ parameter logic [15:0] D4 = 16'b0101101110111111; // ECC: 6'b111100
+
+ parameter logic [15:0] C5 = 16'b1001111000100010; // ECC: 6'b111000
+ parameter logic [15:0] D5 = 16'b1111111110100010; // ECC: 6'b111110
+
+ parameter logic [15:0] C6 = 16'b0010011110000110; // ECC: 6'b010000
+ parameter logic [15:0] D6 = 16'b0111011111000110; // ECC: 6'b011101
+
+ parameter logic [15:0] C7 = 16'b0010111101000110; // ECC: 6'b000110
+ parameter logic [15:0] D7 = 16'b1010111111000110; // ECC: 6'b111111
+
+ parameter logic [15:0] C8 = 16'b0000001011011011; // ECC: 6'b000001
+ parameter logic [15:0] D8 = 16'b1010101111011011; // ECC: 6'b111011
+
+ parameter logic [15:0] C9 = 16'b0111000011000110; // ECC: 6'b110001
+ parameter logic [15:0] D9 = 16'b1111111011001110; // ECC: 6'b110011
+
+ parameter logic [15:0] C10 = 16'b0100001000010010; // ECC: 6'b110110
+ parameter logic [15:0] D10 = 16'b0111001010110110; // ECC: 6'b110111
+
+ parameter logic [15:0] C11 = 16'b0100101111110001; // ECC: 6'b000001
+ parameter logic [15:0] D11 = 16'b0110101111110011; // ECC: 6'b110111
+
+ parameter logic [15:0] C12 = 16'b1000100101000001; // ECC: 6'b000001
+ parameter logic [15:0] D12 = 16'b1011110101001111; // ECC: 6'b001011
+
+ parameter logic [15:0] C13 = 16'b1000000000010001; // ECC: 6'b011111
+ parameter logic [15:0] D13 = 16'b1001100010110011; // ECC: 6'b111111
+
+ parameter logic [15:0] C14 = 16'b0101110000000100; // ECC: 6'b111110
+ parameter logic [15:0] D14 = 16'b1111111010001101; // ECC: 6'b111110
+
+ parameter logic [15:0] C15 = 16'b1100001000001001; // ECC: 6'b001011
+ parameter logic [15:0] D15 = 16'b1110011000011011; // ECC: 6'b111011
+
+ parameter logic [15:0] C16 = 16'b0101001001101100; // ECC: 6'b001000
+ parameter logic [15:0] D16 = 16'b0111111001111110; // ECC: 6'b001001
+
+ parameter logic [15:0] C17 = 16'b0100001001110100; // ECC: 6'b010100
+ parameter logic [15:0] D17 = 16'b1100101001110111; // ECC: 6'b110110
+
+ parameter logic [15:0] C18 = 16'b1100000001100111; // ECC: 6'b100000
+ parameter logic [15:0] D18 = 16'b1100011101110111; // ECC: 6'b100101
+
+ parameter logic [15:0] C19 = 16'b1010000001001010; // ECC: 6'b101111
+ parameter logic [15:0] D19 = 16'b1111011101101010; // ECC: 6'b101111
+
+ parameter logic [15:0] C20 = 16'b1001001001010101; // ECC: 6'b001110
+ parameter logic [15:0] D20 = 16'b1101111011011101; // ECC: 6'b001111
+
+ parameter logic [15:0] C21 = 16'b1001010000011011; // ECC: 6'b100000
+ parameter logic [15:0] D21 = 16'b1001111000111011; // ECC: 6'b110101
+
+ parameter logic [15:0] C22 = 16'b1011101101100001; // ECC: 6'b000100
+ parameter logic [15:0] D22 = 16'b1011111101111111; // ECC: 6'b000110
+
+ parameter logic [15:0] C23 = 16'b1101101000000111; // ECC: 6'b001100
+ parameter logic [15:0] D23 = 16'b1101111011100111; // ECC: 6'b101110
+
+
+ // The F/E values are used for the encoded SOC_DBG state.
+ parameter logic [15:0] E0 = 16'b0000101001000100; // ECC: 6'b010010
+ parameter logic [15:0] F0 = 16'b1001111001101100; // ECC: 6'b110111
+
+ parameter logic [15:0] E1 = 16'b0000110111111000; // ECC: 6'b110000
+ parameter logic [15:0] F1 = 16'b1100111111111001; // ECC: 6'b111100
+
+
+ // The G/H values are used for the encoded OWNERSHIP state.
+ parameter logic [15:0] G0 = 16'b0110000100111100; // ECC: 6'b001000
+ parameter logic [15:0] H0 = 16'b0111010110111100; // ECC: 6'b111001
+
+ parameter logic [15:0] G1 = 16'b1000110100111001; // ECC: 6'b100001
+ parameter logic [15:0] H1 = 16'b1011110101111101; // ECC: 6'b101101
+
+ parameter logic [15:0] G2 = 16'b0110100001100010; // ECC: 6'b010010
+ parameter logic [15:0] H2 = 16'b1111100111101010; // ECC: 6'b010011
+
+ parameter logic [15:0] G3 = 16'b1001001110000101; // ECC: 6'b001101
+ parameter logic [15:0] H3 = 16'b1101001110110111; // ECC: 6'b011111
+
+ parameter logic [15:0] G4 = 16'b1010011000011101; // ECC: 6'b001100
+ parameter logic [15:0] H4 = 16'b1110011101011101; // ECC: 6'b111110
+
+ parameter logic [15:0] G5 = 16'b1110110101100000; // ECC: 6'b000000
+ parameter logic [15:0] H5 = 16'b1110111111101001; // ECC: 6'b000110
+
+ parameter logic [15:0] G6 = 16'b1011000100101010; // ECC: 6'b110001
+ parameter logic [15:0] H6 = 16'b1111101110101011; // ECC: 6'b110101
+
+ parameter logic [15:0] G7 = 16'b0000111110001010; // ECC: 6'b010011
+ parameter logic [15:0] H7 = 16'b1100111110111110; // ECC: 6'b010111
+
+
+ // The I/Jvalues are used for the encoded AUTH state.
+ parameter logic [15:0] I0 = 16'b0110011110000001; // ECC: 6'b000100
+ parameter logic [15:0] J0 = 16'b0111111110100001; // ECC: 6'b101101
+
+ parameter logic [15:0] I1 = 16'b1110100010100001; // ECC: 6'b100110
+ parameter logic [15:0] J1 = 16'b1110100111110101; // ECC: 6'b101111
+
+
+ parameter logic [15:0] ZRO = 16'h0;
+
+ ////////////////////////
+ // Derived enum types //
+ ////////////////////////
+
+ // Use caliptra_ss_lc_state_t and caliptra_ss_lc_cnt_t in interfaces as very wide enumerations ( > 64 bits )
+ // are not supported for virtual interfaces by Excelium yet
+ // https://github.com/lowRISC/opentitan/issues/8884 (Cadence issue: cds_46570160)
+ // The enumeration types caliptra_ss_lc_state_e and caliptra_ss_lc_cnt_e are still ok in other circumstances
+
+ typedef logic [LcStateWidth-1:0] caliptra_ss_lc_state_t;
+ typedef enum caliptra_ss_lc_state_t {
+ LcStRaw = {ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO},
+ LcStTestUnlocked0 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, A1, B0},
+ LcStTestLocked0 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, B1, B0},
+ LcStTestUnlocked1 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, B2, B1, B0},
+ LcStTestLocked1 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, B3, B2, B1, B0},
+ LcStTestUnlocked2 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, B4, B3, B2, B1, B0},
+ LcStTestLocked2 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, B5, B4, B3, B2, B1, B0},
+ LcStTestUnlocked3 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, A7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestLocked3 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, A8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestUnlocked4 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, A9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestLocked4 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, A10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestUnlocked5 = {A19, A18, A17, A16, A15, A14, A13, A12, A11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestLocked5 = {A19, A18, A17, A16, A15, A14, A13, A12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestUnlocked6 = {A19, A18, A17, A16, A15, A14, A13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestLocked6 = {A19, A18, A17, A16, A15, A14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStTestUnlocked7 = {A19, A18, A17, A16, A15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStDev = {A19, A18, A17, A16, B15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStProd = {A19, A18, A17, B16, A15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStProdEnd = {A19, A18, B17, A16, A15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStRma = {B19, B18, A17, B16, B15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0},
+ LcStScrap = {B19, B18, B17, B16, B15, B14, B13, B12, B11, B10, B9, B8, B7, B6, B5, B4, B3, B2, B1, B0}
+ } caliptra_ss_lc_state_e;
+
+ typedef logic [LcCountWidth-1:0] caliptra_ss_lc_cnt_t;
+ typedef enum caliptra_ss_lc_cnt_t {
+ LcCnt0 = {ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO},
+ LcCnt1 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, C1, D0},
+ LcCnt2 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, C2, D1, D0},
+ LcCnt3 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, C3, D2, D1, D0},
+ LcCnt4 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, C4, D3, D2, D1, D0},
+ LcCnt5 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, C5, D4, D3, D2, D1, D0},
+ LcCnt6 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, C6, D5, D4, D3, D2, D1, D0},
+ LcCnt7 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, C7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt8 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, C8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt9 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, C9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt10 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, C10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt11 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, C11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt12 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, C12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt13 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, C13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt14 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, C14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt15 = {C23, C22, C21, C20, C19, C18, C17, C16, C15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt16 = {C23, C22, C21, C20, C19, C18, C17, C16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt17 = {C23, C22, C21, C20, C19, C18, C17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt18 = {C23, C22, C21, C20, C19, C18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt19 = {C23, C22, C21, C20, C19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt20 = {C23, C22, C21, C20, D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt21 = {C23, C22, C21, D20, D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt22 = {C23, C22, D21, D20, D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt23 = {C23, D22, D21, D20, D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0},
+ LcCnt24 = {D23, D22, D21, D20, D19, D18, D17, D16, D15, D14, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0}
+ } caliptra_ss_lc_cnt_e;
+
+ typedef logic [SocDbgStateWidth-1:0] soc_dbg_state_t;
+ typedef enum soc_dbg_state_t {
+ SocDbgStBlank = {ZRO, ZRO},
+ SocDbgStPreProd = { E1, E0},
+ SocDbgStProd = { F1, F0}
+ } soc_dbg_state_e;
+
+ typedef logic [OwnershipStateWidth-1:0] ownership_state_t;
+ typedef enum ownership_state_t {
+ OwnershipStBlank = {ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO, ZRO},
+ OwnershipStLocked0 = { G7, G6, G5, G4, G3, G2, G1, G0},
+ OwnershipStReleased0 = { G7, G6, G5, G4, G3, G2, G1, H0},
+ OwnershipStLocked1 = { G7, G6, G5, G4, G3, G2, H1, H0},
+ OwnershipStReleased1 = { G7, G6, G5, G4, G3, H2, H1, H0},
+ OwnershipStLocked2 = { G7, G6, G5, G4, H3, H2, H1, H0},
+ OwnershipStReleased2 = { G7, G6, G5, H4, H3, H2, H1, H0},
+ OwnershipStLocked3 = { G7, G6, H5, H4, H3, H2, H1, H0},
+ OwnershipStScrapped = { H7, H6, H5, H4, H3, H2, H1, H0}
+ } ownership_state_e;
+
+ typedef logic [AuthStateWidth-1:0] auth_state_t;
+ typedef enum auth_state_t {
+ AuthStBlank = {ZRO, ZRO},
+ AuthStEnabled = { I1, I0},
+ AuthStDisabled = { J1, J0}
+ } auth_state_e;
+
+ // Decoded life cycle state, used to interface with CSRs and TAP.
+ typedef enum logic [DecLcStateWidth-1:0] {
+ DecLcStRaw = 0,
+ DecLcStTestUnlocked0 = 1,
+ DecLcStTestLocked0 = 2,
+ DecLcStTestUnlocked1 = 3,
+ DecLcStTestLocked1 = 4,
+ DecLcStTestUnlocked2 = 5,
+ DecLcStTestLocked2 = 6,
+ DecLcStTestUnlocked3 = 7,
+ DecLcStTestLocked3 = 8,
+ DecLcStTestUnlocked4 = 9,
+ DecLcStTestLocked4 = 10,
+ DecLcStTestUnlocked5 = 11,
+ DecLcStTestLocked5 = 12,
+ DecLcStTestUnlocked6 = 13,
+ DecLcStTestLocked6 = 14,
+ DecLcStTestUnlocked7 = 15,
+ DecLcStDev = 16,
+ DecLcStProd = 17,
+ DecLcStProdEnd = 18,
+ DecLcStRma = 19,
+ DecLcStScrap = 20,
+ DecLcStPostTrans = 21,
+ DecLcStEscalate = 22,
+ DecLcStInvalid = 23
+ } dec_caliptra_ss_lc_state_e;
+
+ typedef dec_caliptra_ss_lc_state_e [DecLcStateNumRep-1:0] ext_dec_caliptra_ss_lc_state_t;
+
+ typedef enum logic [DecLcIdStateWidth-1:0] {
+ DecLcIdBlank,
+ DecLcIdPersonalized,
+ DecLcIdInvalid
+ } dec_caliptra_ss_lc_id_state_e;
+
+ typedef logic [DecLcCountWidth-1:0] dec_caliptra_ss_lc_cnt_t;
+
+
+ ///////////////////////////////////////////
+ // Hashed RAW unlock and all-zero tokens //
+ ///////////////////////////////////////////
+
+ parameter int LcTokenWidth = 128;
+ typedef logic [LcTokenWidth-1:0] caliptra_ss_lc_token_t;
+
+ parameter caliptra_ss_lc_token_t AllZeroToken = {
+ 128'h0
+ };
+ parameter caliptra_ss_lc_token_t RndCnstRawUnlockToken = {
+ 128'hEA2B3F32CBE77554E43C8EA7EBF197C2
+ };
+ parameter caliptra_ss_lc_token_t AllZeroTokenHashed = {
+ 128'h3852305BAECF5FF1D5C1D25F6DB9058D
+ };
+ parameter caliptra_ss_lc_token_t RndCnstRawUnlockTokenHashed = {
+ // 128'hF8FE11B88C36C8140252F036D23804DB
+ 128'hf12a_5911_4217_48a2_adfc_9693_ef1f_adea
+ };
+
+
+ parameter caliptra_ss_lc_token_t RndCnstRawUnlockTokenDefault = {
+ 128'hEA2B3F32CBE77554E43C8EA7EBF197C2
+ };
+
+endpackage : caliptra_ss_lc_ctrl_state_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_transition.sv b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_transition.sv
new file mode 100644
index 0000000..5113411
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/caliptra_ss_lc_ctrl_state_transition.sv
@@ -0,0 +1,207 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle state transition function. Checks whether a transition is valid
+// and computes the target state. This module is purely combinational.
+
+module caliptra_ss_lc_ctrl_state_transition
+ import caliptra_ss_lc_ctrl_pkg::*;
+ import caliptra_ss_lc_ctrl_state_pkg::*;
+#(
+ parameter bit SecVolatileRawUnlockEn = 0
+) (
+ // Life cycle state vector.
+ input caliptra_ss_lc_state_e caliptra_ss_lc_state_i,
+ input caliptra_ss_lc_cnt_e caliptra_ss_lc_cnt_i,
+ // Main FSM state.
+ input fsm_state_e fsm_state_i,
+ // Decoded lc state input
+ input ext_dec_caliptra_ss_lc_state_t dec_caliptra_ss_lc_state_i,
+ // Transition target.
+ input ext_dec_caliptra_ss_lc_state_t trans_target_i,
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ input logic volatile_raw_unlock_i,
+ input logic trans_cmd_i,
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+ // Updated state vector.
+ output caliptra_ss_lc_state_e next_caliptra_ss_lc_state_o,
+ output caliptra_ss_lc_cnt_e next_caliptra_ss_lc_cnt_o,
+ // If the transition counter is maxed out
+ output logic trans_cnt_oflw_error_o,
+ output logic trans_invalid_error_o
+);
+
+ //////////////////////////
+ // Signal Decoder Logic //
+ //////////////////////////
+
+ if (!SecVolatileRawUnlockEn) begin : gen_no_volatile_unlock
+ logic unused_trans_cmd;
+ assign unused_trans_cmd = trans_cmd_i;
+ end
+
+ // The decoder logic below checks whether a given transition edge
+ // is valid and computes the next lc counter ans state vectors.
+ always_comb begin : p_caliptra_ss_lc_state_transition
+ // Decoded state defaults
+ next_caliptra_ss_lc_cnt_o = caliptra_ss_lc_cnt_i;
+ next_caliptra_ss_lc_state_o = caliptra_ss_lc_state_i;
+ trans_cnt_oflw_error_o = 1'b0;
+ trans_invalid_error_o = 1'b0;
+
+ // ---------- VOLATILE_TEST_UNLOCKED CODE SECTION START ----------
+ // NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+ // THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED VIA
+ // SecVolatileRawUnlockEn AT COMPILETIME FOR PRODUCTION DEVICES.
+ // ---------------------------------------------------------------
+ // Only enter here if volatile RAW unlock is available and enabled.
+ if (SecVolatileRawUnlockEn && volatile_raw_unlock_i && trans_cmd_i && fsm_state_i == IdleSt)
+ begin
+ // We only allow transitions from RAW -> TEST_UNLOCKED0
+ if (dec_caliptra_ss_lc_state_i != {DecLcStateNumRep{DecLcStRaw}} ||
+ trans_target_i != {DecLcStateNumRep{DecLcStTestUnlocked0}}) begin
+ trans_invalid_error_o = 1'b1;
+ end
+ end
+ // ----------- VOLATILE_TEST_UNLOCKED CODE SECTION END -----------
+
+ if (fsm_state_i inside {CntIncrSt,
+ CntProgSt,
+ // Since OTP programming is incremental, we have to keep the next
+ // counter state assigned when performing the actual state transition
+ // in the second programming pass to prevent OTP programming errors.
+ TransCheckSt,
+ TokenCheck0St,
+ TokenCheck1St,
+ TransProgSt}) begin
+ // In this state, the life cycle counter is incremented.
+ // Throw an error if the counter is already maxed out.
+ unique case (caliptra_ss_lc_cnt_i)
+ LcCnt0: next_caliptra_ss_lc_cnt_o = LcCnt1;
+ LcCnt1: next_caliptra_ss_lc_cnt_o = LcCnt2;
+ LcCnt2: next_caliptra_ss_lc_cnt_o = LcCnt3;
+ LcCnt3: next_caliptra_ss_lc_cnt_o = LcCnt4;
+ LcCnt4: next_caliptra_ss_lc_cnt_o = LcCnt5;
+ LcCnt5: next_caliptra_ss_lc_cnt_o = LcCnt6;
+ LcCnt6: next_caliptra_ss_lc_cnt_o = LcCnt7;
+ LcCnt7: next_caliptra_ss_lc_cnt_o = LcCnt8;
+ LcCnt8: next_caliptra_ss_lc_cnt_o = LcCnt9;
+ LcCnt9: next_caliptra_ss_lc_cnt_o = LcCnt10;
+ LcCnt10: next_caliptra_ss_lc_cnt_o = LcCnt11;
+ LcCnt11: next_caliptra_ss_lc_cnt_o = LcCnt12;
+ LcCnt12: next_caliptra_ss_lc_cnt_o = LcCnt13;
+ LcCnt13: next_caliptra_ss_lc_cnt_o = LcCnt14;
+ LcCnt14: next_caliptra_ss_lc_cnt_o = LcCnt15;
+ LcCnt15: next_caliptra_ss_lc_cnt_o = LcCnt16;
+ LcCnt16: next_caliptra_ss_lc_cnt_o = LcCnt17;
+ LcCnt17: next_caliptra_ss_lc_cnt_o = LcCnt18;
+ LcCnt18: next_caliptra_ss_lc_cnt_o = LcCnt19;
+ LcCnt19: next_caliptra_ss_lc_cnt_o = LcCnt20;
+ LcCnt20: next_caliptra_ss_lc_cnt_o = LcCnt21;
+ LcCnt21: next_caliptra_ss_lc_cnt_o = LcCnt22;
+ LcCnt22: next_caliptra_ss_lc_cnt_o = LcCnt23;
+ LcCnt23: next_caliptra_ss_lc_cnt_o = LcCnt24;
+ LcCnt24: trans_cnt_oflw_error_o = 1'b1;
+ default: trans_cnt_oflw_error_o = 1'b1;
+ endcase // caliptra_ss_lc_cnt_i
+
+ // We always allow transitions into the SCRAP state, so the overflow error is silenced in that
+ // particular case. In that case we max out the transition counter and force the
+ // next_caliptra_ss_lc_state already into SCRAP so that the error silencing above cannot be abused. This
+ // means that when moving to SCRAP state, we program LcStScrap twice: once during the counter
+ // increment phase, and once during the actual state programming phase.
+ if (trans_target_i == {DecLcStateNumRep{DecLcStScrap}}) begin
+ next_caliptra_ss_lc_cnt_o = LcCnt24;
+ next_caliptra_ss_lc_state_o = LcStScrap;
+ trans_cnt_oflw_error_o = 1'b0;
+ end
+ end
+
+ if (fsm_state_i inside {TransCheckSt,
+ TokenCheck0St,
+ TokenCheck1St,
+ TransProgSt}) begin
+ // SEC_CM: STATE.CONFIG.SPARSE
+ // Check that the decoded transition indexes are valid before indexing the state transition
+ // matrix. We perform the check twice with different indices into the replicated state
+ // enumeration.
+ if (dec_caliptra_ss_lc_state_i[0] <= DecLcStScrap &&
+ trans_target_i[0] <= DecLcStScrap &&
+ dec_caliptra_ss_lc_state_i[1] <= DecLcStScrap &&
+ trans_target_i[1] <= DecLcStScrap) begin
+ // Check the state transition token matrix in order to see whether this transition is valid.
+ // All transitions have a token index value different from InvalidTokenIdx. We perform the
+ // check twice with different indices into the replicated state enumeration.
+ if (TransTokenIdxMatrix[dec_caliptra_ss_lc_state_i[0]][trans_target_i[0]] != InvalidTokenIdx ||
+ TransTokenIdxMatrix[dec_caliptra_ss_lc_state_i[1]][trans_target_i[1]] != InvalidTokenIdx) begin
+ // Encode the target state.
+ // Note that the life cycle encoding itself also ensures that only certain transitions are
+ // possible. So even if this logic here is tampered with, the encoding values won't allow
+ // an invalid transition (instead, the programming operation will fail and leave the life
+ // cycle state corrupted/invalid).
+ unique case (trans_target_i)
+ {DecLcStateNumRep{DecLcStRaw}}: next_caliptra_ss_lc_state_o = LcStRaw;
+ {DecLcStateNumRep{DecLcStTestUnlocked0}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked0;
+ {DecLcStateNumRep{DecLcStTestLocked0}}: next_caliptra_ss_lc_state_o = LcStTestLocked0;
+ {DecLcStateNumRep{DecLcStTestUnlocked1}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked1;
+ {DecLcStateNumRep{DecLcStTestLocked1}}: next_caliptra_ss_lc_state_o = LcStTestLocked1;
+ {DecLcStateNumRep{DecLcStTestUnlocked2}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked2;
+ {DecLcStateNumRep{DecLcStTestLocked2}}: next_caliptra_ss_lc_state_o = LcStTestLocked2;
+ {DecLcStateNumRep{DecLcStTestUnlocked3}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked3;
+ {DecLcStateNumRep{DecLcStTestLocked3}}: next_caliptra_ss_lc_state_o = LcStTestLocked3;
+ {DecLcStateNumRep{DecLcStTestUnlocked4}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked4;
+ {DecLcStateNumRep{DecLcStTestLocked4}}: next_caliptra_ss_lc_state_o = LcStTestLocked4;
+ {DecLcStateNumRep{DecLcStTestUnlocked5}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked5;
+ {DecLcStateNumRep{DecLcStTestLocked5}}: next_caliptra_ss_lc_state_o = LcStTestLocked5;
+ {DecLcStateNumRep{DecLcStTestUnlocked6}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked6;
+ {DecLcStateNumRep{DecLcStTestLocked6}}: next_caliptra_ss_lc_state_o = LcStTestLocked6;
+ {DecLcStateNumRep{DecLcStTestUnlocked7}}: next_caliptra_ss_lc_state_o = LcStTestUnlocked7;
+ {DecLcStateNumRep{DecLcStDev}}: next_caliptra_ss_lc_state_o = LcStDev;
+ {DecLcStateNumRep{DecLcStProd}}: next_caliptra_ss_lc_state_o = LcStProd;
+ {DecLcStateNumRep{DecLcStProdEnd}}: next_caliptra_ss_lc_state_o = LcStProdEnd;
+ {DecLcStateNumRep{DecLcStRma}}: next_caliptra_ss_lc_state_o = LcStRma;
+ {DecLcStateNumRep{DecLcStScrap}}: next_caliptra_ss_lc_state_o = LcStScrap;
+ default: trans_invalid_error_o = 1'b1;
+ endcase // trans_target_i
+ end else begin
+ trans_invalid_error_o = 1'b1;
+ end
+ end else begin
+ trans_invalid_error_o = 1'b1;
+ end
+
+ // SEC_CM: STATE.CONFIG.SPARSE
+ // Check that the internally re-encoded life cycle state has a correct encoding.
+ unique case (dec_caliptra_ss_lc_state_i)
+ {DecLcStateNumRep{DecLcStRaw}},
+ {DecLcStateNumRep{DecLcStTestUnlocked0}},
+ {DecLcStateNumRep{DecLcStTestLocked0}},
+ {DecLcStateNumRep{DecLcStTestUnlocked1}},
+ {DecLcStateNumRep{DecLcStTestLocked1}},
+ {DecLcStateNumRep{DecLcStTestUnlocked2}},
+ {DecLcStateNumRep{DecLcStTestLocked2}},
+ {DecLcStateNumRep{DecLcStTestUnlocked3}},
+ {DecLcStateNumRep{DecLcStTestLocked3}},
+ {DecLcStateNumRep{DecLcStTestUnlocked4}},
+ {DecLcStateNumRep{DecLcStTestLocked4}},
+ {DecLcStateNumRep{DecLcStTestUnlocked5}},
+ {DecLcStateNumRep{DecLcStTestLocked5}},
+ {DecLcStateNumRep{DecLcStTestUnlocked6}},
+ {DecLcStateNumRep{DecLcStTestLocked6}},
+ {DecLcStateNumRep{DecLcStTestUnlocked7}},
+ {DecLcStateNumRep{DecLcStDev}},
+ {DecLcStateNumRep{DecLcStProd}},
+ {DecLcStateNumRep{DecLcStProdEnd}},
+ {DecLcStateNumRep{DecLcStRma}},
+ {DecLcStateNumRep{DecLcStScrap}}: ;
+ default: trans_invalid_error_o = 1'b1;
+ endcase // trans_target_i
+ end
+ end
+
+endmodule : caliptra_ss_lc_ctrl_state_transition
diff --git a/src/caliptra_ss_lc_ctrl/rtl/jtag_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/jtag_pkg.sv
new file mode 100644
index 0000000..9a8355e
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/jtag_pkg.sv
@@ -0,0 +1,24 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+
+package jtag_pkg;
+
+ typedef struct packed {
+ logic tck;
+ logic tms;
+ logic trst_n;
+ logic tdi;
+ } jtag_req_t;
+
+ parameter jtag_req_t JTAG_REQ_DEFAULT = '0;
+
+ typedef struct packed {
+ logic tdo;
+ logic tdo_oe;
+ } jtag_rsp_t;
+
+ parameter jtag_rsp_t JTAG_RSP_DEFAULT = '0;
+
+endpackage : jtag_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/keccak_2share.sv b/src/caliptra_ss_lc_ctrl/rtl/keccak_2share.sv
new file mode 100644
index 0000000..1653e8c
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/keccak_2share.sv
@@ -0,0 +1,563 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// This module is the single round keccak permutation module
+// It supports Keccak with up to 1600b of state
+
+`include "caliptra_prim_assert.sv"
+
+module keccak_2share
+ import caliptra_prim_mubi_pkg::*;
+#(
+ parameter int Width = 1600, // b= {25, 50, 100, 200, 400, 800, 1600}
+
+ // Derived
+ localparam int W = Width/25,
+ localparam int L = $clog2(W),
+ localparam int MaxRound = 12 + 2*L, // Keccak-f only
+ localparam int RndW = $clog2(MaxRound+1), // Representing up to MaxRound
+
+ // Control parameters
+ parameter bit EnMasking = 1'b0, // Enable secure hardening
+ parameter bit ForceRandExt = 1'b0, // 1: Always forward externally provided randomness.
+ // 0: Switch between external randomness and internal
+ // intermediate state according to dom_in_rand_ext_i.
+ localparam int Share = EnMasking ? 2 : 1
+) (
+ input clk_i,
+ input rst_ni,
+
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i, // Used to disable SVAs when escalating.
+
+ input [RndW-1:0] rnd_i, // Current round index
+
+ // Control inputs used when EnMasking = 1.
+ input mubi4_t phase_sel_i, // Output mux contol
+ input dom_out_low_i, // DOM multiplier output mux
+ input dom_in_low_i, // DOM multiplier input mux
+ input dom_in_rand_ext_i, // DOM multiplier input randomness mux
+ input dom_update_i, // DOM multiplier pipeline reg write enable
+
+ input [Width/2-1:0] rand_i, // Randomness for remasking.
+
+ // State input and output
+ input [Width-1:0] s_i [Share],
+ output logic [Width-1:0] s_o [Share]
+);
+ ///////////
+ // Types //
+ ///////////
+ // x y z
+ typedef logic [4:0][4:0][W-1:0] box_t; // (x,y,z) state
+ typedef logic [W-1:0] lane_t; // (z)
+ typedef logic [4:0] [W-1:0] plane_t; // (x,z)
+ typedef logic [4:0][4:0] slice_t; // (x,y)
+ typedef logic [4:0][W-1:0] sheet_t; // (y,z) identical to plane_t
+ typedef logic [4:0] row_t; // (x)
+ typedef logic [4:0] col_t; // (y) identical to row_t
+
+ //////////////
+ // Keccak_f //
+ //////////////
+ box_t state_in [Share];
+ box_t state_out [Share];
+ box_t theta_data [Share];
+ box_t rho_data [Share];
+ box_t pi_data [Share];
+ box_t chi_data [Share];
+ box_t iota_data [Share];
+
+ box_t phase1_in [Share];
+ box_t phase1_out [Share];
+ box_t phase2_in [Share];
+ box_t phase2_out [Share];
+
+ /////////////////
+ // Unused nets //
+ /////////////////
+ // Tie off input signals that aren't used in the unmasked implementation.
+ if (!EnMasking) begin : gen_tie_unused
+ logic unused_clk;
+ logic unused_rst_n;
+ mubi4_t unused_phase_sel;
+ logic unused_dom_ctrl;
+ logic [Width/2-1:0] unused_rand;
+ assign unused_clk = clk_i;
+ assign unused_rst_n = rst_ni;
+ assign unused_phase_sel = phase_sel_i;
+ assign unused_dom_ctrl =
+ ^{dom_out_low_i, dom_in_low_i, dom_in_rand_ext_i, dom_update_i};
+ assign unused_rand = rand_i;
+ end
+
+ //////////////////////////////////////////////////
+ // Input/output type conversion and interfacing //
+ //////////////////////////////////////////////////
+ for (genvar i = 0 ; i < Share ; i++) begin : g_state_inout
+ assign state_in[i] = bitarray_to_box(s_i[i]);
+ assign s_o[i] = box_to_bitarray(state_out[i]);
+ end : g_state_inout
+
+ if (EnMasking) begin : g_2share_data
+ assign phase1_in = state_in;
+ assign phase2_in = state_in;
+
+ always_comb begin
+ unique case (phase_sel_i)
+ MuBi4False: state_out = phase1_out;
+ MuBi4True: state_out = phase2_out;
+ default: state_out = phase1_out;
+ endcase
+ end
+ end else begin : g_single_data
+ assign phase1_in = state_in;
+ assign phase2_in = phase1_out;
+ assign state_out = phase2_out;
+ end
+
+ //////////////
+ // Datapath //
+ //////////////
+ for (genvar i = 0 ; i < Share ; i++) begin : g_datapath
+
+ // Phase 1:
+ assign theta_data[i] = theta(phase1_in[i]);
+ // Commented out rho function as vcs complains z-Offset%W isn't constant
+ // assign rho_data[i] = rho(theta_data[i]);
+
+ assign pi_data[i] = pi(rho_data[i]);
+
+ // Phase 2 (Cycles 1, 2 and 3):
+ // Chi : See below
+ // Iota: See below
+ end : g_datapath
+
+ assign phase1_out = pi_data;
+
+ // Iota adds Round Constants(RC), so only one share should be XORed
+ if (EnMasking) begin : g_2share_iota
+ assign iota_data[0] = iota(chi_data[0], rnd_i);
+ assign iota_data[1] = chi_data[1];
+ end else begin : g_single_iota
+ assign iota_data[0] = iota(chi_data[0], rnd_i);
+ end
+
+ if (EnMasking) begin : g_2share_chi
+ // Domain-Oriented Masking
+ // reference: https://eprint.iacr.org/2017/395.pdf
+
+ localparam int unsigned WSheetHalf = $bits(sheet_t)/2;
+ logic [4:0][WSheetHalf-1:0] in_prd, out_prd;
+
+ /////////////////////
+ // DOM multipliers //
+ /////////////////////
+
+ for (genvar x = 0 ; x < 5 ; x++) begin : g_chi_w
+ localparam int X1 = (x + 1) % 5;
+ localparam int X2 = (x + 2) % 5;
+
+ sheet_t sheet0[Share]; // Inverted input X1
+ sheet_t sheet1[Share]; // X2
+ sheet_t sheet2[Share]; // DOM output
+
+ assign sheet0[0] = ~phase2_in[0][X1];
+ assign sheet0[1] = phase2_in[1][X1];
+
+ assign sheet1[0] = phase2_in[0][X2];
+ assign sheet1[1] = phase2_in[1][X2];
+
+ // Convert sheet_t to 1D arrays, one for the upper and lower half lane.
+ logic [WSheetHalf-1:0] a0_l, a1_l, b0_l, b1_l;
+ logic [WSheetHalf-1:0] a0_h, a1_h, b0_h, b1_h;
+ logic [WSheetHalf-1:0] a0, a1, b0, b1, q0, q1;
+
+ assign a0_l = {sheet0[0][0][W/2-1:0],
+ sheet0[0][1][W/2-1:0],
+ sheet0[0][2][W/2-1:0],
+ sheet0[0][3][W/2-1:0],
+ sheet0[0][4][W/2-1:0]};
+ assign a1_l = {sheet0[1][0][W/2-1:0],
+ sheet0[1][1][W/2-1:0],
+ sheet0[1][2][W/2-1:0],
+ sheet0[1][3][W/2-1:0],
+ sheet0[1][4][W/2-1:0]};
+
+ assign a0_h = {sheet0[0][0][W-1:W/2],
+ sheet0[0][1][W-1:W/2],
+ sheet0[0][2][W-1:W/2],
+ sheet0[0][3][W-1:W/2],
+ sheet0[0][4][W-1:W/2]};
+ assign a1_h = {sheet0[1][0][W-1:W/2],
+ sheet0[1][1][W-1:W/2],
+ sheet0[1][2][W-1:W/2],
+ sheet0[1][3][W-1:W/2],
+ sheet0[1][4][W-1:W/2]};
+
+ assign b0_l = {sheet1[0][0][W/2-1:0],
+ sheet1[0][1][W/2-1:0],
+ sheet1[0][2][W/2-1:0],
+ sheet1[0][3][W/2-1:0],
+ sheet1[0][4][W/2-1:0]};
+ assign b1_l = {sheet1[1][0][W/2-1:0],
+ sheet1[1][1][W/2-1:0],
+ sheet1[1][2][W/2-1:0],
+ sheet1[1][3][W/2-1:0],
+ sheet1[1][4][W/2-1:0]};
+
+ assign b0_h = {sheet1[0][0][W-1:W/2],
+ sheet1[0][1][W-1:W/2],
+ sheet1[0][2][W-1:W/2],
+ sheet1[0][3][W-1:W/2],
+ sheet1[0][4][W-1:W/2]};
+ assign b1_h = {sheet1[1][0][W-1:W/2],
+ sheet1[1][1][W-1:W/2],
+ sheet1[1][2][W-1:W/2],
+ sheet1[1][3][W-1:W/2],
+ sheet1[1][4][W-1:W/2]};
+
+ // Input muxing
+ assign a0 = dom_in_low_i ? a0_l : a0_h;
+ assign a1 = dom_in_low_i ? a1_l : a1_h;
+ assign b0 = dom_in_low_i ? b0_l : b0_h;
+ assign b1 = dom_in_low_i ? b1_l : b1_h;
+
+ // Randomness muxing
+ if (!ForceRandExt) begin : gen_in_prd_mux
+ // Intermediate results are rotated across rows. The new Row x depends on
+ // data from Rows x + 1 and x + 2. Hence we don't want to use intermediate
+ // results from Rows x, x + 1, and x + 2 for remasking.
+ assign in_prd[x] = dom_in_rand_ext_i ? rand_i[x * WSheetHalf +: WSheetHalf] :
+ out_prd[rot_int(x, 5)];
+ end else begin : gen_no_in_prd_mux
+ // Always use the externally provided randomness.
+ assign in_prd[x] = rand_i[x * WSheetHalf +: WSheetHalf];
+ // Tie off unused signals.
+ logic unused_out_prd;
+ assign unused_out_prd = ^{dom_in_rand_ext_i, out_prd[rot_int(x, 5)]};
+ end
+
+ caliptra_prim_dom_and_2share #(
+ .DW (WSheetHalf), // a half sheet
+ .Pipeline(1) // Process the full sheet in 3 clock cycles. This reduces
+ // SCA leakage.
+ ) u_dom (
+ .clk_i,
+ .rst_ni,
+
+ .a0_i (a0),
+ .a1_i (a1),
+ .b0_i (b0),
+ .b1_i (b1),
+ .z_valid_i (dom_update_i),
+ .z_i (in_prd[x]),
+ .q0_o (q0),
+ .q1_o (q1),
+ .prd_o (out_prd[x])
+ );
+
+ // Output conversion from q0, q1 to sheet_t
+ // For simplicity, we forward the generated lane half to both the upper
+ // and lower lane halves at this point. The actual output muxing/selection
+ // happens after the Iota step when generating phase2_out from iota_data
+ // and state_in below.
+ assign sheet2[0][4] = {2{q0[W/2*0+:W/2]}};
+ assign sheet2[0][3] = {2{q0[W/2*1+:W/2]}};
+ assign sheet2[0][2] = {2{q0[W/2*2+:W/2]}};
+ assign sheet2[0][1] = {2{q0[W/2*3+:W/2]}};
+ assign sheet2[0][0] = {2{q0[W/2*4+:W/2]}};
+
+ assign sheet2[1][4] = {2{q1[W/2*0+:W/2]}};
+ assign sheet2[1][3] = {2{q1[W/2*1+:W/2]}};
+ assign sheet2[1][2] = {2{q1[W/2*2+:W/2]}};
+ assign sheet2[1][1] = {2{q1[W/2*3+:W/2]}};
+ assign sheet2[1][0] = {2{q1[W/2*4+:W/2]}};
+
+ // Final XOR to generate the output
+ assign chi_data[0][x] = sheet2[0] ^ phase2_in[0][x];
+ assign chi_data[1][x] = sheet2[1] ^ phase2_in[1][x];
+ end : g_chi_w
+
+ // Since Chi and thus Iota are separately applied to the lower and upper half
+ // lanes, we need to forward the input to the other half.
+ for (genvar x = 0 ; x < 5 ; x++) begin : g_2share_phase2_out_row
+ for (genvar y = 0 ; y < 5 ; y++) begin : g_2share_phase2_out_col
+ assign phase2_out[0][x][y] = dom_out_low_i ?
+ { state_in[0][x][y][W-1:W/2], iota_data[0][x][y][W/2-1:0]} :
+ {iota_data[0][x][y][W-1:W/2], state_in[0][x][y][W/2-1:0]};
+ assign phase2_out[1][x][y] = dom_out_low_i ?
+ { state_in[1][x][y][W-1:W/2], iota_data[1][x][y][W/2-1:0]} :
+ {iota_data[1][x][y][W-1:W/2], state_in[1][x][y][W/2-1:0]};
+ end
+ end
+
+ end else begin : g_single_chi
+ assign chi_data[0] = chi(phase2_in[0]);
+ assign phase2_out = iota_data;
+ end
+
+ // Rho ======================================================================
+ // As RhoOffset[x][y] is considered as variable int in VCS,
+ // it is replaced with generate statement.
+ // Revised to meet verilator lint. Now RhoOffset is 1-D array
+ localparam int RhoOffset [25] = '{
+ //y 0 1 2 3 4 x
+ 0, 36, 3, 105, 210, // 0: 0 1 2 3 4
+ 1, 300, 10, 45, 66, // 1: 5 6 7 8 9
+ 190, 6, 171, 15, 253, // 2: 10 11 12 13 14
+ 28, 55, 153, 21, 120, // 3: 15 16 17 18 19
+ 91, 276, 231, 136, 78 // 4: 20 21 22 23 24
+ };
+ for (genvar i = 0 ; i < Share ; i++) begin : g_rho
+ box_t rho_in, rho_out;
+ assign rho_in = theta_data[i];
+ assign rho_data[i] = rho_out;
+
+ for (genvar x = 0 ; x < 5 ; x++) begin : gen_rho_x
+ for (genvar y = 0 ; y < 5 ; y++) begin : gen_rho_y
+ localparam int Offset = RhoOffset[5*x+y]%W;
+ localparam int ShiftAmt = W- Offset;
+ if (Offset == 0) begin : gen_offset0
+ assign rho_out[x][y][W-1:0] = rho_in[x][y][W-1:0];
+ end else begin : gen_others
+ assign rho_out[x][y][W-1:0] = {rho_in[x][y][0+:ShiftAmt],
+ rho_in[x][y][ShiftAmt+:Offset]};
+ end
+ end
+ end
+ end : g_rho
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_INIT(ValidWidth_A,
+ EnMasking == 0 && Width inside {25, 50, 100, 200, 400, 800, 1600} ||
+ EnMasking == 1 && Width inside {50, 100, 200, 400, 800, 1600})
+ `CALIPTRA_ASSERT_INIT(ValidW_A, W inside {1, 2, 4, 8, 16, 32, 64})
+ `CALIPTRA_ASSERT_INIT(ValidL_A, L inside {0, 1, 2, 3, 4, 5, 6})
+ `CALIPTRA_ASSERT_INIT(ValidRound_A, MaxRound <= 24) // Keccak-f only
+
+ // phase_sel_i shall stay for two cycle after change to 1.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t unused_caliptra_ss_lc_sig;
+ assign unused_caliptra_ss_lc_sig = caliptra_ss_lc_escalate_en_i;
+ if (EnMasking) begin : gen_selperiod_chk
+ `CALIPTRA_ASSUME(SelStayTwoCycleIfTrue_A,
+ ($past(phase_sel_i) == MuBi4False) && (phase_sel_i == MuBi4True)
+ |=> phase_sel_i == MuBi4True, clk_i, !rst_ni ||
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i))
+ end
+
+ ///////////////
+ // Functions //
+ ///////////////
+
+ // Convert bitarray to 3D box
+ // Please take a look at FIPS PUB 202
+ // https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf
+ // > For all triples (x,y,z) such that 0<=x<5, 0<=y<5, and 0<=z A[x,y,z]=S[w(5y+x)+z]
+ function automatic box_t bitarray_to_box(logic [Width-1:0] s_in);
+ automatic box_t box;
+ for (int y = 0 ; y < 5 ; y++) begin
+ for (int x = 0 ; x < 5 ; x++) begin
+ for (int z = 0 ; z < W ; z++) begin
+ box[x][y][z] = s_in[W*(5*y+x) + z];
+ end
+ end
+ end
+ return box;
+ endfunction : bitarray_to_box
+
+ // Convert 3D cube to bitarray
+ function automatic logic [Width-1:0] box_to_bitarray(box_t state);
+ automatic logic [Width-1:0] bitarray;
+ for (int y = 0 ; y < 5 ; y++) begin
+ for (int x = 0 ; x < 5 ; x++) begin
+ for (int z = 0 ; z < W ; z++) begin
+ bitarray[W*(5*y+x)+z] = state[x][y][z];
+ end
+ end
+ end
+ return bitarray;
+ endfunction : box_to_bitarray
+
+ // Rotate integer indices
+ function automatic integer rot_int(integer in, integer num);
+ integer out;
+ if (in == 0) begin
+ out = num - 1;
+ end else begin
+ out = in - 1;
+ end
+ return out;
+ endfunction
+
+ // Step Mapping =============================================================
+ // theta
+ // XOR each bit in the state with the parity of two columns
+ // C[x,z] = A[x,0,z] ^ A[x,1,z] ^ A[x,2,z] ^ A[x,3,z] ^ A[x,4,z]
+ // D[x,z] = C[x-1,z] ^ C[x+1,z-1]
+ // theta = A[x,y,z] ^ D[x,z]
+ localparam int ThetaIndexX1 [5] = '{4, 0, 1, 2, 3}; // (x-1)%5
+ localparam int ThetaIndexX2 [5] = '{1, 2, 3, 4, 0}; // (x+1)%5
+ function automatic box_t theta(box_t state);
+ plane_t c;
+ plane_t d;
+ box_t result;
+ for (int x = 0 ; x < 5 ; x++) begin
+ c[x] = state[x][0] ^ state[x][1] ^ state[x][2] ^ state[x][3] ^ state[x][4];
+ end
+ for (int x = 0 ; x < 5 ; x++) begin
+ for (int z = 0 ; z < W ; z++) begin
+ int index_z;
+ index_z = (z == 0) ? W-1 : z-1; // (z+1)%W
+ d[x][z] = c[ThetaIndexX1[x]][z] ^ c[ThetaIndexX2[x]][index_z];
+ end
+ end
+ for (int x = 0 ; x < 5 ; x++) begin
+ for (int y = 0 ; y < 5 ; y++) begin
+ result[x][y] = state[x][y] ^ d[x];
+ end
+ end
+ return result;
+ endfunction : theta
+
+ // rho
+
+ // Commented out entire rho function due to VCS elaboration error.
+ // (z-RhoOffset[x][y]%W) isn't considered as a constant in VCS.
+ // Even changing it to W-RhoOffset[x][y]%W and assign to ShiftAmt
+ // creates same error.
+
+ // Offset : Look at Table 2 in FIPS PUB 202
+ //localparam int RhoOffset [5][5] = '{
+ // //y 0 1 2 3 4 x
+ // '{ 0, 36, 3, 105, 210},// 0
+ // '{ 1, 300, 10, 45, 66},// 1
+ // '{ 190, 6, 171, 15, 253},// 2
+ // '{ 28, 55, 153, 21, 120},// 3
+ // '{ 91, 276, 231, 136, 78} // 4
+ //};
+
+ // rotate bits of each lane by offset
+ // 1. rho[0,0,z] = A[0,0,z]
+ // 2. Offset swap
+ // a. (x,y) := (1,0)
+ // b. for t [0..23]
+ // i. rho[x,y,z] = A[x,y,z-(t+1)(t+2)/2]
+ // ii. (x,y) = (y, (2x+3y))
+ //function automatic box_t rho(box_t state);
+ // box_t result;
+ // for (int x = 0 ; x < 5 ; x++) begin
+ // for (int y = 0 ; y < 5 ; y++) begin
+ // for (int z = 0 ; z < W ; z++) begin
+ // automatic int index_z;
+ // index_z = (z-RhoOffset[x][y])%W;
+ // result[x][y][z] = state[x][y][(z-RhoOffset[x][y])%W];
+ // end
+ // end
+ // end
+ // return result;
+ //endfunction : rho
+
+ // pi
+ // rearrange the position of lanes
+ // pi[x,y,z] = state[(x+3y),x,z]
+ localparam int PiRotate [5][5] = '{
+ //y 0 1 2 3 4 x
+ '{ 0, 3, 1, 4, 2},// 0
+ '{ 1, 4, 2, 0, 3},// 1
+ '{ 2, 0, 3, 1, 4},// 2
+ '{ 3, 1, 4, 2, 0},// 3
+ '{ 4, 2, 0, 3, 1} // 4
+ };
+ function automatic box_t pi(box_t state);
+ box_t result;
+ for (int x = 0 ; x < 5 ; x++) begin
+ for (int y = 0 ; y < 5 ; y++) begin
+ result[x][y][W-1:0] = state[PiRotate[x][y]][x][W-1:0];
+ end
+ end
+ return result;
+ endfunction : pi
+
+ // chi
+ // chi[x,y,z] = state[x,y,z] ^ ((state[x+1,y,z] ^ 1) & state[x+2,y,z])
+ localparam int ChiIndexX1 [5] = '{1, 2, 3, 4, 0}; // (x+1)%5
+ localparam int ChiIndexX2 [5] = '{2, 3, 4, 0, 1}; // (x+2)%5
+ function automatic box_t chi(box_t state);
+ box_t result;
+ for (int x = 0 ; x < 5 ; x++) begin
+ result[x] = state[x] ^ ((~state[ChiIndexX1[x]]) & state[ChiIndexX2[x]]);
+ end
+ return result;
+ endfunction : chi
+
+ // iota
+ // XOR (x,y) = (0,0) with Round Constant (RC)
+
+ // RC parameter: Precomputed by util/keccak_rc.py. Only up-to 0..L-1 is used
+ // RC = '0
+ // RC[2**j-1] = rc(j+7*rnd)
+ // rc(t) =
+ // 1. t%255 == 0 -> 1
+ // 2. R[0:7] = 'b10000000
+ // 3. for i = [1..t%255]
+ // a. R = 0 || R
+ // b. R[0] = R[0] ^ R[8]
+ // c. R[4] = R[4] ^ R[8]
+ // d. R[5] = R[5] ^ R[8]
+ // e. R[6] = R[6] ^ R[8]
+ // f. R = R[0:7]
+ // 4. return R[0]
+ // RC has L = [0..6]
+ // for lower L case, only chopping lower part of 64bit RC is sufficient.
+ localparam logic [63:0] RC [24] = '{
+ 64'h 0000_0000_0000_0001, // Round 0
+ 64'h 0000_0000_0000_8082, // Round 1
+ 64'h 8000_0000_0000_808A, // Round 2
+ 64'h 8000_0000_8000_8000, // Round 3
+ 64'h 0000_0000_0000_808B, // Round 4
+ 64'h 0000_0000_8000_0001, // Round 5
+ 64'h 8000_0000_8000_8081, // Round 6
+ 64'h 8000_0000_0000_8009, // Round 7
+ 64'h 0000_0000_0000_008A, // Round 8
+ 64'h 0000_0000_0000_0088, // Round 9
+ 64'h 0000_0000_8000_8009, // Round 10
+ 64'h 0000_0000_8000_000A, // Round 11
+ 64'h 0000_0000_8000_808B, // Round 12
+ 64'h 8000_0000_0000_008B, // Round 13
+ 64'h 8000_0000_0000_8089, // Round 14
+ 64'h 8000_0000_0000_8003, // Round 15
+ 64'h 8000_0000_0000_8002, // Round 16
+ 64'h 8000_0000_0000_0080, // Round 17
+ 64'h 0000_0000_0000_800A, // Round 18
+ 64'h 8000_0000_8000_000A, // Round 19
+ 64'h 8000_0000_8000_8081, // Round 20
+ 64'h 8000_0000_0000_8080, // Round 21
+ 64'h 0000_0000_8000_0001, // Round 22
+ 64'h 8000_0000_8000_8008 // Round 23
+ };
+
+ // iota: XOR with RC for (x,y) = (0,0)
+ function automatic box_t iota(box_t state, logic [RndW-1:0] rnd);
+ box_t result;
+ result = state;
+ result[0][0][W-1:0] = state[0][0][W-1:0] ^ RC[rnd][W-1:0];
+
+ return result;
+ endfunction : iota
+
+ // Round function : Rnd(A,i_r)
+ // Not used due to rho function issue described above.
+
+ //function automatic box_t keccak_rnd(box_t state, logic [RndW-1:0] rnd);
+ // box_t keccak_state;
+ // keccak_state = iota(chi(pi(rho(theta(state)))), rnd);
+ //
+ // return keccak_state;
+ //endfunction : keccak_rnd
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/keccak_round.sv b/src/caliptra_ss_lc_ctrl/rtl/keccak_round.sv
new file mode 100644
index 0000000..62828b5
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/keccak_round.sv
@@ -0,0 +1,611 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Keccak full round logic based on given input `Width`
+// e.g. Width 800 requires 22 rounds
+//
+// This module has two phases:
+// 1. Compute Theta, Rho, Pi steps.
+// 2. Computes Chi and Iota steps.
+//
+// If masking is not enabled, the two phases are completed within a single
+// clock cycle.
+//
+// If masking is enabled, the first phase (Phase1) completes in one cycle.
+// The second phase then needs three clock cycles to complete:
+// 1. In the first clock cycle, the first stage of Chi is computed for the
+// first lane halves.
+// 2. In the second clock cycle, the module writes the updated first lane
+// halves to the state.
+// 3. In the third clock cycle, the new second lane halves are written to
+// to the state.
+//
+// To deter SCA, we randomly decide which lane halves to process first on a
+// per-round basis. We use additional randomness generated by the PRNG to take
+// this decision (rand_aux_i). For more details, refer to the comments inside
+// the FSM below.
+//
+// If masking is enabled, this implementation uses both randomness provided
+// from an external PRNG as well as intermediate results for remasking the DOM
+// multipliers below. Per clock cycle, 800b of pseudo-random data (PRD) are
+// required. A carfully designed schedule ensures to only ever update the input
+// data of the DOM multipliers when also providing fresh randomness and vice
+// versa. Updating one without the other could lead to undesired SCA leakage.
+
+`include "caliptra_prim_assert.sv"
+
+module keccak_round
+ import caliptra_prim_mubi_pkg::*;
+#(
+ parameter int Width = 1600, // b= {25, 50, 100, 200, 400, 800, 1600}
+
+ // Derived
+ localparam int W = Width/25,
+ localparam int L = $clog2(W),
+ localparam int MaxRound = 12 + 2*L, // Keccak-f only
+ localparam int RndW = $clog2(MaxRound+1), // Representing up to MaxRound-1
+
+ // Feed parameters
+ parameter int DInWidth = 64, // currently only 64bit supported
+ localparam int DInEntry = Width / DInWidth,
+ localparam int DInAddr = $clog2(DInEntry),
+
+ // Control parameters
+ parameter bit EnMasking = 1'b0, // Enable SCA hardening, requires Width >= 50
+ parameter bit ForceRandExt = 1'b0, // 1: Always forward externally provided randomness.
+ // 0: Switch between external randomness and internal
+ // intermediate state according to schedule.
+ localparam int Share = EnMasking ? 2 : 1
+) (
+ input clk_i,
+ input rst_ni,
+
+ // Message Feed
+ input valid_i,
+ input [DInAddr-1:0] addr_i,
+ input [DInWidth-1:0] data_i [Share],
+ output ready_o,
+
+ // In-process control
+ input run_i, // Pulse signal to initiates Keccak full round
+ input rand_valid_i,
+ input rand_early_i,
+ input [Width/2-1:0] rand_data_i,
+ input rand_aux_i,
+ output logic rand_update_o,
+ output logic rand_consumed_o,
+
+ output logic complete_o, // Indicates full round is done
+
+ // State out. This can be used as Digest
+ output logic [Width-1:0] state_o [Share],
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // Errors:
+ // sparse_fsm_error: Checking if FSM state falls into unknown value
+ output logic sparse_fsm_error_o,
+ // round_count_error: caliptra_prim_count checks round value consistency
+ output logic round_count_error_o,
+ // rst_storage_error: check if reset signal asserted out of the
+ // permitted window
+ output logic rst_storage_error_o,
+
+ input caliptra_prim_mubi_pkg::mubi4_t clear_i // Clear internal state to '0
+);
+
+ import sha3_pkg::*;
+
+ /////////////////////
+ // Control signals //
+ /////////////////////
+
+ // Update storage register
+ logic update_storage;
+
+ // Reset the storage to 0 to initiate new Hash operation
+ logic rst_storage;
+
+ // XOR message into storage register
+ // It only does based on the given DInWidth.
+ // If DInWidth < Width, it takes multiple cycles to XOR all message
+ logic xor_message;
+
+ // Select Keccak_p datapath
+ // 0: Select Phase1 (Theta -> Rho -> Pi)
+ // 1: Select Phase2 (Chi -> Iota)
+ // `phase_sel` needs to be asserted until the Chi stage is consumed,
+ mubi4_t phase_sel;
+
+ // DOM multiplier input/output mux control
+ // 0: first compute upper, then lower lane halves
+ // 1: first compute lower, then upper lane halves
+ logic low_then_high_d, low_then_high_q;
+ // 0: drive/select upper lane halves
+ // 1: drive/select lower lane halves
+ logic dom_out_low_d, dom_out_low_q;
+ logic dom_in_low_d, dom_in_low_q;
+ // 0: forward external randomness input
+ // 1: forward partial intermediate results
+ logic dom_in_rand_ext_d, dom_in_rand_ext_q;
+ // 0: keep current intermediate results in pipeline registers
+ // 1: latch new intermediate results into pipeline registers
+ logic dom_update;
+
+ // Increase/ Reset Round number
+ logic inc_rnd_num;
+ logic rst_rnd_num;
+
+ // Round reaches end
+ // This signal indicates the round reaches desired number, which is MaxRound -1.
+ // MaxRound is dependant on the Width. In case of SHA3/SHAKE, MaxRound is 24.
+ logic rnd_eq_end;
+
+ // Complete of Keccak_f
+ // State machine asserts `complete_d` when it reaches at the end of round and
+ // operation (Phase3 if Masked). The stage, the storage still doesn't have
+ // the valid states. So precisely it is not completed yet.
+ // State generated `complete_d` is latched with the clock and creates a pulse
+ // signal one cycle later. The signal is the indication of completion.
+ //
+ // Intentionally removed any intermediate step (so called StComplete) in order
+ // to save a clock to proceeds next round.
+ logic complete_d;
+
+ //////////////////////
+ // Datapath Signals //
+ //////////////////////
+
+ // Single round keccak output data
+ logic [Width-1:0] keccak_out [Share];
+
+ // Keccak Round indicator: range from 0 .. MaxRound
+ logic [RndW-1:0] round;
+
+ // Random value and valid signal used in Keccak_p
+ logic keccak_rand_update;
+ logic keccak_rand_consumed;
+ logic [Width/2-1:0] keccak_rand_data;
+
+ //////////////////////
+ // Keccak Round FSM //
+ //////////////////////
+
+ // state inputs
+ assign rnd_eq_end = (int'(round) == MaxRound - 1);
+
+ keccak_st_e keccak_st, keccak_st_d;
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, keccak_st_d, keccak_st, keccak_st_e, KeccakStIdle)
+
+ // Next state logic and output logic
+ // SEC_CM: FSM.SPARSE
+ always_comb begin
+ // Default values
+ keccak_st_d = keccak_st;
+
+ xor_message = 1'b 0;
+ update_storage = 1'b 0;
+ rst_storage = 1'b 0;
+
+ inc_rnd_num = 1'b 0;
+ rst_rnd_num = 1'b 0;
+
+ keccak_rand_update = 1'b 0;
+ keccak_rand_consumed = 1'b 0;
+
+ phase_sel = MuBi4False;
+ low_then_high_d = low_then_high_q;
+ dom_in_low_d = dom_in_low_q;
+ dom_in_rand_ext_d = dom_in_rand_ext_q;
+ dom_update = 1'b 0;
+
+ complete_d = 1'b 0;
+
+ sparse_fsm_error_o = 1'b 0;
+
+ unique case (keccak_st)
+ KeccakStIdle: begin
+ if (valid_i) begin
+ // State machine allows Sponge Absorbing only in Idle state.
+ keccak_st_d = KeccakStIdle;
+
+ xor_message = 1'b 1;
+ update_storage = 1'b 1;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(clear_i)) begin
+ // Opt1. State machine allows resetting the storage only in Idle
+ // Opt2. storage resets regardless of states but clear_i
+ // Both are added in the design at this time. Will choose the
+ // direction later.
+ keccak_st_d = KeccakStIdle;
+
+ rst_storage = 1'b 1;
+ end else if (EnMasking && run_i) begin
+ // Masked version of Keccak handling
+ keccak_st_d = KeccakStPhase1;
+
+ // Drive DOM multiplier I/O mux signals for Phase 1.
+ dom_in_low_d = low_then_high_q;
+ dom_in_rand_ext_d = 1'b 0;
+ end else if (!EnMasking && run_i) begin
+ // Unmasked version of Keccak handling
+ keccak_st_d = KeccakStActive;
+ end else begin
+ keccak_st_d = KeccakStIdle;
+ end
+ end
+
+ KeccakStActive: begin
+ // Run Keccak single round logic until it reaches MaxRound - 1
+ update_storage = 1'b 1;
+
+ if (rnd_eq_end) begin
+ keccak_st_d = KeccakStIdle;
+
+ rst_rnd_num = 1'b 1;
+ complete_d = 1'b 1;
+ end else begin
+ keccak_st_d = KeccakStActive;
+
+ inc_rnd_num = 1'b 1;
+ end
+ end
+
+ KeccakStPhase1: begin
+ // Compute Theta, Rho, Pi - The DOM multipliers are not evaluated at
+ // all: their inputs are driven by the first lane halves (same values
+ // as in Phase2Cycle3 of the last round). Also, the intermediate
+ // results we already had in Phase2Cycle3 didn't change.
+ phase_sel = MuBi4False;
+ dom_update = 1'b 0;
+
+ // Only update the state and move on once we know the auxiliary
+ // randomness required for Phase2 will be available in the next clock
+ // cycle.
+ //
+ // It's important that the DOM multipliers inside keccak_2share are
+ // presented the new state (updated with update_storage) at the same
+ // time as the new randomness (updated with rand_update_o). Otherwise,
+ // stale entropy is paired with fresh data or vice versa. This could
+ // lead to undesired SCA leakage.
+ if (rand_early_i || rand_valid_i) begin
+ keccak_st_d = KeccakStPhase2Cycle1;
+ update_storage = 1'b 1;
+ keccak_rand_update = 1'b 1;
+
+ // Update lane halves processing order for this round.
+ low_then_high_d = rand_aux_i;
+
+ // Drive DOM multiplier I/O mux signals for next phase.
+ dom_in_low_d = low_then_high_d;
+ dom_in_rand_ext_d = 1'b 1;
+ end else begin
+ keccak_st_d = KeccakStPhase1;
+ end
+ end
+
+ KeccakStPhase2Cycle1: begin
+ // Compute first stage of Chi for first lane halves using the DOM
+ // multipliers. Use the fresh randomness provided by the PRNG for
+ // remasking.
+ phase_sel = MuBi4True;
+ dom_update = 1'b 1;
+
+ // Trigger randomness update for next cycle.
+ // It's important that the DOM multipliers inside keccak_2share are
+ // presented the second lane halves at the same time as the new
+ // randomness (updated with rand_update_o). Otherwise, stale entropy
+ // is paired with fresh data or vice versa. This could lead to
+ // undesired SCA leakage.
+ keccak_rand_update = 1'b 1;
+
+ // Unconditionally move to next phase/cycle.
+ keccak_st_d = KeccakStPhase2Cycle2;
+
+ // Drive DOM multiplier I/O mux signals for next phase.
+ dom_in_low_d = ~low_then_high_q;
+ dom_in_rand_ext_d = 1'b 1;
+ end
+
+ KeccakStPhase2Cycle2: begin
+ // Chi Stage 1 for second lane halves.
+ // Chi Stage 2 and Iota for first lane halves.
+ // Compute second stage of Chi and Iota for first lane halves.
+ // Compute first stage of Chi for second lane halves. Use the fresh
+ // randomness provided by the PRNG for remasking the DOM multipliers.
+ phase_sel = MuBi4True;
+ dom_update = 1'b 1;
+
+ // Trigger randomness update for next cycle.
+ // It's important that the DOM multipliers inside keccak_2share are
+ // presented the updated state at the same as the new randomness
+ // (updated with rand_update_o) - even if the DOM multipliers don't
+ // update the pipeline registers in the next cycle. Otherwise, stale
+ // entropy is paired with fresh data or vice versa. This could lead to
+ // undesired SCA leakage.
+ keccak_rand_update = 1'b 1;
+
+ // Trigger auxiliary randomness update for next round. The rand_aux_i
+ // signal is actually going to change in 2 clock cycles from now
+ // (Phase1) based on the PRNG output in the next cycle (Phase2Cycle3)
+ // in which the DOM multipliers don't update the pipeline registers.
+ keccak_rand_consumed = 1'b 1;
+
+ // Update first lane halves.
+ update_storage = 1'b 1;
+
+ // Unconditionally move to next phase/cycle.
+ keccak_st_d = KeccakStPhase2Cycle3;
+
+ // Drive DOM multiplier I/O mux signals for next phase.
+ dom_in_low_d = low_then_high_q;
+ dom_in_rand_ext_d = 1'b 0;
+ end
+
+ KeccakStPhase2Cycle3: begin
+ // Compute second stage of Chi and Iota for second lane halves.
+ // Feed again first lane halves to DOM multiplier inputs (now
+ // the updated values become visible) together with intermediate
+ // results of Phase2Cycle2. Don't update the register stage inside
+ // the DOM multipliers.
+ phase_sel = MuBi4True;
+ dom_update = 1'b 0;
+
+ // Update second lane halves.
+ // We don't need fresh randomness for the next cycle as the DOM
+ // multipliers inside keccak_2share will keep seeing the first
+ // lane halves in the next cycle. If we updated the randomness,
+ // old data got combined with frash randomness which is not
+ // desirable as it could lead to SCA leakage.
+ update_storage = 1'b 1;
+
+ if (rnd_eq_end) begin
+ // We're done.
+ keccak_st_d = KeccakStIdle;
+
+ rst_rnd_num = 1'b 1;
+ complete_d = 1'b 1;
+ end else begin
+ // Continue to the next round.
+ keccak_st_d = KeccakStPhase1;
+
+ inc_rnd_num = 1'b 1;
+
+ // Drive DOM multiplier I/O mux signals for next phase.
+ dom_in_low_d = low_then_high_q;
+ dom_in_rand_ext_d = 1'b 0;
+ end
+ end
+
+ KeccakStError: begin
+ keccak_st_d = KeccakStError;
+ end
+
+ KeccakStTerminalError: begin
+ //this state is terminal
+ keccak_st_d = keccak_st;
+ sparse_fsm_error_o = 1'b 1;
+ end
+
+ default: begin
+ keccak_st_d = KeccakStTerminalError;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ keccak_st_d = KeccakStTerminalError;
+ end
+ end
+
+ // When taking the lower lane halves in, the upper lane halves are output and
+ // vice versa.
+ assign dom_out_low_d = ~dom_in_low_d;
+
+ if (EnMasking) begin : gen_regs_dom_ctrl
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ low_then_high_q <= 1'b 0;
+ dom_out_low_q <= 1'b 0;
+ dom_in_low_q <= 1'b 0;
+ end else begin
+ low_then_high_q <= low_then_high_d;
+ dom_out_low_q <= dom_out_low_d;
+ dom_in_low_q <= dom_in_low_d;
+ end
+ end
+
+ if (!ForceRandExt) begin : gen_reg_dom_in_rand_ext
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ dom_in_rand_ext_q <= 1'b 0;
+ end else begin
+ dom_in_rand_ext_q <= dom_in_rand_ext_d;
+ end
+ end
+ end else begin : gen_force_dom_in_rand_ext
+ // Always forward the externally provided randomness.
+ assign dom_in_rand_ext_q = 1'b 1;
+ // Tie off unused signals.
+ logic unused_dom_in_rand_ext;
+ assign unused_dom_in_rand_ext = dom_in_rand_ext_d;
+ end
+ end else begin : gen_no_regs_dom_ctrl
+ logic unused_dom_ctrl;
+ assign unused_dom_ctrl =
+ ^{low_then_high_d, dom_out_low_d, dom_in_low_d, dom_in_rand_ext_d};
+ assign low_then_high_q = 1'b 0;
+ assign dom_out_low_q = 1'b 0;
+ assign dom_in_low_q = 1'b 0;
+ assign dom_in_rand_ext_q = 1'b 0;
+ end
+
+ // Ready indicates the keccak_round is able to receive new message.
+ // While keccak_round is processing the data, it blocks the new message to be
+ // XORed into the current state.
+ assign ready_o = (keccak_st == KeccakStIdle) ? 1'b 1 : 1'b 0;
+
+ ////////////////////////////
+ // Keccak state registers //
+ ////////////////////////////
+
+ // SEC_CM: LOGIC.INTEGRITY
+ logic rst_n;
+ caliptra_prim_sec_anchor_buf #(
+ .Width(1)
+ ) u_caliptra_prim_sec_anchor_buf (
+ .in_i(rst_ni),
+ .out_o(rst_n)
+ );
+
+ logic [Width-1:0] storage [Share];
+ logic [Width-1:0] storage_d [Share];
+ always_ff @(posedge clk_i or negedge rst_n) begin
+ if (!rst_n) begin
+ storage <= '{default:'0};
+ end else if (rst_storage) begin
+ storage <= '{default:'0};
+ end else if (update_storage) begin
+ storage <= storage_d;
+ end
+ end
+
+ assign state_o = storage;
+
+ // Storage register input
+ // The incoming message is XORed with the existing storage registers.
+ // The logic can accept not a block size incoming message chunk but
+ // the size defined in `DInWidth` parameter with its position.
+
+ always_comb begin
+ storage_d = keccak_out;
+ if (xor_message) begin
+ for (int j = 0 ; j < Share ; j++) begin
+ for (int unsigned i = 0 ; i < DInEntry ; i++) begin
+ // ICEBOX(#18029): handle If Width is not integer divisable by DInWidth
+ // Currently it is not allowed to have partial write
+ // Please see the Assertion `WidthDivisableByDInWidth_A`
+ if (addr_i == i[DInAddr-1:0]) begin
+ storage_d[j][i*DInWidth+:DInWidth] =
+ storage[j][i*DInWidth+:DInWidth] ^ data_i[j];
+ end else begin
+ storage_d[j][i*DInWidth+:DInWidth] = storage[j][i*DInWidth+:DInWidth];
+ end
+ end // for i
+ end // for j
+ end // if xor_message
+ end
+
+ // Check the rst_storage integrity
+ logic rst_storage_error;
+
+ always_comb begin : chk_rst_storage
+ rst_storage_error = 1'b 0;
+
+ if (rst_storage) begin
+ // FSM should be in KeccakStIdle and clear_i should be high
+ if ((keccak_st != KeccakStIdle) ||
+ caliptra_prim_mubi_pkg::mubi4_test_false_loose(clear_i)) begin
+ rst_storage_error = 1'b 1;
+ end
+ end
+ end : chk_rst_storage
+
+ assign rst_storage_error_o = rst_storage_error ;
+
+ //////////////
+ // Datapath //
+ //////////////
+ keccak_2share #(
+ .Width(Width),
+ .EnMasking(EnMasking),
+ .ForceRandExt(ForceRandExt)
+ ) u_keccak_p (
+ .clk_i,
+ .rst_ni,
+
+ .caliptra_ss_lc_escalate_en_i,
+
+ .rnd_i(round),
+
+ .phase_sel_i (phase_sel),
+ .dom_out_low_i (dom_out_low_q),
+ .dom_in_low_i (dom_in_low_q),
+ .dom_in_rand_ext_i(dom_in_rand_ext_q),
+ .dom_update_i (dom_update),
+
+ .rand_i(keccak_rand_data),
+
+ .s_i(storage),
+ .s_o(keccak_out)
+ );
+
+ // keccak entropy handling
+ assign rand_update_o = keccak_rand_update;
+ assign rand_consumed_o = keccak_rand_consumed;
+
+ assign keccak_rand_data = rand_data_i;
+
+ // Round number
+ // This primitive is used to place a hardened counter
+ // SEC_CM: CTR.REDUN
+ caliptra_prim_count #(
+ .Width(RndW)
+ ) u_round_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(rst_rnd_num),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(inc_rnd_num),
+ .decr_en_i(1'b0),
+ .step_i(RndW'(1)),
+ .commit_i(1'b1),
+ .cnt_o(round),
+ .cnt_after_commit_o(),
+ .err_o(round_count_error_o)
+ );
+
+ // completion signal
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ complete_o <= 1'b 0;
+ end else begin
+ complete_o <= complete_d;
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Only allow `DInWidth` that `Width` is integer divisable by `DInWidth`
+ `CALIPTRA_ASSERT_INIT(WidthDivisableByDInWidth_A, (Width % DInWidth) == 0)
+
+ // If `run_i` triggerred, it shall complete
+ //`CALIPTRA_ASSERT(RunResultComplete_A, run_i ##[MaxRound:] complete_o, clk_i, !rst_ni)
+
+ // valid_i and run_i cannot be asserted at the same time
+ `CALIPTRA_ASSUME(OneHot0ValidAndRun_A, $onehot0({valid_i, run_i}), clk_i, !rst_ni)
+
+ // valid_i, run_i only asserted in Idle state
+ `CALIPTRA_ASSUME(ValidRunAssertStIdle_A, valid_i || run_i |-> keccak_st == KeccakStIdle, clk_i, !rst_ni)
+
+ // clear_i is assumed to be asserted in Idle state
+ `CALIPTRA_ASSUME(ClearAssertStIdle_A,
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(clear_i)
+ |-> keccak_st == KeccakStIdle, clk_i, !rst_ni)
+
+ // EnMasking controls the valid states
+ if (EnMasking) begin : gen_mask_st_chk
+ `CALIPTRA_ASSERT(EnMaskingValidStates_A, keccak_st != KeccakStActive, clk_i, !rst_ni)
+ end else begin : gen_unmask_st_chk
+ `CALIPTRA_ASSERT(UnmaskValidStates_A, !(keccak_st
+ inside {KeccakStPhase1, KeccakStPhase2Cycle1, KeccakStPhase2Cycle2, KeccakStPhase2Cycle3}),
+ clk_i, !rst_ni)
+ end
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac.sv
new file mode 100644
index 0000000..7681022
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac.sv
@@ -0,0 +1,1589 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC/SHA3
+
+`include "caliptra_prim_assert.sv"
+
+module kmac
+ import kmac_pkg::*;
+ import kmac_reg_pkg::*;
+#(
+ // EnMasking: Enable masking security hardening inside keccak_round
+ // If it is enabled, the result digest will be two set of 1600bit.
+ parameter bit EnMasking = 1,
+
+ // In case EnMasking == 0, this defines whether SW can provide a masked key or whether Share 1 of
+ // the SW key is simply ignored. In case EnMasking == 1, this parameter has no meaning, always
+ // both shares of the key provided by SW are used.
+ // This is useful to allow both for area-optimized unmasked designs as well as unmasked designs
+ // having a SW interface fully compatible with the masked design.
+ parameter bit SwKeyMasked = 0,
+
+ // Command delay, useful for SCA measurements only. A value of e.g. 40 allows the processor to go
+ // into sleep before KMAC starts operation. If a value > 0 is chosen, the processor can provide
+ // two commands subsquently and then go to sleep. The second command is buffered internally and
+ // will be presented to the hardware SecCmdDelay number of cycles after the first one.
+ parameter int SecCmdDelay = 0,
+
+ // Accept SW message when idle and before receiving a START command. Useful for SCA only.
+ parameter bit SecIdleAcceptSwMsg = 1'b0,
+ parameter int unsigned NumAppIntf = 3,
+ parameter app_config_t AppCfg[NumAppIntf] = '{AppCfgKeyMgr, AppCfgLcCtrl, AppCfgRomCtrl},
+
+ parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault,
+ parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault,
+ parameter buffer_lfsr_seed_t RndCnstBufferLfsrSeed = RndCnstBufferLfsrSeedDefault,
+ parameter msg_perm_t RndCnstMsgPerm = RndCnstMsgPermDefault,
+
+ parameter logic [NumAlerts-1:0] AlertAsyncOn = {NumAlerts{1'b1}}
+) (
+ input clk_i,
+ input rst_ni,
+
+ input rst_shadowed_ni,
+
+ input clk_edn_i,
+ input rst_edn_ni,
+
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+
+ // Alerts
+ input caliptra_prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i,
+ output caliptra_prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o,
+
+ // KeyMgr sideload (secret key) interface
+ input caliptra_ss_lc_ctrl_keymgr_pkg::hw_key_req_t keymgr_key_i,
+
+ // KeyMgr KDF data path
+ input app_req_t [NumAppIntf-1:0] app_i,
+ output app_rsp_t [NumAppIntf-1:0] app_o,
+
+ // EDN interface
+ output edn_pkg::edn_req_t entropy_o,
+ input edn_pkg::edn_rsp_t entropy_i,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // interrupts
+ output logic intr_kmac_done_o,
+ output logic intr_fifo_empty_o,
+ output logic intr_kmac_err_o,
+
+ // parameter consistency check with keymgr
+ output logic en_masking_o,
+
+ // Idle signal
+ output caliptra_prim_mubi_pkg::mubi4_t idle_o
+);
+
+ ////////////////
+ // Parameters //
+ ////////////////
+ localparam int Share = (EnMasking) ? 2 : 1 ;
+ localparam int SwKeyShare = (EnMasking || SwKeyMasked) ? 2 : 1;
+
+ /////////////////
+ // Definitions //
+ /////////////////
+ // This state machine is to track the current process based on SW input and
+ // KMAC operation.
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 6 -n 6 \
+ // -s 1966361510 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (53.33%)
+ // 4: ||||||||||||||| (40.00%)
+ // 5: || (6.67%)
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 5
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 5
+ //
+ localparam int StateWidth = 6;
+ typedef enum logic [StateWidth-1:0] {
+ // Idle state
+ KmacIdle = 6'b001011,
+
+ // When software writes CmdStart @ KmacIdle and kmac_en, FSM moves to this
+ KmacPrefix = 6'b000110,
+
+ // When SHA3 engine processes Key block, FSM moves to here.
+ KmacKeyBlock = 6'b111110,
+
+ // Message Feed
+ KmacMsgFeed = 6'b010101,
+
+ // Complete and squeeze
+ KmacDigest = 6'b101101,
+
+ // Error
+ KmacTerminalError = 6'b110000
+
+ } kmac_st_e;
+
+ kmac_st_e kmac_st, kmac_st_d;
+
+ /////////////
+ // Signals //
+ /////////////
+ kmac_reg2hw_t reg2hw;
+ kmac_hw2reg_t hw2reg;
+
+ // Window
+ typedef enum int {
+ WinState = 0,
+ WinMsgFifo = 1
+ } tl_window_e;
+
+ tlul_pkg::tl_h2d_t tl_win_h2d[2];
+ tlul_pkg::tl_d2h_t tl_win_d2h[2];
+
+ // SHA3 core control signals and its response.
+ // Sequence: start --> process(multiple) --> get absorbed event --> {run -->} done
+ logic sha3_start, sha3_run, unused_sha3_squeeze;
+ caliptra_prim_mubi_pkg::mubi4_t sha3_done;
+ caliptra_prim_mubi_pkg::mubi4_t sha3_done_d;
+ caliptra_prim_mubi_pkg::mubi4_t sha3_absorbed;
+
+ // Indicate one block processed
+ logic sha3_block_processed;
+
+ // EStatus for entropy
+ logic entropy_in_keyblock;
+
+ // Application interface logic generates absorbed from sha3_absorbed.
+ // It is active only if SW initiates the hashing engine.
+ caliptra_prim_mubi_pkg::mubi4_t app_absorbed;
+ logic event_absorbed;
+
+ sha3_pkg::sha3_st_e sha3_fsm;
+
+ // Prefix: kmac_pkg defines Prefix based on N size and S size.
+ // Then computes left_encode(len(N)) size and left_encode(len(S))
+ // For given default value 32, 256 bits, the max
+ // encode_string(N) || encode_string(S) is 328. So 11 Prefix registers are
+ // created.
+ logic [sha3_pkg::NSRegisterSize*8-1:0] reg_ns_prefix;
+ logic [sha3_pkg::NSRegisterSize*8-1:0] ns_prefix;
+
+ // NumWordsPrefix from kmac_reg_pkg
+ `CALIPTRA_ASSERT_INIT(PrefixRegSameToPrefixPkg_A,
+ kmac_reg_pkg::NumWordsPrefix*4 == sha3_pkg::NSRegisterSize)
+
+ // NumEntriesMsgFifo from kmac_reg_pkg must match calculated MsgFifoDepth
+ // from kmac_pkg.
+ `CALIPTRA_ASSERT_INIT(NumEntriesRegSameToNumEntriesPkg_A,
+ kmac_reg_pkg::NumEntriesMsgFifo == kmac_pkg::MsgFifoDepth)
+
+ // NumBytesMsgFifoEntry from kmac_reg_pkg must match the MsgWidth calculated
+ // in kmac_pkg (although MsgWidth is in bits, so we multiply by 8).
+ `CALIPTRA_ASSERT_INIT(EntrySizeRegSameToEntrySizePkg_A,
+ kmac_reg_pkg::NumBytesMsgFifoEntry * 8 == kmac_pkg::MsgWidth)
+
+ // Output state: this is used to redirect the digest to KeyMgr or Software
+ // depends on the configuration.
+ logic state_valid;
+ logic [sha3_pkg::StateW-1:0] state [Share];
+
+ // state is de-muxed in keymgr interface logic.
+ // the output from keymgr logic goes into staterd module to be visible to SW
+ logic reg_state_valid;
+ logic [sha3_pkg::StateW-1:0] reg_state [Share];
+
+ // SHA3 Entropy interface
+ logic sha3_rand_valid, sha3_rand_early, sha3_rand_update, sha3_rand_consumed;
+ logic [sha3_pkg::StateW/2-1:0] sha3_rand_data;
+ logic sha3_rand_aux;
+
+ // FIFO related signals
+ logic msgfifo_empty, msgfifo_full;
+ logic [kmac_pkg::MsgFifoDepthW-1:0] msgfifo_depth;
+
+ logic msgfifo_valid ;
+ logic [kmac_pkg::MsgWidth-1:0] msgfifo_data [Share];
+ logic [kmac_pkg::MsgStrbW-1:0] msgfifo_strb ;
+ logic msgfifo_ready ;
+
+ if (EnMasking) begin : gen_msgfifo_data_masked
+ // In Masked mode, the input message data is split into two shares.
+ // Only concern, however, here is the secret key. So message can be
+ // put into only one share and other is 0.
+ assign msgfifo_data[1] = '0;
+ end
+
+ // TL-UL Adapter(MSG_FIFO) signals
+ logic tlram_req;
+ logic tlram_gnt;
+ logic tlram_we;
+ logic [8:0] tlram_addr; // NOT_READ
+ logic [31:0] tlram_wdata;
+ logic [31:0] tlram_wmask;
+ logic [31:0] tlram_rdata;
+ logic tlram_rvalid;
+ logic [1:0] tlram_rerror;
+ logic [31:0] tlram_wdata_endian;
+ logic [31:0] tlram_wmask_endian;
+
+ logic sw_msg_valid;
+ logic [kmac_pkg::MsgWidth-1:0] sw_msg_data ;
+ logic [kmac_pkg::MsgWidth-1:0] sw_msg_mask ;
+ logic sw_msg_ready;
+
+ // KeyMgr interface to MSG_FIFO
+ logic mux2fifo_valid;
+ logic [kmac_pkg::MsgWidth-1:0] mux2fifo_data ;
+ logic [kmac_pkg::MsgWidth-1:0] mux2fifo_mask ;
+ logic mux2fifo_ready;
+
+ // KMAC to SHA3 core
+ logic msg_valid ;
+ logic [kmac_pkg::MsgWidth-1:0] msg_data [Share];
+ logic [kmac_pkg::MsgWidth-1:0] msg_data_masked [Share];
+ logic [kmac_pkg::MsgStrbW-1:0] msg_strb ;
+ logic msg_ready ;
+
+ // Process control signals
+ // Process pulse propagates from register to SHA3 engine one by one.
+ // Each module (MSG_FIFO, KMAC core, SHA3 core) generates the process pulse
+ // after flushing internal data to the next module.
+ logic reg2msgfifo_process, msgfifo2kmac_process, kmac2sha3_process;
+
+
+ // Secret Key signals
+ logic [MaxKeyLen-1:0] sw_key_data_reg [SwKeyShare];
+ logic [MaxKeyLen-1:0] sw_key_data [Share];
+ key_len_e sw_key_len;
+ logic [MaxKeyLen-1:0] key_data [Share];
+ logic key_valid;
+ key_len_e key_len;
+
+ // SHA3 Mode, Strength, KMAC enable for app interface
+ logic reg_kmac_en, app_kmac_en;
+ sha3_pkg::sha3_mode_e reg_sha3_mode, app_sha3_mode;
+ sha3_pkg::keccak_strength_e reg_keccak_strength, app_keccak_strength;
+
+ // RegIF of enabling unsupported mode & strength
+ logic cfg_en_unsupported_modestrength;
+
+ // Indicating AppIntf is active. This signal is used to check SW error
+ logic app_active;
+
+ // SEC_CM: SW_CMD.CTRL.SPARSE
+ // Command
+ // sw_cmd is the command written by SW
+ // checked_sw_cmd is checked in the kmac_errchk module.
+ // Invalid command is filtered out in the module.
+ // kmac_cmd is generated in KeyMgr interface.
+ // If SW initiates the KMAC/SHA3, kmac_cmd represents SW command,
+ // if KeyMgr drives the data, kmac_cmd is controled in the state machine
+ // in KeyMgr interface logic.
+ kmac_cmd_e sw_cmd, checked_sw_cmd, kmac_cmd, cmd_q;
+ logic cmd_update;
+
+ // Entropy configurations
+ logic [9:0] wait_timer_prescaler;
+ logic [15:0] wait_timer_limit;
+ logic entropy_refresh_req;
+ logic entropy_seed_update;
+ logic [31:0] entropy_seed_data;
+
+ logic [HashCntW-1:0] entropy_hash_threshold;
+ logic [HashCntW-1:0] entropy_hash_cnt;
+ logic entropy_hash_clr;
+
+ logic entropy_ready;
+ entropy_mode_e entropy_mode;
+ logic entropy_fast_process;
+
+ caliptra_prim_mubi_pkg::mubi4_t entropy_configured;
+
+ // Message Masking
+ logic msg_mask_en, cfg_msg_mask;
+ logic [MsgWidth-1:0] msg_mask;
+
+ // SHA3 Error response
+ sha3_pkg::err_t sha3_err;
+
+ // KeyMgr Error response
+ kmac_pkg::err_t app_err;
+
+ // Entropy Generator Error
+ kmac_pkg::err_t entropy_err;
+
+ // Error checker
+ kmac_pkg::err_t errchecker_err;
+
+ // MsgFIFO Error
+ kmac_pkg::err_t msgfifo_err;
+
+ logic err_processed;
+
+ caliptra_prim_mubi_pkg::mubi4_t clear_after_error;
+
+ logic alert_fatal, alert_recov_operation;
+ logic alert_intg_err;
+
+ // Life cycle
+ localparam int unsigned NumLcSyncCopies = 6;
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [NumLcSyncCopies-1:0] caliptra_ss_lc_escalate_en_sync;
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [NumLcSyncCopies-1:0] caliptra_ss_lc_escalate_en;
+
+ //////////////////////////////////////
+ // Connecting Register IF to logics //
+ //////////////////////////////////////
+
+ // Function-name N and Customization input string S
+ always_comb begin
+ for (int i = 0 ; i < NumWordsPrefix; i++) begin
+ reg_ns_prefix[32*i+:32] = reg2hw.prefix[i].q;
+ end
+ end
+
+ // Create a lint error to reduce the risk of accidentally enabling this feature.
+ `CALIPTRA_ASSERT_STATIC_LINT_ERROR(KmacSecCmdDelayNonDefault, SecCmdDelay == 0)
+
+ if (SecCmdDelay > 0) begin : gen_cmd_delay_buf
+ // Delay and buffer commands for SCA measurements.
+ localparam int unsigned WidthCounter = $clog2(SecCmdDelay+1);
+ logic [WidthCounter-1:0] count_d, count_q;
+ logic counting_d, counting_q;
+ logic cmd_buf_empty;
+ kmac_cmd_e cmd_buf_q;
+
+ assign cmd_buf_empty = (cmd_buf_q == CmdNone);
+
+ // When seeing a write to the cmd register, we start counting. We stop counting once the
+ // counter has expired and the command buffer is empty.
+ assign counting_d = reg2hw.cmd.cmd.qe ? 1'b1 :
+ cmd_update & cmd_buf_empty ? 1'b0 : counting_q;
+
+ // Clear counter upon writes to the cmd register or if the specified delay is reached.
+ assign count_d = reg2hw.cmd.cmd.qe ? '0 :
+ cmd_update ? '0 :
+ counting_q ? count_q + 1'b1 : count_q;
+
+ // The manual run command cannot be delayed. Software expects this to be triggered immediately
+ // and will poll the status register to wait for the SHA3 engine to return back to the squeeze
+ // state.
+ assign cmd_update = (cmd_q == CmdManualRun) ? 1'b1 :
+ (count_q == SecCmdDelay[WidthCounter-1:0]) ? 1'b1 : 1'b0;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ count_q <= '0;
+ counting_q <= 1'b0;
+ end else begin
+ count_q <= count_d;
+ counting_q <= counting_d;
+ end
+ end
+
+ // cmd.q is valid while cmd.qe is high, meaning it needs to be registered. We buffer one
+ // additional command such that software can write START followed by PROCESS and then go to
+ // sleep.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ cmd_q <= CmdNone;
+ cmd_buf_q <= CmdNone;
+ end else begin
+ if (reg2hw.cmd.cmd.qe && cmd_update) begin
+ // New write & counter expired.
+ cmd_q <= cmd_buf_q;
+ cmd_buf_q <= kmac_cmd_e'(reg2hw.cmd.cmd.q);
+
+ end else if (reg2hw.cmd.cmd.qe) begin
+ // New write.
+ if (counting_q == 1'b0) begin
+ cmd_q <= kmac_cmd_e'(reg2hw.cmd.cmd.q);
+ end else begin
+ cmd_buf_q <= kmac_cmd_e'(reg2hw.cmd.cmd.q);
+ end
+
+ end else if (cmd_update) begin
+ // Counter expired.
+ cmd_q <= cmd_buf_q;
+ cmd_buf_q <= CmdNone;
+ end
+ end
+ end
+
+ end else begin : gen_no_cmd_delay_buf
+ // Directly forward signals from register IF.
+ assign cmd_update = reg2hw.cmd.cmd.qe;
+ assign cmd_q = kmac_cmd_e'(reg2hw.cmd.cmd.q);
+ end
+
+ // Command signals
+ assign sw_cmd = (cmd_update) ? cmd_q : CmdNone;
+ `CALIPTRA_ASSERT_KNOWN(KmacCmd_A, sw_cmd)
+ always_comb begin
+ sha3_start = 1'b 0;
+ sha3_run = 1'b 0;
+ sha3_done_d = caliptra_prim_mubi_pkg::MuBi4False;
+ reg2msgfifo_process = 1'b 0;
+
+ unique case (kmac_cmd)
+ CmdStart: begin
+ sha3_start = 1'b 1;
+ end
+
+ CmdProcess: begin
+ reg2msgfifo_process = 1'b 1;
+ end
+
+ CmdManualRun: begin
+ sha3_run = 1'b 1;
+ end
+
+ CmdDone: begin
+ sha3_done_d = caliptra_prim_mubi_pkg::MuBi4True;
+ end
+
+ CmdNone: begin
+ // inactive state
+ end
+
+ default: begin
+ end
+ endcase
+ end
+
+ // Status register ==========================================================
+ // status.squeeze is valid only when SHA3 engine completes the Absorb and not
+ // running the manual keccak rounds. This status is for SW to determine when
+ // to read the STATE values.
+ assign hw2reg.status.sha3_idle.d = sha3_fsm == sha3_pkg::StIdle;
+ assign hw2reg.status.sha3_absorb.d = sha3_fsm == sha3_pkg::StAbsorb;
+ assign hw2reg.status.sha3_squeeze.d = sha3_fsm == sha3_pkg::StSqueeze;
+
+ // FIFO related status
+ assign hw2reg.status.fifo_depth.d[MsgFifoDepthW-1:0] = msgfifo_depth;
+ if ($bits(hw2reg.status.fifo_depth.d) != MsgFifoDepthW) begin : gen_fifo_depth_tie
+ assign hw2reg.status.fifo_depth.d[$bits(hw2reg.status.fifo_depth.d)-1:MsgFifoDepthW] = '0;
+ end
+ assign hw2reg.status.fifo_empty.d = msgfifo_empty;
+ assign hw2reg.status.fifo_full.d = msgfifo_full;
+
+ // Configuration Register
+ logic engine_stable;
+ assign engine_stable = sha3_fsm == sha3_pkg::StIdle;
+
+ // SEC_CM: CFG_SHADOWED.CONFIG.REGWEN
+ assign hw2reg.cfg_regwen.d = engine_stable;
+
+ // Secret Key
+ // Secret key is defined as external register. So the logic latches when SW
+ // writes to KEY_SHARE0 , KEY_SHARE1 registers.
+ // SEC_CM: SW_KEY.KEY.MASKING
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ sw_key_data_reg[0] <= '0;
+ end else if (engine_stable) begin
+ for (int j = 0 ; j < MaxKeyLen/32 ; j++) begin
+ if (reg2hw.key_share0[j].qe) begin
+ sw_key_data_reg[0][32*j+:32] <= reg2hw.key_share0[j].q;
+ end
+ end // for j
+ end // else if engine_stable
+ end // always_ff
+
+ if (EnMasking || SwKeyMasked) begin : gen_key_share1_reg
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ sw_key_data_reg[1] <= '0;
+ end else if (engine_stable) begin
+ for (int j = 0 ; j < MaxKeyLen/32 ; j++) begin
+ if (reg2hw.key_share1[j].qe) begin
+ sw_key_data_reg[1][32*j+:32] <= reg2hw.key_share1[j].q;
+ end
+ end // for j
+ end // else if engine_stable
+ end // always_ff
+ end else begin : gen_no_key_share1_reg
+ logic unused_key_share1;
+ assign unused_key_share1 = ^reg2hw.key_share1;
+ end
+
+ if (EnMasking || !SwKeyMasked) begin : gen_key_forward
+ // Forward all available key shares as is.
+ assign sw_key_data = sw_key_data_reg;
+ end else begin : gen_key_unmask
+ // Masking is disabled but the SW still provides the key in two shares.
+ // Unmask the key for processing.
+ assign sw_key_data[0] = sw_key_data_reg[0] ^ sw_key_data_reg[1];
+ end
+
+ assign sw_key_len = key_len_e'(reg2hw.key_len.q);
+
+ // Entropy configurations
+ assign wait_timer_prescaler = reg2hw.entropy_period.prescaler.q;
+ assign wait_timer_limit = reg2hw.entropy_period.wait_timer.q;
+ assign entropy_refresh_req = reg2hw.cmd.entropy_req.q
+ && reg2hw.cmd.entropy_req.qe;
+ assign entropy_seed_update = reg2hw.entropy_seed.qe;
+ assign entropy_seed_data = reg2hw.entropy_seed.q;
+
+ assign entropy_hash_threshold = reg2hw.entropy_refresh_threshold_shadowed.q;
+ assign hw2reg.entropy_refresh_hash_cnt.de = 1'b 1;
+ assign hw2reg.entropy_refresh_hash_cnt.d = entropy_hash_cnt;
+
+ assign entropy_hash_clr = reg2hw.cmd.hash_cnt_clr.qe
+ && reg2hw.cmd.hash_cnt_clr.q;
+
+ // Entropy config
+ assign entropy_ready = reg2hw.cfg_shadowed.entropy_ready.q
+ & reg2hw.cfg_shadowed.entropy_ready.qe;
+ assign entropy_mode = entropy_mode_e'(reg2hw.cfg_shadowed.entropy_mode.q);
+ assign entropy_fast_process = reg2hw.cfg_shadowed.entropy_fast_process.q;
+
+ // msg_mask_en turns on the message LFSR when KMAC is enabled.
+ assign cfg_msg_mask = reg2hw.cfg_shadowed.msg_mask.q;
+ assign msg_mask_en = cfg_msg_mask & msg_valid & msg_ready;
+
+ // Enable unsupported mode & strength combination
+ assign cfg_en_unsupported_modestrength =
+ reg2hw.cfg_shadowed.en_unsupported_modestrength.q;
+
+ `CALIPTRA_ASSERT(EntropyReadyLatched_A, $rose(entropy_ready) |=> !entropy_ready)
+
+ // Idle control (registered output)
+ // The logic checks idle of SHA3 engine, MSG_FIFO, KMAC_CORE, KEYMGR interface
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ idle_o <= caliptra_prim_mubi_pkg::MuBi4True;
+ end else if ((sha3_fsm == sha3_pkg::StIdle) && (msgfifo_empty || SecIdleAcceptSwMsg)) begin
+ idle_o <= caliptra_prim_mubi_pkg::MuBi4True;
+ end else begin
+ idle_o <= caliptra_prim_mubi_pkg::MuBi4False;
+ end
+ end
+
+ // Clear the error processed
+ assign err_processed = reg2hw.cmd.err_processed.q & reg2hw.cmd.err_processed.qe;
+
+ // Make sure the field has latch in reg_top
+ `CALIPTRA_ASSERT(ErrProcessedLatched_A, $rose(err_processed) |=> !err_processed)
+
+ // App mode, strength, kmac_en
+ assign reg_kmac_en = reg2hw.cfg_shadowed.kmac_en.q;
+ assign reg_sha3_mode = sha3_pkg::sha3_mode_e'(reg2hw.cfg_shadowed.mode.q);
+ assign reg_keccak_strength = sha3_pkg::keccak_strength_e'(reg2hw.cfg_shadowed.kstrength.q);
+
+ ///////////////
+ // Interrupt //
+ ///////////////
+
+ // Hash process absorbed interrupt
+ // Convert mubi4_t to logic to generate interrupts
+ assign event_absorbed = caliptra_prim_mubi_pkg::mubi4_test_true_strict(app_absorbed);
+
+ caliptra_prim_intr_hw #(.Width(1)) intr_kmac_done (
+ .clk_i,
+ .rst_ni,
+ .event_intr_i (event_absorbed),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.kmac_done.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.kmac_done.q),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.kmac_done.qe),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.kmac_done.q),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.kmac_done.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.kmac_done.d),
+ .intr_o (intr_kmac_done_o)
+ );
+
+ `CALIPTRA_ASSERT(Sha3AbsorbedPulse_A,
+ $rose(caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_absorbed)) |=>
+ caliptra_prim_mubi_pkg::mubi4_test_false_strict(sha3_absorbed))
+
+ // Message FIFO empty interrupt
+ //
+ // The message FIFO empty interrupt is **not useful** for software if:
+ // - One of the hardware application interfaces is actively using the KMAC block. In this case
+ // the message FIFO is managed entirely by the application interface.
+ // - The SHA3 core is not in the Absorb state. Only in this state, the FIFO is writeable by
+ // software anyway.
+ // - Software has already written the Process command. The KMAC block will now empty the
+ // message FIFO and load its content into the SHA3 core, add the padding and then perfom
+ // the final absorption. Software cannot append the message further.
+ //
+ // The message FIFO empty interrupt can be **useful** for software in particular if:
+ // - The message FIFO was completely full previously. However, unless the KMAC block is currently
+ // processing a block or waiting for fresh entropy from EDN, it always empties the message FIFO
+ // faster than software can fill it up, meaning the message FIFO is empty most of the time.
+ // Note, the empty status is signaled only once after the FIFO was completely full. The FIFO
+ // needs to be full again for the empty status to be signaled again next time it's empty.
+ //
+ // For further details see also:
+ // https://opentitan.org/book/hw/ip/kmac/doc/theory_of_operation.html#fifo-depth-and-empty-status
+ logic status_msgfifo_empty, msgfifo_empty_gate;
+ logic msgfifo_empty_negedge, msgfifo_empty_q;
+ logic msgfifo_full_seen_d, msgfifo_full_seen_q;
+ assign msgfifo_empty_negedge = msgfifo_empty_q & ~msgfifo_empty;
+
+ // Track whether the message FIFO was full after being empty. We clear the tracking:
+ // - When receiving the Process command. This is to start over for the next message.
+ // - When seeing a negative edge on the empty signal. This signals that software has reacted to
+ // the interrupt and is filling up the FIFO again.
+ assign msgfifo_full_seen_d =
+ msgfifo_full ? 1'b 1 :
+ msgfifo_empty_negedge ? 1'b 0 :
+ msgfifo2kmac_process ? 1'b 0 : msgfifo_full_seen_q;
+
+ // The interrupt is gated unless software is performing an absorption operation (but not the
+ // final block) and the FIFO was full before. The msgfifo2kmac_process pulse is arriving from the
+ // FIFO together with the empty signal.
+ assign msgfifo_empty_gate =
+ app_active ? 1'b 1 :
+ sha3_fsm != sha3_pkg::StAbsorb ? 1'b 1 :
+ msgfifo2kmac_process ? 1'b 1 : ~msgfifo_full_seen_q;
+
+ assign status_msgfifo_empty = msgfifo_empty_gate ? 1'b 0 : msgfifo_empty;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ msgfifo_empty_q <= 1'b 0;
+ msgfifo_full_seen_q <= 1'b 0;
+ end else begin
+ msgfifo_empty_q <= msgfifo_empty;
+ msgfifo_full_seen_q <= msgfifo_full_seen_d;
+ end
+ end
+
+ caliptra_prim_intr_hw #(
+ .Width(1),
+ .IntrT("Status")
+ ) intr_fifo_empty (
+ .clk_i,
+ .rst_ni,
+ .event_intr_i (status_msgfifo_empty),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.fifo_empty.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.fifo_empty.q),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.fifo_empty.qe),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.fifo_empty.q),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.fifo_empty.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.fifo_empty.d),
+ .intr_o (intr_fifo_empty_o)
+ );
+
+ // Error
+
+ logic event_error;
+ assign event_error = sha3_err.valid | app_err.valid
+ | entropy_err.valid | errchecker_err.valid
+ ;
+
+ // Assing error code to the register
+ assign hw2reg.err_code.de = event_error;
+
+ always_comb begin
+ hw2reg.err_code.d = '0;
+
+ priority case (1'b 1)
+ // app_err has the highest priority. If SW issues an incorrect command
+ // while app is in active state, the error from AppIntf is passed
+ // through.
+ app_err.valid: begin
+ hw2reg.err_code.d = {app_err.code, app_err.info};
+ end
+
+ errchecker_err.valid: begin
+ hw2reg.err_code.d = {errchecker_err.code , errchecker_err.info};
+ end
+
+ sha3_err.valid: begin
+ hw2reg.err_code.d = {sha3_err.code , sha3_err.info};
+ end
+
+ entropy_err.valid: begin
+ hw2reg.err_code.d = {entropy_err.code, entropy_err.info};
+ end
+
+ msgfifo_err.valid: begin
+ hw2reg.err_code.d = {msgfifo_err.code, msgfifo_err.info};
+ end
+
+ default: begin
+ hw2reg.err_code.d = '0;
+ end
+ endcase
+ end
+
+ // Counter errors
+ logic counter_error, sha3_count_error, key_index_error;
+ logic msgfifo_counter_error;
+ logic kmac_entropy_hash_counter_error;
+ assign counter_error = sha3_count_error
+ | kmac_entropy_hash_counter_error
+ | key_index_error
+ | msgfifo_counter_error;
+
+ assign msgfifo_counter_error = msgfifo_err.valid;
+
+ // State Errors
+ logic sparse_fsm_error;
+ logic sha3_state_error, kmac_errchk_state_error;
+ logic kmac_core_state_error, kmac_app_state_error;
+ logic kmac_entropy_state_error, kmac_state_error;
+ assign sparse_fsm_error = sha3_state_error
+ | kmac_errchk_state_error
+ | kmac_core_state_error
+ | kmac_app_state_error
+ | kmac_entropy_state_error
+ | kmac_state_error;
+
+ // Control Signal Integrity Errors
+ logic control_integrity_error;
+ logic sha3_storage_rst_error;
+ assign control_integrity_error = sha3_storage_rst_error;
+
+ caliptra_prim_intr_hw #(.Width(1)) intr_kmac_err (
+ .clk_i,
+ .rst_ni,
+ .event_intr_i (event_error),
+ .reg2hw_intr_enable_q_i (reg2hw.intr_enable.kmac_err.q),
+ .reg2hw_intr_test_q_i (reg2hw.intr_test.kmac_err.q),
+ .reg2hw_intr_test_qe_i (reg2hw.intr_test.kmac_err.qe),
+ .reg2hw_intr_state_q_i (reg2hw.intr_state.kmac_err.q),
+ .hw2reg_intr_state_de_o (hw2reg.intr_state.kmac_err.de),
+ .hw2reg_intr_state_d_o (hw2reg.intr_state.kmac_err.d),
+ .intr_o (intr_kmac_err_o)
+ );
+
+ ///////////////////
+ // State Machine //
+ ///////////////////
+
+ // State FF
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, kmac_st_d, kmac_st, kmac_st_e, KmacIdle)
+
+ always_comb begin
+ // Default value
+ kmac_st_d = kmac_st;
+
+ entropy_in_keyblock = 1'b 0;
+ kmac_state_error = 1'b 0;
+
+ unique case (kmac_st)
+ KmacIdle: begin
+ if (kmac_cmd == CmdStart) begin
+ // If cSHAKE turned on
+ if (sha3_pkg::CShake == app_sha3_mode) begin
+ kmac_st_d = KmacPrefix;
+ end else begin
+ // Jump to Msg feed directly
+ kmac_st_d = KmacMsgFeed;
+ end
+ end else begin
+ kmac_st_d = KmacIdle;
+ end
+ end
+
+ KmacPrefix: begin
+ // Wait until SHA3 processes one block
+ if (sha3_block_processed) begin
+ kmac_st_d = (app_kmac_en) ? KmacKeyBlock : KmacMsgFeed ;
+ end else begin
+ kmac_st_d = KmacPrefix;
+ end
+ end
+
+ KmacKeyBlock: begin
+ entropy_in_keyblock = 1'b 1;
+ if (sha3_block_processed) begin
+ kmac_st_d = KmacMsgFeed;
+ end else begin
+ kmac_st_d = KmacKeyBlock;
+ end
+ end
+
+ KmacMsgFeed: begin
+ // If absorbed, move to Digest
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_absorbed) &&
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_done)) begin
+ // absorbed and done can be asserted at a cycle if Applications have
+ // requested the hash operation. kmac_app FSM issues CmdDone command
+ // if it receives absorbed signal.
+ kmac_st_d = KmacIdle;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_absorbed) &&
+ caliptra_prim_mubi_pkg::mubi4_test_false_loose(sha3_done)) begin
+ kmac_st_d = KmacDigest;
+ end else begin
+ kmac_st_d = KmacMsgFeed;
+ end
+ end
+
+ KmacDigest: begin
+ // SW can manually run it, wait till done
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_done)) begin
+ kmac_st_d = KmacIdle;
+ end else begin
+ kmac_st_d = KmacDigest;
+ end
+ end
+
+ KmacTerminalError: begin
+ //this state is terminal
+ kmac_st_d = KmacTerminalError;
+ kmac_state_error = 1'b 1;
+ end
+
+ default: begin
+ kmac_st_d = KmacTerminalError;
+ kmac_state_error = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en[0])) begin
+ kmac_st_d = KmacTerminalError;
+ end
+ end
+ `CALIPTRA_ASSERT_KNOWN(KmacStKnown_A, kmac_st)
+
+ ///////////////
+ // Instances //
+ ///////////////
+
+ // KMAC core
+ kmac_core #(
+ .EnMasking (EnMasking)
+ ) u_kmac_core (
+ .clk_i,
+ .rst_ni,
+
+ // from Msg FIFO
+ .fifo_valid_i (msgfifo_valid),
+ .fifo_data_i (msgfifo_data ),
+ .fifo_strb_i (msgfifo_strb ),
+ .fifo_ready_o (msgfifo_ready),
+
+ // to SHA3 core
+ .msg_valid_o (msg_valid),
+ .msg_data_o (msg_data ),
+ .msg_strb_o (msg_strb ),
+ .msg_ready_i (msg_ready),
+
+ // Configurations
+ .kmac_en_i (app_kmac_en),
+ .mode_i (app_sha3_mode),
+ .strength_i (app_keccak_strength),
+
+ // Secret key interface
+ .key_data_i (key_data),
+ .key_len_i (key_len),
+ .key_valid_i (key_valid),
+
+ // Controls
+ .start_i (sha3_start ),
+ .process_i (msgfifo2kmac_process),
+ .done_i (sha3_done ),
+ .process_o (kmac2sha3_process ),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en[1]),
+
+ // Error detection
+ .sparse_fsm_error_o (kmac_core_state_error),
+ .key_index_error_o (key_index_error)
+ );
+
+ // SHA3 hashing engine
+
+ // msg_data masking
+ if (EnMasking == 1) begin: g_msg_mask
+ logic [MsgWidth-1:0] msg_mask_permuted;
+
+ // Permute the LFSR output to avoid same lfsr applied to multiple times
+ always_comb begin
+ msg_mask_permuted = '0;
+ for (int unsigned i = 0 ; i < MsgWidth ; i++) begin
+ // Loop through the MsgPerm constant and swap between the bits
+ msg_mask_permuted[i] = msg_mask[RndCnstMsgPerm[i]];
+ end
+ end
+
+ for (genvar i = 0 ; i < Share ; i++) begin: g_msg_data_mask
+ assign msg_data_masked[i] = msg_data[i]
+ ^ ({MsgWidth{cfg_msg_mask}} & msg_mask_permuted);
+ end : g_msg_data_mask
+ end else begin : g_no_msg_mask
+ assign msg_data_masked[0] = msg_data[0];
+
+ logic unused_msgmask;
+ assign unused_msgmask = ^{msg_mask, cfg_msg_mask, msg_mask_en};
+ end
+ sha3 #(
+ .EnMasking (EnMasking)
+ ) u_sha3 (
+ .clk_i,
+ .rst_ni,
+
+ // MSG_FIFO interface (or from KMAC)
+ .msg_valid_i (msg_valid),
+ .msg_data_i (msg_data_masked ),
+ .msg_strb_i (msg_strb ),
+ .msg_ready_o (msg_ready),
+
+ // Entropy interface
+ .rand_valid_i (sha3_rand_valid),
+ .rand_early_i (sha3_rand_early),
+ .rand_data_i (sha3_rand_data),
+ .rand_aux_i (sha3_rand_aux),
+ .rand_update_o (sha3_rand_update),
+ .rand_consumed_o (sha3_rand_consumed),
+
+ // N, S: Used in cSHAKE mode
+ .ns_data_i (ns_prefix),
+
+ // Configurations
+ .mode_i (app_sha3_mode),
+ .strength_i (app_keccak_strength),
+
+ // Controls (CMD register)
+ .start_i (sha3_start ),
+ .process_i (kmac2sha3_process),
+ .run_i (sha3_run ),
+ .done_i (sha3_done ),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en[2]),
+
+ .absorbed_o (sha3_absorbed),
+ .squeezing_o (unused_sha3_squeeze),
+
+ .block_processed_o (sha3_block_processed),
+
+ .sha3_fsm_o (sha3_fsm),
+
+ .state_valid_o (state_valid),
+ .state_o (state), // [Share]
+
+ // REQ/ACK interface to avoid power spikes
+ .run_req_o ( ), // Not used
+ .run_ack_i (1'b 1), // The SHA3 core is always allowed to process.
+
+ .error_o (sha3_err),
+ .sparse_fsm_error_o (sha3_state_error),
+ .count_error_o (sha3_count_error),
+ .keccak_storage_rst_error_o (sha3_storage_rst_error)
+ );
+
+ // MSG_FIFO window interface to FIFO interface ===============================
+ // Tie the read path
+ assign tlram_rvalid = 1'b 0;
+ assign tlram_rdata = '0;
+ assign tlram_rerror = '0;
+
+ // Convert endian here
+ // caliptra_prim_packer always packs to the right(bit0). If the input DWORD is
+ // big-endian, it needs to be swapped to little-endian to maintain the
+ // order. Internal SHA3(Keccak) runs in little-endian in contrast to HMAC
+ // So, no endian-swap after caliptra_prim_packer.
+ assign tlram_wdata_endian = conv_endian32(tlram_wdata,
+ reg2hw.cfg_shadowed.msg_endianness.q);
+ assign tlram_wmask_endian = conv_endian32(tlram_wmask,
+ reg2hw.cfg_shadowed.msg_endianness.q);
+
+ // TL Adapter
+ tlul_adapter_sram #(
+ .SramAw ($clog2(MsgWindowDepth)),
+ .SramDw (MsgWindowWidth),
+ .Outstanding (1),
+ .ByteAccess (1),
+ .ErrOnRead (1)
+ ) u_tlul_adapter_msgfifo (
+ .clk_i,
+ .rst_ni,
+ .en_ifetch_i (caliptra_prim_mubi_pkg::MuBi4False),
+ .tl_i (tl_win_h2d[WinMsgFifo]),
+ .tl_o (tl_win_d2h[WinMsgFifo]),
+
+ .req_o (tlram_req),
+ .req_type_o (),
+ .gnt_i (tlram_gnt),
+ .we_o (tlram_we ),
+ .addr_o (tlram_addr),
+ .wdata_o (tlram_wdata),
+ .wmask_o (tlram_wmask),
+ .intg_error_o ( ),
+ .rdata_i (tlram_rdata),
+ .rvalid_i (tlram_rvalid),
+ .rerror_i (tlram_rerror),
+ .compound_txn_in_progress_o (),
+ .readback_en_i (caliptra_prim_mubi_pkg::MuBi4False),
+ .readback_error_o (),
+ .wr_collision_i (1'b0),
+ .write_pending_i (1'b0)
+ );
+
+ assign sw_msg_valid = tlram_req & tlram_we ;
+ if (MsgWidth == MsgWindowWidth) begin : gen_sw_msg_samewidth
+ assign sw_msg_data = tlram_wdata_endian ;
+ assign sw_msg_mask = tlram_wmask_endian ;
+ end else begin : gen_sw_msg_diff
+ assign sw_msg_data = {{MsgWidth-MsgWindowWidth{1'b0}}, tlram_wdata_endian};
+ assign sw_msg_mask = {{MsgWidth-MsgWindowWidth{1'b0}}, tlram_wmask_endian};
+ end
+ assign tlram_gnt = sw_msg_ready ;
+
+ logic unused_tlram_addr;
+ assign unused_tlram_addr = &{1'b0, tlram_addr};
+
+ // Application interface Mux/Demux
+ kmac_app #(
+ .EnMasking(EnMasking),
+ .SecIdleAcceptSwMsg(SecIdleAcceptSwMsg),
+ .NumAppIntf(NumAppIntf),
+ .AppCfg(AppCfg)
+ ) u_app_intf (
+ .clk_i,
+ .rst_ni,
+
+ .reg_key_data_i (sw_key_data),
+ .reg_key_len_i (sw_key_len),
+
+ .reg_prefix_i (reg_ns_prefix),
+
+ .reg_kmac_en_i (reg_kmac_en),
+ .reg_sha3_mode_i (reg_sha3_mode),
+ .reg_keccak_strength_i (reg_keccak_strength),
+
+ // data from tl_adapter
+ .sw_valid_i (sw_msg_valid),
+ .sw_data_i (sw_msg_data),
+ .sw_mask_i (sw_msg_mask),
+ .sw_ready_o (sw_msg_ready),
+
+ // KeyMgr sideloaded key interface
+ .keymgr_key_i,
+
+ // Application data in / digest out interface
+ .app_i,
+ .app_o,
+
+ // Secret Key output to KMAC Core
+ .key_data_o (key_data),
+ .key_len_o (key_len),
+ .key_valid_o (key_valid),
+
+ // to MSG_FIFO
+ .kmac_valid_o (mux2fifo_valid),
+ .kmac_data_o (mux2fifo_data),
+ .kmac_mask_o (mux2fifo_mask),
+ .kmac_ready_i (mux2fifo_ready),
+
+ // to KMAC Core
+ .kmac_en_o (app_kmac_en),
+
+ // to SHA3 Core
+ .sha3_prefix_o (ns_prefix),
+ .sha3_mode_o (app_sha3_mode),
+ .keccak_strength_o (app_keccak_strength),
+
+ // Keccak state from SHA3 core
+ .keccak_state_valid_i (state_valid),
+ .keccak_state_i (state),
+
+ // to STATE TL Window
+ .reg_state_valid_o (reg_state_valid),
+ .reg_state_o (reg_state),
+
+ // Configuration: Sideloaded Key
+ .keymgr_key_en_i (reg2hw.cfg_shadowed.sideload.q),
+
+ .absorbed_i (sha3_absorbed), // from SHA3
+ .absorbed_o (app_absorbed), // to SW
+
+ .app_active_o(app_active),
+
+ .error_i (sha3_err.valid),
+ .err_processed_i (err_processed),
+
+ .clear_after_error_o (clear_after_error),
+
+ // Command interface
+ .sw_cmd_i (checked_sw_cmd),
+ .cmd_o (kmac_cmd),
+
+ // Status
+ .entropy_ready_i (entropy_configured),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en[3]),
+
+ // Error report
+ .error_o (app_err),
+ .sparse_fsm_error_o (kmac_app_state_error)
+
+ );
+
+ // Message FIFO
+ kmac_msgfifo #(
+ .OutWidth (kmac_pkg::MsgWidth),
+ .MsgDepth (kmac_pkg::MsgFifoDepth),
+ .EnMasking (EnMasking)
+ ) u_msgfifo (
+ .clk_i,
+ .rst_ni,
+
+ .fifo_valid_i (mux2fifo_valid),
+ .fifo_data_i (mux2fifo_data),
+ .fifo_mask_i (mux2fifo_mask),
+ .fifo_ready_o (mux2fifo_ready),
+
+ .msg_valid_o (msgfifo_valid),
+ .msg_data_o (msgfifo_data[0]),
+ .msg_strb_o (msgfifo_strb),
+ .msg_ready_i (msgfifo_ready),
+
+ .fifo_empty_o (msgfifo_empty), // intr and status
+ .fifo_full_o (msgfifo_full), // connected to status only
+ .fifo_depth_o (msgfifo_depth),
+
+ .clear_i (sha3_done),
+
+ .process_i (reg2msgfifo_process ),
+ .process_o (msgfifo2kmac_process),
+
+ .err_o (msgfifo_err)
+ );
+
+ logic [sha3_pkg::StateW-1:0] reg_state_tl [Share];
+ always_comb begin
+ for (int i = 0 ; i < Share; i++) begin
+ reg_state_tl[i] = reg_state_valid ? reg_state[i] : 'b0;
+ end
+ end
+
+ // State (Digest) reader
+ kmac_staterd #(
+ .AddrW (9), // 512B
+ .EnMasking (EnMasking)
+ ) u_staterd (
+ .clk_i,
+ .rst_ni,
+
+ .tl_i (tl_win_h2d[WinState]),
+ .tl_o (tl_win_d2h[WinState]),
+
+ .state_i (reg_state_tl),
+
+ .endian_swap_i (reg2hw.cfg_shadowed.state_endianness.q)
+ );
+
+ // Error checker
+ kmac_errchk #(
+ .EnMasking (EnMasking)
+ ) u_errchk (
+ .clk_i,
+ .rst_ni,
+
+ // Configurations
+ .cfg_mode_i (reg_sha3_mode ),
+ .cfg_strength_i(reg_keccak_strength),
+
+ .kmac_en_i (reg_kmac_en ),
+ .cfg_prefix_6B_i(reg_ns_prefix[47:0]), // first 6B of PREFIX
+
+ .cfg_en_unsupported_modestrength_i (cfg_en_unsupported_modestrength),
+
+ .entropy_ready_pulse_i (entropy_ready),
+
+ // SW commands
+ .sw_cmd_i(sw_cmd),
+ .sw_cmd_o(checked_sw_cmd),
+
+ // Status from KMAC_APP
+ .app_active_i(app_active),
+
+ // Status from SHA3 core
+ .sha3_absorbed_i(sha3_absorbed ),
+ .keccak_done_i (sha3_block_processed),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en[4]),
+
+ .err_processed_i (err_processed),
+ .clear_after_error_i (clear_after_error),
+
+ .error_o (errchecker_err),
+ .sparse_fsm_error_o (kmac_errchk_state_error)
+ );
+
+ // Entropy Generator
+ if (EnMasking == 1) begin : gen_entropy
+
+ logic entropy_req, entropy_ack;
+ logic [edn_pkg::ENDPOINT_BUS_WIDTH-1:0] entropy_data;
+ logic unused_entropy_fips;
+
+ // Synchronize EDN interface
+ caliptra_prim_sync_reqack_data #(
+ .Width(edn_pkg::ENDPOINT_BUS_WIDTH),
+ .DataSrc2Dst(1'b0),
+ .DataReg(1'b0)
+ ) u_caliptra_prim_sync_reqack_data (
+ .clk_src_i (clk_i),
+ .rst_src_ni(rst_ni),
+ .clk_dst_i (clk_edn_i),
+ .rst_dst_ni(rst_edn_ni),
+ .req_chk_i (1'b1),
+ .src_req_i (entropy_req),
+ .src_ack_o (entropy_ack),
+ .dst_req_o (entropy_o.edn_req),
+ .dst_ack_i (entropy_i.edn_ack),
+ .data_i (entropy_i.edn_bus),
+ .data_o (entropy_data)
+ );
+
+ // We don't track whether the entropy is pre-FIPS or not inside KMAC.
+ assign unused_entropy_fips = entropy_i.edn_fips;
+
+ kmac_entropy #(
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .RndCnstLfsrSeed(RndCnstLfsrSeed),
+ .RndCnstBufferLfsrSeed(RndCnstBufferLfsrSeed)
+ ) u_entropy (
+ .clk_i,
+ .rst_ni,
+
+ // EDN interface
+ .entropy_req_o (entropy_req),
+ .entropy_ack_i (entropy_ack),
+ .entropy_data_i(entropy_data),
+
+ // Entropy to internal logic (DOM AND)
+ .rand_valid_o (sha3_rand_valid),
+ .rand_early_o (sha3_rand_early),
+ .rand_data_o (sha3_rand_data),
+ .rand_aux_o (sha3_rand_aux),
+ .rand_update_i (sha3_rand_update),
+ .rand_consumed_i (sha3_rand_consumed),
+
+ // Status from internal logic
+ //// KMAC secret block handling indicator
+ .in_keyblock_i (entropy_in_keyblock),
+
+ // Configuration
+ .mode_i (entropy_mode),
+ .entropy_ready_i (entropy_ready),
+ .fast_process_i (entropy_fast_process),
+
+ //// Entropy refresh period in clk cycles
+ .wait_timer_prescaler_i (wait_timer_prescaler),
+ .wait_timer_limit_i (wait_timer_limit),
+
+ //// Message Masking
+ .msg_mask_en_i (msg_mask_en),
+ .msg_mask_o (msg_mask),
+
+ //// SW update of seed
+ .seed_update_i (entropy_seed_update),
+ .seed_data_i (entropy_seed_data),
+ .entropy_refresh_req_i (entropy_refresh_req),
+
+ // Status
+ .hash_cnt_o (entropy_hash_cnt),
+ .hash_cnt_clr_i (entropy_hash_clr),
+ .hash_threshold_i (entropy_hash_threshold),
+
+ .entropy_configured_o (entropy_configured),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en[5]),
+
+ // Error
+ .err_o (entropy_err),
+ .sparse_fsm_error_o (kmac_entropy_state_error),
+ .count_error_o (kmac_entropy_hash_counter_error),
+ .err_processed_i (err_processed)
+ );
+ end else begin : gen_empty_entropy
+ // If Masking is not used, no need of entropy. Ignore inputs and config; tie output to 0.
+ edn_pkg::edn_rsp_t unused_entropy_input;
+ entropy_mode_e unused_entropy_mode;
+ logic unused_entropy_fast_process;
+
+ assign unused_entropy_input = entropy_i;
+ assign unused_entropy_mode = entropy_mode;
+ assign unused_entropy_fast_process = entropy_fast_process;
+
+ assign entropy_o = '{default: '0};
+
+ logic unused_sha3_rand_update;
+ logic unused_sha3_rand_consumed;
+ assign sha3_rand_valid = 1'b 1;
+ assign sha3_rand_early = 1'b 1;
+ assign sha3_rand_data = '0;
+ assign sha3_rand_aux = '0;
+ assign unused_sha3_rand_update = sha3_rand_update;
+ assign unused_sha3_rand_consumed = sha3_rand_consumed;
+
+ logic unused_seed_update;
+ logic [31:0] unused_seed_data;
+ logic [31:0] unused_refresh_period;
+ logic unused_entropy_refresh_req;
+ assign unused_seed_data = entropy_seed_data;
+ assign unused_seed_update = entropy_seed_update;
+ assign unused_refresh_period = ^{wait_timer_limit, wait_timer_prescaler};
+ assign unused_entropy_refresh_req = entropy_refresh_req;
+
+ logic unused_entropy_hash;
+ assign unused_entropy_hash = ^{entropy_hash_clr, entropy_hash_threshold};
+ assign entropy_hash_cnt = '0;
+
+ assign entropy_err = '{valid: 1'b 0, code: ErrNone, info: '0};
+
+ assign kmac_entropy_state_error = 1'b 0;
+ assign kmac_entropy_hash_counter_error = 1'b 0;
+
+ logic [1:0] unused_entropy_status;
+ assign unused_entropy_status = entropy_in_keyblock;
+
+ // If Masking is off, always entropy configured
+ assign entropy_configured = caliptra_prim_mubi_pkg::MuBi4True;
+ end
+
+ // MUBI4 buf
+ caliptra_prim_mubi4_sender #(
+ .AsyncOn (0)
+ ) u_sha3_done_sender (
+ .clk_i,
+ .rst_ni,
+ .mubi_i (sha3_done_d),
+ .mubi_o (sha3_done)
+ );
+
+ // Register top
+ logic [NumAlerts-1:0] alert_test, alerts, alerts_q;
+
+ logic shadowed_storage_err, shadowed_update_err;
+ kmac_reg_top u_reg (
+ .clk_i,
+ .rst_ni,
+ .rst_shadowed_ni,
+
+ .tl_i,
+ .tl_o,
+
+ .tl_win_o (tl_win_h2d),
+ .tl_win_i (tl_win_d2h),
+
+ .reg2hw,
+ .hw2reg,
+
+ // SEC_CM: CFG_SHADOWED.CONFIG.SHADOW
+ .shadowed_storage_err_o (shadowed_storage_err),
+ .shadowed_update_err_o (shadowed_update_err),
+ // SEC_CM: BUS.INTEGRITY
+ .intg_err_o (alert_intg_err)
+ );
+
+ logic unused_cfg_shadowed_qe;
+ assign unused_cfg_shadowed_qe = ^{
+ reg2hw.cfg_shadowed.kmac_en.qe ,
+ reg2hw.cfg_shadowed.kstrength.qe ,
+ reg2hw.cfg_shadowed.mode.qe ,
+ reg2hw.cfg_shadowed.msg_endianness.qe ,
+ reg2hw.cfg_shadowed.state_endianness.qe ,
+ reg2hw.cfg_shadowed.sideload.qe ,
+ reg2hw.cfg_shadowed.entropy_mode.qe ,
+ reg2hw.cfg_shadowed.entropy_fast_process.qe ,
+ reg2hw.cfg_shadowed.msg_mask.qe ,
+ reg2hw.cfg_shadowed.en_unsupported_modestrength.qe
+ };
+
+ // Alerts
+ assign alert_test = {
+ reg2hw.alert_test.fatal_fault_err.q
+ & reg2hw.alert_test.fatal_fault_err.qe, // [1]
+ reg2hw.alert_test.recov_operation_err.q
+ & reg2hw.alert_test.recov_operation_err.qe // [0]
+ };
+
+ assign alerts = {
+ alert_fatal, // Alerts[1]
+ alert_recov_operation // Alerts[0]
+ };
+
+ assign alert_recov_operation = shadowed_update_err;
+
+ // The recoverable alert is observable via status register until the KMAC operation is restarted
+ // by re-writing the Control Register.
+ logic status_alert_recov_ctrl_update_err;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ status_alert_recov_ctrl_update_err <= 1'b 0;
+ end else if (alert_recov_operation) begin
+ status_alert_recov_ctrl_update_err <= 1'b 1;
+ end else if (err_processed) begin
+ status_alert_recov_ctrl_update_err <= 1'b 0;
+ end
+ end
+
+ assign hw2reg.status.alert_recov_ctrl_update_err.d = status_alert_recov_ctrl_update_err;
+
+ assign alert_fatal = shadowed_storage_err
+ | alert_intg_err
+ | sparse_fsm_error
+ | counter_error
+ | control_integrity_error
+ ;
+
+ // Make the fatal alert observable via status register.
+ // Cannot be reset except the hardware reset
+ logic status_alert_fatal_fault;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ status_alert_fatal_fault <= 1'b 0;
+ end else if (alert_fatal) begin
+ status_alert_fatal_fault <= 1'b 1;
+ end
+ end
+ assign hw2reg.status.alert_fatal_fault.d = status_alert_fatal_fault;
+
+ for (genvar i = 0; i < NumAlerts; i++) begin : gen_alert_tx
+ caliptra_prim_alert_sender #(
+ .AsyncOn(AlertAsyncOn[i]),
+ .IsFatal(i)
+ ) u_caliptra_prim_alert_sender (
+ .clk_i,
+ .rst_ni,
+ .alert_test_i ( alert_test[i] ),
+ .alert_req_i ( alerts[i] ),
+ .alert_ack_o ( ),
+ .alert_state_o ( ),
+ .alert_rx_i ( alert_rx_i[i] ),
+ .alert_tx_o ( alert_tx_o[i] )
+ );
+ end
+
+ // Below assumes NumAlerts == 2
+ `CALIPTRA_ASSERT_INIT(NumAlerts2_A, NumAlerts == 2)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ // break up the combinatorial path for local escalation
+ if (!rst_ni) begin
+ alerts_q[1] <= 1'b0;
+ end else if (alerts[1]) begin
+ // fatal alerts cannot be cleared
+ alerts_q[1] <= 1'b1;
+ end
+ end
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ // break up the combinatorial path for local escalation
+ if (!rst_ni) begin
+ alerts_q[0] <= 1'b0;
+ end else begin
+ // recoverable alerts can be cleared so just latch the value
+ alerts_q[0] <= alerts[0];
+ end
+ end
+
+ // Latched recoverable alert[0] is not used. Rather removing above,
+ // keep alert_q[1:0] and make alert_q[0] unused (lint waive).
+ logic unused_alerts_q0;
+ assign unused_alerts_q0 = alerts_q[0];
+
+ // SEC_CM: LC_ESCALATE_EN.INTERSIG.MUBI, FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t alert_to_caliptra_ss_lc_tx;
+ assign alert_to_caliptra_ss_lc_tx = caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_bool_to_caliptra_ss_lc_tx(alerts_q[1]);
+ for (genvar i = 0; i < NumLcSyncCopies; i++) begin : gen_or_alert_caliptra_ss_lc_sync
+ assign caliptra_ss_lc_escalate_en[i] = caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_or_hi(alert_to_caliptra_ss_lc_tx, caliptra_ss_lc_escalate_en_sync[i]);
+ end
+
+ // Synchronize life cycle input
+ caliptra_prim_lc_sync #(
+ .NumCopies (NumLcSyncCopies)
+ ) u_caliptra_prim_lc_sync (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i ( caliptra_ss_lc_escalate_en_i ),
+ .lc_en_o ( caliptra_ss_lc_escalate_en_sync )
+ );
+
+ assign en_masking_o = EnMasking;
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Assert known for output values
+ `CALIPTRA_ASSERT_KNOWN(KmacDone_A, intr_kmac_done_o)
+ `CALIPTRA_ASSERT_KNOWN(FifoEmpty_A, intr_fifo_empty_o)
+ `CALIPTRA_ASSERT_KNOWN(KmacErr_A, intr_kmac_err_o)
+ `CALIPTRA_ASSERT_KNOWN(TlODValidKnown_A, tl_o.d_valid)
+ `CALIPTRA_ASSERT_KNOWN(TlOAReadyKnown_A, tl_o.a_ready)
+ `CALIPTRA_ASSERT_KNOWN(AlertKnownO_A, alert_tx_o)
+ `CALIPTRA_ASSERT_KNOWN(EnMaskingKnown_A, en_masking_o)
+
+ // Parameter as desired
+ `CALIPTRA_ASSERT_INIT(SecretKeyDivideBy32_A, (kmac_pkg::MaxKeyLen % 32) == 0)
+
+ // Command input should be sparse
+ `CALIPTRA_ASSUME(CmdSparse_M, reg2hw.cmd.cmd.qe |-> reg2hw.cmd.cmd.q inside {CmdStart, CmdProcess,
+ CmdManualRun,CmdDone, CmdNone})
+
+ // redundant counter error
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(SentMsgCountCheck_A, u_sha3.u_pad.u_sentmsg_count,
+ alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(RoundCountCheck_A, u_sha3.u_keccak.u_round_count,
+ alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(KeyIndexCountCheck_A, u_kmac_core.u_key_index_count,
+ alert_tx_o[1])
+
+ // Sparse FSM state error
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(KmacCoreFsmCheck_A, u_kmac_core.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(KmacAppFsmCheck_A, u_app_intf.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(SHA3FsmCheck_A, u_sha3.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(SHA3padFsmCheck_A, u_sha3.u_pad.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(KeccackFsmCheck_A, u_sha3.u_keccak.u_state_regs,
+ alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(ErrorCheckFsmCheck_A, u_errchk.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(KmacFsmCheck_A, u_state_regs, alert_tx_o[1])
+
+ // prim is only instantiated if masking is enabled
+ if (EnMasking == 1) begin : g_testassertion
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(EntropyFsmCheck_A, gen_entropy.u_entropy.u_state_regs,
+ alert_tx_o[1])
+
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(HashCountCheck_A, gen_entropy.u_entropy.u_hash_count,
+ alert_tx_o[1])
+
+ // MsgFifo.Packer
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(
+ PackerCountCheck_A,
+ u_msgfifo.u_packer.g_pos_dupcnt.u_pos,
+ alert_tx_o[1]
+ )
+
+ // MsgFifo.Fifo
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(
+ MsgFifoWptrCheck_A,
+ u_msgfifo.u_msgfifo.gen_normal_fifo.u_fifo_cnt.gen_secure_ptrs.u_wptr,
+ alert_tx_o[1]
+ )
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(
+ MsgFifoRptrCheck_A,
+ u_msgfifo.u_msgfifo.gen_normal_fifo.u_fifo_cnt.gen_secure_ptrs.u_rptr,
+ alert_tx_o[1]
+ )
+ end
+
+ // Alert assertions for reg_we onehot check
+ `CALIPTRA_ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ALERT(RegWeOnehotCheck_A, u_reg, alert_tx_o[1])
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_app.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_app.sv
new file mode 100644
index 0000000..e83f147
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_app.sv
@@ -0,0 +1,911 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC Application interface
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_app
+ import kmac_pkg::*;
+#(
+ // App specific configs are defined in kmac_pkg
+ parameter bit EnMasking = 1'b0,
+ localparam int Share = (EnMasking) ? 2 : 1, // derived parameter
+ parameter bit SecIdleAcceptSwMsg = 1'b0,
+ parameter int unsigned NumAppIntf = 3,
+ parameter app_config_t AppCfg[NumAppIntf] = '{AppCfgKeyMgr, AppCfgLcCtrl, AppCfgRomCtrl}
+) (
+ input clk_i,
+ input rst_ni,
+
+ // Secret Key from register
+ input [MaxKeyLen-1:0] reg_key_data_i [Share],
+ input key_len_e reg_key_len_i,
+
+ // Prefix from register
+ input [sha3_pkg::NSRegisterSize*8-1:0] reg_prefix_i,
+
+ // mode, strength, kmac_en from register
+ input reg_kmac_en_i,
+ input sha3_pkg::sha3_mode_e reg_sha3_mode_i,
+ input sha3_pkg::keccak_strength_e reg_keccak_strength_i,
+
+ // Data from Software
+ input sw_valid_i,
+ input [MsgWidth-1:0] sw_data_i,
+ input [MsgWidth-1:0] sw_mask_i,
+ output logic sw_ready_o,
+
+ // KeyMgr Sideload Key interface
+ input caliptra_ss_lc_ctrl_keymgr_pkg::hw_key_req_t keymgr_key_i,
+
+ // Application Message in/ Digest out interface + control signals
+ input app_req_t [NumAppIntf-1:0] app_i,
+ output app_rsp_t [NumAppIntf-1:0] app_o,
+
+ // to KMAC Core: Secret key
+ output logic [MaxKeyLen-1:0] key_data_o [Share],
+ output key_len_e key_len_o,
+ output logic key_valid_o,
+
+ // to MSG_FIFO
+ output logic kmac_valid_o,
+ output logic [MsgWidth-1:0] kmac_data_o,
+ output logic [MsgWidth-1:0] kmac_mask_o,
+ input kmac_ready_i,
+
+ // KMAC Core
+ output logic kmac_en_o,
+
+ // To Sha3 Core
+ output logic [sha3_pkg::NSRegisterSize*8-1:0] sha3_prefix_o,
+ output sha3_pkg::sha3_mode_e sha3_mode_o,
+ output sha3_pkg::keccak_strength_e keccak_strength_o,
+
+ // STATE from SHA3 Core
+ input keccak_state_valid_i,
+ input [sha3_pkg::StateW-1:0] keccak_state_i [Share],
+
+ // to STATE TL-window if Application is not active, the incoming state goes to
+ // register if kdf_en is set, the state value goes to application and the
+ // output to the register is all zero.
+ output logic reg_state_valid_o,
+ output logic [sha3_pkg::StateW-1:0] reg_state_o [Share],
+
+ // Configurations If key_en is set, the logic uses KeyMgr's sideloaded key as
+ // a secret key rather than register values. This only affects when software
+ // initiates. If App initiates the hash operation and uses KMAC algorithm, it
+ // always uses sideloaded key.
+ input keymgr_key_en_i,
+
+ // Commands
+ // Command from software
+ input kmac_cmd_e sw_cmd_i,
+
+ // from SHA3
+ input caliptra_prim_mubi_pkg::mubi4_t absorbed_i,
+
+ // to KMAC
+ output kmac_cmd_e cmd_o,
+
+ // to SW
+ output caliptra_prim_mubi_pkg::mubi4_t absorbed_o,
+
+ // To status
+ output logic app_active_o,
+
+ // Status
+ // - entropy_ready_i: Entropy configured by SW. It is used to check if App
+ // is OK to request.
+ input caliptra_prim_mubi_pkg::mubi4_t entropy_ready_i,
+
+ // Error input
+ // This error comes from KMAC/SHA3 engine.
+ // KeyMgr interface delivers the error signal to KeyMgr to drop the current op
+ // and re-initiate.
+ // If error happens, regardless of SW-initiated or KeyMgr-initiated, the error
+ // is reported to the ERR_CODE so that SW can look into.
+ input error_i,
+
+ // SW sets err_processed bit in CTRL then the logic goes to Idle
+ input err_processed_i,
+
+ output caliptra_prim_mubi_pkg::mubi4_t clear_after_error_o,
+
+ // error_o value is pushed to Error FIFO at KMAC/SHA3 top and reported to SW
+ output kmac_pkg::err_t error_o,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ output logic sparse_fsm_error_o
+);
+
+ import sha3_pkg::KeccakBitCapacity;
+ import sha3_pkg::L128;
+ import sha3_pkg::L224;
+ import sha3_pkg::L256;
+ import sha3_pkg::L384;
+ import sha3_pkg::L512;
+
+ /////////////////
+ // Definitions //
+ /////////////////
+
+ // Digest width is same to the key width `caliptra_ss_lc_ctrl_keymgr_pkg::KeyWidth`.
+ localparam int KeyMgrKeyW = $bits(keymgr_key_i.key[0]);
+
+ localparam key_len_e KeyLengths [5] = '{Key128, Key192, Key256, Key384, Key512};
+
+ localparam int SelKeySize = (AppKeyW == 128) ? 0 :
+ (AppKeyW == 192) ? 1 :
+ (AppKeyW == 256) ? 2 :
+ (AppKeyW == 384) ? 3 :
+ (AppKeyW == 512) ? 4 : 0 ;
+ localparam int SelDigSize = (AppDigestW == 128) ? 0 :
+ (AppDigestW == 192) ? 1 :
+ (AppDigestW == 256) ? 2 :
+ (AppDigestW == 384) ? 3 :
+ (AppDigestW == 512) ? 4 : 0 ;
+ localparam key_len_e SideloadedKey = KeyLengths[SelKeySize];
+
+ // Define right_encode(outlen) value here
+ // Look at kmac_pkg::key_len_e for the kinds of key size
+ //
+ // These values should be exactly the same as the key length encodings
+ // in kmac_core.sv, with the only difference being that the byte representing
+ // the byte-length of the encoded value is in the MSB position due to right encoding
+ // instead of in the LSB position (left encoding).
+ localparam int OutLenW = 24;
+ localparam logic [OutLenW-1:0] EncodedOutLen [5]= '{
+ 24'h 0001_80, // Key128
+ 24'h 0001_C0, // Key192
+ 24'h 02_0001, // Key256
+ 24'h 02_8001, // Key384
+ 24'h 02_0002 // Key512
+ };
+
+ localparam logic [OutLenW-1:0] EncodedOutLenMask [5] = '{
+ 24'h 00FFFF, // Key128,
+ 24'h 00FFFF, // Key192
+ 24'h FFFFFF, // Key256
+ 24'h FFFFFF, // Key384
+ 24'h FFFFFF // Key512
+ };
+
+ /////////////
+ // Signals //
+ /////////////
+
+ st_e st, st_d;
+
+ logic keymgr_key_used;
+
+ // app_rsp_t signals
+ // The state machine controls mux selection, which controls the ready signal
+ // the other responses are controled in separate logic. So define the signals
+ // here and merge them to the response.
+ logic app_data_ready, fsm_data_ready;
+ logic app_digest_done, fsm_digest_done_q, fsm_digest_done_d;
+ logic [AppDigestW-1:0] app_digest [2];
+
+ // One more slot for value NumAppIntf. It is the value when no app intf is
+ // chosen.
+ localparam int unsigned AppIdxW = $clog2(NumAppIntf);
+
+ // app_id indicates, which app interface was chosen. various logic use this
+ // value to get the config or return the data.
+ logic [AppIdxW-1:0] app_id, app_id_d;
+ logic clr_appid, set_appid;
+
+ // Output length
+ logic [OutLenW-1:0] encoded_outlen, encoded_outlen_mask;
+
+ // state output
+ // Mux selection signal
+ app_mux_sel_e mux_sel;
+ app_mux_sel_e mux_sel_buf_output;
+ app_mux_sel_e mux_sel_buf_err_check;
+ app_mux_sel_e mux_sel_buf_kmac;
+
+ // Error checking logic
+
+ kmac_pkg::err_t fsm_err, mux_err;
+
+ logic service_rejected_error;
+ logic service_rejected_error_set, service_rejected_error_clr;
+ logic err_during_sw_d, err_during_sw_q;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) service_rejected_error <= 1'b 0;
+ else if (service_rejected_error_set) service_rejected_error <= 1'b 1;
+ else if (service_rejected_error_clr) service_rejected_error <= 1'b 0;
+ end
+
+ ////////////////////////////
+ // Application Mux/ Demux //
+ ////////////////////////////
+
+
+ // Processing return data.
+ // sends to only selected app intf.
+ // clear digest right after done to not leak info to other interface
+ always_comb begin
+ for (int unsigned i = 0 ; i < NumAppIntf ; i++) begin
+ if (i == app_id) begin
+ app_o[i] = '{
+ ready: app_data_ready | fsm_data_ready,
+ done: app_digest_done | fsm_digest_done_q,
+ digest_share0: app_digest[0],
+ digest_share1: app_digest[1],
+ // if fsm asserts done, should be an error case.
+ error: error_i | fsm_digest_done_q | sparse_fsm_error_o
+ | service_rejected_error
+ };
+ end else begin
+ app_o[i] = '{
+ ready: 1'b 0,
+ done: 1'b 0,
+ digest_share0: '0,
+ digest_share1: '0,
+ error: 1'b 0
+ };
+ end
+ end // for {i, NumAppIntf, i++}
+ end // aiways_comb
+
+ // app_id latch
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) app_id <= AppIdxW'(0) ; // Do not select any
+ else if (clr_appid) app_id <= AppIdxW'(0);
+ else if (set_appid) app_id <= app_id_d;
+ end
+
+ // app_id selection as of now, app_id uses Priority. The assumption is that
+ // the request normally does not collide. (ROM_CTRL activates very early
+ // stage at the boot sequence)
+ //
+ // If this assumption is not true, consider RR arbiter.
+
+ // Prep for arbiter
+ logic [NumAppIntf-1:0] app_reqs;
+ logic [NumAppIntf-1:0] unused_app_gnts;
+ logic [$clog2(NumAppIntf)-1:0] arb_idx;
+ logic arb_valid;
+ logic arb_ready;
+
+ always_comb begin
+ app_reqs = '0;
+ for (int unsigned i = 0 ; i < NumAppIntf ; i++) begin
+ app_reqs[i] = app_i[i].valid;
+ end
+ end
+
+ caliptra_prim_arbiter_fixed #(
+ .N (NumAppIntf),
+ .DW(1),
+ .EnDataPort(1'b 0)
+ ) u_appid_arb (
+ .clk_i,
+ .rst_ni,
+
+ .req_i (app_reqs),
+ .data_i ('{default:'0}),
+ .gnt_o (unused_app_gnts),
+ .idx_o (arb_idx),
+
+ .valid_o (arb_valid),
+ .data_o (), // not used
+ .ready_i (arb_ready)
+ );
+
+ assign app_id_d = AppIdxW'(arb_idx);
+ assign arb_ready = set_appid;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) fsm_digest_done_q <= 1'b 0;
+ else fsm_digest_done_q <= fsm_digest_done_d;
+ end
+
+ /////////
+ // FSM //
+ /////////
+
+ // State register
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_d, st, st_e, StIdle)
+
+ // Create a lint error to reduce the risk of accidentally enabling this feature.
+ `CALIPTRA_ASSERT_STATIC_LINT_ERROR(KmacSecIdleAcceptSwMsgNonDefault, SecIdleAcceptSwMsg == 0)
+
+ // Next State & output logic
+ // SEC_CM: FSM.SPARSE
+ always_comb begin
+ st_d = st;
+
+ mux_sel = SecIdleAcceptSwMsg ? SelSw : SelNone;
+
+ // app_id control
+ set_appid = 1'b 0;
+ clr_appid = 1'b 0;
+
+ // Commands
+ cmd_o = CmdNone;
+
+ // Software output
+ absorbed_o = caliptra_prim_mubi_pkg::MuBi4False;
+
+ // Error
+ fsm_err = '{valid: 1'b 0, code: ErrNone, info: '0};
+ sparse_fsm_error_o = 1'b 0;
+
+ clear_after_error_o = caliptra_prim_mubi_pkg::MuBi4False;
+
+ service_rejected_error_set = 1'b 0;
+ service_rejected_error_clr = 1'b 0;
+
+ // If error happens, FSM asserts data ready but discard incoming msg
+ fsm_data_ready = 1'b 0;
+ fsm_digest_done_d = 1'b 0;
+
+ unique case (st)
+ StIdle: begin
+ if (arb_valid) begin
+ st_d = StAppCfg;
+
+ // choose app_id
+ set_appid = 1'b 1;
+ end else if (sw_cmd_i == CmdStart) begin
+ st_d = StSw;
+ // Software initiates the sequence
+ cmd_o = CmdStart;
+ end else begin
+ st_d = StIdle;
+ end
+ end
+
+ StAppCfg: begin
+ if (AppCfg[app_id].Mode == AppKMAC &&
+ caliptra_prim_mubi_pkg::mubi4_test_false_strict(entropy_ready_i)) begin
+ // Check if the entropy is not configured but it is needed in
+ // `AppCfg[app_id]` (KMAC mode).
+ //
+ // SW is not properly configured, report and not request Hashing
+ // Return the app with errors
+ st_d = StError;
+
+ service_rejected_error_set = 1'b 1;
+
+ end else begin
+ // As Cfg is stable now, it sends cmd
+ st_d = StAppMsg;
+
+ // App initiates the data
+ cmd_o = CmdStart;
+ end
+ end
+
+ StAppMsg: begin
+ mux_sel = SelApp;
+ if (app_i[app_id].valid && app_o[app_id].ready && app_i[app_id].last) begin
+ if (AppCfg[app_id].Mode == AppKMAC) begin
+ st_d = StAppOutLen;
+ end else begin
+ st_d = StAppProcess;
+ end
+ end else begin
+ st_d = StAppMsg;
+ end
+ end
+
+ StAppOutLen: begin
+ mux_sel = SelOutLen;
+
+ if (kmac_valid_o && kmac_ready_i) begin
+ st_d = StAppProcess;
+ end else begin
+ st_d = StAppOutLen;
+ end
+ end
+
+ StAppProcess: begin
+ cmd_o = CmdProcess;
+ st_d = StAppWait;
+ end
+
+ StAppWait: begin
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed_i)) begin
+ // Send digest to KeyMgr and complete the op
+ st_d = StIdle;
+ cmd_o = CmdDone;
+
+ clr_appid = 1'b 1;
+ end else begin
+ st_d = StAppWait;
+ end
+ end
+
+ StSw: begin
+ mux_sel = SelSw;
+
+ cmd_o = sw_cmd_i;
+ absorbed_o = absorbed_i;
+
+ if (sw_cmd_i == CmdDone) begin
+ st_d = StIdle;
+ end else begin
+ st_d = StSw;
+ end
+ end
+
+ StKeyMgrErrKeyNotValid: begin
+ st_d = StError;
+
+ // As mux_sel is not set to SelApp, app_data_ready is still 0.
+ // This logic won't accept the requests from the selected App.
+ fsm_err.valid = 1'b 1;
+ fsm_err.code = ErrKeyNotValid;
+ fsm_err.info = 24'(app_id);
+ end
+
+ StError: begin
+ // In this state, the state machine flush out the request
+ st_d = StError;
+
+ // Absorb data on the app interface.
+ fsm_data_ready = ~err_during_sw_q;
+
+ // Next step depends on two conditions:
+ // 1) Error being processed by SW
+ // 2) Last data provided from the app interface (so that the app interface is completely)
+ // drained. If the error occurred during a SW operation, the app interface is not
+ // involved, so this condition gets skipped.
+ unique case ({err_processed_i,
+ (app_i[app_id].valid && app_i[app_id].last) || err_during_sw_q})
+ 2'b00: begin
+ // Error not processed by SW and not last data from app interface -> keep current state.
+ st_d = StError;
+ end
+ 2'b01: begin
+ // Error not processed by SW but last data from app interface:
+ // 1. Send garbage digest to the app interface (in the next cycle) to complete the
+ // transaction.
+ fsm_digest_done_d = ~err_during_sw_q;
+ if (service_rejected_error) begin
+ // 2.a) Service was rejected because an app interface tried to configure KMAC while no
+ // entropy was available. It is assumed that SW is not loaded yet, so don't wait for
+ // SW to process the error. The last data from the app interface has now arrived, but
+ // we don't need to wait for the SHA3 core to have absorbed it because the data never
+ // entered the SHA3 core: the request from the app interface was terminated during the
+ // configuration phase.
+ st_d = StErrorServiceRejected;
+ end else begin
+ // 2.b) If service was not rejected, wait for SW to process the error.
+ st_d = StErrorAwaitSw;
+ end
+ end
+ 2'b10: begin
+ // Error processed by SW but not last data from app interface -> wait for app interface.
+ st_d = StErrorAwaitApp;
+ end
+ 2'b11: begin
+ // Error processed by SW and last data from app interface:
+ // Send garbage digest to the app interface (in the next cycle) to complete the
+ // transaction.
+ fsm_digest_done_d = ~err_during_sw_q;
+ // Flush the message FIFO and let the SHA3 engine compute a digest (which won't be used
+ // but serves to bring the SHA3 engine back to the idle state).
+ cmd_o = CmdProcess;
+ st_d = StErrorWaitAbsorbed;
+ end
+ default: st_d = StError;
+ endcase
+ end
+
+ StErrorAwaitSw: begin
+ // Just wait for SW to process the error.
+ if (err_processed_i) begin
+ // Flush the message FIFO and let the SHA3 engine compute a digest (which won't be used
+ // but serves to bring the SHA3 engine back to the idle state).
+ cmd_o = CmdProcess;
+ st_d = StErrorWaitAbsorbed;
+ end
+ end
+
+ StErrorAwaitApp: begin
+ // Keep absorbing data on the app interface until the last data.
+ fsm_data_ready = 1'b1;
+ if (app_i[app_id].valid && app_i[app_id].last) begin
+ // Send garbage digest to the app interface (in the next cycle) to complete the
+ // transaction.
+ fsm_digest_done_d = 1'b1;
+ // Flush the message FIFO and let the SHA3 engine compute a digest (which won't be used
+ // but serves to bring the SHA3 engine back to the idle state).
+ cmd_o = CmdProcess;
+ st_d = StErrorWaitAbsorbed;
+ end
+ end
+
+ StErrorWaitAbsorbed: begin
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed_i)) begin
+ // Clear internal variables, send done command, and return to idle.
+ clr_appid = 1'b1;
+ clear_after_error_o = caliptra_prim_mubi_pkg::MuBi4True;
+ service_rejected_error_clr = 1'b1;
+ cmd_o = CmdDone;
+ st_d = StIdle;
+ // If error originated from SW, report 'absorbed' to SW.
+ if (err_during_sw_q) begin
+ absorbed_o = caliptra_prim_mubi_pkg::MuBi4True;
+ end
+ end
+ end
+
+ StErrorServiceRejected: begin
+ // Clear internal variables and return to idle.
+ clr_appid = 1'b1;
+ clear_after_error_o = caliptra_prim_mubi_pkg::MuBi4True;
+ service_rejected_error_clr = 1'b1;
+ st_d = StIdle;
+ end
+
+ StTerminalError: begin
+ // this state is terminal
+ st_d = st;
+ sparse_fsm_error_o = 1'b 1;
+ fsm_err.valid = 1'b 1;
+ fsm_err.code = ErrFatalError;
+ fsm_err.info = 24'(app_id);
+ end
+
+ default: begin
+ st_d = StTerminalError;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError;
+ end
+
+ // Handle errors outside the terminal error state.
+ if (st_d != StTerminalError) begin
+ // Key from keymgr is used but not valid, so abort into the invalid key error state.
+ if (keymgr_key_used && !keymgr_key_i.valid) begin
+ st_d = StKeyMgrErrKeyNotValid;
+ end
+ end
+ end
+
+ // Track errors occurring in SW mode.
+ assign err_during_sw_d =
+ (mux_sel == SelSw) && (st_d inside {StError, StKeyMgrErrKeyNotValid}) ? 1'b1 : // set
+ (st_d == StIdle) ? 1'b0 : // clear
+ err_during_sw_q; // hold
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_during_sw_q <= 1'b0;
+ end else begin
+ err_during_sw_q <= err_during_sw_d;
+ end
+ end
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ // Encoded output length
+ assign encoded_outlen = EncodedOutLen[SelDigSize];
+ assign encoded_outlen_mask = EncodedOutLenMask[SelKeySize];
+
+ // Data mux
+ // This is the main part of the KeyMgr interface logic.
+ // The FSM selects KeyMgr interface in a cycle after it receives the first
+ // valid data from KeyMgr. The ready signal to the KeyMgr data interface
+ // represents the MSG_FIFO ready, only when it is in StKeyMgrMsg state.
+ // After KeyMgr sends last beat, the kmac interface (to MSG_FIFO) is switched
+ // to OutLen. OutLen is pre-defined values. See `EncodeOutLen` parameter above.
+ always_comb begin
+ app_data_ready = 1'b 0;
+ sw_ready_o = 1'b 1;
+
+ kmac_valid_o = 1'b 0;
+ kmac_data_o = '0;
+ kmac_mask_o = '0;
+
+ unique case (mux_sel_buf_kmac)
+ SelApp: begin
+ // app_id is valid at this time
+ kmac_valid_o = app_i[app_id].valid;
+ kmac_data_o = app_i[app_id].data;
+ // Expand strb to bits. caliptra_prim_packer inside MSG_FIFO accepts the bit masks
+ for (int i = 0 ; i < $bits(app_i[app_id].strb) ; i++) begin
+ kmac_mask_o[8*i+:8] = {8{app_i[app_id].strb[i]}};
+ end
+ app_data_ready = kmac_ready_i;
+ end
+
+ SelOutLen: begin
+ // Write encoded output length value
+ kmac_valid_o = 1'b 1; // always write
+ kmac_data_o = MsgWidth'(encoded_outlen);
+ kmac_mask_o = MsgWidth'(encoded_outlen_mask);
+ end
+
+ SelSw: begin
+ kmac_valid_o = sw_valid_i;
+ kmac_data_o = sw_data_i ;
+ kmac_mask_o = sw_mask_i ;
+ sw_ready_o = kmac_ready_i ;
+ end
+
+ default: begin // Incl. SelNone
+ kmac_valid_o = 1'b 0;
+ kmac_data_o = '0;
+ kmac_mask_o = '0;
+ end
+
+ endcase
+ end
+
+ // Error checking for Mux
+ always_comb begin
+ mux_err = '{valid: 1'b 0, code: ErrNone, info: '0};
+
+ if (mux_sel_buf_err_check != SelSw && sw_valid_i) begin
+ // If SW writes message into FIFO
+ mux_err = '{
+ valid: 1'b 1,
+ code: ErrSwPushedMsgFifo,
+ info: 24'({8'h 00, 8'(st), 8'(mux_sel_buf_err_check)})
+ };
+ end else if (app_active_o && sw_cmd_i != CmdNone) begin
+ // If SW issues command except start
+ mux_err = '{
+ valid: 1'b 1,
+ code: ErrSwIssuedCmdInAppActive,
+ info: 24'(sw_cmd_i)
+ };
+ end
+ end
+
+ logic [AppMuxWidth-1:0] mux_sel_buf_output_logic;
+ assign mux_sel_buf_output = app_mux_sel_e'(mux_sel_buf_output_logic);
+
+ // SEC_CM: LOGIC.INTEGRITY
+ caliptra_prim_sec_anchor_buf #(
+ .Width(AppMuxWidth)
+ ) u_caliptra_prim_buf_state_output_sel (
+ .in_i(mux_sel),
+ .out_o(mux_sel_buf_output_logic)
+ );
+
+ logic [AppMuxWidth-1:0] mux_sel_buf_err_check_logic;
+ assign mux_sel_buf_err_check = app_mux_sel_e'(mux_sel_buf_err_check_logic);
+
+ // SEC_CM: LOGIC.INTEGRITY
+ caliptra_prim_sec_anchor_buf #(
+ .Width(AppMuxWidth)
+ ) u_caliptra_prim_buf_state_err_check (
+ .in_i(mux_sel),
+ .out_o(mux_sel_buf_err_check_logic)
+ );
+
+ logic [AppMuxWidth-1:0] mux_sel_buf_kmac_logic;
+ assign mux_sel_buf_kmac = app_mux_sel_e'(mux_sel_buf_kmac_logic);
+
+ // SEC_CM: LOGIC.INTEGRITY
+ caliptra_prim_sec_anchor_buf #(
+ .Width(AppMuxWidth)
+ ) u_caliptra_prim_buf_state_kmac_sel (
+ .in_i(mux_sel),
+ .out_o(mux_sel_buf_kmac_logic)
+ );
+
+ // SEC_CM: LOGIC.INTEGRITY
+ logic reg_state_valid;
+ caliptra_prim_sec_anchor_buf #(
+ .Width(1)
+ ) u_caliptra_prim_buf_state_output_valid (
+ .in_i(reg_state_valid),
+ .out_o(reg_state_valid_o)
+ );
+
+ // Keccak state Demux
+ // Keccak state --> Register output is enabled when state is in StSw
+ always_comb begin
+ reg_state_valid = 1'b 0;
+ reg_state_o = '{default:'0};
+ if ((mux_sel_buf_output == SelSw) &&
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_escalate_en_i)) begin
+ reg_state_valid = keccak_state_valid_i;
+ reg_state_o = keccak_state_i;
+ // If key is sideloaded and KMAC is SW initiated
+ // hide the capacity from SW by zeroing (see #17508)
+ if (keymgr_key_en_i) begin
+ for (int i = 0; i < Share; i++) begin
+ unique case (reg_keccak_strength_i)
+ L128: reg_state_o[i][sha3_pkg::StateW-1-:KeccakBitCapacity[L128]] = '0;
+ L224: reg_state_o[i][sha3_pkg::StateW-1-:KeccakBitCapacity[L224]] = '0;
+ L256: reg_state_o[i][sha3_pkg::StateW-1-:KeccakBitCapacity[L256]] = '0;
+ L384: reg_state_o[i][sha3_pkg::StateW-1-:KeccakBitCapacity[L384]] = '0;
+ L512: reg_state_o[i][sha3_pkg::StateW-1-:KeccakBitCapacity[L512]] = '0;
+ default: reg_state_o[i] = '0;
+ endcase
+ end
+ end
+ end
+ end
+
+ // Keccak state --> KeyMgr
+ always_comb begin
+ app_digest_done = 1'b 0;
+ app_digest = '{default:'0};
+ if (st == StAppWait && caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed_i) &&
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_strict(caliptra_ss_lc_escalate_en_i)) begin
+ // SHA3 engine has calculated the hash. Return the data to KeyMgr
+ app_digest_done = 1'b 1;
+
+ // digest has always 2 entries. If !EnMasking, second is tied to 0.
+ for (int i = 0 ; i < Share ; i++) begin
+ // Return the portion of state.
+ app_digest[i] = keccak_state_i[i][AppDigestW-1:0];
+ end
+ end
+ end
+
+
+ // Secret Key Mux
+
+ // Prepare merged key if EnMasking is not set.
+ // Combine share keys into unpacked array for logic below to assign easily.
+ // SEC_CM: KEY.SIDELOAD
+ logic [MaxKeyLen-1:0] keymgr_key [Share];
+ if (EnMasking == 1) begin : g_masked_key
+ for (genvar i = 0; i < Share; i++) begin : gen_key_pad
+ assign keymgr_key[i] = {(MaxKeyLen-KeyMgrKeyW)'(0), keymgr_key_i.key[i]};
+ end
+ end else begin : g_unmasked_key
+ always_comb begin
+ keymgr_key[0] = '0;
+ for (int i = 0; i < caliptra_ss_lc_ctrl_keymgr_pkg::Shares; i++) begin
+ keymgr_key[0][KeyMgrKeyW-1:0] ^= keymgr_key_i.key[i];
+ end
+ end
+ end
+
+ // Sideloaded key manage: Keep use sideloaded key for KMAC AppIntf until the
+ // hashing operation is finished.
+ always_comb begin
+ keymgr_key_used = 1'b0;
+ key_len_o = reg_key_len_i;
+ for (int i = 0 ; i < Share; i++) begin
+ key_data_o[i] = reg_key_data_i[i];
+ end
+ // The key is considered invalid in all cases that are not listed below (which includes idle and
+ // error states).
+ key_valid_o = 1'b0;
+
+ unique case (st)
+ StAppCfg, StAppMsg, StAppOutLen, StAppProcess, StAppWait: begin
+ // Key from keymgr is actually used if the current HW app interface does *keyed* MAC.
+ keymgr_key_used = AppCfg[app_id].Mode == AppKMAC;
+ key_len_o = SideloadedKey;
+ for (int i = 0 ; i < Share; i++) begin
+ key_data_o[i] = keymgr_key[i];
+ end
+ // Key is valid if the current HW app interface does *keyed* MAC and the key provided by
+ // keymgr is valid.
+ key_valid_o = keymgr_key_used && keymgr_key_i.valid;
+ end
+
+ StSw: begin
+ if (keymgr_key_en_i) begin
+ // Key from keymgr is actually used if *keyed* MAC is enabled.
+ keymgr_key_used = kmac_en_o;
+ key_len_o = SideloadedKey;
+ for (int i = 0 ; i < Share; i++) begin
+ key_data_o[i] = keymgr_key[i];
+ end
+ end
+ // Key is valid if SW does *keyed* MAC and ...
+ if (kmac_en_o) begin
+ if (!keymgr_key_en_i) begin
+ // ... it uses the key from kmac's CSR, or ...
+ key_valid_o = 1'b1;
+ end else begin
+ // ... it uses the key provided by keymgr and that one is valid.
+ key_valid_o = keymgr_key_i.valid;
+ end
+ end
+ end
+
+ default: ;
+ endcase
+ end
+
+ // Prefix Demux
+ // For SW, always prefix register.
+ // For App intf, check PrefixMode cfg and if 1, use Prefix cfg.
+ always_comb begin
+ sha3_prefix_o = '0;
+
+ unique case (st)
+ StAppCfg, StAppMsg, StAppOutLen, StAppProcess, StAppWait: begin
+ // Check app intf cfg
+ for (int unsigned i = 0 ; i < NumAppIntf ; i++) begin
+ if (app_id == i) begin
+ if (AppCfg[i].PrefixMode == 1'b 0) begin
+ sha3_prefix_o = reg_prefix_i;
+ end else begin
+ sha3_prefix_o = AppCfg[i].Prefix;
+ end
+ end
+ end
+ end
+
+ StSw: begin
+ sha3_prefix_o = reg_prefix_i;
+ end
+
+ default: begin
+ sha3_prefix_o = reg_prefix_i;
+ end
+ endcase
+ end
+
+ // KMAC en / SHA3 mode / Strength
+ // by default, it uses reg cfg. When app intf reqs come, it uses AppCfg.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ kmac_en_o <= 1'b 0;
+ sha3_mode_o <= sha3_pkg::Sha3;
+ keccak_strength_o <= sha3_pkg::L256;
+ end else if (clr_appid) begin
+ // As App completed, latch reg value
+ kmac_en_o <= reg_kmac_en_i;
+ sha3_mode_o <= reg_sha3_mode_i;
+ keccak_strength_o <= reg_keccak_strength_i;
+ end else if (set_appid) begin
+ kmac_en_o <= AppCfg[arb_idx].Mode == AppKMAC ? 1'b 1 : 1'b 0;
+ sha3_mode_o <= AppCfg[arb_idx].Mode == AppSHA3
+ ? sha3_pkg::Sha3 : sha3_pkg::CShake;
+ keccak_strength_o <= AppCfg[arb_idx].KeccakStrength ;
+ end else if (st == StIdle) begin
+ kmac_en_o <= reg_kmac_en_i;
+ sha3_mode_o <= reg_sha3_mode_i;
+ keccak_strength_o <= reg_keccak_strength_i;
+ end
+ end
+
+ // Status
+ assign app_active_o = (st inside {StAppCfg, StAppMsg, StAppOutLen,
+ StAppProcess, StAppWait});
+
+ // Error Reporting ==========================================================
+ always_comb begin
+ priority casez ({fsm_err.valid, mux_err.valid})
+ 2'b ?1: error_o = mux_err;
+ 2'b 10: error_o = fsm_err;
+ default: error_o = '{valid: 1'b0, code: ErrNone, info: '0};
+ endcase
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // KeyMgr sideload key and the digest should be in the Key Length value
+ `CALIPTRA_ASSERT_INIT(SideloadKeySameToDigest_A, KeyMgrKeyW <= AppDigestW)
+ `CALIPTRA_ASSERT_INIT(AppIntfInRange_A, AppDigestW inside {128, 192, 256, 384, 512})
+
+ // Issue(#13655): Having a coverage that sideload keylen and CSR keylen are
+ // different.
+ `CALIPTRA_COVER(AppIntfUseDifferentSizeKey_C,
+ (st == StAppCfg && kmac_en_o) |-> reg_key_len_i != SideloadedKey)
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_core.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_core.sv
new file mode 100644
index 0000000..c9eac15
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_core.sv
@@ -0,0 +1,470 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC control and padding logic
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_core
+ import kmac_pkg::*;
+#(
+ // EnMasking: Enable masking security hardening inside keccak_round
+ // If it is enabled, the result digest will be two set of 1600bit.
+ parameter bit EnMasking = 0,
+ localparam int Share = (EnMasking) ? 2 : 1 // derived parameter
+) (
+ input clk_i,
+ input rst_ni,
+
+ // From Message FIFO
+ input fifo_valid_i,
+ input [MsgWidth-1:0] fifo_data_i [Share],
+ input [MsgStrbW-1:0] fifo_strb_i,
+ output logic fifo_ready_o,
+
+ // to SHA3 Core
+ output logic msg_valid_o,
+ output logic [MsgWidth-1:0] msg_data_o [Share],
+ output logic [MsgStrbW-1:0] msg_strb_o,
+ input msg_ready_i,
+
+ // Configurations
+
+ // If kmac_en is cleared, Core logic doesn't function but forward incoming
+ // message to SHA3 core
+ input kmac_en_i,
+ input sha3_pkg::sha3_mode_e mode_i,
+ input sha3_pkg::keccak_strength_e strength_i,
+
+ // Key input from CSR
+ input [MaxKeyLen-1:0] key_data_i [Share],
+ input key_len_e key_len_i,
+ input logic key_valid_i,
+
+ // Controls : same to SHA3 core
+ input start_i,
+ input process_i,
+ input caliptra_prim_mubi_pkg::mubi4_t done_i,
+
+ // Control to SHA3 core
+ output logic process_o,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ output logic sparse_fsm_error_o,
+ output logic key_index_error_o
+);
+
+ import sha3_pkg::KeccakMsgAddrW;
+ import sha3_pkg::KeccakCountW;
+ import sha3_pkg::KeccakRate;
+ import sha3_pkg::L128;
+ import sha3_pkg::L224;
+ import sha3_pkg::L256;
+ import sha3_pkg::L384;
+ import sha3_pkg::L512;
+
+ /////////////////
+ // Definitions //
+ /////////////////
+
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 5 -n 6 \
+ // -s 401658243 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (50.00%)
+ // 4: |||||||||||||||| (40.00%)
+ // 5: |||| (10.00%)
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 5
+ // Minimum Hamming weight: 1
+ // Maximum Hamming weight: 4
+ //
+ localparam int StateWidth = 6;
+ typedef enum logic [StateWidth-1:0] {
+ StKmacIdle = 6'b011000,
+
+ // Secret Key pushing stage
+ // The key is sliced by caliptra_prim_slicer. This state pushes the sliced data into
+ // SHA3 hashing engine. When it hits the block size limit,
+ // (same as in sha3pad) the state machine moves to Message.
+ StKey = 6'b010111,
+
+ // Incoming Message
+ // The core does nothing but forwarding the incoming message to SHA3 hashing
+ // engine by turning off `en_kmac_datapath`.
+ StKmacMsg = 6'b001110,
+
+ // Wait till done signal
+ StKmacFlush = 6'b101011,
+
+ // Terminal Error
+ StTerminalError = 6'b100000
+ } kmac_st_e ;
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // represents encode_string(K)
+ logic [MaxEncodedKeyW-1:0] encoded_key [Share];
+
+ // Key slice address
+ // This signal controls the 64 bit output of the sliced secret_key.
+ logic [sha3_pkg::KeccakMsgAddrW-1:0] key_index;
+ logic inc_keyidx, clr_keyidx;
+
+ // `sent_blocksize` indicates that the encoded key is sent to sha3 hashing
+ // engine. If this hits at StKey stage, the state moves to message state.
+ logic [sha3_pkg::KeccakCountW-1:0] block_addr_limit;
+ logic sent_blocksize;
+
+ // Internal message signals
+ logic kmac_valid ;
+ logic [MsgWidth-1:0] kmac_data [Share];
+ logic [MsgStrbW-1:0] kmac_strb ;
+
+ // Control SHA3 core
+ // `kmac_process` is to forward the process signal to SHA3 core only after
+ // the KMAC core writes the key block in case of the message is empty.
+ // If the incoming message is empty, there's chance that the `process_i`
+ // signal can be asserted while KMAC core processing the key block.
+ logic kmac_process, process_latched;
+
+ // Indication of Secret key write stage. Only in this stage, the internal
+ // message interface is active.
+ logic en_key_write;
+ logic en_kmac_datapath;
+
+ // Encoded key has wider bits. `key_sliced` is the data to send to sha3
+ logic [MsgWidth-1:0] key_sliced [Share];
+
+ // The following signals are only used in assertions.
+ logic unused_signals;
+ assign unused_signals = ^{mode_i, key_valid_i};
+
+ /////////
+ // FSM //
+ /////////
+ kmac_st_e st, st_d;
+
+ // State register
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_d, st, kmac_st_e, StKmacIdle)
+
+ // Next state and output logic
+ // SEC_CM: FSM.SPARSE
+ always_comb begin
+ st_d = st;
+
+ en_kmac_datapath = 1'b 0;
+ en_key_write = 1'b 0;
+
+ clr_keyidx = 1'b 0;
+
+ kmac_valid = 1'b 0;
+ kmac_process = 1'b 0;
+
+ sparse_fsm_error_o = 1'b 0;
+
+ unique case (st)
+ StKmacIdle: begin
+ if (kmac_en_i && start_i) begin
+ st_d = StKey;
+ end else begin
+ st_d = StKmacIdle;
+ end
+ end
+
+ // If State enters here, regardless of the `process_i`, the state writes
+ // full block size of the key into SHA3 hashing engine.
+ StKey: begin
+ en_kmac_datapath = 1'b 1;
+ en_key_write = 1'b 1;
+
+ if (sent_blocksize) begin
+ st_d = StKmacMsg;
+
+ kmac_valid = 1'b 0;
+ clr_keyidx = 1'b 1;
+ end else begin
+ st_d = StKey;
+
+ kmac_valid = 1'b 1;
+ end
+ end
+
+ StKmacMsg: begin
+ // If process is previously latched, it is sent to SHA3 here.
+ if (process_i || process_latched) begin
+ st_d = StKmacFlush;
+
+ kmac_process = 1'b 1;
+ end else begin
+ st_d = StKmacMsg;
+ end
+ end
+
+ StKmacFlush: begin
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ st_d = StKmacIdle;
+ end else begin
+ st_d = StKmacFlush;
+ end
+ end
+
+ StTerminalError: begin
+ // this state is terminal
+ st_d = st;
+ sparse_fsm_error_o = 1'b 1;
+ end
+
+ default: begin
+ // this state is terminal
+ st_d = StTerminalError;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError;
+ end
+ end
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ // DATA Mux depending on kmac_en
+ // When Key write happens, hold the FIFO request. so fifo_ready_o is tied to 0
+ assign msg_valid_o = (en_kmac_datapath) ? kmac_valid : fifo_valid_i;
+ assign msg_data_o = (en_kmac_datapath) ? kmac_data : fifo_data_i ;
+ assign msg_strb_o = (en_kmac_datapath) ? kmac_strb : fifo_strb_i ;
+ assign fifo_ready_o = (en_kmac_datapath) ? 1'b 0 : msg_ready_i ;
+
+ // secret key write request to SHA3 hashing engine is always full width write.
+ // KeyMgr is fixed 256 bit output. So `right_encode(256)` is 0x020100 --> strb 3
+ assign kmac_strb = (en_key_write ) ? '1 : '0;
+
+ assign kmac_data = (en_key_write) ? key_sliced : '{default:'0};
+
+ // Process is controlled by the KMAC core always.
+ // This is mainly to prevent process_i asserted while KMAC core is writing
+ // the secret key to SHA3 hashing engine (the empty message case)
+ assign process_o = (kmac_en_i) ? kmac_process : process_i ;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ process_latched <= 1'b 0;
+ end else if (process_i && !process_o) begin
+ process_latched <= 1'b 1;
+ end else if (process_o ||
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ process_latched <= 1'b 0;
+ end
+ end
+
+ // bytepad(encode_string(K), 168 or 136) =====================================
+ // 1. Prepare left_encode(w)
+ // 2. Prepare left_encode(len(secret_key))
+ // 3. Concatenate left_encode(len(secret_key)) || secret_key
+ // 4. Concaatenate left_encode(w) || encode_string(secret_key)
+ // 5. Based on the address, slice out the data into MsgWidth bits
+
+ // left_encode(w): Same as used in sha3pad logic.
+ logic [15:0] encode_bytepad;
+ assign encode_bytepad = sha3_pkg::encode_bytepad_len(strength_i);
+
+ // left_encode(len(secret_key))
+ // encoded length is always byte size. Use MaxEncodedKeyLenByte parameter
+ // from kmac_pkg and add one more byte to indicate how many bytes used to
+ // represent len(secret_key)
+ // Note that if the secret_key is 128 bit, only lower 16 bits of
+ // `encode_keylen` are valid. Refer `encoded_key` concatenation logic below.
+ // As the encoded string in the spec big-endian, The endian swap is a must.
+ logic [MaxEncodedKeyLenSize + 8 - 1:0] encode_keylen [Share];
+
+ always_comb begin
+ // the spec mentioned the key length is encoded in left_encode()
+ // The number is represented in big-endian. For example:
+ // 384 ==> 0x02 0x01 0x80
+ // The first byte is the number of bytes to represent 384
+ // The second byte represents 2**8 number, which is 256 here.
+ // The third byte represents 2**0 number, which is 128.
+ // The data put into MsgFIFO is little-endian and SHA3(Keccak) processes in
+ // little-endian. So, below keylen swaps the byte order
+ unique case (key_len_i)
+ // endian-swapped key_length num_bytes
+ // Key128: encode_keylen[0] = {{<<8{MaxEncodedKeyLenSize'(128)}}, 8'h 01};
+ // Key192: encode_keylen[0] = {{<<8{MaxEncodedKeyLenSize'(192)}}, 8'h 01};
+ // Key256: encode_keylen[0] = {{<<8{MaxEncodedKeyLenSize'(256)}}, 8'h 02};
+ // Key384: encode_keylen[0] = {{<<8{MaxEncodedKeyLenSize'(384)}}, 8'h 02};
+ // Key512: encode_keylen[0] = {{<<8{MaxEncodedKeyLenSize'(512)}}, 8'h 02};
+
+ // Vivado does not support stream swap for non context value. So assign
+ // the value directly.
+ Key128: encode_keylen[0] = (MaxEncodedKeyLenSize+8)'('h 0080_01);
+ Key192: encode_keylen[0] = (MaxEncodedKeyLenSize+8)'('h 00C0_01);
+ Key256: encode_keylen[0] = (MaxEncodedKeyLenSize+8)'('h 0001_02);
+ Key384: encode_keylen[0] = (MaxEncodedKeyLenSize+8)'('h 8001_02);
+ Key512: encode_keylen[0] = (MaxEncodedKeyLenSize+8)'('h 0002_02);
+ default: encode_keylen[0] = '0;
+ endcase
+ end
+
+ if (EnMasking) begin: gen_encode_keylen_masked
+ assign encode_keylen[1] = '0;
+ end
+
+ // encode_string(secret_key): Concatenate key
+ // Based on the left_encode(len(secret_key)) size, the concatenation logic
+ // should be changed. If key length is 128 bit, only lower 16 bits of the
+ // encoded length are used so that the upper 8 bits are padded with 0 as
+ // defined in bytepad() function.
+
+ for (genvar i = 0 ; i < Share; i++) begin : gen_encoded_key
+ always_comb begin
+ unique case (key_len_i)
+ // In Key 128, 192 case, only lower parts of encode_keylen signal is
+ // used. So upper padding requires 8 more bits than MaxKeyLen - keylen
+ Key128: encoded_key[i] = {(8 + MaxKeyLen - 128)'(0),
+ key_data_i[i][0+:128],
+ encode_keylen[i][0+:MaxEncodedKeyLenSize]};
+
+ Key192: encoded_key[i] = {(8 + MaxKeyLen - 192)'(0),
+ key_data_i[i][0+:192],
+ encode_keylen[i][0+:MaxEncodedKeyLenSize]};
+
+ Key256: encoded_key[i] = {(MaxKeyLen - 256)'(0),
+ key_data_i[i][0+:256],
+ encode_keylen[i]};
+
+ Key384: encoded_key[i] = {(MaxKeyLen - 384)'(0),
+ key_data_i[i][0+:384],
+ encode_keylen[i]};
+
+ // Assume 512bit is the MaxKeyLen
+ Key512: encoded_key[i] = {key_data_i[i][0+:512],
+ encode_keylen[i]};
+
+ default: encoded_key[i] = '0;
+ endcase
+ end
+ end : gen_encoded_key
+
+ // Above logic assumes MaxKeyLen as 512 bits. Revise if it is not.
+ `CALIPTRA_ASSERT_INIT(MaxKeyLenMatchToKey512_A, kmac_pkg::MaxKeyLen == 512)
+
+ // Combine the bytepad `left_encode(w)` and the `encode_string(secret_key)`
+ logic [MaxEncodedKeyW + 16 -1 :0] encoded_key_block [Share];
+
+ assign encoded_key_block[0] = {encoded_key[0], encode_bytepad};
+
+ if (EnMasking) begin : gen_encoded_key_block_masked
+ assign encoded_key_block[1] = {encoded_key[1], 16'h 0};
+ end
+
+ // Slicer to slice out 64 bits
+ for (genvar i = 0 ; i < Share ; i++) begin : gen_key_slicer
+ caliptra_prim_slicer #(
+ .InW (MaxEncodedKeyW+16),
+ .IndexW(KeccakMsgAddrW),
+ .OutW(MsgWidth)
+ ) u_key_slicer (
+ .sel_i (key_index),
+ .data_i (encoded_key_block[i]),
+ .data_o (key_sliced[i])
+ );
+ end
+
+ // `key_index` logic
+ // key_index is used to select MsgWidth data from long `encoded_key_block`
+ // It behaves same as `keccak_addr` or `prefix_index` in sha3pad module.
+ assign inc_keyidx = kmac_valid & msg_ready_i ;
+
+ // This primitive is used to place a hardened counter
+ // SEC_CM: CTR.REDUN
+ caliptra_prim_count #(
+ .Width(sha3_pkg::KeccakMsgAddrW)
+ ) u_key_index_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(clr_keyidx),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(inc_keyidx),
+ .decr_en_i(1'b0),
+ .step_i(sha3_pkg::KeccakMsgAddrW'(1)),
+ .commit_i(1'b1),
+ .cnt_o(key_index),
+ .cnt_after_commit_o(),
+ .err_o(key_index_error_o)
+ );
+
+ // Block size based on the address.
+ // This is used for bytepad() and also pad10*1()
+ // assign block_addr_limit = KeccakRate[strength_i];
+ // but below is easier to understand
+ always_comb begin
+ unique case (strength_i)
+ L128: block_addr_limit = KeccakCountW'(KeccakRate[L128]);
+ L224: block_addr_limit = KeccakCountW'(KeccakRate[L224]);
+ L256: block_addr_limit = KeccakCountW'(KeccakRate[L256]);
+ L384: block_addr_limit = KeccakCountW'(KeccakRate[L384]);
+ L512: block_addr_limit = KeccakCountW'(KeccakRate[L512]);
+
+ default: block_addr_limit = '0;
+ endcase
+ end
+
+ assign sent_blocksize = (key_index == block_addr_limit);
+
+
+ // Encoded Output Length =====================================================
+ //
+ // KMAC(K,X,L,S) := cSHAKE(newX,L,"KMAC",S)
+ // K : Secret Key
+ // X : Input Message
+ // L : Output Length
+ // S : Customization input string
+ // newX = bytepad(encode_string(key), 168or136) || X || right_encode(L)
+ //
+ // Software writes desired output length as encoded value into the message
+ // FIFO at the end of the message prior to set !!CMD.process.
+
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // If process_latched is set, then at Message state, it should be cleared
+
+ `CALIPTRA_ASSERT(ProcessLatchedCleared_A,
+ st == StKmacMsg && process_latched |=> !process_latched)
+
+ // Assume configuration is stable during the operation
+ `CALIPTRA_ASSUME(KmacEnStable_M, $changed(kmac_en_i) |-> st inside {StKmacIdle, StTerminalError})
+ `CALIPTRA_ASSUME(ModeStable_M, $changed(mode_i) |-> st inside {StKmacIdle, StTerminalError})
+ `CALIPTRA_ASSUME(StrengthStable_M,
+ $changed(strength_i) |->
+ (st inside {StKmacIdle, StTerminalError}) ||
+ ($past(st) == StKmacIdle))
+ `CALIPTRA_ASSUME(KeyLengthStableWhenValid_M, key_valid_i && !$rose(key_valid_i) |-> $stable(key_len_i))
+ `CALIPTRA_ASSUME(KeyDataStableWhenValid_M, key_valid_i && !$rose(key_valid_i) |-> $stable(key_data_i))
+
+ // no acked to MsgFIFO in StKmacMsg
+ `CALIPTRA_ASSERT(AckOnlyInMessageState_A,
+ fifo_valid_i && fifo_ready_o && kmac_en_i |-> st == StKmacMsg)
+
+endmodule : kmac_core
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_entropy.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_entropy.sv
new file mode 100644
index 0000000..9f20f78
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_entropy.sv
@@ -0,0 +1,779 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC Entropy Generation module
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_entropy
+ import kmac_pkg::*;
+ import kmac_reg_pkg::*;
+#(
+ parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault,
+ parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault,
+ parameter buffer_lfsr_seed_t RndCnstBufferLfsrSeed = RndCnstBufferLfsrSeedDefault
+) (
+ input clk_i,
+ input rst_ni,
+
+ // EDN interface
+ output logic entropy_req_o,
+ input entropy_ack_i,
+ input [edn_pkg::ENDPOINT_BUS_WIDTH-1:0] entropy_data_i,
+
+ // Entropy to internal
+ output logic rand_valid_o,
+ output logic rand_early_o,
+ output logic [sha3_pkg::StateW/2-1:0] rand_data_o,
+ output logic rand_aux_o,
+ input rand_update_i,
+ input rand_consumed_i,
+
+ // Status
+ input in_keyblock_i,
+
+ // Configurations
+ input entropy_mode_e mode_i,
+ //// SW sets ready bit when EDN is ready to accept requests through its app.
+ //// interface.
+ input entropy_ready_i,
+
+ //// Garbage random value when not processing Keyblock, if this config is
+ //// turned on, the logic sending garbage value and never de-assert
+ //// rand_valid_o unless it is not processing KeyBlock.
+ input fast_process_i,
+
+ //// PRNG enable for Message Masking
+ //// If 1, PRNG advances to create 64-bit PRN. This input is used to mask
+ //// the message fed into SHA3 (Keccak).
+ input msg_mask_en_i,
+ output logic [MsgWidth-1:0] msg_mask_o,
+
+ //// SW update of seed
+ input seed_update_i,
+ input [31:0] seed_data_i,
+
+ //// SW may initiate manual EDN seed refresh
+ input entropy_refresh_req_i,
+
+ //// Timer limit value
+ //// If value is 0, timer is disabled
+ input [TimerPrescalerW-1:0] wait_timer_prescaler_i,
+ input [EdnWaitTimerW-1:0] wait_timer_limit_i,
+
+ // Status out
+ //// Hash Ops counter. Count how many hashing ops (KMAC) have run
+ //// after the clear request from SW
+ output logic [HashCntW-1:0] hash_cnt_o,
+ input hash_cnt_clr_i,
+ input [HashCntW-1:0] hash_threshold_i,
+
+ output caliptra_prim_mubi_pkg::mubi4_t entropy_configured_o,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // Error output
+ output err_t err_o,
+ output logic sparse_fsm_error_o,
+ output logic count_error_o,
+ input err_processed_i
+);
+
+ /////////////////
+ // Definitions //
+ /////////////////
+
+ // Timer Widths are defined in kmac_pkg
+
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 9 -n 10 \
+ // -s 507672272 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: ||||||||||| (13.89%)
+ // 4: ||||||||||||||| (19.44%)
+ // 5: |||||||||||||||||||| (25.00%)
+ // 6: ||||||||||||||| (19.44%)
+ // 7: ||||||||||| (13.89%)
+ // 8: |||| (5.56%)
+ // 9: || (2.78%)
+ // 10: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 9
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 7
+ //
+ localparam int StateWidth = 10;
+
+ // States
+ typedef enum logic [StateWidth-1:0] {
+ // Reset: Reset state. The entropy is not ready. The state machine should
+ // get new entropy from EDN or the seed should be feeded by the software.
+ StRandReset = 10'b1001111000,
+
+ // The seed is fed into PRNG and the entropy is ready. It means the
+ // rand_valid is asserted with valid data. It takes a few steps to reach
+ // this state from StRandReset.
+ StRandReady = 10'b0110000100,
+
+ // EDN interface: Send request and receive
+ // RandEdnReq state can be transit from StRandReset or from StRandReady
+ //
+ // Reset --> EdnReq:
+ // If entropy source module is ready, the software sets a bit in CFG
+ // also sets the entropy mode to EdnMode. Then this FSM moves to EdnReq
+ // to initialize PRNG seed.
+ //
+ // Ready --> EdnReq:
+ // 1. If a mode is configured as to update entropy everytime it is
+ // consumed, then the FSM moves from Ready to EdnReq to refresh seed
+ // 2. If the software enabled EDN timer and the timer is expired and
+ // also the KMAC is processing the key block, the FSM moves to
+ // EdnReq to refresh seed
+ // 3. If a KMAC operation is completed, the FSM also refreshes the PRNG
+ // seed to prepare next KMAC op or wipe out operation.
+ StRandEdn = 10'b1100100111,
+
+ // Sw Seed: If mode is set to manual mode, This entropy module needs initial
+ // seed from the software. It waits the seed update signal to expand initial
+ // entropy
+ StSwSeedWait = 10'b1011110110,
+
+ // Generate: In this state, the entropy generator advances the PRNG to
+ // generate the 800-bits of pseudo random data for the next evaluation.
+ StRandGenerate = 10'b0000001100,
+
+ // ErrWaitExpired: If Edn timer expires, FSM moves to this state and wait
+ // the software response. Software should switch to manual mode then disable
+ // the timer (to 0) and update the seed via register interface.
+ StRandErrWaitExpired = 10'b0001100011,
+
+ // ErrNoValidMode: If SW sets entropy ready but the mode is not either
+ // Manual Mode nor EdnMode, this logic reports to SW with
+ // NoValidEntropyMode.
+ StRandErrIncorrectMode = 10'b1110010000,
+
+ // Err: After the error is reported, FSM sits in Err state ignoring all the
+ // requests. It does not generate new entropy and drops the entropy valid
+ // signal.
+ //
+ // SW sets err_processed signal to clear the error. The software should
+ // clear the entropy ready signal before clear the error interrupt so that
+ // the FSM sits in StRandReset state not moving forward with incorrect
+ // configurations.
+ StRandErr = 10'b1000011110,
+
+ StTerminalError = 10'b0010011000
+ } rand_st_e;
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // Timers
+ // "Wait Timer": This timer is in active when FSM sends entropy request to EDN
+ // If EDN does not return the entropy data until the timer expired, FSM
+ // moves to error state and report the error to the system.
+
+ localparam int unsigned TimerW = EdnWaitTimerW;
+ logic timer_enable, timer_update, timer_expired, timer_pulse;
+ logic [TimerW-1:0] timer_limit;
+ logic [TimerW-1:0] timer_value;
+
+ localparam int unsigned PrescalerW = TimerPrescalerW;
+ logic [PrescalerW-1:0] prescaler_cnt;
+
+ // PRNG primitive
+ // SW configures to use EDN or ENTROPY_SEED register as PRNG seed
+ logic seed_en, seed_done;
+ logic seed_req, seed_ack;
+ logic [edn_pkg::ENDPOINT_BUS_WIDTH-1:0] seed;
+ logic prng_en;
+ logic [EntropyOutputW-1:0] prng_data, prng_data_permuted;
+
+ // Buffer stage to prevent glitches happening inside the PRNG itself from
+ // propagating into the masked processing core.
+ logic [EntropyOutputW-1:0] rand_data_q;
+ logic data_update;
+
+ // Auxliliary randomness
+ logic aux_rand_d, aux_rand_q;
+ logic aux_update;
+
+ // Randomness for controlling PRNG updates. This only matters for clock cycles
+ // where the PRNG output is not actually used.
+ logic [3:0] prng_en_rand_d, prng_en_rand_q;
+
+ // Entropy valid signal
+ // FSM set and clear the valid signal, rand_consume signal clear the valid
+ // signal. Split the set, clear to make entropy valid while FSM is processing
+ // other tasks.
+ logic rand_valid_set, rand_valid_clear;
+
+ // FSM latches the mode and stores into mode_q when the FSM is out from
+ // StReset. The following states, or internal datapath uses mode_q after that.
+ // If the SW wants to change the mode, it requires resetting the IP.
+ logic mode_latch;
+ entropy_mode_e mode_q;
+
+ // Status out: entropy configured
+ caliptra_prim_mubi_pkg::mubi4_t entropy_configured;
+
+ // Internal entropy request signals.
+ logic entropy_req;
+ logic entropy_req_hold_d, entropy_req_hold_q;
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ // For latching (`wait_timer_limit_i` != 0) during last `timer_update`
+ // See #16716
+ logic non_zero_wait_timer_limit;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ non_zero_wait_timer_limit <= '0;
+ end else if (timer_update) begin
+ non_zero_wait_timer_limit <= |wait_timer_limit_i;
+ end
+ end
+
+ logic [TimerPrescalerW-1:0] wait_timer_prescaler_d;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ wait_timer_prescaler_d <= '0;
+ end else if (timer_update) begin
+ wait_timer_prescaler_d <= wait_timer_prescaler_i;
+ end
+ end
+
+ // Timers ===================================================================
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ timer_value <= '0;
+ end else if (timer_update) begin
+ timer_value <= timer_limit;
+ end else if (timer_expired) begin
+ timer_value <= '0; // keep the value
+ end else if (timer_enable && timer_pulse && |timer_value) begin // if non-zero timer v
+ timer_value <= timer_value - 1'b 1;
+ end
+ end
+
+ assign timer_limit = TimerW'(wait_timer_limit_i);
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ timer_expired <= 1'b 0;
+ end else if (timer_update) begin
+ timer_expired <= 1'b 0;
+ end else if (timer_enable && (timer_value == '0)) begin
+ timer_expired <= 1'b 1;
+ end
+ end
+
+ // Prescaler
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ prescaler_cnt <= '0;
+ end else if (timer_update) begin
+ prescaler_cnt <= wait_timer_prescaler_i;
+ end else if (timer_enable && prescaler_cnt == '0) begin
+ prescaler_cnt <= wait_timer_prescaler_d;
+ end else if (timer_enable) begin
+ prescaler_cnt <= prescaler_cnt - 1'b 1;
+ end
+ end
+
+ assign timer_pulse = (timer_enable && prescaler_cnt == '0);
+ // Timers -------------------------------------------------------------------
+
+ // Hash Counter
+ logic threshold_hit;
+ logic threshold_hit_q, threshold_hit_clr; // latched hit
+
+ logic hash_progress_d, hash_progress_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) hash_progress_q <= 1'b 0;
+ else hash_progress_q <= hash_progress_d;
+ end
+
+ assign hash_progress_d = in_keyblock_i;
+
+ logic hash_cnt_clr;
+ assign hash_cnt_clr = hash_cnt_clr_i || threshold_hit || entropy_refresh_req_i;
+
+ logic hash_cnt_en;
+ assign hash_cnt_en = hash_progress_q && !hash_progress_d;
+
+ logic hash_count_error;
+
+ // SEC_CM CTR.REDUN
+ // This primitive is used to place a hardened counter
+ caliptra_prim_count #(
+ .Width(HashCntW)
+ ) u_hash_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(hash_cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i(HashCntW'(0)),
+ .incr_en_i(hash_cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(HashCntW'(1)),
+ .commit_i(1'b1),
+ .cnt_o(hash_cnt_o),
+ .cnt_after_commit_o(),
+ .err_o(hash_count_error)
+ );
+
+ assign threshold_hit = |hash_threshold_i && (hash_threshold_i <= hash_cnt_o);
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) threshold_hit_q <= 1'b 0;
+ else if (threshold_hit_clr) threshold_hit_q <= 1'b 0;
+ else if (threshold_hit) threshold_hit_q <= 1'b 1;
+ end
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) mode_q <= EntropyModeNone;
+ else if (mode_latch) mode_q <= mode_i;
+ end
+
+ // PRNG primitive ===========================================================
+
+ `CALIPTRA_ASSERT_KNOWN(ModeKnown_A, mode_i)
+ assign seed = (mode_q == EntropyModeSw) ? seed_data_i : entropy_data_i;
+
+ // We employ a single unrolled Bivium stream cipher primitive to generate
+ // 800 bits per clock cycle.
+ // caliptra_prim_trivium #(
+ // .BiviumVariant (1),
+ // .OutputWidth (EntropyOutputW),
+ // .StrictLockupProtection(1),
+ // .SeedType (caliptra_prim_trivium_pkg::SeedTypeStatePartial),
+ // .PartialSeedWidth (edn_pkg::ENDPOINT_BUS_WIDTH),
+ // .RndCnstTriviumLfsrSeed(RndCnstLfsrSeed)
+ // ) u_caliptra_prim_trivium (
+ // .clk_i (clk_i),
+ // .rst_ni(rst_ni),
+
+ // .en_i (prng_en || msg_mask_en_i),
+ // .allow_lockup_i ('0), // Not used.
+ // .seed_en_i (seed_en),
+ // .seed_done_o (seed_done),
+ // .seed_req_o (seed_req),
+ // .seed_ack_i (seed_ack),
+ // .seed_key_i ('0), // Not used.
+ // .seed_iv_i ('0), // Not used.
+ // .seed_state_full_i ('0), // Not used.
+ // .seed_state_partial_i(seed),
+
+ // .key_o(prng_data),
+ // .err_o()
+ // );
+ assign prng_data = '0;
+
+ // Add a permutation layer to obfuscate the output of the PRNG primitive.
+ for (genvar i = 0; i < EntropyOutputW; i++) begin : gen_perm
+ assign prng_data_permuted[i] = prng_data[RndCnstLfsrPerm[i]];
+ end
+
+ // Buffer stage to prevent glitches happening inside the PRNG primitive from
+ // propagating into the masked processing core.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ rand_data_q <= RndCnstBufferLfsrSeed;
+ end else if (data_update || msg_mask_en_i) begin
+ rand_data_q <= prng_data_permuted;
+ end
+ end
+
+ // Forwrad LSBs for masking the message.
+ assign msg_mask_o = rand_data_q[MsgWidth-1:0];
+
+ // PRNG primitive ----------------------------------------------------------
+
+ // Auxiliary randomness =====================================================
+ assign aux_rand_d = aux_update ? rand_data_q[EntropyOutputW - 1] :
+ aux_rand_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ aux_rand_q <= '0;
+ end else begin
+ aux_rand_q <= aux_rand_d;
+ end
+ end
+
+ // Auxiliary randomness -----------------------------------------------------
+
+ // PRNG enable randomness ===================================================
+ assign prng_en_rand_d =
+ aux_update ? rand_data_q[EntropyOutputW - 2 -: 4] : // refresh
+ {1'b0, prng_en_rand_q[3:1]}; // shift out
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ prng_en_rand_q <= '0;
+ end else begin
+ prng_en_rand_q <= prng_en_rand_d;
+ end
+ end
+
+ // PRNG enable randomness ---------------------------------------------------
+
+ // Randomness outputs =======================================================
+ assign rand_data_o = rand_data_q;
+ assign rand_aux_o = aux_rand_q;
+
+ // entropy valid
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ rand_valid_o <= 1'b 0;
+ end else if (rand_valid_set) begin
+ rand_valid_o <= 1'b 1;
+ end else if (rand_valid_clear) begin
+ rand_valid_o <= 1'b 0;
+ end
+ end
+
+ // Let consumers know that the randomness will be valid in the next clock cycle.
+ assign rand_early_o = rand_valid_set;
+
+ // The Keccak core is not supposed to ever consume randomness unless it's marked
+ // as valid. The only exception is if the reseeding of the PRNG just finished
+ // in the previous clock cycle. Because it's possible for the randomness to stay
+ // valid throughout the reseeding (the valid is for sure de-asserted at the end).
+ // The Keccak core may base its decision to start processing / consuming entropy
+ // before the valid is de-asserted. If this happens, the current buffer output
+ // might be used for both remasking and as auxiliary randomness which isn't ideal
+ // but given this happens only very rarely it should be okay.
+ `CALIPTRA_ASSUME(ConsumeNotAssertWhenNotValid_M,
+ rand_update_i | rand_consumed_i |-> rand_valid_o || $past(seed_done))
+
+ // Upon escalation or in case the EDN wait timer expires the entropy_req signal
+ // can be dropped before getting acknowledged. This may leave EDN in a strange
+ // state. We thus hold the request until it's actually acknowledged. In case the
+ // request is acknowledged while the FSM is in the StRandErr already, the
+ // incoming entropy is simply dropped.
+ assign entropy_req_o = entropy_req | entropy_req_hold_q;
+ assign entropy_req_hold_d = (entropy_req_hold_q | entropy_req) & ~entropy_ack_i;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ entropy_req_hold_q <= '0;
+ end else begin
+ entropy_req_hold_q <= entropy_req_hold_d;
+ end
+ end
+
+ // Randomness outputs -------------------------------------------------------
+
+ // Remaining outputs
+ assign count_error_o = hash_count_error;
+
+ ///////////////////
+ // State Machine //
+ ///////////////////
+
+ rand_st_e st, st_d;
+
+ // State FF
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_d, st, rand_st_e, StRandReset)
+
+ // State: Next State and Output Logic
+ // SEC_CM: FSM.SPARSE
+ always_comb begin
+ st_d = st;
+ sparse_fsm_error_o = 1'b 0;
+
+ // Default Timer values
+ timer_enable = 1'b 0;
+ timer_update = 1'b 0;
+
+ threshold_hit_clr = 1'b 0;
+
+ // rand is valid when this logic expands the entropy.
+ // FSM sets the valid signal, the signal is cleared by `consume` signal
+ // or FSM clear signal.
+ // Why split the signal to set and clear?
+ // FSM only set the signal to make entropy valid while processing other
+ // tasks such as EDN request.
+ rand_valid_set = 1'b 0;
+ rand_valid_clear = 1'b 0;
+
+ // mode_latch to store mode_i into mode_q
+ mode_latch = 1'b 0;
+
+ // PRNG reseed handling
+ seed_en = 1'b 0;
+ seed_ack = 1'b 0;
+ entropy_req = 1'b 0;
+
+ // Randomness control signals
+ prng_en = 1'b 0;
+ data_update = 1'b 0;
+ aux_update = 1'b 0;
+
+ // Error
+ err_o = '{valid: 1'b 0, code: ErrNone, info: '0};
+
+ unique case (st)
+ StRandReset: begin
+ if (entropy_ready_i) begin
+
+ // As SW ready, discard current dummy entropy and refresh.
+ rand_valid_clear = 1'b 1;
+
+ mode_latch = 1'b 1;
+ // SW has configured KMAC
+ unique case (mode_i)
+ EntropyModeSw: begin
+ // Start reseeding the PRNG via ENTROPY_SEED CSR.
+ seed_en = 1'b 1;
+ st_d = StSwSeedWait;
+ end
+
+ EntropyModeEdn: begin
+ // Start reseeding the PRNG via EDN.
+ seed_en = 1'b 1;
+ st_d = StRandEdn;
+
+ // Timer reset
+ timer_update = 1'b 1;
+ end
+
+ default: begin
+ // EntropyModeNone or other values
+ // Error. No valid mode given, report to SW
+ st_d = StRandErrIncorrectMode;
+ end
+ endcase
+ end else begin
+ st_d = StRandReset;
+
+ // Setting the dummy rand gate until SW prepares.
+ // This lets the Application Interface move forward out of reset
+ // without SW intervention.
+ rand_valid_set = 1'b 1;
+ end
+ end
+
+ StRandReady: begin
+ timer_enable = 1'b 1; // If limit is zero, timer won't work
+
+ prng_en = prng_en_rand_q[0];
+
+ if ((rand_update_i || rand_consumed_i) &&
+ ((fast_process_i && in_keyblock_i) || !fast_process_i)) begin
+ // If fast_process is set, don't clear the rand valid, even
+ // consumed. So, the logic does not expand the entropy again.
+ // If fast_process is not set, then every rand_consume signal
+ // triggers rand expansion.
+ prng_en = 1'b 1;
+ data_update = 1'b 1;
+
+ if (rand_consumed_i) begin
+ st_d = StRandGenerate;
+
+ rand_valid_clear = 1'b 1;
+ end else begin
+ st_d = StRandReady;
+ end
+ end else if ((mode_q == EntropyModeEdn) &&
+ (entropy_refresh_req_i || threshold_hit_q)) begin
+ // Start reseeding the PRNG via EDN.
+ seed_en = 1'b 1;
+ st_d = StRandEdn;
+
+ // Timer reset
+ timer_update = 1'b 1;
+
+ // Clear the threshold as it refreshes the hash
+ threshold_hit_clr = 1'b 1;
+ end else begin
+ st_d = StRandReady;
+ end
+ end
+
+ StRandEdn: begin
+ // Forward request of PRNG primitive.
+ entropy_req = seed_req;
+
+ // Wait timer
+ timer_enable = 1'b 1;
+
+ if (timer_expired && non_zero_wait_timer_limit) begin
+ // If timer count is non-zero and expired;
+ st_d = StRandErrWaitExpired;
+
+ end else if (entropy_req_o && entropy_ack_i) begin
+ seed_ack = 1'b 1;
+
+ if (seed_done) begin
+ st_d = StRandGenerate;
+
+ if ((fast_process_i && in_keyblock_i) || !fast_process_i) begin
+ prng_en = 1'b 1;
+ data_update = 1'b 1;
+ rand_valid_clear = 1'b 1;
+ end
+ end else begin
+ st_d = StRandEdn;
+ end
+ end else if ((rand_update_i || rand_consumed_i) &&
+ ((fast_process_i && in_keyblock_i) || !fast_process_i)) begin
+ // Somehow, while waiting the EDN entropy, the KMAC or SHA3 logic
+ // consumed the remained entropy. This can happen when the previous
+ // SHA3/ KMAC op completed and this Entropy FSM has moved to this
+ // state to refresh the entropy and the SW initiates another hash
+ // operation while waiting for the EDN response.
+ st_d = StRandEdn;
+
+ prng_en = 1'b 1;
+ data_update = 1'b 1;
+ rand_valid_clear = rand_consumed_i;
+ end else begin
+ st_d = StRandEdn;
+ end
+ end
+
+ StSwSeedWait: begin
+ // Forward ack driven by software.
+ seed_ack = seed_req & seed_update_i;
+
+ if (seed_done) begin
+ st_d = StRandGenerate;
+
+ prng_en = 1'b 1;
+ data_update = 1'b 1;
+
+ rand_valid_clear = 1'b 1;
+ end else begin
+ st_d = StSwSeedWait;
+ end
+ end
+
+ StRandGenerate: begin
+ // The current buffer output is used as auxiliary randomness and -
+ // depending on whether keccak_round is parametrized to always forward
+ // the buffer output and not use intermediate randomness - forwarded
+ // to the DOM multipliers without them updating in this cycle. We don't
+ // need to advance the PRNG as there is no risk of accidentally
+ // re-using the same randomness twice since after the current cycle:
+ // - We either load and re-mask the message/key which will use
+ // different PRNG output bits. The PRNG is advanced once per 64 bits
+ // loaded.
+ // - Or, the Keccak/SHA3 core is operated but it always starts with
+ // the linear layers which don't require fresh randomness. While
+ // processing the linear layers, the PRNG is advanced to have fresh
+ // randomness for the non-linear layer requiring it.
+ aux_update = 1'b 1;
+ rand_valid_set = 1'b 1;
+ prng_en = prng_en_rand_q[0];
+
+ st_d = StRandReady;
+ end
+
+ StRandErrWaitExpired: begin
+ st_d = StRandErr;
+
+ err_o = '{ valid: 1'b 1,
+ code: ErrWaitTimerExpired,
+ info: 24'(timer_value)
+ };
+ end
+
+ StRandErrIncorrectMode: begin
+ st_d = StRandErr;
+
+ err_o = '{ valid: 1'b 1,
+ code: ErrIncorrectEntropyMode,
+ info: 24'(mode_q)
+ };
+ end
+
+ StRandErr: begin
+ // Keep entropy signal valid to complete current hashing even with error
+ rand_valid_set = 1'b 1;
+
+ // Advance the PRNG after the entropy has been used.
+ prng_en = (rand_update_i | rand_consumed_i) &
+ ((fast_process_i & in_keyblock_i) | ~fast_process_i);
+ data_update = prng_en;
+
+ if (err_processed_i) begin
+ st_d = StRandReset;
+
+ end else begin
+ st_d = StRandErr;
+ end
+
+ end
+
+ StTerminalError: begin
+ // this state is terminal
+ st_d = st;
+ sparse_fsm_error_o = 1'b 1;
+ end
+
+ default: begin
+ st_d = StTerminalError;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError;
+ end
+ end
+ `CALIPTRA_ASSERT_KNOWN(RandStKnown_A, st)
+
+ // mubi4 sender
+
+ assign entropy_configured = (st != StRandReset)
+ ? caliptra_prim_mubi_pkg::MuBi4True
+ : caliptra_prim_mubi_pkg::MuBi4False ;
+ caliptra_prim_mubi4_sender #(
+ .AsyncOn(1'b0)
+ ) u_entropy_configured (
+ .clk_i,
+ .rst_ni,
+
+ .mubi_i (entropy_configured ),
+ .mubi_o (entropy_configured_o)
+ );
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // The EDN bus width needs to be equal to the width of the ENTROPY_SEED
+ // register as this module doesn't perform width adaption.
+ `CALIPTRA_ASSERT_INIT(EdnBusWidth_A, edn_pkg::ENDPOINT_BUS_WIDTH == 32)
+
+// the code below is not meant to be synthesized,
+// but it is intended to be used in simulation and FPV
+`ifndef SYNTHESIS
+ // Check that the supplied permutations are valid.
+ logic [EntropyOutputW-1:0] perm_test;
+ initial begin : p_perm_check
+ perm_test = '0;
+ for (int k = 0; k < EntropyOutputW; k++) begin
+ perm_test[RndCnstLfsrPerm[k]] = 1'b1;
+ end
+ // All bit positions must be marked with 1.
+ `CALIPTRA_ASSERT_I(PermutationCheck_A, &perm_test)
+ end
+`endif
+
+endmodule : kmac_entropy
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_errchk.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_errchk.sv
new file mode 100644
index 0000000..520a34b
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_errchk.sv
@@ -0,0 +1,464 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC Error Checking logic
+//
+// `kmac_err` module checks the SW introduced errors.
+// 1. SW command sequencing error.
+// 2. SW configuration error.
+//
+// ## SW Command Sequencing Error
+//
+// KMAC assumes the application interface and the SW register interface to
+// follow the specific sequence. It expects the requester to send the `Start`
+// command then push the message body. The `Process` command follows the message
+// body. The SW may issue `Run` command if it needs the digest result more than
+// a block rate. Then SW completes the hash operation with `Done` command.
+//
+// This `kmac_err` module checks if the SW issues the correct command. If not,
+// it reports the error via ERR_CODE register.
+//
+// However, the logic does not prevent the error-ed command to be propagated.
+// The unexpected commands are filtered by each individual submodule.
+//
+// st := { Idle, MsgFeed, Processing, Absorbed, Squeeze}
+//
+// allowed := {
+// Idle : { Start },
+// MsgFeed: { Process },
+// Processing: { None },
+// Absorbed: { Run, Done },
+// Squeeze: { None }
+// }
+//
+// ## SW Configuration Error
+//
+// `kmac_errchk` module checks if SW configured correct combinations of the
+// configuration registers when the hashing operation begins.
+//
+// 1. Mode & Strength combinations
+// 2. Kmac Prefix
+// * sideload & key_valid -> Checker in kmac_core
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_errchk
+ import kmac_pkg::*;
+ import sha3_pkg::sha3_mode_e;
+ import sha3_pkg::keccak_strength_e;
+#(
+ parameter bit EnMasking = 1'b 1
+) (
+ input clk_i,
+ input rst_ni,
+
+ // Configurations
+ input sha3_mode_e cfg_mode_i,
+ input keccak_strength_e cfg_strength_i,
+
+ input kmac_en_i,
+ input [47:0] cfg_prefix_6B_i, // first 6B of PREFIX
+
+ // If the signal below is set, errchk propagates the command to the rest of
+ // the blocks even with err_modestrength.
+ input cfg_en_unsupported_modestrength_i,
+
+ // Entropy Ready Status to check if SW initiated the hahs without entropy cfg
+ input entropy_ready_pulse_i,
+
+ // SW commands: Only valid command is sent out to the rest of the modules
+ input kmac_cmd_e sw_cmd_i,
+ output kmac_cmd_e sw_cmd_o,
+
+ // Status from KMAC_APP
+ input app_active_i,
+
+ // Status from SHA3 core
+ input caliptra_prim_mubi_pkg::mubi4_t sha3_absorbed_i,
+ input keccak_done_i,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // Error processed indicator
+ input err_processed_i,
+
+ input caliptra_prim_mubi_pkg::mubi4_t clear_after_error_i,
+
+ output err_t error_o,
+ output logic sparse_fsm_error_o
+);
+
+ // sha3_pkg::sha3_mode_e
+ import sha3_pkg::L128;
+ import sha3_pkg::L224;
+ import sha3_pkg::L256;
+ import sha3_pkg::L384;
+ import sha3_pkg::L512;
+
+ // sha3_pkg::keccak_strength_e
+ import sha3_pkg::Sha3;
+ import sha3_pkg::Shake;
+ import sha3_pkg::CShake;
+
+ /////////////////
+ // Definitions //
+ /////////////////
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 5 -n 6 \
+ // -s 2239170217 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (50.00%)
+ // 4: |||||||||||||||| (40.00%)
+ // 5: |||| (10.00%)
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 5
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 4
+ //
+ localparam int StateWidth = 6;
+ typedef enum logic [StateWidth-1:0] {
+ StIdle = 6'b001101,
+ StMsgFeed = 6'b110001,
+ StProcessing = 6'b010110,
+ StAbsorbed = 6'b100010,
+ StSqueezing = 6'b111100,
+ StTerminalError = 6'b011011
+ } st_e;
+ st_e st, st_d;
+
+ localparam int StateWidthL = 3;
+ typedef enum logic [StateWidthL-1:0] {
+ StIdleL,
+ StMsgFeedL,
+ StProcessingL,
+ StAbsorbedL,
+ StSqueezingL,
+ StErrorL
+ } st_logical_e;
+ st_logical_e stL;
+
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // `err_swsequence` occurs when SW issues wrong command
+ logic err_swsequence;
+
+ // `err_modestrength` occcurs when Mode & Strength combinations are not
+ // allowed. This error does not block the hashing operation.
+ // UnexpectedModeStrength may stop the processing based on CFG
+ // The error raises when SW issues CmdStart.
+ logic err_modestrength;
+
+ // `err_prefix` occurs when the first 6B of !!PREFIX is not
+ // `encode_string("KMAC")` and kmac is enabled. This error does not block the
+ // KMAC operation.
+ logic err_prefix;
+
+ // `err_entropy_ready` occurs when SW initiated the hashing op. without
+ // configuring the entropy. This error may happen only when EnMasking is
+ // set.
+ logic err_entropy_ready;
+
+ // entropy_ready is a pulse signal. Logic needs to store the state.
+ logic cfg_entropy_ready;
+
+ // Signal to block the SW command propagation
+ logic block_swcmd;
+
+ ///////////////////
+ // Error Checker //
+ ///////////////////
+
+ // SW sequence Error
+ // info field: Current state, Received command
+ // SEC_CM: FSM.SPARSE
+ always_comb begin
+ err_swsequence = 1'b 0;
+ sparse_fsm_error_o = 1'b 0;
+
+ unique case (st)
+ StIdle: begin
+ // Allow Start command only
+ if (!(sw_cmd_i inside {CmdNone, CmdStart})) begin
+ err_swsequence = 1'b 1;
+ end
+ end
+
+ StMsgFeed: begin
+ // Allow Process only
+ if (!(sw_cmd_i inside {CmdNone, CmdProcess})) begin
+ err_swsequence = 1'b 1;
+ end
+ end
+
+ StProcessing: begin
+ if (sw_cmd_i != CmdNone) begin
+ err_swsequence = 1'b 1;
+ end
+ end
+
+ StAbsorbed: begin
+ // Allow ManualRun and Done
+ if (!(sw_cmd_i inside {CmdNone, CmdManualRun, CmdDone})) begin
+ err_swsequence = 1'b 1;
+ end
+ end
+
+ StSqueezing: begin
+ if (sw_cmd_i != CmdNone) begin
+ err_swsequence = 1'b 1;
+ end
+ end
+
+ StTerminalError: begin
+ err_swsequence = 1'b 0;
+ sparse_fsm_error_o = 1'b 1;
+ end
+
+ default: begin
+ err_swsequence = 1'b 0;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+ end
+
+ assign block_swcmd = (err_swsequence)
+ || (err_modestrength
+ && !cfg_en_unsupported_modestrength_i)
+ || err_entropy_ready;
+
+ // sw_cmd_o latch
+ // To reduce the command path delay, sw_cmd is latched here
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) sw_cmd_o <= CmdNone;
+ else if (!block_swcmd) sw_cmd_o <= sw_cmd_i;
+ end
+
+ // Mode & Strength
+ always_comb begin : check_modestrength
+ err_modestrength = 1'b 0;
+
+ if (st == StIdle && st_d == StMsgFeed) begin
+ // When moving to the next stage, checks the config
+ if (!((cfg_mode_i == Sha3 &&
+ cfg_strength_i inside {L224, L256, L384, L512}) ||
+ ((cfg_mode_i == Shake || cfg_mode_i == CShake) &&
+ (cfg_strength_i inside {L128, L256})))) begin
+ err_modestrength = 1'b 1;
+ end
+ end
+ end : check_modestrength
+
+
+ // Check prefix 6B is `encode_string("KMAC")`
+ always_comb begin : check_prefix
+ err_prefix = 1'b 0;
+
+ if (st == StIdle && st_d == StMsgFeed && kmac_en_i) begin
+ if (cfg_prefix_6B_i != EncodedStringKMAC) begin
+ err_prefix = 1'b 1;
+ end
+ end
+ end : check_prefix
+
+ if (EnMasking) begin : g_entropy_chk
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) cfg_entropy_ready <= 1'b 0;
+ else if (err_processed_i) cfg_entropy_ready <= 1'b 0;
+ else if (entropy_ready_pulse_i && st == StIdle) begin
+ cfg_entropy_ready <= 1'b 1;
+ end
+ end
+
+ always_comb begin : check_entropy_ready
+ err_entropy_ready = 1'b 0;
+
+ if (st == StIdle && st_d == StMsgFeed && kmac_en_i) begin
+ if (!cfg_entropy_ready) begin
+ err_entropy_ready = 1'b 1;
+ end
+ end
+ end : check_entropy_ready
+
+ end else begin : g_pseudo_entropy_chk
+
+ // If EnMasking is 0, entropy module is not generated.
+ // tying the error signal to 0.
+ assign err_entropy_ready = 1'b 0;
+
+ assign cfg_entropy_ready = 1'b 1;
+
+ logic unused_cfg_entropy_ready;
+ assign unused_cfg_entropy_ready = cfg_entropy_ready;
+
+ end
+
+ always_comb begin : recode_st
+ unique case (st)
+ StIdle : stL = StIdleL;
+ StMsgFeed : stL = StMsgFeedL;
+ StProcessing : stL = StProcessingL;
+ StAbsorbed : stL = StAbsorbedL;
+ StSqueezing : stL = StSqueezingL;
+ default : stL = StErrorL;
+ endcase
+ end : recode_st
+
+ // Return error code
+ err_t err;
+ always_comb begin : err_return
+ err = '{valid: 1'b0, code: ErrNone, info: '0};
+
+ priority case (1'b 1)
+ err_swsequence: begin
+ err = '{ valid: 1'b 1,
+ code: ErrSwCmdSequence,
+ info: {5'h0,
+ {err_swsequence, err_modestrength, err_prefix},
+ {5'h 0, stL},
+ {2'b0, sw_cmd_i}
+ }
+ };
+ end
+
+ err_modestrength: begin
+ err = '{ valid: 1'b 1,
+ code: ErrUnexpectedModeStrength,
+ info: { 5'h 0,
+ {err_swsequence, err_modestrength, err_prefix},
+ 8'h 0,
+ {2'b 00, cfg_mode_i},
+ {1'b 0, cfg_strength_i}
+ }
+ };
+ end
+
+ err_prefix: begin
+ err = '{ valid: 1'b 1,
+ code: ErrIncorrectFunctionName,
+ info: { 5'h 0,
+ {err_swsequence, err_modestrength, err_prefix},
+ 16'h 0000
+ }
+ };
+ end
+
+ err_entropy_ready: begin
+ err = '{ valid: 1'b 1,
+ code: ErrSwHashingWithoutEntropyReady,
+ info: { 8'({ err_entropy_ready,
+ err_swsequence,
+ err_modestrength,
+ err_prefix}),
+ 16'({kmac_en_i, cfg_entropy_ready})
+ }
+ };
+ end
+
+ default: begin
+ err = '{valid: 1'b0, code: ErrNone, info: '0};
+ end
+ endcase
+ end : err_return
+
+ assign error_o = err;
+
+ // If below failed, revise err_swsequence error response info field.
+ `CALIPTRA_ASSERT_INIT(ExpectedStSwCmdBits_A, $bits(st) == StateWidth && $bits(sw_cmd_i) == 6)
+
+ // If failed, revise err_modestrength error info field.
+ `CALIPTRA_ASSERT_INIT(ExpectedModeStrengthBits_A,
+ $bits(cfg_mode_i) == 2 && $bits(cfg_strength_i) == 3)
+
+
+ ///////////////////
+ // State Machine //
+ ///////////////////
+ st_e st_gated_d;
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_gated_d, st, st_e, StIdle)
+
+ // ICEBOX(#14631): Move block_swcmd to PRIM_FLOP_SPARSE_FSM()
+ //
+ // It would be better to place this condition (block_swcmd) in `always_ff`
+ // block to clearly indicate the clock gating condition. However, the
+ // statemachine uses the sparse encoding scheme and macro. It prevents any
+ // latch enable signals.
+ assign st_gated_d = (block_swcmd) ? st : st_d ;
+
+ always_comb begin : next_state
+ st_d = st;
+
+ unique case (st)
+ StIdle: begin
+ if (!app_active_i && sw_cmd_i == CmdStart) begin
+ // Proceed to the next state only when the SW issues the Start command
+ // in a valid period.
+ st_d = StMsgFeed;
+ end
+ end
+
+ StMsgFeed: begin
+ if (sw_cmd_i == CmdProcess) begin
+ st_d = StProcessing;
+ end
+ end
+
+ StProcessing: begin
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(sha3_absorbed_i)) begin
+ st_d = StAbsorbed;
+ end
+ end
+
+ StAbsorbed: begin
+ if (sw_cmd_i == CmdManualRun) begin
+ st_d = StSqueezing;
+ end else if (sw_cmd_i == CmdDone) begin
+ st_d = StIdle;
+ end
+ end
+
+ StSqueezing: begin
+ if (keccak_done_i) begin
+ st_d = StAbsorbed;
+ end
+ end
+
+ StTerminalError: begin
+ // this state is terminal
+ st_d = st;
+ end
+
+ default: begin
+ // this state is terminal
+ st_d = StTerminalError;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError;
+ end
+
+ if (st_d != StTerminalError &&
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(clear_after_error_i)) begin
+ st_d = StIdle;
+ end
+ end : next_state
+ `CALIPTRA_ASSERT_KNOWN(StKnown_A, st)
+
+endmodule : kmac_errchk
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_msgfifo.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_msgfifo.sv
new file mode 100644
index 0000000..f766324
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_msgfifo.sv
@@ -0,0 +1,281 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// KMAC MSG_FIFO
+//
+// This module converts TL-UL interface into MSG_FIFO interface used in KMAC.
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_msgfifo
+ import kmac_pkg::*;
+#(
+ // OutWidth is MsgFIFO data width. caliptra_prim_packer converts InW to OutW prior to
+ // pushing to MsgFIFO
+ parameter int OutWidth = 64,
+
+ parameter bit EnMasking = 1'b 1,
+
+ // Internal MsgFIFO Entry count
+ parameter int MsgDepth = 9,
+ localparam int MsgDepthW = $clog2(MsgDepth+1) // derived parameter
+) (
+ input clk_i,
+ input rst_ni,
+
+ // from REG or KeyMgr Intf input
+ input fifo_valid_i,
+ input [OutWidth-1:0] fifo_data_i,
+ input [OutWidth-1:0] fifo_mask_i,
+ output fifo_ready_o,
+
+ // MSG interface
+ output logic msg_valid_o,
+ output logic [OutWidth-1:0] msg_data_o,
+ output logic [OutWidth/8-1:0] msg_strb_o,
+ input msg_ready_i,
+
+ output logic fifo_empty_o,
+ output logic fifo_full_o,
+ output logic [MsgDepthW-1:0] fifo_depth_o,
+
+ // Control
+ input caliptra_prim_mubi_pkg::mubi4_t clear_i,
+
+ // process_i --> process_o
+ // process_o asserted after all internal messages are flushed out to MSG interface
+ input process_i,
+ output logic process_o,
+
+ err_t err_o
+);
+
+ /////////////////
+ // Definitions //
+ /////////////////
+ typedef struct packed {
+ logic [OutWidth-1:0] data;
+ logic [OutWidth/8-1:0] strb; // one bit per byte
+ } fifo_t;
+
+ typedef enum logic [1:0] {
+ // In Idle, it checks if process input received or not.
+ // If received, the signal goes to packer and flush internal pending data
+ FlushIdle,
+
+ // In Packer state, it waits the packer flush operation completes.
+ // The flush_done signal do nothing but after this, it is assumed that
+ // MSG FIFO received the request.
+ FlushPacker,
+
+ // In Fifo, it waits until MsgFifo is empty. Then asserts process_o
+ FlushFifo,
+
+ // After flushing, it waits the done (clear) signal. It is assumed that
+ // no incoming messages are transmitted between `process_i` and `clear_i`
+ FlushClear
+ } flush_st_e;
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // Packer write path
+ logic packer_wvalid;
+ logic [OutWidth-1:0] packer_wdata;
+ logic [OutWidth-1:0] packer_wmask;
+ logic packer_wready;
+
+ // Message FIFO signals
+ logic fifo_wvalid;
+ fifo_t fifo_wdata;
+ logic fifo_wready;
+ logic fifo_rvalid;
+ fifo_t fifo_rdata;
+ logic fifo_rready;
+
+ logic fifo_err; // FIFO dup. counter error
+
+ // packer flush to msg_fifo, then msg_fifo empty out the internals
+ // then assert msgfifo_flush_done
+ logic packer_flush_done;
+ logic msgfifo_flush_done;
+
+ logic packer_err;
+
+ // SEC_CM: PACKER.CTR.REDUN
+ caliptra_prim_packer #(
+ .InW (OutWidth),
+ .OutW (OutWidth),
+ .HintByteData (1),
+
+ // Turn on dup counter when EnMasking is set
+ .EnProtection (EnMasking)
+ ) u_packer (
+ .clk_i,
+ .rst_ni,
+
+ .valid_i (fifo_valid_i),
+ .data_i (fifo_data_i),
+ .mask_i (fifo_mask_i),
+ .ready_o (fifo_ready_o),
+
+ .valid_o (packer_wvalid),
+ .data_o (packer_wdata),
+ .mask_o (packer_wmask),
+ .ready_i (packer_wready),
+
+ .flush_i (process_i),
+ .flush_done_o (packer_flush_done),
+
+ .err_o (packer_err)
+ );
+
+ // Assign packer wdata and wmask to FIFO struct
+ // In contrast to HMAC case, KMAC SHA3 operates in little-endian. MSG fifo is
+ // converted into 3-D form so the endianess here is not a problem.
+ assign fifo_wdata.data = packer_wdata;
+ always_comb begin
+ fifo_wdata.strb = '0;
+ for (int i = 0 ; i < OutWidth/8 ; i++) begin
+ fifo_wdata.strb[i] = packer_wmask[8*i];
+ end
+ end
+
+ // MsgFIFO
+ caliptra_prim_fifo_sync #(
+ .Width ($bits(fifo_t)),
+ .Pass (1'b 1),
+ .Depth (MsgDepth),
+ .Secure (EnMasking)
+ ) u_msgfifo (
+ .clk_i,
+ .rst_ni,
+ .clr_i (caliptra_prim_mubi_pkg::mubi4_test_true_strict(clear_i)),
+
+ .wvalid_i(fifo_wvalid),
+ .wready_o(fifo_wready),
+ .wdata_i (fifo_wdata),
+
+ .rvalid_o (fifo_rvalid),
+ .rready_i (fifo_rready),
+ .rdata_o (fifo_rdata),
+
+ .full_o (fifo_full_o),
+ .depth_o (fifo_depth_o),
+ .err_o (fifo_err)
+
+ );
+
+ assign fifo_wvalid = packer_wvalid;
+ assign packer_wready = fifo_wready;
+
+ assign msg_valid_o = fifo_rvalid;
+ assign fifo_rready = msg_ready_i;
+ assign msg_data_o = fifo_rdata.data;
+ assign msg_strb_o = fifo_rdata.strb;
+
+ assign fifo_empty_o = !fifo_rvalid;
+
+ // Flush (process from outside) handling
+ flush_st_e flush_st, flush_st_d;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ flush_st <= FlushIdle;
+ end else begin
+ flush_st <= flush_st_d;
+ end
+ end
+
+ always_comb begin
+ flush_st_d = flush_st;
+
+ msgfifo_flush_done = 1'b 0;
+
+ unique case (flush_st)
+ FlushIdle: begin
+ if (process_i) begin
+ flush_st_d = FlushPacker;
+ end else begin
+ flush_st_d = FlushIdle;
+ end
+ end
+
+ FlushPacker: begin
+ if (packer_flush_done) begin
+ flush_st_d = FlushFifo;
+ end else begin
+ flush_st_d = FlushPacker;
+ end
+ end
+
+ FlushFifo: begin
+ if (fifo_empty_o) begin
+ flush_st_d = FlushClear;
+
+ msgfifo_flush_done = 1'b 1;
+ end else begin
+ flush_st_d = FlushFifo;
+ end
+ end
+
+ FlushClear: begin
+ if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(clear_i)) begin
+ flush_st_d = FlushIdle;
+ end else begin
+ flush_st_d = FlushClear;
+ end
+ end
+
+ default: begin
+ flush_st_d = FlushIdle;
+ end
+ endcase
+ end
+
+ assign process_o = msgfifo_flush_done;
+
+ // Error assign
+ always_comb begin : error_logic
+ err_o = '{
+ valid: 1'b 0,
+ code: kmac_pkg::ErrNone,
+ info: '0
+ };
+
+ // Priority case -> if .. else if
+ if (packer_err) begin
+ err_o = '{
+ // If EnProtection is 0, packer_err is tied to 0
+ valid: 1'b 1,
+ code: kmac_pkg::ErrPackerIntegrity,
+ info: kmac_pkg::ErrInfoW'(flush_st)
+ };
+ end else if (fifo_err) begin
+ err_o = '{
+ valid: 1'b 1,
+ code: kmac_pkg::ErrMsgFifoIntegrity,
+ info: kmac_pkg::ErrInfoW'(flush_st)
+ };
+ end
+ end : error_logic
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Flush state known checker
+ `CALIPTRA_ASSERT(FlushStInValid_A, flush_st inside {FlushIdle, FlushPacker, FlushFifo, FlushClear})
+
+ // Packer done signal is asserted at least one cycle later
+ `CALIPTRA_ASSERT(PackerDoneDelay_A, $onehot0({process_i, packer_flush_done}))
+
+ // process_i not asserted during the flush operation
+ `CALIPTRA_ASSUME(PackerDoneValid_a, process_i |-> flush_st == FlushIdle)
+
+ // No messages in between `process_i` and `clear_i`
+ `CALIPTRA_ASSUME(MessageValid_a, fifo_valid_i |-> flush_st == FlushIdle)
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_pkg.sv
new file mode 100644
index 0000000..fe92a60
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_pkg.sv
@@ -0,0 +1,477 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// kmac_pkg
+
+package kmac_pkg;
+ parameter int MsgWidth = sha3_pkg::MsgWidth;
+ parameter int MsgStrbW = sha3_pkg::MsgStrbW;
+
+ // Message FIFO depth
+ //
+ // Assume entropy is ready always (if Share is reused as an entropy in Chi)
+ // Then it takes 72 cycles to complete the Keccak round. While Keccak is in
+ // operation, the module need to store the incoming messages to not degrade
+ // the throughput.
+ //
+ // Based on the observation from HMAC case, the core usually takes 5 clocks
+ // to fetch data and store into KMAC. So the core can push at most 14.5 X 4B
+ // which is 58B. After that, Keccak can fetch the data from MSG_FIFO faster
+ // rate than the core can push. To fetch 58B, it takes around 7~8 cycles.
+ // For that time, the core only can push at most 2 DW. After that Keccak
+ // waits the incoming message.
+ //
+ // So Message FIFO doesn't need full block size except the KMAC case, which
+ // is delayed the operation by processing Function Name N, customization S,
+ // and secret keys. But KMAC doesn't need high throughput anyway (72Mb/s).
+ parameter int RegIntfWidth = 32; // 32bit interface
+ parameter int RegLatency = 5; // 5 cycle to write one Word
+ parameter int Sha3Latency = 72; // Expected masked sha3 processing time 24x3
+
+ // Total required buffer size while SHA3 is in processing
+ parameter int BufferCycles = (Sha3Latency + RegLatency - 1)/RegLatency;
+ parameter int BufferSizeBits = RegIntfWidth * BufferCycles;
+
+ // Required MsgFifoDepth. Adding slightly more buffer for margin
+ parameter int MsgFifoDepth = 2 + ((BufferSizeBits + MsgWidth - 1)/MsgWidth);
+ parameter int MsgFifoDepthW = $clog2(MsgFifoDepth+1);
+
+ parameter int MsgWindowWidth = 32; // Register width
+ parameter int MsgWindowDepth = 512; // 2kB space
+
+ // Key related definitions
+ // If this value is changed, please modify the logic inside kmac_core
+ // that assigns the value into `encoded_key`
+ parameter int MaxKeyLen = 512;
+
+ // size of encode_string(Key)
+ // $ceil($clog2(MaxKeyLen+1)/8)
+ parameter int MaxEncodedKeyLenW = $clog2(MaxKeyLen+1);
+ parameter int MaxEncodedKeyLenByte = (MaxEncodedKeyLenW + 8 - 1) / 8;
+ parameter int MaxEncodedKeyLenSize = MaxEncodedKeyLenByte * 8;
+
+ // Secret Key left_encode(len(Key))
+ // ---------- ------------------------
+ parameter int MaxEncodedKeyW = MaxKeyLen + MaxEncodedKeyLenSize + 8;
+
+ // key_len is SW configurable CSR.
+ // Current KMAC allows 5 key length options.
+ // This value determines the KMAC core how to map the value
+ // from Secret Key register to key size block
+ typedef enum logic [2:0] {
+ Key128 = 3'b 000, // 128 bit secret key
+ Key192 = 3'b 001, // 192 bit secret key
+ Key256 = 3'b 010, // 256 bit secret key
+ Key384 = 3'b 011, // 384 bit secret key
+ Key512 = 3'b 100 // 512 bit secret key
+ } key_len_e;
+
+
+ // SEC_CM: SW_CMD.CTRL.SPARSE
+ // kmac_cmd_e defines the possible command sets that software issues via
+ // !!CMD register. This is mainly to limit the error scenario that SW writes
+ // multiple commands at once. Additionally they are sparse encoded to harden
+ // against FI attacks
+ //
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 5 -n 6 \
+ // -s 1891656028 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (50.00%)
+ // 4: |||||||||||||||| (40.00%)
+ // 5: |||| (10.00%)
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 5
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 4
+ //
+ typedef enum logic [5:0] {
+ //CmdNone = 6'b001011, // dec 10
+ // CmdNone is manually set to all zero by design!
+ // The minimum Hamming distance is still 3
+ CmdNone = 6'b000000, // dec 0
+ CmdStart = 6'b011101, // dec 29
+ CmdProcess = 6'b101110, // dec 46
+ CmdManualRun = 6'b110001, // dec 49
+ CmdDone = 6'b010110 // dec 22
+ } kmac_cmd_e;
+
+ // Timer
+ parameter int unsigned TimerPrescalerW = 10;
+ parameter int unsigned EdnWaitTimerW = 16;
+
+ // Entropy Mode Selection : Should be matched to register package Enum value
+ typedef enum logic [1:0] {
+ EntropyModeNone = 2'h 0,
+ EntropyModeEdn = 2'h 1,
+ EntropyModeSw = 2'h 2
+ } entropy_mode_e;
+
+ // PRNG (kmac_entropy)
+ parameter int unsigned EntropyOutputW = 800;
+ parameter int unsigned EntropyStateW = 288;
+
+ // These LFSR parameters have been generated with
+ // $ ./util/design/gen-lfsr-seed.py --width 288 --seed 31468618 --prefix ""
+ typedef logic [EntropyStateW-1:0] lfsr_seed_t;
+ parameter lfsr_seed_t RndCnstLfsrSeedDefault = {
+ 32'h758a4420,
+ 256'h31e1c461_6ea343ec_153282a3_0c132b57_23c5a4cf_4743b3c7_c32d580f_74f1713a
+ };
+
+ // We use a single seed that is split down into chunks internally.
+ // These LFSR parameters have been generated with
+ // $ ./util/design/gen-lfsr-seed.py --width 800 --seed 3369807298 --prefix ""
+ typedef logic [EntropyOutputW-1:0][$clog2(EntropyOutputW)-1:0] lfsr_perm_t;
+ parameter lfsr_perm_t RndCnstLfsrPermDefault = {
+ 64'hb1a3e87aeb4e69f0,
+ 256'h2d8a6ee2c9ac567b2aa401a639a2a8ea2553614c0a8daf672c06546fc0d35267,
+ 256'hc4572024bc116458dd0f1c10a8aef5c4ad9a788968d0d7ca7345c6b8f277a5d3,
+ 256'hec5da20f261826ed3c8992724e70db897060be51b07a96902e14a42d12d320f8,
+ 256'h187049b6c25f35d0e485cc4b9ef01dad2865b5e558926f380718b74394fe0f82,
+ 256'hd5395a7d0aa4845af814e8681107a4c793758572c9467493bf1248a48f1b40c2,
+ 256'h09319b55111d0401819685a43a06f0da441021a8c220b14f01d44e49c1683a82,
+ 256'hafeb980964aa050641f4205131d9d4741eb5dd658e603b8ed438cb1096628d42,
+ 256'h62c9d75ced78ed09a3ddbb60f533eef10aa5a54b478d61a06a4b326eb3402105,
+ 256'hc27d562c6d91b48440d6d06e543be9871628a4aa9b3d2e51fa0ac2eb89a17f6d,
+ 256'h207ad96caf25d1fcffab210c1aff12252346fe4d56a7cd9b8605c7fa638895a9,
+ 256'h60158cd3a1ce4f2f6cf5d48579ac14b1e5219ca8914e0507b635dc712554f6bb,
+ 256'h0ae412943a7596f4644a0c13646adc91d02c406a10d232791d3de9919eec5424,
+ 256'haa2cac5f556c15c647eb29365062daf6aa848e10b3f665abccca713036d9f1cb,
+ 256'h1c9bd4aaeb19c5ac01b1805e0d5479860870da49a55e8f386ca8232c728e2f61,
+ 256'h3007aa420758818e5312401372eaa00d21c70c7e1158d2e08a1b6ac0b820cb67,
+ 256'hf0ba4b5c0865ff04f0f9d0175817c65d81918e43e14b2f83d574bfa9c6e6deae,
+ 256'h64c22c2974a1d5c55e2367004b249d5a02fc566685ea33b6f73aaa0244b34412,
+ 256'hb1a12230adb1748dc1d956f9f10c8e1aa52f4702e06a16680d92226c830ec4ce,
+ 256'h4c2eead21f08c387c3f1de89eb33b983c748e848f68b54f256715221177c5a4a,
+ 256'h0a47d82741955626755ba1cc24e2ba40504111b9e26136be714c5bc0d330c3f7,
+ 256'h75e863de763270a993890d633c6897218e151943edd8b79ae145cf564b774613,
+ 256'h0b0a76c40e7e84c876640dc78260c09a85e92e5ab56c22c0e72a8669fe88ba10,
+ 256'h8b99e437c776f0cea0d144f285b6ab7259e12284f380ae3410171cd6a8b04415,
+ 256'he95081c8c57e3e526ad5b38019a5c1b5505540462157e7c7e68e6a6a16ac460a,
+ 256'h5d5578da28092c7cc927cb9c0ed614a79b0e32b4c5b6a269a40743bef42b5e29,
+ 256'hd9a75ecb5548a29e9d34ddda07c8404aabbf5479456731ece3785f6090c3f862,
+ 256'h6eb1a5119e8b8e56b1455d820b46e20e15bb7d185a636b10ab8565732c59a302,
+ 256'h329925186604edbd5029a9f865268e90003b5b69d3e99240c3432291a60c62a4,
+ 256'hebad1ed028cd021b27260db22089e0c44481b1a4c120134ac63dc52fbc4cafb2,
+ 256'he065add2665fb361665267b53024329d96587d661f724171155ee73a3f0c47a8,
+ 256'h149751a5903c8bbcaf1782e415dfda531eb2af67c25e190330a12000e1fbb9cd
+ };
+
+ // These LFSR parameters have been generated with
+ // $ ./util/design/gen-lfsr-seed.py --width 800 --seed 31468618 --prefix "Buffer"
+ typedef logic [EntropyOutputW-1:0] buffer_lfsr_seed_t;
+ parameter buffer_lfsr_seed_t RndCnstBufferLfsrSeedDefault = {
+ 32'h292603b4,
+ 256'hf1d83863_e0bd0634_4544ad28_a91d8668_24b66efd_92ad8123_5381f2bc_3d65392c,
+ 256'h83c01ea5_d8be84f1_e2588917_11849a07_5a71f35f_e9b31605_f9077a6b_758a4420,
+ 256'h31e1c461_6ea343ec_153282a3_0c132b57_23c5a4cf_4743b3c7_c32d580f_74f1713a
+ };
+
+ // Message permutation
+ // These LFSR parameters have been generated with
+ // $ ./util/design/gen-lfsr-seed.py --width 64 --seed 1201202158 --prefix ""
+ // And changed the type name from lfsr_perm_t to msg_perm_t
+ typedef logic [MsgWidth-1:0][$clog2(MsgWidth)-1:0] msg_perm_t;
+ parameter msg_perm_t RndCnstMsgPermDefault = {
+ 128'h382af41849db4cfb9c885f72f118c102,
+ 256'hcb5526978defac799192f65f54148379af21d7e10d82a5a33c3f31a1eaf964b8
+ };
+
+ ///////////////////////////
+ // Application interface //
+ ///////////////////////////
+
+ // Application Algorithm
+ // Each interface can choose algorithms among SHA3, cSHAKE, KMAC
+ typedef enum bit [1:0] {
+ // SHA3 mode doer not nees any additional information.
+ // Prefix will be tied to all zero and not used.
+ AppSHA3 = 0,
+
+ // In CShake/ KMAC mode, the Prefix can be determined by the compile-time
+ // parameter or through CSRs.
+ AppCShake = 1,
+
+ // In KMAC mode, the secret key always comes from sideload.
+ // KMAC mode needs uniformly distributed entropy. The request will be
+ // silently discarded in Reset state.
+ AppKMAC = 2
+ } app_mode_e;
+
+ // Predefined encoded_string
+ parameter logic [15:0] EncodedStringEmpty = 16'h 0001;
+ parameter logic [47:0] EncodedStringKMAC = 48'h 4341_4D4B_2001;
+ // encoded_string("LC_CTRL")
+ parameter logic [71:0] EncodedStringLcCtrl = 72'h 4c_5254_435f_434C_3801;
+ // encoded_string("ROM_CTRL")
+ parameter logic [79:0] EncodedStringRomCtrl = 80'h 4c52_5443_5f4d_4f52_4001;
+ parameter int unsigned NSPrefixW = sha3_pkg::NSRegisterSize*8;
+
+ typedef struct packed {
+ app_mode_e Mode;
+
+ sha3_pkg::keccak_strength_e KeccakStrength;
+
+ // PrefixMode determines the origin value of Prefix that is used in KMAC
+ // and cSHAKE operations.
+ // Choose **0** for CSRs (!!PREFIX), or **1** to use `Prefix` parameter
+ // below.
+ bit PrefixMode;
+
+ // If `PrefixMode` is 1'b 1, then this `Prefix` value will be used in
+ // cSHAKE or KMAC operation.
+ logic [NSPrefixW-1:0] Prefix;
+ } app_config_t;
+
+ parameter app_config_t AppCfgKeyMgr = '{
+ Mode: AppKMAC, // KeyMgr uses KMAC operation
+ KeccakStrength: sha3_pkg::L256,
+ PrefixMode: 1'b1, // Use prefix parameter
+ // {fname: encoded_string("KMAC"), custom_str: encoded_string("")}
+ Prefix: NSPrefixW'({EncodedStringEmpty, EncodedStringKMAC})
+ };
+
+ parameter app_config_t AppCfgLcCtrl= '{
+ Mode: AppCShake,
+ KeccakStrength: sha3_pkg::L128,
+ PrefixMode: 1'b1, // Use prefix parameter
+ // {fname: encode_string(""), custom_str: encode_string("LC_CTRL")}
+ Prefix: NSPrefixW'({EncodedStringLcCtrl, EncodedStringEmpty})
+ };
+
+ parameter app_config_t AppCfgRomCtrl = '{
+ Mode: AppCShake,
+ KeccakStrength: sha3_pkg::L256,
+ PrefixMode: 1'b1, // Use prefix parameter
+ // {fname: encode_string(""), custom_str: encode_string("ROM_CTRL")}
+ Prefix: NSPrefixW'({EncodedStringRomCtrl, EncodedStringEmpty})
+ };
+
+ // Exporting the app internal mux selection enum into the package. So that DV
+ // can use this enum in its scoreboard.
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 4 -n 5 \
+ // -s 713832113 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (66.67%)
+ // 4: |||||||||| (33.33%)
+ // 5: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 4
+ // Minimum Hamming weight: 1
+ // Maximum Hamming weight: 4
+ //
+ localparam int AppMuxWidth = 5;
+ typedef enum logic [AppMuxWidth-1:0] {
+ SelNone = 5'b10100,
+ SelApp = 5'b11001,
+ SelOutLen = 5'b00010,
+ SelSw = 5'b01111
+ } app_mux_sel_e ;
+
+// Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 14 -n 10 \
+ // -s 2454278799 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||| (14.29%)
+ // 4: |||||||||||||||||||| (27.47%)
+ // 5: ||||||||||||| (18.68%)
+ // 6: |||||||||||||||| (21.98%)
+ // 7: |||||||| (10.99%)
+ // 8: |||| (6.59%)
+ // 9: --
+ // 10: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 8
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 8
+ //
+ localparam int AppStateWidth = 10;
+ typedef enum logic [AppStateWidth-1:0] {
+ StIdle = 10'b1010111110,
+
+ // Application operation.
+ //
+ // if start request comes from an App first, until the operation ends by the
+ // requested App, all operations are granted to the specific App. SW
+ // requests and other Apps requests will be ignored.
+ //
+ // App interface does not have control signals. When first data valid occurs
+ // from an App, this logic asserts the start command to the downstream. When
+ // last beat pulse comes, this logic asserts the process to downstream
+ // (after the transaction is accepted regardless of partial writes or not)
+ // When absorbed by SHA3 core, the logic sends digest to the requested App
+ // and right next cycle, it triggers done command to downstream.
+
+ // In StAppCfg state, it latches the cfg from AppCfg parameter to determine
+ // the kmac_mode, sha3_mode, keccak strength.
+ StAppCfg = 10'b1010101101,
+
+ StAppMsg = 10'b1110001011,
+
+ // In StKeyOutLen, this module pushes encoded outlen to the MSG_FIFO.
+ // Assume the length is 256 bit, the data will be 48'h 02_0100
+ StAppOutLen = 10'b1010011000,
+ StAppProcess = 10'b1110110010,
+ StAppWait = 10'b1001010000,
+
+ // SW Controlled
+ // If start request comes from SW first, until the operation ends, all
+ // requests from KeyMgr will be discarded.
+ StSw = 10'b0010111011,
+
+ // Error KeyNotValid
+ // When KeyMgr operates, the secret key is not ready yet.
+ StKeyMgrErrKeyNotValid = 10'b0111011111,
+
+ StError = 10'b1110010111,
+ StErrorAwaitSw = 10'b0110001100,
+ StErrorAwaitApp = 10'b1011100000,
+ StErrorWaitAbsorbed = 10'b0010100100,
+ StErrorServiceRejected = 10'b1101000111,
+
+ // This state is used for terminal errors
+ StTerminalError = 10'b0101110110
+ } st_e;
+
+ // MsgWidth : 64
+ // MsgStrbW : 8
+ parameter int unsigned AppDigestW = 384;
+ parameter int unsigned AppKeyW = 256;
+
+ typedef struct packed {
+ logic valid;
+ logic [MsgWidth-1:0] data;
+ logic [MsgStrbW-1:0] strb;
+ logic last;
+ } app_req_t;
+
+ typedef struct packed {
+ logic ready;
+ logic done;
+ logic [AppDigestW-1:0] digest_share0;
+ logic [AppDigestW-1:0] digest_share1;
+ // Error is valid when done is high. If any error occurs during KDF, KMAC
+ // returns the garbage digest data with error. The KeyMgr discards the
+ // digest and may re-initiate the process.
+ logic error;
+ } app_rsp_t;
+
+ parameter app_req_t APP_REQ_DEFAULT = '{
+ valid: 1'b 0,
+ data: '0,
+ strb: '0,
+ last: 1'b 0
+ };
+ parameter app_rsp_t APP_RSP_DEFAULT = '{
+ ready: 1'b1,
+ done: 1'b1,
+ digest_share0: AppDigestW'(32'hDEADBEEF),
+ digest_share1: AppDigestW'(32'hFACEBEEF),
+ error: 1'b1
+ };
+
+
+ ////////////////////
+ // Error Handling //
+ ////////////////////
+
+ // Error structure is same to the SHA3 one. The codes do not overlap.
+ typedef enum logic [7:0] {
+ ErrNone = 8'h 00,
+
+ // ErrSha3SwControl occurs when software sent wrong flow signal.
+ // e.g) Sw set `process_i` without `start_i`. The state machine ignores
+ // the signal and report through the error FIFO.
+ //ErrSha3SwControl = 8'h 80
+
+ // ErrKeyNotValid: KeyMgr interface raises an error if the secret key is
+ // not valid when KeyMgr initiates KDF.
+ ErrKeyNotValid = 8'h 01,
+
+ // ErrSwPushMsgFifo: Sw writes data into Msg FIFO abruptly.
+ // This error occurs in below scenario:
+ // - Sw does not send "Start" command to KMAC then writes data into
+ // Msg FIFO
+ // - Sw writes data into Msg FIFO when KeyMgr is in operation
+ ErrSwPushedMsgFifo = 8'h 02,
+
+ // ErrSwIssuedCmdInAppActive
+ // - Sw writes any command while AppIntf is in active.
+ ErrSwIssuedCmdInAppActive = 8'h 03,
+
+ // ErrWaitTimerExpired
+ // Entropy Wait timer expired. Something wrong on EDN i/f
+ ErrWaitTimerExpired = 8'h 04,
+
+ // ErrIncorrectEntropyMode
+ // Incorrect Entropy mode when entropy is ready
+ ErrIncorrectEntropyMode = 8'h 05,
+
+ // ErrUnexpectedModeStrength
+ ErrUnexpectedModeStrength = 8'h 06,
+
+ // ErrIncorrectFunctionName "KMAC"
+ ErrIncorrectFunctionName = 8'h 07,
+
+ // ErrSwCmdSequence
+ ErrSwCmdSequence = 8'h 08,
+
+ // ErrSwHashingWithoutEntropyReady
+ // - Sw issues KMAC op without Entropy setting.
+ ErrSwHashingWithoutEntropyReady = 8'h 09,
+
+ // Error due to caliptra_ss_lc_escalation_en_i or fatal fault
+ ErrFatalError = 8'h C1,
+
+ // Error due to the counter integrity check failure inside MsgFifo.Packer
+ ErrPackerIntegrity = 8'h C2,
+
+ // Error due to the counter integrity check failure inside MsgFifo.Fifo
+ ErrMsgFifoIntegrity = 8'h C3
+ } err_code_e;
+
+ typedef struct packed {
+ logic valid;
+ err_code_e code; // Type of error
+ logic [23:0] info; // Additional Debug info
+ } err_t;
+ parameter int unsigned ErrInfoW = 24 ; // err_t::info
+
+ typedef struct packed {
+ logic [AppDigestW-1:0] digest_share0;
+ logic [AppDigestW-1:0] digest_share1;
+ } rsp_digest_t;
+ ///////////////////////
+ // Library Functions //
+ ///////////////////////
+
+ // Endian conversion functions (32-bit, 64-bit)
+ function automatic logic [31:0] conv_endian32( input logic [31:0] v, input logic swap);
+ logic [31:0] conv_data;
+ conv_data = {<<8{v}};
+ conv_endian32 = (swap) ? conv_data : v ;
+ endfunction : conv_endian32
+
+endpackage : kmac_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_reduced.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_reduced.sv
new file mode 100644
index 0000000..f63fd4c
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_reduced.sv
@@ -0,0 +1,312 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Reduced KMAC/SHA3 core including PRNG but without TL-UL interface. This module is suitable for
+// SCA using e.g. PROLEAD.
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_reduced
+ import kmac_pkg::*;
+ import kmac_reg_pkg::*;
+ import sha3_pkg::*;
+#(
+ // EnMasking: Enable masking security hardening inside keccak_round.
+ parameter bit EnMasking = 1,
+ localparam int NumShares = (EnMasking) ? 2 : 1, // derived parameter
+
+ // For now, we use a fixed message length of 128 bits to mirror some of the initial FPGA
+ // experiments.
+ parameter int unsigned MsgLen = 128,
+ parameter int unsigned EntropyWidth = 32,
+
+ parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault,
+ parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault,
+ parameter buffer_lfsr_seed_t RndCnstBufferLfsrSeed = RndCnstBufferLfsrSeedDefault,
+ parameter msg_perm_t RndCnstMsgPerm = RndCnstMsgPermDefault
+) (
+ input logic clk_i,
+ input logic rst_ni,
+
+ // Inputs exercised by SCA tools.
+ // Pre-masked message input. The message is provided in one shot to facilitate the interfacing.
+ input logic [MsgLen-1:0] msg_i [NumShares],
+ input logic msg_valid_i,
+ output logic msg_ready_o,
+
+ // SHA3 control and status
+ input logic start_i, // 1 pulse after reseeding PRNG and injecting
+ // messsage
+ input logic process_i, // 1 pulse after loading message into SHA3
+ input logic run_i, // drive to 0
+ input caliptra_prim_mubi_pkg::mubi4_t done_i, // drive to MuBi4True after
+ // absorbed_o == MuBi4True
+ output caliptra_prim_mubi_pkg::mubi4_t absorbed_o,
+ output logic squeezing_o,
+ output logic block_processed_o,
+ output sha3_st_e sha3_fsm_o,
+
+ // Entropy interface
+ input logic entropy_ready_i, // drive to 1 once ready
+ input logic entropy_refresh_req_i, // one pulse at the beginning
+ input logic [EntropyWidth-1:0] entropy_i,
+ output logic entropy_req_o,
+ input logic entropy_ack_i,
+
+ // Inputs driven with constant values for evaluation but we want to avoid synthesis optimizing
+ // them.
+ // SHA3 configuration
+ input sha3_mode_e mode_i, // e.g. sha3_pkg::Sha3
+ input keccak_strength_e strength_i, // e.g. sha3_pkg::L256
+ input logic [NSRegisterSize*8-1:0] ns_prefix_i, // Ignored for Sha3,
+ // 48'h4341_4D4B_2001 for CShake
+ input logic [sha3_pkg::MsgStrbW-1:0] msg_strb_i, // drive to all-1
+
+ // Entropy configuration
+ input logic msg_mask_en_i, // drive to 1
+ input entropy_mode_e entropy_mode_i, // drive to kmac_pkg::EntropyModeEdn
+ input logic entropy_fast_process_i, // drive to 0
+ input logic entropy_in_keyblock_i, // drive to 1
+
+ // Entropy reseed control
+ input logic entropy_seed_update_i, // drive to 0
+ input logic [31:0] entropy_seed_data_i, // drive to 0
+ input logic [TimerPrescalerW-1:0] wait_timer_prescaler_i, // drive to 0
+ input logic [EdnWaitTimerW-1:0] wait_timer_limit_i, // drive to EdnWaitTimerW'1
+
+ // Signals primarily kept to prevent them from being optimized away during synthesis.
+ // State output
+ output logic [StateW-1:0] state_o [NumShares],
+ output logic state_valid_o,
+
+ // Entropy status signals
+ output caliptra_prim_mubi_pkg::mubi4_t entropy_configured_o,
+ input logic [HashCntW-1:0] entropy_hash_threshold_i, // drive to max
+ input logic entropy_hash_clr_i, // drive to 0
+ output logic [HashCntW-1:0] entropy_hash_cnt_o,
+
+ // Life cycle interface
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // Error signaling
+ output logic err_o,
+ input logic err_processed_i // drive 0
+);
+
+ ///////////////////////////////////
+ // Message unpacking & injection //
+ ///////////////////////////////////
+ // Message packer FIFO
+ logic [sha3_pkg::MsgWidth-1:0] msg [NumShares];
+ logic [NumShares-1:0] msg_valid_shares;
+ logic [NumShares-1:0] msg_ready_shares;
+ logic msg_valid, msg_ready;
+
+ caliptra_prim_packer_fifo #(
+ .InW(MsgLen),
+ .OutW(sha3_pkg::MsgWidth),
+ .ClearOnRead(1'b1)
+ ) u_msg_unpacker_share0 (
+ .clk_i,
+ .rst_ni,
+ .clr_i (1'b0),
+ .wvalid_i(msg_valid_i),
+ .wdata_i (msg_i[0]),
+ .wready_o(msg_ready_shares[0]),
+ .rvalid_o(msg_valid_shares[0]),
+ .rdata_o (msg[0]),
+ .rready_i(msg_ready),
+ .depth_o ()
+ );
+
+ caliptra_prim_packer_fifo #(
+ .InW(MsgLen),
+ .OutW(sha3_pkg::MsgWidth),
+ .ClearOnRead(1'b1)
+ ) u_msg_unpacker_share1 (
+ .clk_i,
+ .rst_ni,
+ .clr_i (1'b0),
+ .wvalid_i(msg_valid_i),
+ .wdata_i (msg_i[1]),
+ .wready_o(msg_ready_shares[1]),
+ .rvalid_o(msg_valid_shares[1]),
+ .rdata_o (msg[1]),
+ .rready_i(msg_ready),
+ .depth_o ()
+ );
+
+ // Reduce valid/ready signals driven by the packer FIFOs.
+ assign msg_ready_o = &msg_ready_shares;
+ assign msg_valid = &msg_valid_shares;
+
+ //////////////////////////
+ // Message (re-)masking //
+ //////////////////////////
+ logic msg_mask_en;
+ logic [sha3_pkg::MsgWidth-1:0] msg_mask, msg_mask_permuted;
+ logic [sha3_pkg::MsgWidth-1:0] msg_masked [NumShares];
+
+ // Permute the PRNG output.
+ always_comb begin
+ msg_mask_permuted = '0;
+ for (int unsigned i = 0 ; i < sha3_pkg::MsgWidth ; i++) begin
+ // Loop through the MsgPerm constant and swap between the bits
+ msg_mask_permuted[i] = msg_mask[RndCnstMsgPerm[i]];
+ end
+ end
+
+ // Perform the actual (re-)masking
+ for (genvar i = 0; i < NumShares; i++) begin: gen_msg_masking
+ assign msg_masked[i] =
+ msg[i] ^ ({sha3_pkg::MsgWidth{msg_mask_en_i}} & msg_mask_permuted);
+ end
+
+ assign msg_mask_en = msg_mask_en_i & msg_valid & msg_ready;
+
+ // SHA3 entropy interface
+ logic sha3_rand_valid, sha3_rand_early, sha3_rand_update, sha3_rand_consumed;
+ logic [StateW/2-1:0] sha3_rand_data;
+ logic sha3_rand_aux;
+
+ // Life cycle signals
+ localparam int unsigned NumLcSyncCopies = 2;
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [NumLcSyncCopies-1:0] caliptra_ss_lc_escalate_en;
+
+ // Synchronize life cycle input.
+ caliptra_prim_lc_sync #(
+ .NumCopies (NumLcSyncCopies)
+ ) u_caliptra_prim_lc_sync (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_escalate_en_i),
+ .lc_en_o(caliptra_ss_lc_escalate_en)
+ );
+
+ // Error signals
+ sha3_pkg::err_t sha3_err, entropy_err;
+ logic sha3_state_error, sha3_count_error, sha3_storage_rst_error;
+ logic entropy_state_error, entropy_hash_counter_error;
+
+ // Collect error signals.
+ assign err_o = |{sha3_err, sha3_state_error, sha3_count_error, sha3_storage_rst_error,
+ entropy_err, entropy_state_error, entropy_hash_counter_error};
+
+ /////////////////
+ // SHA3 engine //
+ /////////////////
+ sha3 #(
+ .EnMasking(EnMasking)
+ ) u_sha3 (
+ .clk_i,
+ .rst_ni,
+
+ // MSG_FIFO interface (or from KMAC)
+ .msg_valid_i(msg_valid),
+ .msg_data_i (msg_masked),
+ .msg_strb_i (msg_strb_i),
+ .msg_ready_o(msg_ready),
+
+ // Entropy interface
+ .rand_valid_i (sha3_rand_valid),
+ .rand_early_i (sha3_rand_early),
+ .rand_data_i (sha3_rand_data),
+ .rand_aux_i (sha3_rand_aux),
+ .rand_update_o (sha3_rand_update),
+ .rand_consumed_o (sha3_rand_consumed),
+
+ // N, S: Used in cSHAKE mode
+ .ns_data_i (ns_prefix_i),
+
+ // Configurations
+ .mode_i,
+ .strength_i,
+
+ // Control and status
+ .start_i, // Start receiving message.
+ .process_i, // Stop receiving message, start padding and afterwards processing.
+ .run_i, // Manually trigger processing after absorption.
+ .done_i, // Clear internal variables and move back into Idle state.
+ .absorbed_o, // Absorption process is done.
+ .squeezing_o, // Currently running manually triggered processing after absorption.
+ .block_processed_o,
+ .sha3_fsm_o,
+
+ // State output
+ .state_valid_o(state_valid_o),
+ .state_o (state_o),
+
+ // REQ/ACK interface to avoid power spikes
+ .run_req_o(), // Not used
+ .run_ack_i(1'b1), // The SHA3 core is always allowed to process.
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i(caliptra_ss_lc_escalate_en[0]),
+
+ // Error signals
+ .error_o (sha3_err),
+ .sparse_fsm_error_o (sha3_state_error),
+ .count_error_o (sha3_count_error),
+ .keccak_storage_rst_error_o(sha3_storage_rst_error)
+ );
+
+ //////////
+ // PRNG //
+ //////////
+ kmac_entropy #(
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .RndCnstLfsrSeed(RndCnstLfsrSeed),
+ .RndCnstBufferLfsrSeed(RndCnstBufferLfsrSeed)
+ ) u_entropy (
+ .clk_i,
+ .rst_ni,
+
+ // EDN interface
+ .entropy_req_o (entropy_req_o),
+ .entropy_ack_i (entropy_ack_i),
+ .entropy_data_i(entropy_i),
+
+ // SHA3 interface
+ .rand_valid_o (sha3_rand_valid),
+ .rand_early_o (sha3_rand_early),
+ .rand_data_o (sha3_rand_data),
+ .rand_aux_o (sha3_rand_aux),
+ .rand_update_i (sha3_rand_update),
+ .rand_consumed_i(sha3_rand_consumed),
+
+ // Message Masking
+ .msg_mask_en_i(msg_mask_en),
+ .msg_mask_o (msg_mask),
+
+ // Configuration
+ .mode_i (entropy_mode_i),
+ .entropy_ready_i(entropy_ready_i),
+ .fast_process_i (entropy_fast_process_i),
+ .in_keyblock_i (entropy_in_keyblock_i),
+
+ // Reseed control
+ .entropy_refresh_req_i (entropy_refresh_req_i),
+ .seed_update_i (entropy_seed_update_i),
+ .seed_data_i (entropy_seed_data_i),
+ .wait_timer_prescaler_i(wait_timer_prescaler_i),
+ .wait_timer_limit_i (wait_timer_limit_i),
+
+ // Status
+ .hash_threshold_i(entropy_hash_threshold_i),
+ .hash_cnt_clr_i (entropy_hash_clr_i),
+ .hash_cnt_o (entropy_hash_cnt_o),
+
+ .entropy_configured_o(entropy_configured_o),
+
+ // LC escalation
+ .caliptra_ss_lc_escalate_en_i(caliptra_ss_lc_escalate_en[1]),
+
+ // Error signals
+ .err_o (entropy_err),
+ .sparse_fsm_error_o(entropy_state_error),
+ .count_error_o (entropy_hash_counter_error),
+ .err_processed_i (err_processed_i)
+ );
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_pkg.sv
new file mode 100644
index 0000000..20bf330
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_pkg.sv
@@ -0,0 +1,499 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Package auto-generated by `reggen` containing data structure
+
+package kmac_reg_pkg;
+
+ // Param list
+ parameter int NumWordsKey = 16;
+ parameter int NumWordsPrefix = 11;
+ parameter int NumEntriesMsgFifo = 10;
+ parameter int NumBytesMsgFifoEntry = 8;
+ parameter int unsigned HashCntW = 10;
+ parameter int NumSeedsEntropy = 6;
+ parameter int NumAlerts = 2;
+
+ // Address widths within the block
+ parameter int BlockAw = 12;
+
+ ////////////////////////////
+ // Typedefs for registers //
+ ////////////////////////////
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } kmac_err;
+ struct packed {
+ logic q;
+ } fifo_empty;
+ struct packed {
+ logic q;
+ } kmac_done;
+ } kmac_reg2hw_intr_state_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } kmac_err;
+ struct packed {
+ logic q;
+ } fifo_empty;
+ struct packed {
+ logic q;
+ } kmac_done;
+ } kmac_reg2hw_intr_enable_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } kmac_err;
+ struct packed {
+ logic q;
+ logic qe;
+ } fifo_empty;
+ struct packed {
+ logic q;
+ logic qe;
+ } kmac_done;
+ } kmac_reg2hw_intr_test_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_fault_err;
+ struct packed {
+ logic q;
+ logic qe;
+ } recov_operation_err;
+ } kmac_reg2hw_alert_test_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } en_unsupported_modestrength;
+ struct packed {
+ logic q;
+ logic qe;
+ } entropy_ready;
+ struct packed {
+ logic q;
+ logic qe;
+ } msg_mask;
+ struct packed {
+ logic q;
+ logic qe;
+ } entropy_fast_process;
+ struct packed {
+ logic [1:0] q;
+ logic qe;
+ } entropy_mode;
+ struct packed {
+ logic q;
+ logic qe;
+ } sideload;
+ struct packed {
+ logic q;
+ logic qe;
+ } state_endianness;
+ struct packed {
+ logic q;
+ logic qe;
+ } msg_endianness;
+ struct packed {
+ logic [1:0] q;
+ logic qe;
+ } mode;
+ struct packed {
+ logic [2:0] q;
+ logic qe;
+ } kstrength;
+ struct packed {
+ logic q;
+ logic qe;
+ } kmac_en;
+ } kmac_reg2hw_cfg_shadowed_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } err_processed;
+ struct packed {
+ logic q;
+ logic qe;
+ } hash_cnt_clr;
+ struct packed {
+ logic q;
+ logic qe;
+ } entropy_req;
+ struct packed {
+ logic [5:0] q;
+ logic qe;
+ } cmd;
+ } kmac_reg2hw_cmd_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [15:0] q;
+ } wait_timer;
+ struct packed {
+ logic [9:0] q;
+ } prescaler;
+ } kmac_reg2hw_entropy_period_reg_t;
+
+ typedef struct packed {
+ logic [9:0] q;
+ } kmac_reg2hw_entropy_refresh_threshold_shadowed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } kmac_reg2hw_entropy_seed_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } kmac_reg2hw_key_share0_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ logic qe;
+ } kmac_reg2hw_key_share1_mreg_t;
+
+ typedef struct packed {
+ logic [2:0] q;
+ } kmac_reg2hw_key_len_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } kmac_reg2hw_prefix_mreg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ logic de;
+ } kmac_done;
+ struct packed {
+ logic d;
+ logic de;
+ } fifo_empty;
+ struct packed {
+ logic d;
+ logic de;
+ } kmac_err;
+ } kmac_hw2reg_intr_state_reg_t;
+
+ typedef struct packed {
+ logic d;
+ } kmac_hw2reg_cfg_regwen_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ } sha3_idle;
+ struct packed {
+ logic d;
+ } sha3_absorb;
+ struct packed {
+ logic d;
+ } sha3_squeeze;
+ struct packed {
+ logic [4:0] d;
+ } fifo_depth;
+ struct packed {
+ logic d;
+ } fifo_empty;
+ struct packed {
+ logic d;
+ } fifo_full;
+ struct packed {
+ logic d;
+ } alert_fatal_fault;
+ struct packed {
+ logic d;
+ } alert_recov_ctrl_update_err;
+ } kmac_hw2reg_status_reg_t;
+
+ typedef struct packed {
+ logic [9:0] d;
+ logic de;
+ } kmac_hw2reg_entropy_refresh_hash_cnt_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ logic de;
+ } kmac_hw2reg_err_code_reg_t;
+
+ // Register -> HW type
+ typedef struct packed {
+ kmac_reg2hw_intr_state_reg_t intr_state; // [1534:1532]
+ kmac_reg2hw_intr_enable_reg_t intr_enable; // [1531:1529]
+ kmac_reg2hw_intr_test_reg_t intr_test; // [1528:1523]
+ kmac_reg2hw_alert_test_reg_t alert_test; // [1522:1519]
+ kmac_reg2hw_cfg_shadowed_reg_t cfg_shadowed; // [1518:1493]
+ kmac_reg2hw_cmd_reg_t cmd; // [1492:1480]
+ kmac_reg2hw_entropy_period_reg_t entropy_period; // [1479:1454]
+ kmac_reg2hw_entropy_refresh_threshold_shadowed_reg_t
+ entropy_refresh_threshold_shadowed; // [1453:1444]
+ kmac_reg2hw_entropy_seed_reg_t entropy_seed; // [1443:1411]
+ kmac_reg2hw_key_share0_mreg_t [15:0] key_share0; // [1410:883]
+ kmac_reg2hw_key_share1_mreg_t [15:0] key_share1; // [882:355]
+ kmac_reg2hw_key_len_reg_t key_len; // [354:352]
+ kmac_reg2hw_prefix_mreg_t [10:0] prefix; // [351:0]
+ } kmac_reg2hw_t;
+
+ // HW -> register type
+ typedef struct packed {
+ kmac_hw2reg_intr_state_reg_t intr_state; // [62:57]
+ kmac_hw2reg_cfg_regwen_reg_t cfg_regwen; // [56:56]
+ kmac_hw2reg_status_reg_t status; // [55:44]
+ kmac_hw2reg_entropy_refresh_hash_cnt_reg_t entropy_refresh_hash_cnt; // [43:33]
+ kmac_hw2reg_err_code_reg_t err_code; // [32:0]
+ } kmac_hw2reg_t;
+
+ // Register offsets
+ parameter logic [BlockAw-1:0] KMAC_INTR_STATE_OFFSET = 12'h 0;
+ parameter logic [BlockAw-1:0] KMAC_INTR_ENABLE_OFFSET = 12'h 4;
+ parameter logic [BlockAw-1:0] KMAC_INTR_TEST_OFFSET = 12'h 8;
+ parameter logic [BlockAw-1:0] KMAC_ALERT_TEST_OFFSET = 12'h c;
+ parameter logic [BlockAw-1:0] KMAC_CFG_REGWEN_OFFSET = 12'h 10;
+ parameter logic [BlockAw-1:0] KMAC_CFG_SHADOWED_OFFSET = 12'h 14;
+ parameter logic [BlockAw-1:0] KMAC_CMD_OFFSET = 12'h 18;
+ parameter logic [BlockAw-1:0] KMAC_STATUS_OFFSET = 12'h 1c;
+ parameter logic [BlockAw-1:0] KMAC_ENTROPY_PERIOD_OFFSET = 12'h 20;
+ parameter logic [BlockAw-1:0] KMAC_ENTROPY_REFRESH_HASH_CNT_OFFSET = 12'h 24;
+ parameter logic [BlockAw-1:0] KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_OFFSET = 12'h 28;
+ parameter logic [BlockAw-1:0] KMAC_ENTROPY_SEED_OFFSET = 12'h 2c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_0_OFFSET = 12'h 30;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_1_OFFSET = 12'h 34;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_2_OFFSET = 12'h 38;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_3_OFFSET = 12'h 3c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_4_OFFSET = 12'h 40;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_5_OFFSET = 12'h 44;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_6_OFFSET = 12'h 48;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_7_OFFSET = 12'h 4c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_8_OFFSET = 12'h 50;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_9_OFFSET = 12'h 54;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_10_OFFSET = 12'h 58;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_11_OFFSET = 12'h 5c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_12_OFFSET = 12'h 60;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_13_OFFSET = 12'h 64;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_14_OFFSET = 12'h 68;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE0_15_OFFSET = 12'h 6c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_0_OFFSET = 12'h 70;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_1_OFFSET = 12'h 74;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_2_OFFSET = 12'h 78;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_3_OFFSET = 12'h 7c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_4_OFFSET = 12'h 80;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_5_OFFSET = 12'h 84;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_6_OFFSET = 12'h 88;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_7_OFFSET = 12'h 8c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_8_OFFSET = 12'h 90;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_9_OFFSET = 12'h 94;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_10_OFFSET = 12'h 98;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_11_OFFSET = 12'h 9c;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_12_OFFSET = 12'h a0;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_13_OFFSET = 12'h a4;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_14_OFFSET = 12'h a8;
+ parameter logic [BlockAw-1:0] KMAC_KEY_SHARE1_15_OFFSET = 12'h ac;
+ parameter logic [BlockAw-1:0] KMAC_KEY_LEN_OFFSET = 12'h b0;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_0_OFFSET = 12'h b4;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_1_OFFSET = 12'h b8;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_2_OFFSET = 12'h bc;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_3_OFFSET = 12'h c0;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_4_OFFSET = 12'h c4;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_5_OFFSET = 12'h c8;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_6_OFFSET = 12'h cc;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_7_OFFSET = 12'h d0;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_8_OFFSET = 12'h d4;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_9_OFFSET = 12'h d8;
+ parameter logic [BlockAw-1:0] KMAC_PREFIX_10_OFFSET = 12'h dc;
+ parameter logic [BlockAw-1:0] KMAC_ERR_CODE_OFFSET = 12'h e0;
+
+ // Reset values for hwext registers and their fields
+ parameter logic [2:0] KMAC_INTR_TEST_RESVAL = 3'h 0;
+ parameter logic [0:0] KMAC_INTR_TEST_KMAC_DONE_RESVAL = 1'h 0;
+ parameter logic [0:0] KMAC_INTR_TEST_FIFO_EMPTY_RESVAL = 1'h 0;
+ parameter logic [0:0] KMAC_INTR_TEST_KMAC_ERR_RESVAL = 1'h 0;
+ parameter logic [1:0] KMAC_ALERT_TEST_RESVAL = 2'h 0;
+ parameter logic [0:0] KMAC_ALERT_TEST_RECOV_OPERATION_ERR_RESVAL = 1'h 0;
+ parameter logic [0:0] KMAC_ALERT_TEST_FATAL_FAULT_ERR_RESVAL = 1'h 0;
+ parameter logic [0:0] KMAC_CFG_REGWEN_RESVAL = 1'h 1;
+ parameter logic [0:0] KMAC_CFG_REGWEN_EN_RESVAL = 1'h 1;
+ parameter logic [10:0] KMAC_CMD_RESVAL = 11'h 0;
+ parameter logic [17:0] KMAC_STATUS_RESVAL = 18'h 4001;
+ parameter logic [0:0] KMAC_STATUS_SHA3_IDLE_RESVAL = 1'h 1;
+ parameter logic [0:0] KMAC_STATUS_FIFO_EMPTY_RESVAL = 1'h 1;
+ parameter logic [0:0] KMAC_STATUS_ALERT_FATAL_FAULT_RESVAL = 1'h 0;
+ parameter logic [0:0] KMAC_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_RESVAL = 1'h 0;
+ parameter logic [31:0] KMAC_ENTROPY_SEED_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_0_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_1_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_2_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_3_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_4_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_5_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_6_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_7_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_8_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_9_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_10_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_11_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_12_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_13_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_14_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE0_15_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_0_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_1_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_2_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_3_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_4_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_5_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_6_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_7_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_8_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_9_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_10_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_11_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_12_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_13_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_14_RESVAL = 32'h 0;
+ parameter logic [31:0] KMAC_KEY_SHARE1_15_RESVAL = 32'h 0;
+
+ // Window parameters
+ parameter logic [BlockAw-1:0] KMAC_STATE_OFFSET = 12'h 400;
+ parameter int unsigned KMAC_STATE_SIZE = 'h 200;
+ parameter int unsigned KMAC_STATE_IDX = 0;
+ parameter logic [BlockAw-1:0] KMAC_MSG_FIFO_OFFSET = 12'h 800;
+ parameter int unsigned KMAC_MSG_FIFO_SIZE = 'h 800;
+ parameter int unsigned KMAC_MSG_FIFO_IDX = 1;
+
+ // Register index
+ typedef enum int {
+ KMAC_INTR_STATE,
+ KMAC_INTR_ENABLE,
+ KMAC_INTR_TEST,
+ KMAC_ALERT_TEST,
+ KMAC_CFG_REGWEN,
+ KMAC_CFG_SHADOWED,
+ KMAC_CMD,
+ KMAC_STATUS,
+ KMAC_ENTROPY_PERIOD,
+ KMAC_ENTROPY_REFRESH_HASH_CNT,
+ KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED,
+ KMAC_ENTROPY_SEED,
+ KMAC_KEY_SHARE0_0,
+ KMAC_KEY_SHARE0_1,
+ KMAC_KEY_SHARE0_2,
+ KMAC_KEY_SHARE0_3,
+ KMAC_KEY_SHARE0_4,
+ KMAC_KEY_SHARE0_5,
+ KMAC_KEY_SHARE0_6,
+ KMAC_KEY_SHARE0_7,
+ KMAC_KEY_SHARE0_8,
+ KMAC_KEY_SHARE0_9,
+ KMAC_KEY_SHARE0_10,
+ KMAC_KEY_SHARE0_11,
+ KMAC_KEY_SHARE0_12,
+ KMAC_KEY_SHARE0_13,
+ KMAC_KEY_SHARE0_14,
+ KMAC_KEY_SHARE0_15,
+ KMAC_KEY_SHARE1_0,
+ KMAC_KEY_SHARE1_1,
+ KMAC_KEY_SHARE1_2,
+ KMAC_KEY_SHARE1_3,
+ KMAC_KEY_SHARE1_4,
+ KMAC_KEY_SHARE1_5,
+ KMAC_KEY_SHARE1_6,
+ KMAC_KEY_SHARE1_7,
+ KMAC_KEY_SHARE1_8,
+ KMAC_KEY_SHARE1_9,
+ KMAC_KEY_SHARE1_10,
+ KMAC_KEY_SHARE1_11,
+ KMAC_KEY_SHARE1_12,
+ KMAC_KEY_SHARE1_13,
+ KMAC_KEY_SHARE1_14,
+ KMAC_KEY_SHARE1_15,
+ KMAC_KEY_LEN,
+ KMAC_PREFIX_0,
+ KMAC_PREFIX_1,
+ KMAC_PREFIX_2,
+ KMAC_PREFIX_3,
+ KMAC_PREFIX_4,
+ KMAC_PREFIX_5,
+ KMAC_PREFIX_6,
+ KMAC_PREFIX_7,
+ KMAC_PREFIX_8,
+ KMAC_PREFIX_9,
+ KMAC_PREFIX_10,
+ KMAC_ERR_CODE
+ } kmac_id_e;
+
+ // Register width information to check illegal writes
+ parameter logic [3:0] KMAC_PERMIT [57] = '{
+ 4'b 0001, // index[ 0] KMAC_INTR_STATE
+ 4'b 0001, // index[ 1] KMAC_INTR_ENABLE
+ 4'b 0001, // index[ 2] KMAC_INTR_TEST
+ 4'b 0001, // index[ 3] KMAC_ALERT_TEST
+ 4'b 0001, // index[ 4] KMAC_CFG_REGWEN
+ 4'b 1111, // index[ 5] KMAC_CFG_SHADOWED
+ 4'b 0011, // index[ 6] KMAC_CMD
+ 4'b 0111, // index[ 7] KMAC_STATUS
+ 4'b 1111, // index[ 8] KMAC_ENTROPY_PERIOD
+ 4'b 0011, // index[ 9] KMAC_ENTROPY_REFRESH_HASH_CNT
+ 4'b 0011, // index[10] KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED
+ 4'b 1111, // index[11] KMAC_ENTROPY_SEED
+ 4'b 1111, // index[12] KMAC_KEY_SHARE0_0
+ 4'b 1111, // index[13] KMAC_KEY_SHARE0_1
+ 4'b 1111, // index[14] KMAC_KEY_SHARE0_2
+ 4'b 1111, // index[15] KMAC_KEY_SHARE0_3
+ 4'b 1111, // index[16] KMAC_KEY_SHARE0_4
+ 4'b 1111, // index[17] KMAC_KEY_SHARE0_5
+ 4'b 1111, // index[18] KMAC_KEY_SHARE0_6
+ 4'b 1111, // index[19] KMAC_KEY_SHARE0_7
+ 4'b 1111, // index[20] KMAC_KEY_SHARE0_8
+ 4'b 1111, // index[21] KMAC_KEY_SHARE0_9
+ 4'b 1111, // index[22] KMAC_KEY_SHARE0_10
+ 4'b 1111, // index[23] KMAC_KEY_SHARE0_11
+ 4'b 1111, // index[24] KMAC_KEY_SHARE0_12
+ 4'b 1111, // index[25] KMAC_KEY_SHARE0_13
+ 4'b 1111, // index[26] KMAC_KEY_SHARE0_14
+ 4'b 1111, // index[27] KMAC_KEY_SHARE0_15
+ 4'b 1111, // index[28] KMAC_KEY_SHARE1_0
+ 4'b 1111, // index[29] KMAC_KEY_SHARE1_1
+ 4'b 1111, // index[30] KMAC_KEY_SHARE1_2
+ 4'b 1111, // index[31] KMAC_KEY_SHARE1_3
+ 4'b 1111, // index[32] KMAC_KEY_SHARE1_4
+ 4'b 1111, // index[33] KMAC_KEY_SHARE1_5
+ 4'b 1111, // index[34] KMAC_KEY_SHARE1_6
+ 4'b 1111, // index[35] KMAC_KEY_SHARE1_7
+ 4'b 1111, // index[36] KMAC_KEY_SHARE1_8
+ 4'b 1111, // index[37] KMAC_KEY_SHARE1_9
+ 4'b 1111, // index[38] KMAC_KEY_SHARE1_10
+ 4'b 1111, // index[39] KMAC_KEY_SHARE1_11
+ 4'b 1111, // index[40] KMAC_KEY_SHARE1_12
+ 4'b 1111, // index[41] KMAC_KEY_SHARE1_13
+ 4'b 1111, // index[42] KMAC_KEY_SHARE1_14
+ 4'b 1111, // index[43] KMAC_KEY_SHARE1_15
+ 4'b 0001, // index[44] KMAC_KEY_LEN
+ 4'b 1111, // index[45] KMAC_PREFIX_0
+ 4'b 1111, // index[46] KMAC_PREFIX_1
+ 4'b 1111, // index[47] KMAC_PREFIX_2
+ 4'b 1111, // index[48] KMAC_PREFIX_3
+ 4'b 1111, // index[49] KMAC_PREFIX_4
+ 4'b 1111, // index[50] KMAC_PREFIX_5
+ 4'b 1111, // index[51] KMAC_PREFIX_6
+ 4'b 1111, // index[52] KMAC_PREFIX_7
+ 4'b 1111, // index[53] KMAC_PREFIX_8
+ 4'b 1111, // index[54] KMAC_PREFIX_9
+ 4'b 1111, // index[55] KMAC_PREFIX_10
+ 4'b 1111 // index[56] KMAC_ERR_CODE
+ };
+
+endpackage
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_top.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_top.sv
new file mode 100644
index 0000000..6c7d3c0
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_reg_top.sv
@@ -0,0 +1,3328 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_reg_top (
+ input clk_i,
+ input rst_ni,
+ input rst_shadowed_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+
+ // Output port for window
+ output tlul_pkg::tl_h2d_t tl_win_o [2],
+ input tlul_pkg::tl_d2h_t tl_win_i [2],
+
+ // To HW
+ output kmac_reg_pkg::kmac_reg2hw_t reg2hw, // Write
+ input kmac_reg_pkg::kmac_hw2reg_t hw2reg, // Read
+
+ output logic shadowed_storage_err_o,
+ output logic shadowed_update_err_o,
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import kmac_reg_pkg::* ;
+
+ localparam int AW = 12;
+ localparam int DW = 32;
+ localparam int DBW = DW/8; // Byte Width
+
+ // register signals
+ logic reg_we;
+ logic reg_re;
+ logic [AW-1:0] reg_addr;
+ logic [DW-1:0] reg_wdata;
+ logic [DBW-1:0] reg_be;
+ logic [DW-1:0] reg_rdata;
+ logic reg_error;
+
+ logic addrmiss, wr_err;
+
+ logic [DW-1:0] reg_rdata_next;
+ logic reg_busy;
+
+ tlul_pkg::tl_h2d_t tl_reg_h2d;
+ tlul_pkg::tl_d2h_t tl_reg_d2h;
+
+
+ // incoming payload check
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
+ .tl_i(tl_i),
+ .err_o(intg_err)
+ );
+
+ // also check for spurious write enables
+ logic reg_we_err;
+ logic [56:0] reg_we_check;
+ caliptra_prim_reg_we_check #(
+ .OneHotWidth(57)
+ ) u_caliptra_prim_reg_we_check (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .oh_i (reg_we_check),
+ .en_i (reg_we && !addrmiss),
+ .err_o (reg_we_err)
+ );
+
+ logic err_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_q <= '0;
+ end else if (intg_err || reg_we_err) begin
+ err_q <= 1'b1;
+ end
+ end
+
+ // integrity error output is permanent and should be used for alert generation
+ // register errors are transactional
+ assign intg_err_o = err_q | intg_err | reg_we_err;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(1)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ tlul_pkg::tl_h2d_t tl_socket_h2d [3];
+ tlul_pkg::tl_d2h_t tl_socket_d2h [3];
+
+ logic [1:0] reg_steer;
+
+ // socket_1n connection
+ assign tl_reg_h2d = tl_socket_h2d[2];
+ assign tl_socket_d2h[2] = tl_reg_d2h;
+
+ assign tl_win_o[0] = tl_socket_h2d[0];
+ assign tl_socket_d2h[0] = tl_win_i[0];
+ assign tl_win_o[1] = tl_socket_h2d[1];
+ assign tl_socket_d2h[1] = tl_win_i[1];
+
+ // Create Socket_1n
+ tlul_socket_1n #(
+ .N (3),
+ .HReqPass (1'b1),
+ .HRspPass (1'b1),
+ .DReqPass ({3{1'b1}}),
+ .DRspPass ({3{1'b1}}),
+ .HReqDepth (4'h0),
+ .HRspDepth (4'h0),
+ .DReqDepth ({3{4'h0}}),
+ .DRspDepth ({3{4'h0}}),
+ .ExplicitErrs (1'b0)
+ ) u_socket (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .tl_h_i (tl_i),
+ .tl_h_o (tl_o_pre),
+ .tl_d_o (tl_socket_h2d),
+ .tl_d_i (tl_socket_d2h),
+ .dev_select_i (reg_steer)
+ );
+
+ // Create steering logic
+ always_comb begin
+ reg_steer =
+ tl_i.a_address[AW-1:0] inside {[1024:1535]} ? 2'd0 :
+ tl_i.a_address[AW-1:0] inside {[2048:4095]} ? 2'd1 :
+ // Default set to register
+ 2'd2;
+
+ // Override this in case of an integrity error
+ if (intg_err) begin
+ reg_steer = 2'd2;
+ end
+ end
+
+ tlul_adapter_reg #(
+ .RegAw(AW),
+ .RegDw(DW),
+ .EnableDataIntgGen(0)
+ ) u_reg_if (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ .tl_i (tl_reg_h2d),
+ .tl_o (tl_reg_d2h),
+
+ .en_ifetch_i(caliptra_prim_mubi_pkg::MuBi4False),
+ .intg_error_o(),
+
+ .we_o (reg_we),
+ .re_o (reg_re),
+ .addr_o (reg_addr),
+ .wdata_o (reg_wdata),
+ .be_o (reg_be),
+ .busy_i (reg_busy),
+ .rdata_i (reg_rdata),
+ .error_i (reg_error)
+ );
+
+ // cdc oversampling signals
+
+ assign reg_rdata = reg_rdata_next ;
+ assign reg_error = addrmiss | wr_err | intg_err;
+
+ // Define SW related signals
+ // Format: __{wd|we|qs}
+ // or _{wd|we|qs} if field == 1 or 0
+ logic intr_state_we;
+ logic intr_state_kmac_done_qs;
+ logic intr_state_kmac_done_wd;
+ logic intr_state_fifo_empty_qs;
+ logic intr_state_kmac_err_qs;
+ logic intr_state_kmac_err_wd;
+ logic intr_enable_we;
+ logic intr_enable_kmac_done_qs;
+ logic intr_enable_kmac_done_wd;
+ logic intr_enable_fifo_empty_qs;
+ logic intr_enable_fifo_empty_wd;
+ logic intr_enable_kmac_err_qs;
+ logic intr_enable_kmac_err_wd;
+ logic intr_test_we;
+ logic intr_test_kmac_done_wd;
+ logic intr_test_fifo_empty_wd;
+ logic intr_test_kmac_err_wd;
+ logic alert_test_we;
+ logic alert_test_recov_operation_err_wd;
+ logic alert_test_fatal_fault_err_wd;
+ logic cfg_regwen_re;
+ logic cfg_regwen_qs;
+ logic cfg_shadowed_re;
+ logic cfg_shadowed_we;
+ logic cfg_shadowed_kmac_en_qs;
+ logic cfg_shadowed_kmac_en_wd;
+ logic cfg_shadowed_kmac_en_storage_err;
+ logic cfg_shadowed_kmac_en_update_err;
+ logic [2:0] cfg_shadowed_kstrength_qs;
+ logic [2:0] cfg_shadowed_kstrength_wd;
+ logic cfg_shadowed_kstrength_storage_err;
+ logic cfg_shadowed_kstrength_update_err;
+ logic [1:0] cfg_shadowed_mode_qs;
+ logic [1:0] cfg_shadowed_mode_wd;
+ logic cfg_shadowed_mode_storage_err;
+ logic cfg_shadowed_mode_update_err;
+ logic cfg_shadowed_msg_endianness_qs;
+ logic cfg_shadowed_msg_endianness_wd;
+ logic cfg_shadowed_msg_endianness_storage_err;
+ logic cfg_shadowed_msg_endianness_update_err;
+ logic cfg_shadowed_state_endianness_qs;
+ logic cfg_shadowed_state_endianness_wd;
+ logic cfg_shadowed_state_endianness_storage_err;
+ logic cfg_shadowed_state_endianness_update_err;
+ logic cfg_shadowed_sideload_qs;
+ logic cfg_shadowed_sideload_wd;
+ logic cfg_shadowed_sideload_storage_err;
+ logic cfg_shadowed_sideload_update_err;
+ logic [1:0] cfg_shadowed_entropy_mode_qs;
+ logic [1:0] cfg_shadowed_entropy_mode_wd;
+ logic cfg_shadowed_entropy_mode_storage_err;
+ logic cfg_shadowed_entropy_mode_update_err;
+ logic cfg_shadowed_entropy_fast_process_qs;
+ logic cfg_shadowed_entropy_fast_process_wd;
+ logic cfg_shadowed_entropy_fast_process_storage_err;
+ logic cfg_shadowed_entropy_fast_process_update_err;
+ logic cfg_shadowed_msg_mask_qs;
+ logic cfg_shadowed_msg_mask_wd;
+ logic cfg_shadowed_msg_mask_storage_err;
+ logic cfg_shadowed_msg_mask_update_err;
+ logic cfg_shadowed_entropy_ready_qs;
+ logic cfg_shadowed_entropy_ready_wd;
+ logic cfg_shadowed_entropy_ready_storage_err;
+ logic cfg_shadowed_entropy_ready_update_err;
+ logic cfg_shadowed_en_unsupported_modestrength_qs;
+ logic cfg_shadowed_en_unsupported_modestrength_wd;
+ logic cfg_shadowed_en_unsupported_modestrength_storage_err;
+ logic cfg_shadowed_en_unsupported_modestrength_update_err;
+ logic cmd_we;
+ logic [5:0] cmd_cmd_wd;
+ logic cmd_entropy_req_wd;
+ logic cmd_hash_cnt_clr_wd;
+ logic cmd_err_processed_wd;
+ logic status_re;
+ logic status_sha3_idle_qs;
+ logic status_sha3_absorb_qs;
+ logic status_sha3_squeeze_qs;
+ logic [4:0] status_fifo_depth_qs;
+ logic status_fifo_empty_qs;
+ logic status_fifo_full_qs;
+ logic status_alert_fatal_fault_qs;
+ logic status_alert_recov_ctrl_update_err_qs;
+ logic entropy_period_we;
+ logic [9:0] entropy_period_prescaler_qs;
+ logic [9:0] entropy_period_prescaler_wd;
+ logic [15:0] entropy_period_wait_timer_qs;
+ logic [15:0] entropy_period_wait_timer_wd;
+ logic [9:0] entropy_refresh_hash_cnt_qs;
+ logic entropy_refresh_threshold_shadowed_re;
+ logic entropy_refresh_threshold_shadowed_we;
+ logic [9:0] entropy_refresh_threshold_shadowed_qs;
+ logic [9:0] entropy_refresh_threshold_shadowed_wd;
+ logic entropy_refresh_threshold_shadowed_storage_err;
+ logic entropy_refresh_threshold_shadowed_update_err;
+ logic entropy_seed_we;
+ logic [31:0] entropy_seed_wd;
+ logic key_share0_0_we;
+ logic [31:0] key_share0_0_wd;
+ logic key_share0_1_we;
+ logic [31:0] key_share0_1_wd;
+ logic key_share0_2_we;
+ logic [31:0] key_share0_2_wd;
+ logic key_share0_3_we;
+ logic [31:0] key_share0_3_wd;
+ logic key_share0_4_we;
+ logic [31:0] key_share0_4_wd;
+ logic key_share0_5_we;
+ logic [31:0] key_share0_5_wd;
+ logic key_share0_6_we;
+ logic [31:0] key_share0_6_wd;
+ logic key_share0_7_we;
+ logic [31:0] key_share0_7_wd;
+ logic key_share0_8_we;
+ logic [31:0] key_share0_8_wd;
+ logic key_share0_9_we;
+ logic [31:0] key_share0_9_wd;
+ logic key_share0_10_we;
+ logic [31:0] key_share0_10_wd;
+ logic key_share0_11_we;
+ logic [31:0] key_share0_11_wd;
+ logic key_share0_12_we;
+ logic [31:0] key_share0_12_wd;
+ logic key_share0_13_we;
+ logic [31:0] key_share0_13_wd;
+ logic key_share0_14_we;
+ logic [31:0] key_share0_14_wd;
+ logic key_share0_15_we;
+ logic [31:0] key_share0_15_wd;
+ logic key_share1_0_we;
+ logic [31:0] key_share1_0_wd;
+ logic key_share1_1_we;
+ logic [31:0] key_share1_1_wd;
+ logic key_share1_2_we;
+ logic [31:0] key_share1_2_wd;
+ logic key_share1_3_we;
+ logic [31:0] key_share1_3_wd;
+ logic key_share1_4_we;
+ logic [31:0] key_share1_4_wd;
+ logic key_share1_5_we;
+ logic [31:0] key_share1_5_wd;
+ logic key_share1_6_we;
+ logic [31:0] key_share1_6_wd;
+ logic key_share1_7_we;
+ logic [31:0] key_share1_7_wd;
+ logic key_share1_8_we;
+ logic [31:0] key_share1_8_wd;
+ logic key_share1_9_we;
+ logic [31:0] key_share1_9_wd;
+ logic key_share1_10_we;
+ logic [31:0] key_share1_10_wd;
+ logic key_share1_11_we;
+ logic [31:0] key_share1_11_wd;
+ logic key_share1_12_we;
+ logic [31:0] key_share1_12_wd;
+ logic key_share1_13_we;
+ logic [31:0] key_share1_13_wd;
+ logic key_share1_14_we;
+ logic [31:0] key_share1_14_wd;
+ logic key_share1_15_we;
+ logic [31:0] key_share1_15_wd;
+ logic key_len_we;
+ logic [2:0] key_len_wd;
+ logic prefix_0_we;
+ logic [31:0] prefix_0_qs;
+ logic [31:0] prefix_0_wd;
+ logic prefix_1_we;
+ logic [31:0] prefix_1_qs;
+ logic [31:0] prefix_1_wd;
+ logic prefix_2_we;
+ logic [31:0] prefix_2_qs;
+ logic [31:0] prefix_2_wd;
+ logic prefix_3_we;
+ logic [31:0] prefix_3_qs;
+ logic [31:0] prefix_3_wd;
+ logic prefix_4_we;
+ logic [31:0] prefix_4_qs;
+ logic [31:0] prefix_4_wd;
+ logic prefix_5_we;
+ logic [31:0] prefix_5_qs;
+ logic [31:0] prefix_5_wd;
+ logic prefix_6_we;
+ logic [31:0] prefix_6_qs;
+ logic [31:0] prefix_6_wd;
+ logic prefix_7_we;
+ logic [31:0] prefix_7_qs;
+ logic [31:0] prefix_7_wd;
+ logic prefix_8_we;
+ logic [31:0] prefix_8_qs;
+ logic [31:0] prefix_8_wd;
+ logic prefix_9_we;
+ logic [31:0] prefix_9_qs;
+ logic [31:0] prefix_9_wd;
+ logic prefix_10_we;
+ logic [31:0] prefix_10_qs;
+ logic [31:0] prefix_10_wd;
+ logic [31:0] err_code_qs;
+
+ // Register instances
+ // R[intr_state]: V(False)
+ // F[kmac_done]: 0:0
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_state_kmac_done (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_state_we),
+ .wd (intr_state_kmac_done_wd),
+
+ // from internal hardware
+ .de (hw2reg.intr_state.kmac_done.de),
+ .d (hw2reg.intr_state.kmac_done.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_state.kmac_done.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_state_kmac_done_qs)
+ );
+
+ // F[fifo_empty]: 1:1
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_state_fifo_empty (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.intr_state.fifo_empty.de),
+ .d (hw2reg.intr_state.fifo_empty.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_state.fifo_empty.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_state_fifo_empty_qs)
+ );
+
+ // F[kmac_err]: 2:2
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_state_kmac_err (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_state_we),
+ .wd (intr_state_kmac_err_wd),
+
+ // from internal hardware
+ .de (hw2reg.intr_state.kmac_err.de),
+ .d (hw2reg.intr_state.kmac_err.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_state.kmac_err.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_state_kmac_err_qs)
+ );
+
+
+ // R[intr_enable]: V(False)
+ // F[kmac_done]: 0:0
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_enable_kmac_done (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_enable_we),
+ .wd (intr_enable_kmac_done_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_enable.kmac_done.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_enable_kmac_done_qs)
+ );
+
+ // F[fifo_empty]: 1:1
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_enable_fifo_empty (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_enable_we),
+ .wd (intr_enable_fifo_empty_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_enable.fifo_empty.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_enable_fifo_empty_qs)
+ );
+
+ // F[kmac_err]: 2:2
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_enable_kmac_err (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_enable_we),
+ .wd (intr_enable_kmac_err_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_enable.kmac_err.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_enable_kmac_err_qs)
+ );
+
+
+ // R[intr_test]: V(True)
+ logic intr_test_qe;
+ logic [2:0] intr_test_flds_we;
+ assign intr_test_qe = &intr_test_flds_we;
+ // F[kmac_done]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_intr_test_kmac_done (
+ .re (1'b0),
+ .we (intr_test_we),
+ .wd (intr_test_kmac_done_wd),
+ .d ('0),
+ .qre (),
+ .qe (intr_test_flds_we[0]),
+ .q (reg2hw.intr_test.kmac_done.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.intr_test.kmac_done.qe = intr_test_qe;
+
+ // F[fifo_empty]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_intr_test_fifo_empty (
+ .re (1'b0),
+ .we (intr_test_we),
+ .wd (intr_test_fifo_empty_wd),
+ .d ('0),
+ .qre (),
+ .qe (intr_test_flds_we[1]),
+ .q (reg2hw.intr_test.fifo_empty.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.intr_test.fifo_empty.qe = intr_test_qe;
+
+ // F[kmac_err]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_intr_test_kmac_err (
+ .re (1'b0),
+ .we (intr_test_we),
+ .wd (intr_test_kmac_err_wd),
+ .d ('0),
+ .qre (),
+ .qe (intr_test_flds_we[2]),
+ .q (reg2hw.intr_test.kmac_err.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.intr_test.kmac_err.qe = intr_test_qe;
+
+
+ // R[alert_test]: V(True)
+ logic alert_test_qe;
+ logic [1:0] alert_test_flds_we;
+ assign alert_test_qe = &alert_test_flds_we;
+ // F[recov_operation_err]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_recov_operation_err (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_recov_operation_err_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[0]),
+ .q (reg2hw.alert_test.recov_operation_err.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.recov_operation_err.qe = alert_test_qe;
+
+ // F[fatal_fault_err]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_fault_err (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_fault_err_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[1]),
+ .q (reg2hw.alert_test.fatal_fault_err.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_fault_err.qe = alert_test_qe;
+
+
+ // R[cfg_regwen]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_cfg_regwen (
+ .re (cfg_regwen_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.cfg_regwen.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (cfg_regwen_qs)
+ );
+
+
+ // R[cfg_shadowed]: V(False)
+ logic cfg_shadowed_qe;
+ logic [10:0] cfg_shadowed_flds_we;
+ caliptra_prim_flop #(
+ .Width(1),
+ .ResetValue(0)
+ ) u_cfg_shadowed0_qe (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .d_i(&cfg_shadowed_flds_we),
+ .q_o(cfg_shadowed_qe)
+ );
+ // Create REGWEN-gated WE signal
+ logic cfg_shadowed_gated_we;
+ assign cfg_shadowed_gated_we = cfg_shadowed_we & cfg_regwen_qs;
+ // F[kmac_en]: 0:0
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_kmac_en (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_kmac_en_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[0]),
+ .q (reg2hw.cfg_shadowed.kmac_en.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_kmac_en_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_kmac_en_update_err),
+ .err_storage (cfg_shadowed_kmac_en_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.kmac_en.qe = cfg_shadowed_qe;
+
+ // F[kstrength]: 3:1
+ caliptra_prim_subreg_shadow #(
+ .DW (3),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (3'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_kstrength (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_kstrength_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[1]),
+ .q (reg2hw.cfg_shadowed.kstrength.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_kstrength_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_kstrength_update_err),
+ .err_storage (cfg_shadowed_kstrength_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.kstrength.qe = cfg_shadowed_qe;
+
+ // F[mode]: 5:4
+ caliptra_prim_subreg_shadow #(
+ .DW (2),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (2'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_mode (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_mode_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[2]),
+ .q (reg2hw.cfg_shadowed.mode.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_mode_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_mode_update_err),
+ .err_storage (cfg_shadowed_mode_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.mode.qe = cfg_shadowed_qe;
+
+ // F[msg_endianness]: 8:8
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_msg_endianness (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_msg_endianness_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[3]),
+ .q (reg2hw.cfg_shadowed.msg_endianness.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_msg_endianness_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_msg_endianness_update_err),
+ .err_storage (cfg_shadowed_msg_endianness_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.msg_endianness.qe = cfg_shadowed_qe;
+
+ // F[state_endianness]: 9:9
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_state_endianness (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_state_endianness_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[4]),
+ .q (reg2hw.cfg_shadowed.state_endianness.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_state_endianness_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_state_endianness_update_err),
+ .err_storage (cfg_shadowed_state_endianness_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.state_endianness.qe = cfg_shadowed_qe;
+
+ // F[sideload]: 12:12
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_sideload (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_sideload_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[5]),
+ .q (reg2hw.cfg_shadowed.sideload.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_sideload_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_sideload_update_err),
+ .err_storage (cfg_shadowed_sideload_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.sideload.qe = cfg_shadowed_qe;
+
+ // F[entropy_mode]: 17:16
+ caliptra_prim_subreg_shadow #(
+ .DW (2),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (2'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_entropy_mode (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_entropy_mode_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[6]),
+ .q (reg2hw.cfg_shadowed.entropy_mode.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_entropy_mode_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_entropy_mode_update_err),
+ .err_storage (cfg_shadowed_entropy_mode_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.entropy_mode.qe = cfg_shadowed_qe;
+
+ // F[entropy_fast_process]: 19:19
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_entropy_fast_process (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_entropy_fast_process_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[7]),
+ .q (reg2hw.cfg_shadowed.entropy_fast_process.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_entropy_fast_process_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_entropy_fast_process_update_err),
+ .err_storage (cfg_shadowed_entropy_fast_process_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.entropy_fast_process.qe = cfg_shadowed_qe;
+
+ // F[msg_mask]: 20:20
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_msg_mask (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_msg_mask_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[8]),
+ .q (reg2hw.cfg_shadowed.msg_mask.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_msg_mask_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_msg_mask_update_err),
+ .err_storage (cfg_shadowed_msg_mask_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.msg_mask.qe = cfg_shadowed_qe;
+
+ // F[entropy_ready]: 24:24
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_entropy_ready (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_entropy_ready_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[9]),
+ .q (reg2hw.cfg_shadowed.entropy_ready.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_entropy_ready_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_entropy_ready_update_err),
+ .err_storage (cfg_shadowed_entropy_ready_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.entropy_ready.qe = cfg_shadowed_qe;
+
+ // F[en_unsupported_modestrength]: 26:26
+ caliptra_prim_subreg_shadow #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_cfg_shadowed_en_unsupported_modestrength (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (cfg_shadowed_re),
+ .we (cfg_shadowed_gated_we),
+ .wd (cfg_shadowed_en_unsupported_modestrength_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (cfg_shadowed_flds_we[10]),
+ .q (reg2hw.cfg_shadowed.en_unsupported_modestrength.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (cfg_shadowed_en_unsupported_modestrength_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (cfg_shadowed_en_unsupported_modestrength_update_err),
+ .err_storage (cfg_shadowed_en_unsupported_modestrength_storage_err)
+ );
+ assign reg2hw.cfg_shadowed.en_unsupported_modestrength.qe = cfg_shadowed_qe;
+
+
+ // R[cmd]: V(True)
+ logic cmd_qe;
+ logic [3:0] cmd_flds_we;
+ assign cmd_qe = &cmd_flds_we;
+ // F[cmd]: 5:0
+ caliptra_prim_subreg_ext #(
+ .DW (6)
+ ) u_cmd_cmd (
+ .re (1'b0),
+ .we (cmd_we),
+ .wd (cmd_cmd_wd),
+ .d ('0),
+ .qre (),
+ .qe (cmd_flds_we[0]),
+ .q (reg2hw.cmd.cmd.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.cmd.cmd.qe = cmd_qe;
+
+ // F[entropy_req]: 8:8
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_cmd_entropy_req (
+ .re (1'b0),
+ .we (cmd_we),
+ .wd (cmd_entropy_req_wd),
+ .d ('0),
+ .qre (),
+ .qe (cmd_flds_we[1]),
+ .q (reg2hw.cmd.entropy_req.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.cmd.entropy_req.qe = cmd_qe;
+
+ // F[hash_cnt_clr]: 9:9
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_cmd_hash_cnt_clr (
+ .re (1'b0),
+ .we (cmd_we),
+ .wd (cmd_hash_cnt_clr_wd),
+ .d ('0),
+ .qre (),
+ .qe (cmd_flds_we[2]),
+ .q (reg2hw.cmd.hash_cnt_clr.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.cmd.hash_cnt_clr.qe = cmd_qe;
+
+ // F[err_processed]: 10:10
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_cmd_err_processed (
+ .re (1'b0),
+ .we (cmd_we),
+ .wd (cmd_err_processed_wd),
+ .d ('0),
+ .qre (),
+ .qe (cmd_flds_we[3]),
+ .q (reg2hw.cmd.err_processed.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.cmd.err_processed.qe = cmd_qe;
+
+
+ // R[status]: V(True)
+ // F[sha3_idle]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_sha3_idle (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.sha3_idle.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_sha3_idle_qs)
+ );
+
+ // F[sha3_absorb]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_sha3_absorb (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.sha3_absorb.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_sha3_absorb_qs)
+ );
+
+ // F[sha3_squeeze]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_sha3_squeeze (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.sha3_squeeze.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_sha3_squeeze_qs)
+ );
+
+ // F[fifo_depth]: 12:8
+ caliptra_prim_subreg_ext #(
+ .DW (5)
+ ) u_status_fifo_depth (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.fifo_depth.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_fifo_depth_qs)
+ );
+
+ // F[fifo_empty]: 14:14
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_fifo_empty (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.fifo_empty.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_fifo_empty_qs)
+ );
+
+ // F[fifo_full]: 15:15
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_fifo_full (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.fifo_full.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_fifo_full_qs)
+ );
+
+ // F[alert_fatal_fault]: 16:16
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_alert_fatal_fault (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.alert_fatal_fault.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_alert_fatal_fault_qs)
+ );
+
+ // F[alert_recov_ctrl_update_err]: 17:17
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_alert_recov_ctrl_update_err (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.alert_recov_ctrl_update_err.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_alert_recov_ctrl_update_err_qs)
+ );
+
+
+ // R[entropy_period]: V(False)
+ // Create REGWEN-gated WE signal
+ logic entropy_period_gated_we;
+ assign entropy_period_gated_we = entropy_period_we & cfg_regwen_qs;
+ // F[prescaler]: 9:0
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_entropy_period_prescaler (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (entropy_period_gated_we),
+ .wd (entropy_period_prescaler_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.entropy_period.prescaler.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (entropy_period_prescaler_qs)
+ );
+
+ // F[wait_timer]: 31:16
+ caliptra_prim_subreg #(
+ .DW (16),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (16'h0),
+ .Mubi (1'b0)
+ ) u_entropy_period_wait_timer (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (entropy_period_gated_we),
+ .wd (entropy_period_wait_timer_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.entropy_period.wait_timer.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (entropy_period_wait_timer_qs)
+ );
+
+
+ // R[entropy_refresh_hash_cnt]: V(False)
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_entropy_refresh_hash_cnt (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.entropy_refresh_hash_cnt.de),
+ .d (hw2reg.entropy_refresh_hash_cnt.d),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+ .ds (),
+
+ // to register interface (read)
+ .qs (entropy_refresh_hash_cnt_qs)
+ );
+
+
+ // R[entropy_refresh_threshold_shadowed]: V(False)
+ // Create REGWEN-gated WE signal
+ logic entropy_refresh_threshold_shadowed_gated_we;
+ assign entropy_refresh_threshold_shadowed_gated_we =
+ entropy_refresh_threshold_shadowed_we & cfg_regwen_qs;
+ caliptra_prim_subreg_shadow #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_entropy_refresh_threshold_shadowed (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .rst_shadowed_ni (rst_shadowed_ni),
+
+ // from register interface
+ .re (entropy_refresh_threshold_shadowed_re),
+ .we (entropy_refresh_threshold_shadowed_gated_we),
+ .wd (entropy_refresh_threshold_shadowed_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.entropy_refresh_threshold_shadowed.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (entropy_refresh_threshold_shadowed_qs),
+
+ // Shadow register phase. Relevant for hwext only.
+ .phase (),
+
+ // Shadow register error conditions
+ .err_update (entropy_refresh_threshold_shadowed_update_err),
+ .err_storage (entropy_refresh_threshold_shadowed_storage_err)
+ );
+
+
+ // R[entropy_seed]: V(True)
+ logic entropy_seed_qe;
+ logic [0:0] entropy_seed_flds_we;
+ assign entropy_seed_qe = &entropy_seed_flds_we;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_entropy_seed (
+ .re (1'b0),
+ .we (entropy_seed_we),
+ .wd (entropy_seed_wd),
+ .d ('0),
+ .qre (),
+ .qe (entropy_seed_flds_we[0]),
+ .q (reg2hw.entropy_seed.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.entropy_seed.qe = entropy_seed_qe;
+
+
+ // Subregister 0 of Multireg key_share0
+ // R[key_share0_0]: V(True)
+ logic key_share0_0_qe;
+ logic [0:0] key_share0_0_flds_we;
+ assign key_share0_0_qe = &key_share0_0_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_0_gated_we;
+ assign key_share0_0_gated_we = key_share0_0_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_0 (
+ .re (1'b0),
+ .we (key_share0_0_gated_we),
+ .wd (key_share0_0_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_0_flds_we[0]),
+ .q (reg2hw.key_share0[0].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[0].qe = key_share0_0_qe;
+
+
+ // Subregister 1 of Multireg key_share0
+ // R[key_share0_1]: V(True)
+ logic key_share0_1_qe;
+ logic [0:0] key_share0_1_flds_we;
+ assign key_share0_1_qe = &key_share0_1_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_1_gated_we;
+ assign key_share0_1_gated_we = key_share0_1_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_1 (
+ .re (1'b0),
+ .we (key_share0_1_gated_we),
+ .wd (key_share0_1_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_1_flds_we[0]),
+ .q (reg2hw.key_share0[1].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[1].qe = key_share0_1_qe;
+
+
+ // Subregister 2 of Multireg key_share0
+ // R[key_share0_2]: V(True)
+ logic key_share0_2_qe;
+ logic [0:0] key_share0_2_flds_we;
+ assign key_share0_2_qe = &key_share0_2_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_2_gated_we;
+ assign key_share0_2_gated_we = key_share0_2_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_2 (
+ .re (1'b0),
+ .we (key_share0_2_gated_we),
+ .wd (key_share0_2_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_2_flds_we[0]),
+ .q (reg2hw.key_share0[2].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[2].qe = key_share0_2_qe;
+
+
+ // Subregister 3 of Multireg key_share0
+ // R[key_share0_3]: V(True)
+ logic key_share0_3_qe;
+ logic [0:0] key_share0_3_flds_we;
+ assign key_share0_3_qe = &key_share0_3_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_3_gated_we;
+ assign key_share0_3_gated_we = key_share0_3_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_3 (
+ .re (1'b0),
+ .we (key_share0_3_gated_we),
+ .wd (key_share0_3_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_3_flds_we[0]),
+ .q (reg2hw.key_share0[3].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[3].qe = key_share0_3_qe;
+
+
+ // Subregister 4 of Multireg key_share0
+ // R[key_share0_4]: V(True)
+ logic key_share0_4_qe;
+ logic [0:0] key_share0_4_flds_we;
+ assign key_share0_4_qe = &key_share0_4_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_4_gated_we;
+ assign key_share0_4_gated_we = key_share0_4_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_4 (
+ .re (1'b0),
+ .we (key_share0_4_gated_we),
+ .wd (key_share0_4_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_4_flds_we[0]),
+ .q (reg2hw.key_share0[4].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[4].qe = key_share0_4_qe;
+
+
+ // Subregister 5 of Multireg key_share0
+ // R[key_share0_5]: V(True)
+ logic key_share0_5_qe;
+ logic [0:0] key_share0_5_flds_we;
+ assign key_share0_5_qe = &key_share0_5_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_5_gated_we;
+ assign key_share0_5_gated_we = key_share0_5_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_5 (
+ .re (1'b0),
+ .we (key_share0_5_gated_we),
+ .wd (key_share0_5_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_5_flds_we[0]),
+ .q (reg2hw.key_share0[5].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[5].qe = key_share0_5_qe;
+
+
+ // Subregister 6 of Multireg key_share0
+ // R[key_share0_6]: V(True)
+ logic key_share0_6_qe;
+ logic [0:0] key_share0_6_flds_we;
+ assign key_share0_6_qe = &key_share0_6_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_6_gated_we;
+ assign key_share0_6_gated_we = key_share0_6_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_6 (
+ .re (1'b0),
+ .we (key_share0_6_gated_we),
+ .wd (key_share0_6_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_6_flds_we[0]),
+ .q (reg2hw.key_share0[6].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[6].qe = key_share0_6_qe;
+
+
+ // Subregister 7 of Multireg key_share0
+ // R[key_share0_7]: V(True)
+ logic key_share0_7_qe;
+ logic [0:0] key_share0_7_flds_we;
+ assign key_share0_7_qe = &key_share0_7_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_7_gated_we;
+ assign key_share0_7_gated_we = key_share0_7_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_7 (
+ .re (1'b0),
+ .we (key_share0_7_gated_we),
+ .wd (key_share0_7_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_7_flds_we[0]),
+ .q (reg2hw.key_share0[7].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[7].qe = key_share0_7_qe;
+
+
+ // Subregister 8 of Multireg key_share0
+ // R[key_share0_8]: V(True)
+ logic key_share0_8_qe;
+ logic [0:0] key_share0_8_flds_we;
+ assign key_share0_8_qe = &key_share0_8_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_8_gated_we;
+ assign key_share0_8_gated_we = key_share0_8_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_8 (
+ .re (1'b0),
+ .we (key_share0_8_gated_we),
+ .wd (key_share0_8_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_8_flds_we[0]),
+ .q (reg2hw.key_share0[8].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[8].qe = key_share0_8_qe;
+
+
+ // Subregister 9 of Multireg key_share0
+ // R[key_share0_9]: V(True)
+ logic key_share0_9_qe;
+ logic [0:0] key_share0_9_flds_we;
+ assign key_share0_9_qe = &key_share0_9_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_9_gated_we;
+ assign key_share0_9_gated_we = key_share0_9_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_9 (
+ .re (1'b0),
+ .we (key_share0_9_gated_we),
+ .wd (key_share0_9_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_9_flds_we[0]),
+ .q (reg2hw.key_share0[9].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[9].qe = key_share0_9_qe;
+
+
+ // Subregister 10 of Multireg key_share0
+ // R[key_share0_10]: V(True)
+ logic key_share0_10_qe;
+ logic [0:0] key_share0_10_flds_we;
+ assign key_share0_10_qe = &key_share0_10_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_10_gated_we;
+ assign key_share0_10_gated_we = key_share0_10_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_10 (
+ .re (1'b0),
+ .we (key_share0_10_gated_we),
+ .wd (key_share0_10_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_10_flds_we[0]),
+ .q (reg2hw.key_share0[10].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[10].qe = key_share0_10_qe;
+
+
+ // Subregister 11 of Multireg key_share0
+ // R[key_share0_11]: V(True)
+ logic key_share0_11_qe;
+ logic [0:0] key_share0_11_flds_we;
+ assign key_share0_11_qe = &key_share0_11_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_11_gated_we;
+ assign key_share0_11_gated_we = key_share0_11_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_11 (
+ .re (1'b0),
+ .we (key_share0_11_gated_we),
+ .wd (key_share0_11_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_11_flds_we[0]),
+ .q (reg2hw.key_share0[11].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[11].qe = key_share0_11_qe;
+
+
+ // Subregister 12 of Multireg key_share0
+ // R[key_share0_12]: V(True)
+ logic key_share0_12_qe;
+ logic [0:0] key_share0_12_flds_we;
+ assign key_share0_12_qe = &key_share0_12_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_12_gated_we;
+ assign key_share0_12_gated_we = key_share0_12_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_12 (
+ .re (1'b0),
+ .we (key_share0_12_gated_we),
+ .wd (key_share0_12_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_12_flds_we[0]),
+ .q (reg2hw.key_share0[12].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[12].qe = key_share0_12_qe;
+
+
+ // Subregister 13 of Multireg key_share0
+ // R[key_share0_13]: V(True)
+ logic key_share0_13_qe;
+ logic [0:0] key_share0_13_flds_we;
+ assign key_share0_13_qe = &key_share0_13_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_13_gated_we;
+ assign key_share0_13_gated_we = key_share0_13_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_13 (
+ .re (1'b0),
+ .we (key_share0_13_gated_we),
+ .wd (key_share0_13_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_13_flds_we[0]),
+ .q (reg2hw.key_share0[13].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[13].qe = key_share0_13_qe;
+
+
+ // Subregister 14 of Multireg key_share0
+ // R[key_share0_14]: V(True)
+ logic key_share0_14_qe;
+ logic [0:0] key_share0_14_flds_we;
+ assign key_share0_14_qe = &key_share0_14_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_14_gated_we;
+ assign key_share0_14_gated_we = key_share0_14_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_14 (
+ .re (1'b0),
+ .we (key_share0_14_gated_we),
+ .wd (key_share0_14_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_14_flds_we[0]),
+ .q (reg2hw.key_share0[14].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[14].qe = key_share0_14_qe;
+
+
+ // Subregister 15 of Multireg key_share0
+ // R[key_share0_15]: V(True)
+ logic key_share0_15_qe;
+ logic [0:0] key_share0_15_flds_we;
+ assign key_share0_15_qe = &key_share0_15_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share0_15_gated_we;
+ assign key_share0_15_gated_we = key_share0_15_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share0_15 (
+ .re (1'b0),
+ .we (key_share0_15_gated_we),
+ .wd (key_share0_15_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share0_15_flds_we[0]),
+ .q (reg2hw.key_share0[15].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share0[15].qe = key_share0_15_qe;
+
+
+ // Subregister 0 of Multireg key_share1
+ // R[key_share1_0]: V(True)
+ logic key_share1_0_qe;
+ logic [0:0] key_share1_0_flds_we;
+ assign key_share1_0_qe = &key_share1_0_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_0_gated_we;
+ assign key_share1_0_gated_we = key_share1_0_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_0 (
+ .re (1'b0),
+ .we (key_share1_0_gated_we),
+ .wd (key_share1_0_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_0_flds_we[0]),
+ .q (reg2hw.key_share1[0].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[0].qe = key_share1_0_qe;
+
+
+ // Subregister 1 of Multireg key_share1
+ // R[key_share1_1]: V(True)
+ logic key_share1_1_qe;
+ logic [0:0] key_share1_1_flds_we;
+ assign key_share1_1_qe = &key_share1_1_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_1_gated_we;
+ assign key_share1_1_gated_we = key_share1_1_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_1 (
+ .re (1'b0),
+ .we (key_share1_1_gated_we),
+ .wd (key_share1_1_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_1_flds_we[0]),
+ .q (reg2hw.key_share1[1].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[1].qe = key_share1_1_qe;
+
+
+ // Subregister 2 of Multireg key_share1
+ // R[key_share1_2]: V(True)
+ logic key_share1_2_qe;
+ logic [0:0] key_share1_2_flds_we;
+ assign key_share1_2_qe = &key_share1_2_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_2_gated_we;
+ assign key_share1_2_gated_we = key_share1_2_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_2 (
+ .re (1'b0),
+ .we (key_share1_2_gated_we),
+ .wd (key_share1_2_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_2_flds_we[0]),
+ .q (reg2hw.key_share1[2].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[2].qe = key_share1_2_qe;
+
+
+ // Subregister 3 of Multireg key_share1
+ // R[key_share1_3]: V(True)
+ logic key_share1_3_qe;
+ logic [0:0] key_share1_3_flds_we;
+ assign key_share1_3_qe = &key_share1_3_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_3_gated_we;
+ assign key_share1_3_gated_we = key_share1_3_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_3 (
+ .re (1'b0),
+ .we (key_share1_3_gated_we),
+ .wd (key_share1_3_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_3_flds_we[0]),
+ .q (reg2hw.key_share1[3].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[3].qe = key_share1_3_qe;
+
+
+ // Subregister 4 of Multireg key_share1
+ // R[key_share1_4]: V(True)
+ logic key_share1_4_qe;
+ logic [0:0] key_share1_4_flds_we;
+ assign key_share1_4_qe = &key_share1_4_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_4_gated_we;
+ assign key_share1_4_gated_we = key_share1_4_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_4 (
+ .re (1'b0),
+ .we (key_share1_4_gated_we),
+ .wd (key_share1_4_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_4_flds_we[0]),
+ .q (reg2hw.key_share1[4].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[4].qe = key_share1_4_qe;
+
+
+ // Subregister 5 of Multireg key_share1
+ // R[key_share1_5]: V(True)
+ logic key_share1_5_qe;
+ logic [0:0] key_share1_5_flds_we;
+ assign key_share1_5_qe = &key_share1_5_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_5_gated_we;
+ assign key_share1_5_gated_we = key_share1_5_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_5 (
+ .re (1'b0),
+ .we (key_share1_5_gated_we),
+ .wd (key_share1_5_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_5_flds_we[0]),
+ .q (reg2hw.key_share1[5].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[5].qe = key_share1_5_qe;
+
+
+ // Subregister 6 of Multireg key_share1
+ // R[key_share1_6]: V(True)
+ logic key_share1_6_qe;
+ logic [0:0] key_share1_6_flds_we;
+ assign key_share1_6_qe = &key_share1_6_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_6_gated_we;
+ assign key_share1_6_gated_we = key_share1_6_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_6 (
+ .re (1'b0),
+ .we (key_share1_6_gated_we),
+ .wd (key_share1_6_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_6_flds_we[0]),
+ .q (reg2hw.key_share1[6].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[6].qe = key_share1_6_qe;
+
+
+ // Subregister 7 of Multireg key_share1
+ // R[key_share1_7]: V(True)
+ logic key_share1_7_qe;
+ logic [0:0] key_share1_7_flds_we;
+ assign key_share1_7_qe = &key_share1_7_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_7_gated_we;
+ assign key_share1_7_gated_we = key_share1_7_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_7 (
+ .re (1'b0),
+ .we (key_share1_7_gated_we),
+ .wd (key_share1_7_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_7_flds_we[0]),
+ .q (reg2hw.key_share1[7].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[7].qe = key_share1_7_qe;
+
+
+ // Subregister 8 of Multireg key_share1
+ // R[key_share1_8]: V(True)
+ logic key_share1_8_qe;
+ logic [0:0] key_share1_8_flds_we;
+ assign key_share1_8_qe = &key_share1_8_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_8_gated_we;
+ assign key_share1_8_gated_we = key_share1_8_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_8 (
+ .re (1'b0),
+ .we (key_share1_8_gated_we),
+ .wd (key_share1_8_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_8_flds_we[0]),
+ .q (reg2hw.key_share1[8].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[8].qe = key_share1_8_qe;
+
+
+ // Subregister 9 of Multireg key_share1
+ // R[key_share1_9]: V(True)
+ logic key_share1_9_qe;
+ logic [0:0] key_share1_9_flds_we;
+ assign key_share1_9_qe = &key_share1_9_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_9_gated_we;
+ assign key_share1_9_gated_we = key_share1_9_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_9 (
+ .re (1'b0),
+ .we (key_share1_9_gated_we),
+ .wd (key_share1_9_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_9_flds_we[0]),
+ .q (reg2hw.key_share1[9].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[9].qe = key_share1_9_qe;
+
+
+ // Subregister 10 of Multireg key_share1
+ // R[key_share1_10]: V(True)
+ logic key_share1_10_qe;
+ logic [0:0] key_share1_10_flds_we;
+ assign key_share1_10_qe = &key_share1_10_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_10_gated_we;
+ assign key_share1_10_gated_we = key_share1_10_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_10 (
+ .re (1'b0),
+ .we (key_share1_10_gated_we),
+ .wd (key_share1_10_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_10_flds_we[0]),
+ .q (reg2hw.key_share1[10].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[10].qe = key_share1_10_qe;
+
+
+ // Subregister 11 of Multireg key_share1
+ // R[key_share1_11]: V(True)
+ logic key_share1_11_qe;
+ logic [0:0] key_share1_11_flds_we;
+ assign key_share1_11_qe = &key_share1_11_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_11_gated_we;
+ assign key_share1_11_gated_we = key_share1_11_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_11 (
+ .re (1'b0),
+ .we (key_share1_11_gated_we),
+ .wd (key_share1_11_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_11_flds_we[0]),
+ .q (reg2hw.key_share1[11].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[11].qe = key_share1_11_qe;
+
+
+ // Subregister 12 of Multireg key_share1
+ // R[key_share1_12]: V(True)
+ logic key_share1_12_qe;
+ logic [0:0] key_share1_12_flds_we;
+ assign key_share1_12_qe = &key_share1_12_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_12_gated_we;
+ assign key_share1_12_gated_we = key_share1_12_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_12 (
+ .re (1'b0),
+ .we (key_share1_12_gated_we),
+ .wd (key_share1_12_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_12_flds_we[0]),
+ .q (reg2hw.key_share1[12].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[12].qe = key_share1_12_qe;
+
+
+ // Subregister 13 of Multireg key_share1
+ // R[key_share1_13]: V(True)
+ logic key_share1_13_qe;
+ logic [0:0] key_share1_13_flds_we;
+ assign key_share1_13_qe = &key_share1_13_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_13_gated_we;
+ assign key_share1_13_gated_we = key_share1_13_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_13 (
+ .re (1'b0),
+ .we (key_share1_13_gated_we),
+ .wd (key_share1_13_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_13_flds_we[0]),
+ .q (reg2hw.key_share1[13].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[13].qe = key_share1_13_qe;
+
+
+ // Subregister 14 of Multireg key_share1
+ // R[key_share1_14]: V(True)
+ logic key_share1_14_qe;
+ logic [0:0] key_share1_14_flds_we;
+ assign key_share1_14_qe = &key_share1_14_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_14_gated_we;
+ assign key_share1_14_gated_we = key_share1_14_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_14 (
+ .re (1'b0),
+ .we (key_share1_14_gated_we),
+ .wd (key_share1_14_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_14_flds_we[0]),
+ .q (reg2hw.key_share1[14].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[14].qe = key_share1_14_qe;
+
+
+ // Subregister 15 of Multireg key_share1
+ // R[key_share1_15]: V(True)
+ logic key_share1_15_qe;
+ logic [0:0] key_share1_15_flds_we;
+ assign key_share1_15_qe = &key_share1_15_flds_we;
+ // Create REGWEN-gated WE signal
+ logic key_share1_15_gated_we;
+ assign key_share1_15_gated_we = key_share1_15_we & cfg_regwen_qs;
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_key_share1_15 (
+ .re (1'b0),
+ .we (key_share1_15_gated_we),
+ .wd (key_share1_15_wd),
+ .d ('0),
+ .qre (),
+ .qe (key_share1_15_flds_we[0]),
+ .q (reg2hw.key_share1[15].q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.key_share1[15].qe = key_share1_15_qe;
+
+
+ // R[key_len]: V(False)
+ // Create REGWEN-gated WE signal
+ logic key_len_gated_we;
+ assign key_len_gated_we = key_len_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (3),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessWO),
+ .RESVAL (3'h0),
+ .Mubi (1'b0)
+ ) u_key_len (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (key_len_gated_we),
+ .wd (key_len_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.key_len.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs ()
+ );
+
+
+ // Subregister 0 of Multireg prefix
+ // R[prefix_0]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_0_gated_we;
+ assign prefix_0_gated_we = prefix_0_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_0_gated_we),
+ .wd (prefix_0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[0].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg prefix
+ // R[prefix_1]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_1_gated_we;
+ assign prefix_1_gated_we = prefix_1_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_1_gated_we),
+ .wd (prefix_1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[1].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_1_qs)
+ );
+
+
+ // Subregister 2 of Multireg prefix
+ // R[prefix_2]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_2_gated_we;
+ assign prefix_2_gated_we = prefix_2_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_2_gated_we),
+ .wd (prefix_2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[2].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_2_qs)
+ );
+
+
+ // Subregister 3 of Multireg prefix
+ // R[prefix_3]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_3_gated_we;
+ assign prefix_3_gated_we = prefix_3_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_3_gated_we),
+ .wd (prefix_3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[3].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_3_qs)
+ );
+
+
+ // Subregister 4 of Multireg prefix
+ // R[prefix_4]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_4_gated_we;
+ assign prefix_4_gated_we = prefix_4_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_4_gated_we),
+ .wd (prefix_4_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[4].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_4_qs)
+ );
+
+
+ // Subregister 5 of Multireg prefix
+ // R[prefix_5]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_5_gated_we;
+ assign prefix_5_gated_we = prefix_5_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_5 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_5_gated_we),
+ .wd (prefix_5_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[5].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_5_qs)
+ );
+
+
+ // Subregister 6 of Multireg prefix
+ // R[prefix_6]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_6_gated_we;
+ assign prefix_6_gated_we = prefix_6_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_6 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_6_gated_we),
+ .wd (prefix_6_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[6].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_6_qs)
+ );
+
+
+ // Subregister 7 of Multireg prefix
+ // R[prefix_7]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_7_gated_we;
+ assign prefix_7_gated_we = prefix_7_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_7 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_7_gated_we),
+ .wd (prefix_7_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[7].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_7_qs)
+ );
+
+
+ // Subregister 8 of Multireg prefix
+ // R[prefix_8]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_8_gated_we;
+ assign prefix_8_gated_we = prefix_8_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_8 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_8_gated_we),
+ .wd (prefix_8_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[8].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_8_qs)
+ );
+
+
+ // Subregister 9 of Multireg prefix
+ // R[prefix_9]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_9_gated_we;
+ assign prefix_9_gated_we = prefix_9_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_9 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_9_gated_we),
+ .wd (prefix_9_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[9].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_9_qs)
+ );
+
+
+ // Subregister 10 of Multireg prefix
+ // R[prefix_10]: V(False)
+ // Create REGWEN-gated WE signal
+ logic prefix_10_gated_we;
+ assign prefix_10_gated_we = prefix_10_we & cfg_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_prefix_10 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (prefix_10_gated_we),
+ .wd (prefix_10_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.prefix[10].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (prefix_10_qs)
+ );
+
+
+ // R[err_code]: V(False)
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_err_code (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.err_code.de),
+ .d (hw2reg.err_code.d),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+ .ds (),
+
+ // to register interface (read)
+ .qs (err_code_qs)
+ );
+
+
+
+ logic [56:0] addr_hit;
+ always_comb begin
+ addr_hit = '0;
+ addr_hit[ 0] = (reg_addr == KMAC_INTR_STATE_OFFSET);
+ addr_hit[ 1] = (reg_addr == KMAC_INTR_ENABLE_OFFSET);
+ addr_hit[ 2] = (reg_addr == KMAC_INTR_TEST_OFFSET);
+ addr_hit[ 3] = (reg_addr == KMAC_ALERT_TEST_OFFSET);
+ addr_hit[ 4] = (reg_addr == KMAC_CFG_REGWEN_OFFSET);
+ addr_hit[ 5] = (reg_addr == KMAC_CFG_SHADOWED_OFFSET);
+ addr_hit[ 6] = (reg_addr == KMAC_CMD_OFFSET);
+ addr_hit[ 7] = (reg_addr == KMAC_STATUS_OFFSET);
+ addr_hit[ 8] = (reg_addr == KMAC_ENTROPY_PERIOD_OFFSET);
+ addr_hit[ 9] = (reg_addr == KMAC_ENTROPY_REFRESH_HASH_CNT_OFFSET);
+ addr_hit[10] = (reg_addr == KMAC_ENTROPY_REFRESH_THRESHOLD_SHADOWED_OFFSET);
+ addr_hit[11] = (reg_addr == KMAC_ENTROPY_SEED_OFFSET);
+ addr_hit[12] = (reg_addr == KMAC_KEY_SHARE0_0_OFFSET);
+ addr_hit[13] = (reg_addr == KMAC_KEY_SHARE0_1_OFFSET);
+ addr_hit[14] = (reg_addr == KMAC_KEY_SHARE0_2_OFFSET);
+ addr_hit[15] = (reg_addr == KMAC_KEY_SHARE0_3_OFFSET);
+ addr_hit[16] = (reg_addr == KMAC_KEY_SHARE0_4_OFFSET);
+ addr_hit[17] = (reg_addr == KMAC_KEY_SHARE0_5_OFFSET);
+ addr_hit[18] = (reg_addr == KMAC_KEY_SHARE0_6_OFFSET);
+ addr_hit[19] = (reg_addr == KMAC_KEY_SHARE0_7_OFFSET);
+ addr_hit[20] = (reg_addr == KMAC_KEY_SHARE0_8_OFFSET);
+ addr_hit[21] = (reg_addr == KMAC_KEY_SHARE0_9_OFFSET);
+ addr_hit[22] = (reg_addr == KMAC_KEY_SHARE0_10_OFFSET);
+ addr_hit[23] = (reg_addr == KMAC_KEY_SHARE0_11_OFFSET);
+ addr_hit[24] = (reg_addr == KMAC_KEY_SHARE0_12_OFFSET);
+ addr_hit[25] = (reg_addr == KMAC_KEY_SHARE0_13_OFFSET);
+ addr_hit[26] = (reg_addr == KMAC_KEY_SHARE0_14_OFFSET);
+ addr_hit[27] = (reg_addr == KMAC_KEY_SHARE0_15_OFFSET);
+ addr_hit[28] = (reg_addr == KMAC_KEY_SHARE1_0_OFFSET);
+ addr_hit[29] = (reg_addr == KMAC_KEY_SHARE1_1_OFFSET);
+ addr_hit[30] = (reg_addr == KMAC_KEY_SHARE1_2_OFFSET);
+ addr_hit[31] = (reg_addr == KMAC_KEY_SHARE1_3_OFFSET);
+ addr_hit[32] = (reg_addr == KMAC_KEY_SHARE1_4_OFFSET);
+ addr_hit[33] = (reg_addr == KMAC_KEY_SHARE1_5_OFFSET);
+ addr_hit[34] = (reg_addr == KMAC_KEY_SHARE1_6_OFFSET);
+ addr_hit[35] = (reg_addr == KMAC_KEY_SHARE1_7_OFFSET);
+ addr_hit[36] = (reg_addr == KMAC_KEY_SHARE1_8_OFFSET);
+ addr_hit[37] = (reg_addr == KMAC_KEY_SHARE1_9_OFFSET);
+ addr_hit[38] = (reg_addr == KMAC_KEY_SHARE1_10_OFFSET);
+ addr_hit[39] = (reg_addr == KMAC_KEY_SHARE1_11_OFFSET);
+ addr_hit[40] = (reg_addr == KMAC_KEY_SHARE1_12_OFFSET);
+ addr_hit[41] = (reg_addr == KMAC_KEY_SHARE1_13_OFFSET);
+ addr_hit[42] = (reg_addr == KMAC_KEY_SHARE1_14_OFFSET);
+ addr_hit[43] = (reg_addr == KMAC_KEY_SHARE1_15_OFFSET);
+ addr_hit[44] = (reg_addr == KMAC_KEY_LEN_OFFSET);
+ addr_hit[45] = (reg_addr == KMAC_PREFIX_0_OFFSET);
+ addr_hit[46] = (reg_addr == KMAC_PREFIX_1_OFFSET);
+ addr_hit[47] = (reg_addr == KMAC_PREFIX_2_OFFSET);
+ addr_hit[48] = (reg_addr == KMAC_PREFIX_3_OFFSET);
+ addr_hit[49] = (reg_addr == KMAC_PREFIX_4_OFFSET);
+ addr_hit[50] = (reg_addr == KMAC_PREFIX_5_OFFSET);
+ addr_hit[51] = (reg_addr == KMAC_PREFIX_6_OFFSET);
+ addr_hit[52] = (reg_addr == KMAC_PREFIX_7_OFFSET);
+ addr_hit[53] = (reg_addr == KMAC_PREFIX_8_OFFSET);
+ addr_hit[54] = (reg_addr == KMAC_PREFIX_9_OFFSET);
+ addr_hit[55] = (reg_addr == KMAC_PREFIX_10_OFFSET);
+ addr_hit[56] = (reg_addr == KMAC_ERR_CODE_OFFSET);
+ end
+
+ assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
+
+ // Check sub-word write is permitted
+ always_comb begin
+ wr_err = (reg_we &
+ ((addr_hit[ 0] & (|(KMAC_PERMIT[ 0] & ~reg_be))) |
+ (addr_hit[ 1] & (|(KMAC_PERMIT[ 1] & ~reg_be))) |
+ (addr_hit[ 2] & (|(KMAC_PERMIT[ 2] & ~reg_be))) |
+ (addr_hit[ 3] & (|(KMAC_PERMIT[ 3] & ~reg_be))) |
+ (addr_hit[ 4] & (|(KMAC_PERMIT[ 4] & ~reg_be))) |
+ (addr_hit[ 5] & (|(KMAC_PERMIT[ 5] & ~reg_be))) |
+ (addr_hit[ 6] & (|(KMAC_PERMIT[ 6] & ~reg_be))) |
+ (addr_hit[ 7] & (|(KMAC_PERMIT[ 7] & ~reg_be))) |
+ (addr_hit[ 8] & (|(KMAC_PERMIT[ 8] & ~reg_be))) |
+ (addr_hit[ 9] & (|(KMAC_PERMIT[ 9] & ~reg_be))) |
+ (addr_hit[10] & (|(KMAC_PERMIT[10] & ~reg_be))) |
+ (addr_hit[11] & (|(KMAC_PERMIT[11] & ~reg_be))) |
+ (addr_hit[12] & (|(KMAC_PERMIT[12] & ~reg_be))) |
+ (addr_hit[13] & (|(KMAC_PERMIT[13] & ~reg_be))) |
+ (addr_hit[14] & (|(KMAC_PERMIT[14] & ~reg_be))) |
+ (addr_hit[15] & (|(KMAC_PERMIT[15] & ~reg_be))) |
+ (addr_hit[16] & (|(KMAC_PERMIT[16] & ~reg_be))) |
+ (addr_hit[17] & (|(KMAC_PERMIT[17] & ~reg_be))) |
+ (addr_hit[18] & (|(KMAC_PERMIT[18] & ~reg_be))) |
+ (addr_hit[19] & (|(KMAC_PERMIT[19] & ~reg_be))) |
+ (addr_hit[20] & (|(KMAC_PERMIT[20] & ~reg_be))) |
+ (addr_hit[21] & (|(KMAC_PERMIT[21] & ~reg_be))) |
+ (addr_hit[22] & (|(KMAC_PERMIT[22] & ~reg_be))) |
+ (addr_hit[23] & (|(KMAC_PERMIT[23] & ~reg_be))) |
+ (addr_hit[24] & (|(KMAC_PERMIT[24] & ~reg_be))) |
+ (addr_hit[25] & (|(KMAC_PERMIT[25] & ~reg_be))) |
+ (addr_hit[26] & (|(KMAC_PERMIT[26] & ~reg_be))) |
+ (addr_hit[27] & (|(KMAC_PERMIT[27] & ~reg_be))) |
+ (addr_hit[28] & (|(KMAC_PERMIT[28] & ~reg_be))) |
+ (addr_hit[29] & (|(KMAC_PERMIT[29] & ~reg_be))) |
+ (addr_hit[30] & (|(KMAC_PERMIT[30] & ~reg_be))) |
+ (addr_hit[31] & (|(KMAC_PERMIT[31] & ~reg_be))) |
+ (addr_hit[32] & (|(KMAC_PERMIT[32] & ~reg_be))) |
+ (addr_hit[33] & (|(KMAC_PERMIT[33] & ~reg_be))) |
+ (addr_hit[34] & (|(KMAC_PERMIT[34] & ~reg_be))) |
+ (addr_hit[35] & (|(KMAC_PERMIT[35] & ~reg_be))) |
+ (addr_hit[36] & (|(KMAC_PERMIT[36] & ~reg_be))) |
+ (addr_hit[37] & (|(KMAC_PERMIT[37] & ~reg_be))) |
+ (addr_hit[38] & (|(KMAC_PERMIT[38] & ~reg_be))) |
+ (addr_hit[39] & (|(KMAC_PERMIT[39] & ~reg_be))) |
+ (addr_hit[40] & (|(KMAC_PERMIT[40] & ~reg_be))) |
+ (addr_hit[41] & (|(KMAC_PERMIT[41] & ~reg_be))) |
+ (addr_hit[42] & (|(KMAC_PERMIT[42] & ~reg_be))) |
+ (addr_hit[43] & (|(KMAC_PERMIT[43] & ~reg_be))) |
+ (addr_hit[44] & (|(KMAC_PERMIT[44] & ~reg_be))) |
+ (addr_hit[45] & (|(KMAC_PERMIT[45] & ~reg_be))) |
+ (addr_hit[46] & (|(KMAC_PERMIT[46] & ~reg_be))) |
+ (addr_hit[47] & (|(KMAC_PERMIT[47] & ~reg_be))) |
+ (addr_hit[48] & (|(KMAC_PERMIT[48] & ~reg_be))) |
+ (addr_hit[49] & (|(KMAC_PERMIT[49] & ~reg_be))) |
+ (addr_hit[50] & (|(KMAC_PERMIT[50] & ~reg_be))) |
+ (addr_hit[51] & (|(KMAC_PERMIT[51] & ~reg_be))) |
+ (addr_hit[52] & (|(KMAC_PERMIT[52] & ~reg_be))) |
+ (addr_hit[53] & (|(KMAC_PERMIT[53] & ~reg_be))) |
+ (addr_hit[54] & (|(KMAC_PERMIT[54] & ~reg_be))) |
+ (addr_hit[55] & (|(KMAC_PERMIT[55] & ~reg_be))) |
+ (addr_hit[56] & (|(KMAC_PERMIT[56] & ~reg_be)))));
+ end
+
+ // Generate write-enables
+ assign intr_state_we = addr_hit[0] & reg_we & !reg_error;
+
+ assign intr_state_kmac_done_wd = reg_wdata[0];
+
+ assign intr_state_kmac_err_wd = reg_wdata[2];
+ assign intr_enable_we = addr_hit[1] & reg_we & !reg_error;
+
+ assign intr_enable_kmac_done_wd = reg_wdata[0];
+
+ assign intr_enable_fifo_empty_wd = reg_wdata[1];
+
+ assign intr_enable_kmac_err_wd = reg_wdata[2];
+ assign intr_test_we = addr_hit[2] & reg_we & !reg_error;
+
+ assign intr_test_kmac_done_wd = reg_wdata[0];
+
+ assign intr_test_fifo_empty_wd = reg_wdata[1];
+
+ assign intr_test_kmac_err_wd = reg_wdata[2];
+ assign alert_test_we = addr_hit[3] & reg_we & !reg_error;
+
+ assign alert_test_recov_operation_err_wd = reg_wdata[0];
+
+ assign alert_test_fatal_fault_err_wd = reg_wdata[1];
+ assign cfg_regwen_re = addr_hit[4] & reg_re & !reg_error;
+ assign cfg_shadowed_re = addr_hit[5] & reg_re & !reg_error;
+ assign cfg_shadowed_we = addr_hit[5] & reg_we & !reg_error;
+
+ assign cfg_shadowed_kmac_en_wd = reg_wdata[0];
+
+ assign cfg_shadowed_kstrength_wd = reg_wdata[3:1];
+
+ assign cfg_shadowed_mode_wd = reg_wdata[5:4];
+
+ assign cfg_shadowed_msg_endianness_wd = reg_wdata[8];
+
+ assign cfg_shadowed_state_endianness_wd = reg_wdata[9];
+
+ assign cfg_shadowed_sideload_wd = reg_wdata[12];
+
+ assign cfg_shadowed_entropy_mode_wd = reg_wdata[17:16];
+
+ assign cfg_shadowed_entropy_fast_process_wd = reg_wdata[19];
+
+ assign cfg_shadowed_msg_mask_wd = reg_wdata[20];
+
+ assign cfg_shadowed_entropy_ready_wd = reg_wdata[24];
+
+ assign cfg_shadowed_en_unsupported_modestrength_wd = reg_wdata[26];
+ assign cmd_we = addr_hit[6] & reg_we & !reg_error;
+
+ assign cmd_cmd_wd = reg_wdata[5:0];
+
+ assign cmd_entropy_req_wd = reg_wdata[8];
+
+ assign cmd_hash_cnt_clr_wd = reg_wdata[9];
+
+ assign cmd_err_processed_wd = reg_wdata[10];
+ assign status_re = addr_hit[7] & reg_re & !reg_error;
+ assign entropy_period_we = addr_hit[8] & reg_we & !reg_error;
+
+ assign entropy_period_prescaler_wd = reg_wdata[9:0];
+
+ assign entropy_period_wait_timer_wd = reg_wdata[31:16];
+ assign entropy_refresh_threshold_shadowed_re = addr_hit[10] & reg_re & !reg_error;
+ assign entropy_refresh_threshold_shadowed_we = addr_hit[10] & reg_we & !reg_error;
+
+ assign entropy_refresh_threshold_shadowed_wd = reg_wdata[9:0];
+ assign entropy_seed_we = addr_hit[11] & reg_we & !reg_error;
+
+ assign entropy_seed_wd = reg_wdata[31:0];
+ assign key_share0_0_we = addr_hit[12] & reg_we & !reg_error;
+
+ assign key_share0_0_wd = reg_wdata[31:0];
+ assign key_share0_1_we = addr_hit[13] & reg_we & !reg_error;
+
+ assign key_share0_1_wd = reg_wdata[31:0];
+ assign key_share0_2_we = addr_hit[14] & reg_we & !reg_error;
+
+ assign key_share0_2_wd = reg_wdata[31:0];
+ assign key_share0_3_we = addr_hit[15] & reg_we & !reg_error;
+
+ assign key_share0_3_wd = reg_wdata[31:0];
+ assign key_share0_4_we = addr_hit[16] & reg_we & !reg_error;
+
+ assign key_share0_4_wd = reg_wdata[31:0];
+ assign key_share0_5_we = addr_hit[17] & reg_we & !reg_error;
+
+ assign key_share0_5_wd = reg_wdata[31:0];
+ assign key_share0_6_we = addr_hit[18] & reg_we & !reg_error;
+
+ assign key_share0_6_wd = reg_wdata[31:0];
+ assign key_share0_7_we = addr_hit[19] & reg_we & !reg_error;
+
+ assign key_share0_7_wd = reg_wdata[31:0];
+ assign key_share0_8_we = addr_hit[20] & reg_we & !reg_error;
+
+ assign key_share0_8_wd = reg_wdata[31:0];
+ assign key_share0_9_we = addr_hit[21] & reg_we & !reg_error;
+
+ assign key_share0_9_wd = reg_wdata[31:0];
+ assign key_share0_10_we = addr_hit[22] & reg_we & !reg_error;
+
+ assign key_share0_10_wd = reg_wdata[31:0];
+ assign key_share0_11_we = addr_hit[23] & reg_we & !reg_error;
+
+ assign key_share0_11_wd = reg_wdata[31:0];
+ assign key_share0_12_we = addr_hit[24] & reg_we & !reg_error;
+
+ assign key_share0_12_wd = reg_wdata[31:0];
+ assign key_share0_13_we = addr_hit[25] & reg_we & !reg_error;
+
+ assign key_share0_13_wd = reg_wdata[31:0];
+ assign key_share0_14_we = addr_hit[26] & reg_we & !reg_error;
+
+ assign key_share0_14_wd = reg_wdata[31:0];
+ assign key_share0_15_we = addr_hit[27] & reg_we & !reg_error;
+
+ assign key_share0_15_wd = reg_wdata[31:0];
+ assign key_share1_0_we = addr_hit[28] & reg_we & !reg_error;
+
+ assign key_share1_0_wd = reg_wdata[31:0];
+ assign key_share1_1_we = addr_hit[29] & reg_we & !reg_error;
+
+ assign key_share1_1_wd = reg_wdata[31:0];
+ assign key_share1_2_we = addr_hit[30] & reg_we & !reg_error;
+
+ assign key_share1_2_wd = reg_wdata[31:0];
+ assign key_share1_3_we = addr_hit[31] & reg_we & !reg_error;
+
+ assign key_share1_3_wd = reg_wdata[31:0];
+ assign key_share1_4_we = addr_hit[32] & reg_we & !reg_error;
+
+ assign key_share1_4_wd = reg_wdata[31:0];
+ assign key_share1_5_we = addr_hit[33] & reg_we & !reg_error;
+
+ assign key_share1_5_wd = reg_wdata[31:0];
+ assign key_share1_6_we = addr_hit[34] & reg_we & !reg_error;
+
+ assign key_share1_6_wd = reg_wdata[31:0];
+ assign key_share1_7_we = addr_hit[35] & reg_we & !reg_error;
+
+ assign key_share1_7_wd = reg_wdata[31:0];
+ assign key_share1_8_we = addr_hit[36] & reg_we & !reg_error;
+
+ assign key_share1_8_wd = reg_wdata[31:0];
+ assign key_share1_9_we = addr_hit[37] & reg_we & !reg_error;
+
+ assign key_share1_9_wd = reg_wdata[31:0];
+ assign key_share1_10_we = addr_hit[38] & reg_we & !reg_error;
+
+ assign key_share1_10_wd = reg_wdata[31:0];
+ assign key_share1_11_we = addr_hit[39] & reg_we & !reg_error;
+
+ assign key_share1_11_wd = reg_wdata[31:0];
+ assign key_share1_12_we = addr_hit[40] & reg_we & !reg_error;
+
+ assign key_share1_12_wd = reg_wdata[31:0];
+ assign key_share1_13_we = addr_hit[41] & reg_we & !reg_error;
+
+ assign key_share1_13_wd = reg_wdata[31:0];
+ assign key_share1_14_we = addr_hit[42] & reg_we & !reg_error;
+
+ assign key_share1_14_wd = reg_wdata[31:0];
+ assign key_share1_15_we = addr_hit[43] & reg_we & !reg_error;
+
+ assign key_share1_15_wd = reg_wdata[31:0];
+ assign key_len_we = addr_hit[44] & reg_we & !reg_error;
+
+ assign key_len_wd = reg_wdata[2:0];
+ assign prefix_0_we = addr_hit[45] & reg_we & !reg_error;
+
+ assign prefix_0_wd = reg_wdata[31:0];
+ assign prefix_1_we = addr_hit[46] & reg_we & !reg_error;
+
+ assign prefix_1_wd = reg_wdata[31:0];
+ assign prefix_2_we = addr_hit[47] & reg_we & !reg_error;
+
+ assign prefix_2_wd = reg_wdata[31:0];
+ assign prefix_3_we = addr_hit[48] & reg_we & !reg_error;
+
+ assign prefix_3_wd = reg_wdata[31:0];
+ assign prefix_4_we = addr_hit[49] & reg_we & !reg_error;
+
+ assign prefix_4_wd = reg_wdata[31:0];
+ assign prefix_5_we = addr_hit[50] & reg_we & !reg_error;
+
+ assign prefix_5_wd = reg_wdata[31:0];
+ assign prefix_6_we = addr_hit[51] & reg_we & !reg_error;
+
+ assign prefix_6_wd = reg_wdata[31:0];
+ assign prefix_7_we = addr_hit[52] & reg_we & !reg_error;
+
+ assign prefix_7_wd = reg_wdata[31:0];
+ assign prefix_8_we = addr_hit[53] & reg_we & !reg_error;
+
+ assign prefix_8_wd = reg_wdata[31:0];
+ assign prefix_9_we = addr_hit[54] & reg_we & !reg_error;
+
+ assign prefix_9_wd = reg_wdata[31:0];
+ assign prefix_10_we = addr_hit[55] & reg_we & !reg_error;
+
+ assign prefix_10_wd = reg_wdata[31:0];
+
+ // Assign write-enables to checker logic vector.
+ always_comb begin
+ reg_we_check = '0;
+ reg_we_check[0] = intr_state_we;
+ reg_we_check[1] = intr_enable_we;
+ reg_we_check[2] = intr_test_we;
+ reg_we_check[3] = alert_test_we;
+ reg_we_check[4] = 1'b0;
+ reg_we_check[5] = cfg_shadowed_gated_we;
+ reg_we_check[6] = cmd_we;
+ reg_we_check[7] = 1'b0;
+ reg_we_check[8] = entropy_period_gated_we;
+ reg_we_check[9] = 1'b0;
+ reg_we_check[10] = entropy_refresh_threshold_shadowed_gated_we;
+ reg_we_check[11] = entropy_seed_we;
+ reg_we_check[12] = key_share0_0_gated_we;
+ reg_we_check[13] = key_share0_1_gated_we;
+ reg_we_check[14] = key_share0_2_gated_we;
+ reg_we_check[15] = key_share0_3_gated_we;
+ reg_we_check[16] = key_share0_4_gated_we;
+ reg_we_check[17] = key_share0_5_gated_we;
+ reg_we_check[18] = key_share0_6_gated_we;
+ reg_we_check[19] = key_share0_7_gated_we;
+ reg_we_check[20] = key_share0_8_gated_we;
+ reg_we_check[21] = key_share0_9_gated_we;
+ reg_we_check[22] = key_share0_10_gated_we;
+ reg_we_check[23] = key_share0_11_gated_we;
+ reg_we_check[24] = key_share0_12_gated_we;
+ reg_we_check[25] = key_share0_13_gated_we;
+ reg_we_check[26] = key_share0_14_gated_we;
+ reg_we_check[27] = key_share0_15_gated_we;
+ reg_we_check[28] = key_share1_0_gated_we;
+ reg_we_check[29] = key_share1_1_gated_we;
+ reg_we_check[30] = key_share1_2_gated_we;
+ reg_we_check[31] = key_share1_3_gated_we;
+ reg_we_check[32] = key_share1_4_gated_we;
+ reg_we_check[33] = key_share1_5_gated_we;
+ reg_we_check[34] = key_share1_6_gated_we;
+ reg_we_check[35] = key_share1_7_gated_we;
+ reg_we_check[36] = key_share1_8_gated_we;
+ reg_we_check[37] = key_share1_9_gated_we;
+ reg_we_check[38] = key_share1_10_gated_we;
+ reg_we_check[39] = key_share1_11_gated_we;
+ reg_we_check[40] = key_share1_12_gated_we;
+ reg_we_check[41] = key_share1_13_gated_we;
+ reg_we_check[42] = key_share1_14_gated_we;
+ reg_we_check[43] = key_share1_15_gated_we;
+ reg_we_check[44] = key_len_gated_we;
+ reg_we_check[45] = prefix_0_gated_we;
+ reg_we_check[46] = prefix_1_gated_we;
+ reg_we_check[47] = prefix_2_gated_we;
+ reg_we_check[48] = prefix_3_gated_we;
+ reg_we_check[49] = prefix_4_gated_we;
+ reg_we_check[50] = prefix_5_gated_we;
+ reg_we_check[51] = prefix_6_gated_we;
+ reg_we_check[52] = prefix_7_gated_we;
+ reg_we_check[53] = prefix_8_gated_we;
+ reg_we_check[54] = prefix_9_gated_we;
+ reg_we_check[55] = prefix_10_gated_we;
+ reg_we_check[56] = 1'b0;
+ end
+
+ // Read data return
+ always_comb begin
+ reg_rdata_next = '0;
+ unique case (1'b1)
+ addr_hit[0]: begin
+ reg_rdata_next[0] = intr_state_kmac_done_qs;
+ reg_rdata_next[1] = intr_state_fifo_empty_qs;
+ reg_rdata_next[2] = intr_state_kmac_err_qs;
+ end
+
+ addr_hit[1]: begin
+ reg_rdata_next[0] = intr_enable_kmac_done_qs;
+ reg_rdata_next[1] = intr_enable_fifo_empty_qs;
+ reg_rdata_next[2] = intr_enable_kmac_err_qs;
+ end
+
+ addr_hit[2]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ reg_rdata_next[2] = '0;
+ end
+
+ addr_hit[3]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ end
+
+ addr_hit[4]: begin
+ reg_rdata_next[0] = cfg_regwen_qs;
+ end
+
+ addr_hit[5]: begin
+ reg_rdata_next[0] = cfg_shadowed_kmac_en_qs;
+ reg_rdata_next[3:1] = cfg_shadowed_kstrength_qs;
+ reg_rdata_next[5:4] = cfg_shadowed_mode_qs;
+ reg_rdata_next[8] = cfg_shadowed_msg_endianness_qs;
+ reg_rdata_next[9] = cfg_shadowed_state_endianness_qs;
+ reg_rdata_next[12] = cfg_shadowed_sideload_qs;
+ reg_rdata_next[17:16] = cfg_shadowed_entropy_mode_qs;
+ reg_rdata_next[19] = cfg_shadowed_entropy_fast_process_qs;
+ reg_rdata_next[20] = cfg_shadowed_msg_mask_qs;
+ reg_rdata_next[24] = cfg_shadowed_entropy_ready_qs;
+ reg_rdata_next[26] = cfg_shadowed_en_unsupported_modestrength_qs;
+ end
+
+ addr_hit[6]: begin
+ reg_rdata_next[5:0] = '0;
+ reg_rdata_next[8] = '0;
+ reg_rdata_next[9] = '0;
+ reg_rdata_next[10] = '0;
+ end
+
+ addr_hit[7]: begin
+ reg_rdata_next[0] = status_sha3_idle_qs;
+ reg_rdata_next[1] = status_sha3_absorb_qs;
+ reg_rdata_next[2] = status_sha3_squeeze_qs;
+ reg_rdata_next[12:8] = status_fifo_depth_qs;
+ reg_rdata_next[14] = status_fifo_empty_qs;
+ reg_rdata_next[15] = status_fifo_full_qs;
+ reg_rdata_next[16] = status_alert_fatal_fault_qs;
+ reg_rdata_next[17] = status_alert_recov_ctrl_update_err_qs;
+ end
+
+ addr_hit[8]: begin
+ reg_rdata_next[9:0] = entropy_period_prescaler_qs;
+ reg_rdata_next[31:16] = entropy_period_wait_timer_qs;
+ end
+
+ addr_hit[9]: begin
+ reg_rdata_next[9:0] = entropy_refresh_hash_cnt_qs;
+ end
+
+ addr_hit[10]: begin
+ reg_rdata_next[9:0] = entropy_refresh_threshold_shadowed_qs;
+ end
+
+ addr_hit[11]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[12]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[13]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[14]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[15]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[16]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[17]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[18]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[19]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[20]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[21]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[22]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[23]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[24]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[25]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[26]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[27]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[28]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[29]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[30]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[31]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[32]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[33]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[34]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[35]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[36]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[37]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[38]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[39]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[40]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[41]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[42]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[43]: begin
+ reg_rdata_next[31:0] = '0;
+ end
+
+ addr_hit[44]: begin
+ reg_rdata_next[2:0] = '0;
+ end
+
+ addr_hit[45]: begin
+ reg_rdata_next[31:0] = prefix_0_qs;
+ end
+
+ addr_hit[46]: begin
+ reg_rdata_next[31:0] = prefix_1_qs;
+ end
+
+ addr_hit[47]: begin
+ reg_rdata_next[31:0] = prefix_2_qs;
+ end
+
+ addr_hit[48]: begin
+ reg_rdata_next[31:0] = prefix_3_qs;
+ end
+
+ addr_hit[49]: begin
+ reg_rdata_next[31:0] = prefix_4_qs;
+ end
+
+ addr_hit[50]: begin
+ reg_rdata_next[31:0] = prefix_5_qs;
+ end
+
+ addr_hit[51]: begin
+ reg_rdata_next[31:0] = prefix_6_qs;
+ end
+
+ addr_hit[52]: begin
+ reg_rdata_next[31:0] = prefix_7_qs;
+ end
+
+ addr_hit[53]: begin
+ reg_rdata_next[31:0] = prefix_8_qs;
+ end
+
+ addr_hit[54]: begin
+ reg_rdata_next[31:0] = prefix_9_qs;
+ end
+
+ addr_hit[55]: begin
+ reg_rdata_next[31:0] = prefix_10_qs;
+ end
+
+ addr_hit[56]: begin
+ reg_rdata_next[31:0] = err_code_qs;
+ end
+
+ default: begin
+ reg_rdata_next = '1;
+ end
+ endcase
+ end
+
+ // shadow busy
+ logic shadow_busy;
+ logic rst_done;
+ logic shadow_rst_done;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ rst_done <= '0;
+ end else begin
+ rst_done <= 1'b1;
+ end
+ end
+
+ always_ff @(posedge clk_i or negedge rst_shadowed_ni) begin
+ if (!rst_shadowed_ni) begin
+ shadow_rst_done <= '0;
+ end else begin
+ shadow_rst_done <= 1'b1;
+ end
+ end
+
+ // both shadow and normal resets have been released
+ assign shadow_busy = ~(rst_done & shadow_rst_done);
+
+ // Collect up storage and update errors
+ assign shadowed_storage_err_o = |{
+ cfg_shadowed_kmac_en_storage_err,
+ cfg_shadowed_kstrength_storage_err,
+ cfg_shadowed_mode_storage_err,
+ cfg_shadowed_msg_endianness_storage_err,
+ cfg_shadowed_state_endianness_storage_err,
+ cfg_shadowed_sideload_storage_err,
+ cfg_shadowed_entropy_mode_storage_err,
+ cfg_shadowed_entropy_fast_process_storage_err,
+ cfg_shadowed_msg_mask_storage_err,
+ cfg_shadowed_entropy_ready_storage_err,
+ cfg_shadowed_en_unsupported_modestrength_storage_err,
+ entropy_refresh_threshold_shadowed_storage_err
+ };
+ assign shadowed_update_err_o = |{
+ cfg_shadowed_kmac_en_update_err,
+ cfg_shadowed_kstrength_update_err,
+ cfg_shadowed_mode_update_err,
+ cfg_shadowed_msg_endianness_update_err,
+ cfg_shadowed_state_endianness_update_err,
+ cfg_shadowed_sideload_update_err,
+ cfg_shadowed_entropy_mode_update_err,
+ cfg_shadowed_entropy_fast_process_update_err,
+ cfg_shadowed_msg_mask_update_err,
+ cfg_shadowed_entropy_ready_update_err,
+ cfg_shadowed_en_unsupported_modestrength_update_err,
+ entropy_refresh_threshold_shadowed_update_err
+ };
+
+ // register busy
+ assign reg_busy = shadow_busy;
+
+ // Unused signal tieoff
+
+ // wdata / byte enable are not always fully used
+ // add a blanket unused statement to handle lint waivers
+ logic unused_wdata;
+ logic unused_be;
+ assign unused_wdata = ^reg_wdata;
+ assign unused_be = ^reg_be;
+
+ // Assertions for Register Interface
+ `CALIPTRA_ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni)
+ `CALIPTRA_ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o_pre.d_valid, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni)
+
+ // this is formulated as an assumption such that the FPV testbenches do disprove this
+ // property by mistake
+ //`CALIPTRA_ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.chk_en == tlul_pkg::CheckDis)
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/kmac_staterd.sv b/src/caliptra_ss_lc_ctrl/rtl/kmac_staterd.sv
new file mode 100644
index 0000000..bb9b436
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/kmac_staterd.sv
@@ -0,0 +1,125 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Keccak state read
+
+`include "caliptra_prim_assert.sv"
+
+module kmac_staterd
+ import kmac_pkg::*;
+#(
+ // TL-UL Address Width. Should be bigger than
+ // $clog2(kmac_pkg::StateW) * Share
+ parameter int AddrW = 9,
+
+ // EnMasking: Enable masking security hardening inside keccak_round
+ // If it is enabled, the result digest will be two set of 1600bit.
+ parameter bit EnMasking = 1'b0,
+ localparam int Share = (EnMasking) ? 2 : 1 // derived parameter
+) (
+ input clk_i,
+ input rst_ni,
+
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+
+ // State in
+ input [sha3_pkg::StateW-1:0] state_i [Share],
+
+ // Config
+ input endian_swap_i
+);
+
+ localparam int StateAddrW = $clog2(sha3_pkg::StateW/32);
+ localparam int SelAddrW = AddrW-2-StateAddrW;
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // TL-UL Adapter signals
+ logic tlram_req;
+ logic tlram_gnt;
+ logic tlram_we;
+ logic [AddrW-3:0] tlram_addr; // Word base
+ logic [31:0] unused_tlram_wdata;
+ logic [31:0] unused_tlram_wmask;
+ logic [31:0] tlram_rdata;
+ logic tlram_rvalid;
+ logic [1:0] tlram_rerror;
+ logic [31:0] tlram_rdata_endian;
+
+ // TL Adapter
+ tlul_adapter_sram #(
+ .SramAw (AddrW-2),
+ .SramDw (32),
+ .Outstanding (1),
+ .ByteAccess (1),
+ .ErrOnWrite (1),
+ .ErrOnRead (0)
+ ) u_tlul_adapter (
+ .clk_i,
+ .rst_ni,
+
+ .tl_i,
+ .tl_o,
+ .en_ifetch_i (caliptra_prim_mubi_pkg::MuBi4False),
+ .req_o (tlram_req),
+ .req_type_o (),
+ .gnt_i (tlram_gnt),
+ .we_o (tlram_we ),
+ .addr_o (tlram_addr),
+ .wdata_o (unused_tlram_wdata),
+ .wmask_o (unused_tlram_wmask),
+ .intg_error_o (),
+ .rdata_i (tlram_rdata),
+ .rvalid_i (tlram_rvalid),
+ .rerror_i (tlram_rerror),
+ .compound_txn_in_progress_o (),
+ .readback_en_i (caliptra_prim_mubi_pkg::MuBi4False),
+ .readback_error_o (),
+ .wr_collision_i (1'b0),
+ .write_pending_i (1'b0)
+ );
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ tlram_rdata <= '0;
+ end else if (tlram_req & ~tlram_we) begin
+ tlram_rdata <= conv_endian32(tlram_rdata_endian, endian_swap_i);
+ end
+ end
+
+ // Always grant
+ assign tlram_gnt = tlram_req & ~tlram_we;
+
+ // always no error on reading
+ assign tlram_rerror = '0;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) tlram_rvalid <= 1'b0;
+ else tlram_rvalid <= tlram_req & !tlram_we;
+ end
+
+ logic [31:0] muxed_state [Share];
+
+
+ for (genvar i = 0 ; i < Share ; i++) begin : gen_slicer
+ caliptra_prim_slicer #(
+ .InW (sha3_pkg::StateW),
+ .OutW (32),
+ .IndexW (StateAddrW)
+ ) u_state_slice (
+ .sel_i (tlram_addr[StateAddrW-1:0]),
+ .data_i (state_i[i]),
+ .data_o (muxed_state[i])
+ );
+ end : gen_slicer
+
+ logic [SelAddrW-1:0] addr_sel;
+ assign addr_sel = tlram_addr[StateAddrW+:SelAddrW];
+
+ assign tlram_rdata_endian = int'(addr_sel) < Share ? muxed_state[addr_sel] : 0;
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/sha3.sv b/src/caliptra_ss_lc_ctrl/rtl/sha3.sv
new file mode 100644
index 0000000..1637e65
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/sha3.sv
@@ -0,0 +1,532 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// SHA3 core is a fully functional SHA3/SHAKE/cSHAKE hashing module.
+//
+// It instantiates a keccak_round with 1600 bits of the state.
+
+`include "caliptra_prim_assert.sv"
+
+module sha3
+ import sha3_pkg::*;
+#(
+ // Enable Masked Keccak if 1
+ parameter bit EnMasking = 0,
+ // derived parameter
+ localparam int Share = (EnMasking) ? 2 : 1
+) (
+ input clk_i,
+ input rst_ni,
+
+ // MSG interface
+ input msg_valid_i,
+ input [MsgWidth-1:0] msg_data_i [Share],
+ input [MsgStrbW-1:0] msg_strb_i, // one strobe for shares
+ output logic msg_ready_o,
+
+ // Entropy interface
+ input rand_valid_i,
+ input rand_early_i,
+ input [StateW/2-1:0] rand_data_i,
+ input rand_aux_i,
+ output logic rand_update_o,
+ output logic rand_consumed_o,
+
+ // N, S: Used in cSHAKE mode only
+ input [NSRegisterSize*8-1:0] ns_data_i, // See sha3_pkg for details
+
+ // configurations
+ input sha3_mode_e mode_i, // see sha3pad for details
+ input keccak_strength_e strength_i, // see sha3pad for details
+
+ // controls
+ input start_i, // see sha3pad for details
+ input process_i, // see sha3pad for details
+
+ // run_i is a pulse signal to trigger the keccak_round manually by SW.
+ // It is used to run additional keccak_f after sponge absorbing is completed.
+ // See `keccak_run` signal
+ input run_i,
+ input caliptra_prim_mubi_pkg::mubi4_t done_i, // see sha3pad for details
+
+ output caliptra_prim_mubi_pkg::mubi4_t absorbed_o,
+ output logic squeezing_o,
+
+ // Indicate of one block processed. KMAC main state tracks the progression
+ // based on this signal.
+ output logic block_processed_o,
+
+ output sha3_st_e sha3_fsm_o,
+
+ // digest output
+ // This value is valid only after all absorbing process is completed.
+ // In invalid state, the output `state` will be zero to prevent information
+ // leakage.
+ output logic state_valid_o,
+ output logic [StateW-1:0] state_o [Share],
+
+ // REQ/ACK interface for the Keccak core. This can be used to delay the
+ // processing e.g. to avoid power spikes at the chip level due to too many
+ // blocks being active simultaneously.
+ output logic run_req_o,
+ input run_ack_i,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // error_o value is pushed to Error FIFO at KMAC/SHA3 top and reported to SW
+ output err_t error_o,
+
+ // sparse_fsm_alert
+ output logic sparse_fsm_error_o,
+
+ // counter error
+ output logic count_error_o,
+
+ // error on rst_storage in Keccak
+ output logic keccak_storage_rst_error_o
+
+);
+ /////////////////
+ // Definitions //
+ /////////////////
+
+ typedef enum logic[2:0] {
+ MuxGuard = 3'b 010,
+ MuxRelease = 3'b 101
+ } state_mux_sel_e;
+
+ /////////////
+ // Signals //
+ /////////////
+
+ // State --> Digest
+ // State is exposed to the outside if the hashing process is completed.
+ logic state_valid;
+ logic [StateW-1:0] state [Share];
+ logic [StateW-1:0] state_guarded [Share];
+
+ // State --> digest mux select signal
+ state_mux_sel_e mux_sel;
+
+ // absorbed is a pulse signal that indicates sponge absorbing is done.
+ // After this, sha3 core allows software to manually run until squeezing
+ // is completed, which is the `done_i` pulse signal.
+ caliptra_prim_mubi_pkg::mubi4_t absorbed;
+
+ // `squeezing` is a status indicator that SHA3 core is in sponge squeezing
+ // stage. In this stage, the state output is valid, and software can manually
+ // trigger keccak_round logic to get more digest outputs in case the output
+ // length is bigger than the block limit.
+ logic squeezing;
+
+ // If process_i is received, the logic initiates the final absorbing process.
+ // While absorbing, the processing inticator is turned on. This signal is used
+ // to check if multiple process_i is received or not.
+ logic processing;
+
+ // FSM variable
+ sha3_st_sparse_e st, st_d;
+
+ // Keccak control signal (filtered by State Machine)
+ logic keccak_start, keccak_process;
+ caliptra_prim_mubi_pkg::mubi4_t keccak_done;
+
+ // alert signals
+ logic round_count_error, msg_count_error;
+ assign count_error_o = round_count_error | msg_count_error;
+
+ logic sha3_state_error;
+ logic keccak_round_state_error;
+ logic sha3pad_state_error;
+
+ assign sparse_fsm_error_o = sha3_state_error | keccak_round_state_error | sha3pad_state_error;
+
+ // Keccak rst_storage is asserted unexpectedly
+ logic keccak_storage_rst_error;
+ assign keccak_storage_rst_error_o = keccak_storage_rst_error;
+
+ /////////////////
+ // Connections //
+ /////////////////
+
+ logic keccak_valid;
+ logic [KeccakMsgAddrW-1:0] keccak_addr;
+ logic [MsgWidth-1:0] keccak_data [Share];
+ logic keccak_ready;
+
+ // Keccak round run signal can be controlled by sha3pad and also by software
+ // after all message feeding is done. it is mainly used for sponge squeezing
+ // operation after absorbing is completed when output length is longer than
+ // the block size.
+ logic keccak_run, sha3pad_keccak_run, sw_keccak_run;
+ logic keccak_run_req_d, keccak_run_req_q;
+ logic keccak_triggered_d, keccak_triggered_q;
+ logic keccak_complete;
+
+ // Announce that we want to run the Keccak core and tell other blocks to go
+ // quiet. Keep holding the REQ until the Keccak core is done with the
+ // processing. The keccak_complete signal is received once the Keccak core
+ // is back in the Idle state and again susceptible to keccak_run.
+ assign run_req_o = keccak_run_req_d;
+ assign keccak_run_req_d =
+ sha3pad_keccak_run || sw_keccak_run ? 1'b 1 :
+ keccak_complete ? 1'b 0 : keccak_run_req_q;
+
+ // Trigger the Keccak engine with a single pulse upon receiving the ACK.
+ assign keccak_run = run_req_o & run_ack_i & ~keccak_triggered_q;
+ assign keccak_triggered_d =
+ keccak_run ? 1'b 1 :
+ keccak_complete ? 1'b 0 : keccak_triggered_q;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ keccak_run_req_q <= 1'b 0;
+ keccak_triggered_q <= 1'b 0;
+ end else begin
+ keccak_run_req_q <= keccak_run_req_d;
+ keccak_triggered_q <= keccak_triggered_d;
+ end
+ end
+
+ // Absorb pulse output : used to generate interrupts
+ // Latch absorbed signal as kmac_keymgr asserts `CmdDone` when it sees
+ // `absorbed` signal. When this signal goes out, the state is still in
+ // `StAbsorb`. Next state is `StSqueeze`.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) absorbed_o <= caliptra_prim_mubi_pkg::MuBi4False;
+ else absorbed_o <= absorbed;
+ end
+
+ // Squeezing output
+ assign squeezing_o = squeezing;
+
+ // processing
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) processing <= 1'b 0;
+ else if (process_i) processing <= 1'b 1;
+ else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed)) begin
+ processing <= 1'b 0;
+ end
+ end
+
+ assign block_processed_o = keccak_complete;
+
+ // State connection
+ assign state_valid_o = state_valid;
+ assign state_o = state_guarded;
+
+ assign sha3_fsm_o = sparse2logic(st);
+
+ ///////////////////
+ // State Machine //
+ ///////////////////
+
+ // State Register
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_d, st, sha3_st_sparse_e, StIdle_sparse)
+
+
+ // Next State and Output Logic
+ // Mainly the FSM controls the input signal access
+ // StIdle: only start_i signal is allowed
+ // StAbsorb: only process_i signal is allowed
+ // StSqueeze: only run_i, done_i signal is allowed
+
+ always_comb begin
+ st_d = st;
+
+ // default output values
+ keccak_start = 1'b 0;
+ keccak_process = 1'b 0;
+ sw_keccak_run = 1'b 0;
+ keccak_done = caliptra_prim_mubi_pkg::MuBi4False;
+
+ squeezing = 1'b 0;
+
+ state_valid = 1'b 0;
+ mux_sel = MuxGuard ;
+
+ sha3_state_error = 1'b 0;
+
+ unique case (st)
+ StIdle_sparse: begin
+ if (start_i) begin
+ st_d = StAbsorb_sparse;
+
+ keccak_start = 1'b 1;
+ end else begin
+ st_d = StIdle_sparse;
+ end
+ end
+
+ StAbsorb_sparse: begin
+ if (process_i && !processing) begin
+ st_d = StAbsorb_sparse;
+
+ keccak_process = 1'b 1;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed)) begin
+ st_d = StSqueeze_sparse;
+ end else begin
+ st_d = StAbsorb_sparse;
+ end
+ end
+
+ StSqueeze_sparse: begin
+ state_valid = 1'b 1;
+ mux_sel = MuxRelease; // Expose state to register interface
+
+ squeezing = 1'b 1;
+
+ if (run_i) begin
+ st_d = StManualRun_sparse;
+
+ sw_keccak_run = 1'b 1;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ st_d = StFlush_sparse;
+
+ keccak_done = done_i;
+ end else begin
+ st_d = StSqueeze_sparse;
+ end
+ end
+
+ StManualRun_sparse: begin
+ if (keccak_complete) begin
+ st_d = StSqueeze_sparse;
+ end else begin
+ st_d = StManualRun_sparse;
+ end
+ end
+
+ StFlush_sparse: begin
+ st_d = StIdle_sparse;
+ end
+
+ StTerminalError_sparse: begin
+ //this state is terminal
+ st_d = StTerminalError_sparse;
+ sha3_state_error = 1'b 1;
+ end
+
+ default: begin
+ st_d = StTerminalError_sparse;
+ sha3_state_error = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError_sparse;
+ end
+ end
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ // State --> Digest output
+ always_comb begin : state_guarded_mux
+ unique case (mux_sel)
+ MuxGuard: state_guarded = '{default: '0};
+ MuxRelease: state_guarded = state;
+ default: state_guarded = '{default: '0}; // a valid, safe output
+ endcase
+ end
+
+
+ // Error Detecting
+ // ErrSha3SwControl:
+ // info[ 0]: start_i set
+ // info[ 1]: process_i set
+ // info[ 2]: run_i set
+ // info[ 3]: done_i set
+ // - Sw set process_i, run_i, done_i without start_i
+
+ always_comb begin
+ error_o = '{valid: 1'b0, code: ErrNone, info: '0};
+
+ unique case (st)
+ StIdle_sparse: begin
+ if (process_i || run_i ||
+ caliptra_prim_mubi_pkg::mubi4_test_true_loose(done_i)) begin
+ error_o = '{
+ valid: 1'b 1,
+ code: ErrSha3SwControl,
+ info: 24'({done_i, run_i, process_i, start_i})
+ };
+ end
+ end
+
+ StAbsorb_sparse: begin
+ if (start_i || run_i || caliptra_prim_mubi_pkg::mubi4_test_true_loose(done_i)
+ || (process_i && processing)) begin
+ error_o = '{
+ valid: 1'b 1,
+ code: ErrSha3SwControl,
+ info: 24'({done_i, run_i, process_i, start_i})
+ };
+ end
+ end
+
+ StSqueeze_sparse: begin
+ if (start_i || process_i) begin
+ error_o = '{
+ valid: 1'b 1,
+ code: ErrSha3SwControl,
+ info: 24'({done_i, run_i, process_i, start_i})
+ };
+ end
+ end
+
+ StManualRun_sparse: begin
+ if (start_i || process_i || run_i ||
+ caliptra_prim_mubi_pkg::mubi4_test_true_loose(done_i)) begin
+ error_o = '{
+ valid: 1'b 1,
+ code: ErrSha3SwControl,
+ info: 24'({done_i, run_i, process_i, start_i})
+ };
+ end
+ end
+
+ StFlush_sparse: begin
+ if (start_i || process_i || run_i ||
+ caliptra_prim_mubi_pkg::mubi4_test_true_loose(done_i)) begin
+ error_o = '{
+ valid: 1'b 1,
+ code: ErrSha3SwControl,
+ info: 24'({done_i, run_i, process_i, start_i})
+ };
+ end
+ end
+
+ default: begin
+ end
+ endcase
+ end
+ ///////////////
+ // Instances //
+ ///////////////
+
+ // SHA3 pad logic
+ sha3pad #(
+ .EnMasking (EnMasking)
+ ) u_pad (
+ .clk_i,
+ .rst_ni,
+
+ // MSG_FIFO (or from KMAC core)
+ .msg_valid_i,
+ .msg_data_i, // [Share]
+ .msg_strb_i,
+ .msg_ready_o,
+
+ // Encoded N, S
+ .ns_data_i,
+
+ // output to keccak_round: message path
+ .keccak_valid_o (keccak_valid),
+ .keccak_addr_o (keccak_addr ),
+ .keccak_data_o (keccak_data ), // [Share]
+ .keccak_ready_i (keccak_ready),
+
+ .keccak_run_o (sha3pad_keccak_run),
+ .keccak_complete_i (keccak_complete ),
+
+ // configurations
+ .mode_i,
+ .strength_i,
+
+ // LC
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en_i),
+
+ // controls
+ .start_i (keccak_start),
+ .process_i (keccak_process),
+ .done_i (keccak_done),
+
+ // output
+ .absorbed_o (absorbed),
+ .sparse_fsm_error_o (sha3pad_state_error),
+ .msg_count_error_o (msg_count_error)
+ );
+
+ // Keccak round logic
+ keccak_round #(
+ .Width (sha3_pkg::StateW),
+ .DInWidth (sha3_pkg::MsgWidth),
+
+ .EnMasking (EnMasking)
+ ) u_keccak (
+ .clk_i,
+ .rst_ni,
+
+ .valid_i (keccak_valid),
+ .addr_i (keccak_addr ),
+ .data_i (keccak_data ),
+ .ready_o (keccak_ready),
+
+ .rand_valid_i,
+ .rand_early_i,
+ .rand_data_i,
+ .rand_aux_i,
+ .rand_update_o,
+ .rand_consumed_o,
+
+ .run_i (keccak_run ),
+ .complete_o (keccak_complete),
+
+ .state_o (state),
+
+ // LC
+ .caliptra_ss_lc_escalate_en_i (caliptra_ss_lc_escalate_en_i),
+
+ .sparse_fsm_error_o (keccak_round_state_error),
+ .round_count_error_o (round_count_error),
+ .rst_storage_error_o (keccak_storage_rst_error),
+
+ .clear_i (keccak_done)
+ );
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // The Keccak core can only be active when the run REQ is ACKed.
+ `CALIPTRA_ASSERT(KeccakIdleWhenNoRunHs_A,
+ u_keccak.keccak_st inside {KeccakStActive,
+ KeccakStPhase1,
+ KeccakStPhase2Cycle1,
+ KeccakStPhase2Cycle2,
+ KeccakStPhase2Cycle3} |->
+ run_req_o && run_ack_i)
+
+ // Unknown check for case statement
+ `CALIPTRA_ASSERT(MuxSelKnown_A, mux_sel inside {MuxGuard, MuxRelease})
+ `CALIPTRA_ASSERT(FsmKnown_A, st inside {StIdle_sparse, StAbsorb_sparse, StSqueeze_sparse,
+ StManualRun_sparse, StFlush_sparse, StTerminalError_sparse})
+
+ // `state` shall be 0 in invalid
+ if (EnMasking) begin: gen_chk_digest_masked
+ `CALIPTRA_ASSERT(StateZeroInvalid_A, !state_valid_o |-> ((|state_o[0]) | (|state_o[1])) == 1'b 0)
+ end else begin : gen_chk_digest_unmasked
+ `CALIPTRA_ASSERT(StateZeroInvalid_A, !state_valid_o |-> (|state_o[0]) == 1'b 0)
+ end
+
+ // `state_valid_o` asserts only in between the completion and done
+ //`CALIPTRA_ASSERT(StateValidPeriod_A, state_valid_o |-> )
+
+ // skip the msg interface assertions as they are in sha3pad.sv
+
+ // Software run signal happens in Squeezing stage
+ `CALIPTRA_ASSUME(SwRunInSqueezing_a, run_i |-> error_o.valid || (st == StSqueeze_sparse))
+
+ // If control received but not propagated into submodules, it is error condition
+ `CALIPTRA_ASSERT(ErrDetection_A, error_o.valid
+ |-> {start_i, process_i, run_i, done_i}
+ != {keccak_start, keccak_process, sw_keccak_run, keccak_done})
+
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/sha3_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/sha3_pkg.sv
new file mode 100644
index 0000000..ea22cfa
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/sha3_pkg.sv
@@ -0,0 +1,294 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// sha3_pkg
+
+package sha3_pkg;
+
+ // StateW represents the width of Keccak state variable.
+ // As Sha3 assume the state value as 1600, this shouldn't be modified.
+ // Note that keccak_round is flexible. It can have any values defined in SHA3
+ // specification. But sha3pad logic assumes the value as 1600.
+ parameter int StateW = 1600;
+
+ // Function Name (N) and Customzation String (S) shall be
+ // smaller than 2**256 bits and integer divisiable by 8.
+ parameter int FnWidth = 32; // up to 32bit Function Name
+ parameter int CsWidth = 256; // up to 256bit Customization Input
+
+ // Calculate left_encode(len( X )) bit size.
+ // Assume the enc_8(n) is always 1 (up to 255 byte of len(S) size)
+ // e.g) 248bit --> two bytes , 256bit --> three bytes
+ // round8bit(clog2(X+1))/8
+
+ parameter int MaxFnEncodeSize = ($clog2(FnWidth+1) + 8 - 1) / 8 + 1;
+ parameter int MaxCsEncodeSize = ($clog2(CsWidth+1) + 8 - 1) / 8 + 1;
+
+ parameter int NSRegisterSizePre = FnWidth/8 + CsWidth/8
+ + MaxFnEncodeSize + MaxCsEncodeSize;
+ // Round up to 32bit word base
+ parameter int NSRegisterSize = ((NSRegisterSizePre + 4 - 1 ) / 4) * 4;
+
+ // Prefix represents bytepad(encode_string(N) || encode_string(S), 168 or 136)
+ // +2 represents left_encoding(168 or 136) which could be either:
+ // 10000000 || 00010101 // 168
+ // 10000000 || 00010001 // 136
+ parameter int PrefixSize = NSRegisterSize + 2;
+
+ // index width for `N` and `S`
+ parameter int PrefixIndexW = $clog2(PrefixSize/64);
+
+ // Datapath width in KMAC, this also affects the output of MSG_FIFO
+ // This is assumed as 64 in KMAC design. If this value is changed, some parts
+ // of the KMAC design need to be changed.
+ //
+ // 1. keccak_round logic datapath. Keccak round logic assumes MsgWidth
+ // divides 1600 keccak state `Width`. Choose the value accordingly.
+ // 2. sha3pad module has fixed width mux for funcpad logic. If MsgWidth is
+ // changed, the logic also need to be revised.
+ // 3. kmac core logic also has fixed size mux for appeding output length.
+ // Revise the case statement to fit into revised MsgWidth value.
+ parameter int MsgWidth = 64;
+ parameter int MsgStrbW = MsgWidth / 8;
+
+ // Keccak module supports SHA3, SHAKE, cSHAKE function.
+ // This mode determines if the module uses encoded N and S or not.
+ // Also it chooses the padding value.
+ //
+ // mode | little-endian
+ // -------|----------------
+ // Sha3 | 2'b 10
+ // Shake | 4'b 1111
+ // CShake | 2'b 00
+ //
+ // Please remind that if input strings N and S are empty, SW shall
+ // choose SHAKE even for cSHAKE operation.
+ typedef enum logic[1:0] {
+ Sha3 = 2'b 00,
+ Shake = 2'b 10,
+ CShake = 2'b 11
+ } sha3_mode_e;
+
+ // keccak_strength_e determines the security strength against collision attack
+ // This value decides the _rate_ and _capacity_ of the keccak states.
+ // It affects the sha3pad module too. the padding module implements
+ // `bytepad(X,168)` for L128, `bytepad(X,136)` for L256 in cSHAKE
+ typedef enum logic [2:0] {
+ L128 = 3'b 000, // rate: 1344 bit / capacity: 256 bit Keccak[ 256](, 128)
+ L224 = 3'b 001, // rate: 1152 bit / capacity: 448 bit Keccak[ 448](, 224)
+ L256 = 3'b 010, // rate: 1088 bit / capacity: 512 bit Keccak[ 512](, 256)
+ L384 = 3'b 011, // rate: 832 bit / capacity: 768 bit Keccak[ 768](, 384)
+ L512 = 3'b 100 // rate: 576 bit / capacity: 1024 bit Keccak[1024](, 512)
+ } keccak_strength_e;
+
+ parameter int unsigned KeccakRate [5] = '{
+ 1344/MsgWidth, // 21 depth := (1600 - 128*2)
+ 1152/MsgWidth, // 18 depth := (1600 - 224*2)
+ 1088/MsgWidth, // 17 depth := (1600 - 256*2)
+ 832/MsgWidth, // 13 depth := (1600 - 384*2)
+ 576/MsgWidth // 9 depth := (1600 - 512*2)
+ };
+
+ parameter int unsigned KeccakBitCapacity [5] = '{
+ 2 * 128, // capacity for L128
+ 2 * 224, // capacity for L224
+ 2 * 256, // capacity for L256
+ 2 * 384, // capacity for L384
+ 2 * 512 // capacity for L512
+ };
+
+ parameter int unsigned MaxBlockSize = KeccakRate[0];
+
+ parameter int unsigned KeccakEntries = 1600/MsgWidth;
+ parameter int unsigned KeccakMsgAddrW = $clog2(KeccakEntries);
+
+ parameter int unsigned KeccakCountW = $clog2(KeccakEntries+1);
+
+ // SHA3 core state. This state value is used in sha3core module
+ // and also in KMAC top module and the register interface for sw to track the
+ // sha3 status.
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 7 -n 6 \
+ // -s 4082450958 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (57.14%)
+ // 4: ||||||||||||||| (42.86%)
+ // 5: --
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 4
+ // Minimum Hamming weight: 1
+ // Maximum Hamming weight: 4
+ //
+ localparam int StateWidth = 6;
+ typedef enum logic [StateWidth-1:0] {
+ StIdle_sparse = 6'b101100,
+
+ // Absorb stage receives the message bitstream and computes the keccak
+ // rounds. This internal operation is mainly done inside sha3pad module
+ // not sha3core. The core module and this state machine observe the status
+ // of the process and mainly waits until all the sponge absorbing is
+ // completed. The main indicator is `absorbed` signal.
+ StAbsorb_sparse = 6'b100001,
+
+ // Reserved state for context-switching. See #3479.
+ // Abort stage can be moved from StAbsorb stage. It basically holds the
+ // keccak round operation and opens up the internal state variable to the
+ // software. This stage is for the software to pause current operation and
+ // store the internal state elsewhere then initiates new KMAC/SHA3 process.
+ // StAbort only can be moved to _StFlush_.
+ //StAbort_sparse = 6'b011101,
+
+ // Squeeze stage allows the software to read the internal state.
+ // If `EnMasking`, it opens the read permission of two share of the state.
+ // The squeezing in SHA3 specification describes the software to read up to
+ // the rate of SHA3 algorithm but this logic opens up the entire 1600 bits
+ // of the state (3200bits if `EnMasking`).
+ StSqueeze_sparse = 6'b001011,
+
+ // ManualRun stage initiaties the keccak round and waits the completion.
+ // This state is moved from Squeeze state by writing 1 to manual_run CSR.
+ // When keccak round is completed, it goes back to Squeeze state.
+ StManualRun_sparse = 6'b010000,
+
+ // Flush stage, the core clears out the internal variables and also
+ // submodules' variables too. Then moves back to Idle state.
+ StFlush_sparse = 6'b000110,
+
+ StTerminalError_sparse = 6'b111010
+ } sha3_st_sparse_e;
+
+ localparam int StateWidthLogic = 3;
+ typedef enum logic [StateWidthLogic-1:0] {
+ StIdle,
+ StAbsorb,
+ //StAbort,
+ StSqueeze,
+ StManualRun,
+ StFlush,
+ StError
+ } sha3_st_e;
+
+ function automatic sha3_st_e sparse2logic(sha3_st_sparse_e st);
+ unique case (st)
+ StIdle_sparse : return StIdle;
+ StAbsorb_sparse : return StAbsorb;
+ //StAbort_sparse : return StAbort;
+ StSqueeze_sparse : return StSqueeze;
+ StManualRun_sparse : return StManualRun;
+ StFlush_sparse : return StFlush;
+ default : return StError;
+ endcase
+ endfunction : sparse2logic
+
+
+ //////////////////////
+ // Keccak Round FSM //
+ //////////////////////
+
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 8 -n 6 \
+ // -s 1363425333 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (57.14%)
+ // 4: ||||||||||||||| (42.86%)
+ // 5: --
+ // 6: --
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 4
+ // Minimum Hamming weight: 1
+ // Maximum Hamming weight: 5
+ //
+ localparam int KeccakFsmWidth = 6;
+ typedef enum logic [KeccakFsmWidth-1:0] {
+ KeccakStIdle = 6'b011111,
+
+ // Active state is used in Unmasked version only.
+ // It handles keccak round in a cycle
+ KeccakStActive = 6'b000100,
+
+ // Phase1 --> Phase2Cycle1 --> Phase2Cycle2 --> Phase2Cycle3
+ // Activated only in Masked version.
+ // Phase1 processes Theta, Rho, Pi steps in a cycle and stores the states
+ // into storage. It only moves to Phase2 once the randomness required for
+ // Phase2 is available.
+ KeccakStPhase1 = 6'b101101,
+
+ // Chi Stage 1 for first lane halves. Unconditionally move to Phase2Cycle2.
+ KeccakStPhase2Cycle1 = 6'b000011,
+
+ // Chi Stage 2 and Iota for first lane halves. Chi Stage 1 for second
+ // lane halves. Unconditionally move to Phase2Cycle3.
+ KeccakStPhase2Cycle2 = 6'b011000,
+
+ // Chi Stage 2 and Iota for second lane halves.
+ // When doing the last round (MaxRound -1) it completes the process and
+ // goes back to Idle. If not, it repeats the phases again.
+ KeccakStPhase2Cycle3 = 6'b101010,
+
+ // Error state. Not clearly defined yet.
+ // Intention is if any unexpected input in the process, state moves to
+ // here and report through the error fifo with debugging information.
+ KeccakStError = 6'b110001,
+
+ KeccakStTerminalError = 6'b110110
+ } keccak_st_e;
+
+
+ //////////////////
+ // Error Report //
+ //////////////////
+ typedef enum logic [7:0] {
+ ErrNone = 8'h 00,
+
+ // ErrSha3SwControl occurs when software sent wrong flow signal.
+ // e.g) Sw set `process_i` without `start_i`. The state machine ignores
+ // the signal and report through the error FIFO.
+ ErrSha3SwControl = 8'h 80
+ } err_code_e;
+
+ typedef struct packed {
+ logic valid;
+ err_code_e code; // Type of error
+ logic [23:0] info; // Additional Debug info
+ } err_t;
+
+
+ ///////////////
+ // Functions //
+ ///////////////
+
+ // Bytepading function
+ // `encode_bytepad_len` represents the first two bytes of bytepad()
+ // It depends on the block size. We can reuse KeccakRate
+ // 10000000 || 00010101 // 168
+ // 10000000 || 00010001 // 136
+ function automatic logic [15:0] encode_bytepad_len(keccak_strength_e kstrength);
+ logic [15:0] result;
+ unique case (kstrength)
+ L128: result = 16'h A801; // cSHAKE128
+ L224: result = 16'h 9001; // not used
+ L256: result = 16'h 8801; // cSHAKE256
+ L384: result = 16'h 6801; // not used
+ L512: result = 16'h 4801; // not used
+
+ default: result = 16'h 0000;
+ endcase
+ return result;
+ endfunction : encode_bytepad_len
+
+
+endpackage : sha3_pkg
diff --git a/src/caliptra_ss_lc_ctrl/rtl/sha3pad.sv b/src/caliptra_ss_lc_ctrl/rtl/sha3pad.sv
new file mode 100644
index 0000000..dc91796
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/sha3pad.sv
@@ -0,0 +1,884 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// SHA3 padding logic
+
+`include "caliptra_prim_assert.sv"
+
+module sha3pad
+ import sha3_pkg::*;
+#(
+ parameter bit EnMasking = 0,
+ localparam int Share = (EnMasking) ? 2 : 1
+) (
+ input clk_i,
+ input rst_ni,
+
+ // Message interface (FIFO)
+ input msg_valid_i,
+ input [MsgWidth-1:0] msg_data_i [Share],
+ input [MsgStrbW-1:0] msg_strb_i, // one strobe for shares
+ output logic msg_ready_o,
+
+ // N, S: Used in cSHAKE mode only
+ input [NSRegisterSize*8-1:0] ns_data_i, // See sha3_pkg for details
+
+ // output to keccak_round: message path
+ output logic keccak_valid_o,
+ output logic [KeccakMsgAddrW-1:0] keccak_addr_o,
+ output logic [MsgWidth-1:0] keccak_data_o [Share],
+ input logic keccak_ready_i,
+
+ // keccak_round control and status
+ // `run` initiates the keccak_round to process full keccak_f (24rounds).
+ // `complete` is an input from keccak round showing the current keccak_f is
+ // completed.
+ output logic keccak_run_o,
+ input keccak_complete_i,
+
+ // configurations
+ input sha3_mode_e mode_i,
+ // strength_i is used in bytepad operation. bytepad() is used in cSHAKE only.
+ // SHA3, SHAKE doesn't have encode_N,S
+ input keccak_strength_e strength_i,
+
+ // control signal
+ // start_i is a pulse signal triggers the padding logic (and the rest of SHA)
+ // to accept the incoming messages. This signal is used in the pad module,
+ // to initiate the prefix transmitting to keccak_round
+ input start_i,
+ // process_i is a pulse signal triggers the pad logic to stop receiving the
+ // message from MSG_FIFO and pad the trailing bits specified in the SHA3
+ // standard. Look at `funcpad` signal for the values.
+ input process_i,
+ // done_i is a pulse signal to make the pad logic to clear internal variables
+ // and to move back to the Idle state for next hashing process.
+ // done_i may not needed if sw controls the keccak_round directly.
+ input caliptra_prim_mubi_pkg::mubi4_t done_i,
+
+ // Indication of the Keccak Sponge Absorbing is complete, it is time for SW to
+ // control the Keccak-round if it needs more digest, or complete by asserting
+ // `done_i`
+ output caliptra_prim_mubi_pkg::mubi4_t absorbed_o,
+
+ // Life cycle
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+
+ // Indication that there was a fault in the sparse encoding
+ output logic sparse_fsm_error_o,
+
+ // Indication that there was a fault in the counter
+ output logic msg_count_error_o
+);
+
+ /////////////////
+ // Definitions //
+ /////////////////
+
+ // Padding States
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 3 -m 10 -n 7 \
+ // -s 1116691466 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: |||||||||||||||||||| (42.22%)
+ // 4: |||||||||||||||||| (40.00%)
+ // 5: ||||| (11.11%)
+ // 6: || (4.44%)
+ // 7: | (2.22%)
+ //
+ // Minimum Hamming distance: 3
+ // Maximum Hamming distance: 7
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 5
+ //
+ localparam int StateWidthPad = 7;
+ typedef enum logic [StateWidthPad-1:0] {
+ StPadIdle = 7'b1000010,
+
+ // Sending a block of prefix, if cSHAKE mode is turned on. For the rest
+ // (SHA3, SHAKE), sending prefix is not needed. FSM moves from Idle to
+ // Message directly in that case.
+ //
+ // As caliptra_prim_slicer is instantiated, zerofill after the actual prefix is done
+ // by the module.
+ StPrefix = 7'b0111100,
+ StPrefixWait =7'b1001100,
+
+ // Sending Message. In this state, it directly forwards the incoming data
+ // to Keccak round module. If `process_i` is asserted, then the rest of the
+ // messages will be discarded until new `start_i` is asserted.
+ //
+ // The incoming data can be partial write. Padding logic counts the number
+ // of bytes received and pause if a block size is transferred.
+ StMessage = 7'b0100101,
+ StMessageWait = 7'b0001111,
+
+ // After sending the messages, then `process_i` is set, the FSM pads at the
+ // end of the message based on `mode_i`. If this is the last byte of the
+ // block, then it pads [7] to 1 to complete `pad10*1()` function.
+ StPad = 7'b1111010,
+ StPadRun = 7'b0011001,
+
+ // If the padding isn't the end of the block byte (which will be rare case),
+ // FSM moves to another zerofill state. In contrast to StZerofill, this state
+ StPad01 = 7'b1101001,
+
+ // Flushing the internal packers in front of the Keccak data output port.
+ StPadFlush = 7'b1010111,
+
+ StTerminalError = 7'b0110011
+ } pad_st_e;
+
+ typedef enum logic [2:0] {
+ MuxNone = 3'b 000,
+ MuxFifo = 3'b 001,
+ MuxPrefix = 3'b 010,
+ MuxFuncPad = 3'b 011,
+ MuxZeroEnd = 3'b 100
+ } mux_sel_e;
+
+ ////////////////////
+ // Configurations //
+ ////////////////////
+
+ logic [KeccakCountW-1:0] block_addr_limit;
+
+ // Block size based on the address.
+ // This is used for bytepad() and also pad10*1()
+ // assign block_addr_limit = KeccakRate[strength_i];
+ // but below is easier to understand
+ always_comb begin
+ unique case (strength_i)
+ L128: block_addr_limit = KeccakCountW'(KeccakRate[L128]);
+ L224: block_addr_limit = KeccakCountW'(KeccakRate[L224]);
+ L256: block_addr_limit = KeccakCountW'(KeccakRate[L256]);
+ L384: block_addr_limit = KeccakCountW'(KeccakRate[L384]);
+ L512: block_addr_limit = KeccakCountW'(KeccakRate[L512]);
+
+ default: block_addr_limit = '0;
+ endcase
+ end
+
+ /////////////////////
+ // Control Signals //
+ /////////////////////
+
+ // `sel_mux` selects the output data among the incoming or internally generated data.
+ // MuxFifo: data from external (msg_data_i)
+ // MuxPrefix: bytepad(encode_string(N)||encode_string(S), )
+ // MuxFuncPad: function_pad with end of message
+ // MuxZeroEnd: all 0
+ mux_sel_e sel_mux;
+
+ // `sent_message` indicates the number of entries sent to keccak round per
+ // block. The value shall be enough to cover Maximum entry of the Keccak
+ // storage as defined in sha3_pkg, `$clog2(KeccakEntries+1)`. Logically,
+ // it is not needed to have more than KeccakEntries but for safety in case of
+ // SHA3 context switch resuming the SHA3 from the middle of sponge
+ // construction. If needed, the software should be able to write whole 1600
+ // bits. The `sent_message` is used to check sent_blocksize.
+ logic [KeccakCountW-1:0] sent_message;
+ logic inc_sentmsg, clr_sentmsg;
+
+ // This primitive is used to place a hardened counter
+ // SEC_CM: CTR.REDUN
+ caliptra_prim_count #(
+ .Width(KeccakCountW)
+ ) u_sentmsg_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(clr_sentmsg),
+ .set_i(1'b0),
+ .set_cnt_i(KeccakCountW'(0)),
+ .incr_en_i(inc_sentmsg),
+ .decr_en_i(1'b0),
+ .step_i(KeccakCountW'(1)),
+ .commit_i(1'b1),
+ .cnt_o(sent_message),
+ .cnt_after_commit_o(),
+ .err_o(msg_count_error_o)
+ );
+
+
+ assign inc_sentmsg = keccak_valid_o & keccak_ready_i ;
+
+ // Prefix index to slice the `prefix` n-bits into multiple of 64bit.
+ logic [KeccakMsgAddrW-1:0] prefix_index;
+ assign prefix_index = (sent_message < block_addr_limit) ? sent_message : '0;
+
+ // fsm_keccak_valid is an output signal from FSM which to send data generated
+ // inside the pad logic to keccak_round
+ logic fsm_keccak_valid;
+
+ // hold_msg to prevent message from being forwarded into keccak_round and
+ // acked. Mainly the usage is to hold the message and initiates the
+ // keccak_round for current block.
+ logic hold_msg;
+
+ // latch the partial write. Latched data is used for funcpad_merged
+ logic en_msgbuf;
+ logic clr_msgbuf;
+
+ ///////////////////
+ // State Machine //
+ ///////////////////
+
+ // Inputs
+
+ // FSM moves to StPrefix only when cSHAKE is enabled
+ logic mode_eq_cshake;
+ assign mode_eq_cshake = (mode_i == CShake) ? 1'b 1 : 1'b 0;
+
+ // `sent_blocksize` indicates the pad logic pushed block size data into
+ // keccak round logic.
+ logic sent_blocksize;
+
+ assign sent_blocksize = (sent_message == block_addr_limit) ? 1'b 1 : 1'b 0;
+
+ // `keccak_ack` indicates the request is accepted in keccak_round
+ logic keccak_ack;
+
+ assign keccak_ack = keccak_valid_o & keccak_ready_i ;
+
+ // msg_partial indicates the incoming message is partial write or not.
+ // This is used to check if the incoming message need to be latched inside or
+ // not. If no partial message is at the end, msg_buf doesn't have to latch
+ // msg_data_i. It is assumed that the partial message is permitted only at
+ // the end of the message. So if (msg_valid_i && msg_partial && msg_ready_o),
+ // there will be no msg_valid_i till process_latched.
+ // Shall be used with msg_valid_i together.
+ logic msg_partial;
+ assign msg_partial = (&msg_strb_i != 1'b 1);
+
+
+ // `process_latched` latches the `process_i` input before it is seen in the
+ // FSM. `process_i` may follow `start_i` too fast so that the FSM may not
+ // see it fast enought in case of cSHAKE mode. cSHAKE needs to process the
+ // prefix prior to see the process indicator.
+ logic process_latched;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ process_latched <= 1'b 0;
+ end else if (process_i) begin
+ process_latched <= 1'b 1;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ process_latched <= 1'b0;
+ end
+ end
+
+ // State Register ===========================================================
+ pad_st_e st, st_d;
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, st_d, st, pad_st_e, StPadIdle)
+
+ // `end_of_block` indicates current beat is end of the block
+ // It shall set when the address reaches to the end of the block. End address
+ // is set by the strength_i, which is `block_addr_limit`.
+ logic end_of_block;
+
+ assign end_of_block = ((sent_message + 1'b1) == block_addr_limit) ? 1'b 1 : 1'b 0;
+
+
+ // Next logic and output logic ==============================================
+ // SEC_CM: ABSORBED.CTRL.MUBI
+ caliptra_prim_mubi_pkg::mubi4_t absorbed_d;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) absorbed_o <= caliptra_prim_mubi_pkg::MuBi4False;
+ else absorbed_o <= absorbed_d;
+ end
+
+ always_comb begin
+ st_d = st;
+
+ // FSM output : default values
+ keccak_run_o = 1'b 0;
+ sel_mux = MuxNone;
+
+ fsm_keccak_valid = 1'b 0;
+
+ hold_msg = 1'b 0;
+ clr_sentmsg = 1'b 0;
+
+ en_msgbuf = 1'b 0;
+ clr_msgbuf = 1'b 0;
+
+ absorbed_d = caliptra_prim_mubi_pkg::MuBi4False;
+
+ sparse_fsm_error_o = 1'b 0;
+
+ unique case (st)
+
+ // In Idle state, the FSM checks if the software (or upper FSM) initiates
+ // the hash process. If `start_i` is asserted (assume it is pulse), FSM
+ // starts to push the data into the keccak round logic. Depending on the
+ // hashing mode, FSM may push additional prefex in front of the actual
+ // message. It means, the message could be back-pressured until the first
+ // prefix is processed.
+ StPadIdle: begin
+ if (start_i) begin
+ // If cSHAKE, move to Prefix state
+ if (mode_eq_cshake) begin
+ st_d = StPrefix;
+ end else begin
+ st_d = StMessage;
+ end
+ end else begin
+ st_d = StPadIdle;
+ end
+ end
+
+ // At Prefix state, FSM pushes
+ // `bytepad(encode_string(N)||encode_string(S), 168or136)`. The software
+ // already prepared `encode_string(N) || encode_string(S)` in the regs.
+ // So, the FSM adds 2Byte in front of ns_data_i, which is an encoded
+ // block size (see `encoded_bytepad` below)
+ // After pushing the prefix, it initiates the hash process and move to
+ // Message state.
+ StPrefix: begin
+ sel_mux = MuxPrefix;
+
+ if (sent_blocksize) begin
+ st_d = StPrefixWait;
+
+ keccak_run_o = 1'b 1;
+ fsm_keccak_valid = 1'b 0;
+ clr_sentmsg = 1'b 1;
+ end else begin
+ st_d = StPrefix;
+
+ fsm_keccak_valid = 1'b 1;
+ end
+ end
+
+ StPrefixWait: begin
+ sel_mux = MuxPrefix;
+
+ if (keccak_complete_i) begin
+ st_d = StMessage;
+ end else begin
+ st_d = StPrefixWait;
+ end
+ end
+
+ // Message state pushes the incoming message into keccak round logic.
+ // It forwards the message while counting the data and if it reaches
+ // the block size, it triggers the keccak round to run. If `process` is
+ // set, it moves to Pad state.
+ StMessage: begin
+ sel_mux = MuxFifo;
+
+ if (msg_valid_i && msg_partial) begin
+ st_d = StMessage;
+
+ en_msgbuf = 1'b 1;
+ end else if (sent_blocksize) begin
+ // Check block completion first even process is set.
+ st_d = StMessageWait;
+
+ keccak_run_o = 1'b 1;
+ clr_sentmsg = 1'b 1;
+ hold_msg = 1'b 1;
+ end else if (process_latched || process_i) begin
+ st_d = StPad;
+
+ // Not asserting the msg_ready_o
+ hold_msg = 1'b 1;
+ end else begin
+ st_d = StMessage;
+
+ end
+ end
+
+ StMessageWait: begin
+ hold_msg = 1'b 1;
+
+ if (keccak_complete_i) begin
+ st_d = StMessage;
+ end else begin
+ st_d = StMessageWait;
+ end
+ end
+
+ // Pad state just pushes the ending suffix. Depending on the mode, the
+ // padding value is unique. SHA3 adds 2'b10, SHAKE adds 4'b1111, and
+ // cSHAKE adds 2'b 00. Refer `function_pad`. The signal has one more bit
+ // defined to accomodate first 1 bit of `pad10*1()` function.
+ StPad: begin
+ sel_mux = MuxFuncPad;
+
+ fsm_keccak_valid = 1'b 1;
+
+ if (keccak_ack && end_of_block) begin
+ // If padding is the last block, don't have to move to StPad01, just
+ // run Keccak and complete
+ st_d = StPadRun;
+
+ // always clear the latched msgbuf
+ clr_msgbuf = 1'b 1;
+ clr_sentmsg = 1'b 1;
+ end else if (keccak_ack) begin
+ st_d = StPad01;
+ clr_msgbuf = 1'b 1;
+ end else begin
+ st_d = StPad;
+ end
+ end
+
+ StPadRun: begin
+ st_d = StPadFlush;
+
+ keccak_run_o = 1'b 1;
+ clr_sentmsg = 1'b 1;
+ end
+
+ // Pad01 pushes the end bit of pad10*1() function. As keccak accepts byte
+ // size only, StPad always pushes partial (5bits). So at this state, it
+ // pushes rest of 3bits. If the data pushed in StPad is the last byte of
+ // the block, then Pad01 pushes to the same byte, if not, it first
+ // zero-fill the block then pad 1 to the end.
+ StPad01: begin
+ sel_mux = MuxZeroEnd;
+
+ // There's no chance StPad01 can be a start of the block. So can be
+ // discard that the sent_blocksize is set at the beginning.
+ if (sent_blocksize) begin
+ st_d = StPadFlush;
+
+ fsm_keccak_valid = 1'b 0;
+ keccak_run_o = 1'b 1;
+ clr_sentmsg = 1'b 1;
+ end else begin
+ st_d = StPad01;
+
+ fsm_keccak_valid = 1'b 1;
+ end
+ end
+
+ StPadFlush: begin
+ // Wait completion from keccak_round or wait SW indicator.
+ clr_sentmsg = 1'b 1;
+ clr_msgbuf = 1'b 1;
+
+ if (keccak_complete_i) begin
+ st_d = StPadIdle;
+
+ absorbed_d = caliptra_prim_mubi_pkg::MuBi4True;
+ end else begin
+ st_d = StPadFlush;
+ end
+ end
+
+ StTerminalError: begin
+ // this state is terminal
+ st_d = st;
+ sparse_fsm_error_o = 1'b 1;
+ end
+
+ default: begin
+ // this state is terminal
+ st_d = StTerminalError;
+ sparse_fsm_error_o = 1'b 1;
+ end
+ endcase
+
+ // SEC_CM: FSM.GLOBAL_ESC, FSM.LOCAL_ESC
+ // Unconditionally jump into the terminal error state
+ // if the life cycle controller triggers an escalation.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i)) begin
+ st_d = StTerminalError;
+ end
+ end
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ // `encode_bytepad` represents the first two bytes of bytepad()
+ // It depends on the block size. We can reuse KeccakRate
+ // 10000000 || 00010101 // 168
+ // 10000000 || 00010001 // 136
+ logic [15:0] encode_bytepad;
+
+ assign encode_bytepad = encode_bytepad_len(strength_i);
+
+ // Prefix size ==============================================================
+ // Prefix represents bytepad(encode_string(N) || encode_string(S), 168 or 136)
+ // encode_string(N) || encode_string(S) is prepared by the software and given
+ // through `ns_data_i`. The first part of bytepad is determined by the
+ // `strength_i` and stored into `encode_bytepad`.
+
+ // It is assumed that the prefix always smaller than the block size.
+ logic [PrefixSize*8-1:0] prefix;
+
+ assign prefix = {ns_data_i, encode_bytepad};
+
+ logic [MsgWidth-1:0] prefix_sliced;
+ logic [MsgWidth-1:0] prefix_data [Share];
+
+ caliptra_prim_slicer #(
+ .InW (PrefixSize*8),
+ .IndexW(KeccakMsgAddrW),
+ .OutW(MsgWidth)
+ ) u_prefix_slicer (
+ .sel_i (prefix_index),
+ .data_i (prefix),
+ .data_o (prefix_sliced)
+ );
+
+ if (EnMasking) begin : gen_prefix_masked
+ // If Masking is enabled, prefix is two share.
+ assign prefix_data[0] = '0;
+ assign prefix_data[1] = prefix_sliced;
+ end else begin : gen_prefix_unmasked
+ // If Unmasked, only one share exists.
+ assign prefix_data[0] = prefix_sliced;
+ end
+
+ // ==========================================================================
+ // function_pad is the unique value padded at the end of the message based on
+ // the function among SHA3, SHAKE, cSHAKE. The standard mentioned that SHA3
+ // pads `01` , SHAKE pads `1111`, and cSHAKE pads `00`.
+ //
+ // Then pad10*1() function follows. It adds `1` first then fill 0 until it
+ // reaches the block size -1, then adds `1`.
+ //
+ // It means always `1` is followed by the function pad.
+ logic [4:0] funcpad;
+
+ logic [MsgWidth-1:0] funcpad_data [Share];
+
+ always_comb begin
+ unique case (mode_i)
+ Sha3: funcpad = 5'b 00110;
+ Shake: funcpad = 5'b 11111;
+ CShake: funcpad = 5'b 00100;
+
+ default: begin
+ // Just create non-padding but pad10*1 only
+ funcpad = 5'b 00001;
+ end
+ endcase
+ end
+
+ // ==========================================================================
+ // `zero_with_endbit` contains all zero unless the message is for the last
+ // MsgWidth beat in the block. If it is the end of the block, the last bit
+ // will be set to complete pad10*1() functionality.
+ logic [MsgWidth-1:0] zero_with_endbit [Share];
+
+ if (EnMasking) begin : gen_zeroend_masked
+ assign zero_with_endbit[0] = '0;
+ assign zero_with_endbit[1][MsgWidth-1] = end_of_block;
+ assign zero_with_endbit[1][MsgWidth-2:0] = '0;
+ end else begin : gen_zeroend_unmasked
+ assign zero_with_endbit[0][MsgWidth-1] = end_of_block;
+ assign zero_with_endbit[0][MsgWidth-2:0] = '0;
+ end
+
+ // ==========================================================================
+ // Data mux for output data
+
+ assign keccak_addr_o = (sent_message < block_addr_limit) ? sent_message : '0;
+
+ always_comb begin
+ unique case (sel_mux)
+ MuxFifo: keccak_data_o = msg_data_i;
+ MuxPrefix: keccak_data_o = prefix_data;
+ MuxFuncPad: keccak_data_o = funcpad_data;
+ MuxZeroEnd: keccak_data_o = zero_with_endbit;
+
+ // MuxNone
+ default: keccak_data_o = '{default:'0};
+ endcase
+ end
+
+ always_comb begin
+ unique case (sel_mux)
+ MuxFifo: keccak_valid_o = msg_valid_i & ~hold_msg & ~en_msgbuf;
+ MuxPrefix: keccak_valid_o = fsm_keccak_valid;
+ MuxFuncPad: keccak_valid_o = fsm_keccak_valid;
+ MuxZeroEnd: keccak_valid_o = fsm_keccak_valid;
+
+ // MuxNone
+ default: keccak_valid_o = 1'b 0;
+ endcase
+ end
+
+ always_comb begin
+ unique case (sel_mux)
+ MuxFifo: msg_ready_o = en_msgbuf | (keccak_ready_i & ~hold_msg);
+ MuxPrefix: msg_ready_o = 1'b 0;
+ MuxFuncPad: msg_ready_o = 1'b 0;
+ MuxZeroEnd: msg_ready_o = 1'b 0;
+
+ // MuxNone
+ default: msg_ready_o = 1'b 0;
+ endcase
+ end
+
+ // caliptra_prim_packer : packing to 64bit to update keccak storage
+ // two caliptra_prim_packer in this module are used to pack the data received from
+ // upper layer (KMAC core) and also the 5bit padding bits.
+ // It is assumed that the message from upper layer could be partial at the
+ // end of the message. Then the 2 or 4bit padding is required. It can be
+ // handled by some custom logic or could be done by caliptra_prim_packer.
+ // If packer is used, the MSG_FIFO doesn't have to have another caliptra_prim_packer
+ // in front of the FIFO. This logic can handle the partial writes from the
+ // software.
+ //
+ // If a custom logic is implemented here, caliptra_prim_packer is necessary in front
+ // of the FIFO, as this logic only appends at the end of the message when
+ // `process_i` is asserted. Also, in this case, even caliptra_prim_packer is not
+ // needed, still 64bit registers to latch the partial write is required.
+ // If not, the logic has to delay the acceptance of the incoming write
+ // accesses. It may trigger the back-pressuring in some case which may result
+ // that the software(or upper layer) may not set process_i.
+ //
+ // For custom logic, it could be implemented by the 8 mux selection.
+ // for instance: (subject to be changed)
+ // unique case (sent_byte[2:0]) // generated from msg_strb_i
+ // 3'b 000: funcpad_merged = {end_of_block, 63'(function_pad) };
+ // 3'b 001: funcpad_merged = {end_of_block, 55'(function_pad), msg_data_i[ 7:0]};
+ // 3'b 010: funcpad_merged = {end_of_block, 47'(function_pad), msg_data_i[15:0]};
+ // 3'b 011: funcpad_merged = {end_of_block, 39'(function_pad), msg_data_i[23:0]};
+ // 3'b 100: funcpad_merged = {end_of_block, 31'(function_pad), msg_data_i[31:0]};
+ // 3'b 101: funcpad_merged = {end_of_block, 23'(function_pad), msg_data_i[39:0]};
+ // 3'b 110: funcpad_merged = {end_of_block, 15'(function_pad), msg_data_i[47:0]};
+ // 3'b 111: funcpad_merged = {end_of_block, 7'(function_pad), msg_data_i[55:0]};
+ // default: funcpad_merged = '0;
+ // endcase
+
+ // internal buffer to store partial write. It doesn't have to store last byte as it
+ // stores only when partial write.
+ logic [MsgWidth-8-1:0] msg_buf [Share];
+ logic [MsgStrbW-1-1:0] msg_strb;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ msg_buf <= '{default:'0};
+ msg_strb <= '0;
+ end else if (en_msgbuf) begin
+ for (int i = 0 ; i < Share ; i++) begin
+ msg_buf[i] <= msg_data_i[i][0+:(MsgWidth-8)];
+ end
+ msg_strb <= msg_strb_i[0+:(MsgStrbW-1)];
+ end else if (clr_msgbuf) begin
+ msg_buf <= '{default:'0};
+ msg_strb <= '0;
+ end
+ end
+
+ if (EnMasking) begin : gen_funcpad_data_masked
+ always_comb begin
+ unique case (msg_strb)
+ 7'b 000_0000: begin
+ funcpad_data[0] = '0;
+ funcpad_data[1] = {end_of_block, 63'(funcpad) };
+ end
+ 7'b 000_0001: begin
+ funcpad_data[0] = {56'h0, msg_buf[0][ 7:0]};
+ funcpad_data[1] = {end_of_block, 55'(funcpad), msg_buf[1][ 7:0]};
+ end
+ 7'b 000_0011: begin
+ funcpad_data[0] = {48'h0, msg_buf[0][15:0]};
+ funcpad_data[1] = {end_of_block, 47'(funcpad), msg_buf[1][15:0]};
+ end
+ 7'b 000_0111: begin
+ funcpad_data[0] = {40'h0, msg_buf[0][23:0]};
+ funcpad_data[1] = {end_of_block, 39'(funcpad), msg_buf[1][23:0]};
+ end
+ 7'b 000_1111: begin
+ funcpad_data[0] = {32'h0, msg_buf[0][31:0]};
+ funcpad_data[1] = {end_of_block, 31'(funcpad), msg_buf[1][31:0]};
+ end
+ 7'b 001_1111: begin
+ funcpad_data[0] = {24'h0, msg_buf[0][39:0]};
+ funcpad_data[1] = {end_of_block, 23'(funcpad), msg_buf[1][39:0]};
+ end
+ 7'b 011_1111: begin
+ funcpad_data[0] = {16'h0, msg_buf[0][47:0]};
+ funcpad_data[1] = {end_of_block, 15'(funcpad), msg_buf[1][47:0]};
+ end
+ 7'b 111_1111: begin
+ funcpad_data[0] = { 8'h0, msg_buf[0][55:0]};
+ funcpad_data[1] = {end_of_block, 7'(funcpad), msg_buf[1][55:0]};
+ end
+
+ default: funcpad_data = '{default:'0};
+ endcase
+ end
+ end else begin : gen_funcpad_data_unmasked
+ always_comb begin
+ unique case (msg_strb)
+ 7'b 000_0000: funcpad_data[0] = {end_of_block, 63'(funcpad) };
+ 7'b 000_0001: funcpad_data[0] = {end_of_block, 55'(funcpad), msg_buf[0][ 7:0]};
+ 7'b 000_0011: funcpad_data[0] = {end_of_block, 47'(funcpad), msg_buf[0][15:0]};
+ 7'b 000_0111: funcpad_data[0] = {end_of_block, 39'(funcpad), msg_buf[0][23:0]};
+ 7'b 000_1111: funcpad_data[0] = {end_of_block, 31'(funcpad), msg_buf[0][31:0]};
+ 7'b 001_1111: funcpad_data[0] = {end_of_block, 23'(funcpad), msg_buf[0][39:0]};
+ 7'b 011_1111: funcpad_data[0] = {end_of_block, 15'(funcpad), msg_buf[0][47:0]};
+ 7'b 111_1111: funcpad_data[0] = {end_of_block, 7'(funcpad), msg_buf[0][55:0]};
+
+ default: funcpad_data = '{default:'0};
+ endcase
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Prefix size is smaller than the smallest Keccak Block Size, which is 72 bytes.
+ `CALIPTRA_ASSERT_INIT(PrefixLessThanBlock_A, PrefixSize/8 < KeccakRate[4])
+
+ // Some part of datapath in sha3pad assumes Data width as 64bit.
+ // If data width need to be changed, funcpad_data part should be changed too.
+ // Also, The blocksize shall be divided by MsgWidth, which means, MsgWidth
+ // can be {16, 32, 64} even funcpad_data mux is fully flexible.
+ `CALIPTRA_ASSERT_INIT(MsgWidthidth_A, MsgWidth == 64)
+
+ // Assume pulse signals: start, process, done
+ `CALIPTRA_ASSUME(StartPulse_A, start_i |=> !start_i)
+ `CALIPTRA_ASSUME(ProcessPulse_A, process_i |=> !process_i)
+ `CALIPTRA_ASSUME(DonePulse_A,
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i) |=>
+ caliptra_prim_mubi_pkg::mubi4_test_false_strict(done_i))
+
+ // ASSERT output pulse signals: absorbed_o, keccak_run_o
+ `CALIPTRA_ASSERT(AbsorbedPulse_A,
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed_o) |=>
+ caliptra_prim_mubi_pkg::mubi4_test_false_strict(absorbed_o))
+ `CALIPTRA_ASSERT(KeccakRunPulse_A, keccak_run_o |=> !keccak_run_o)
+
+ // start_i, done_i, process_i cannot set high at the same time
+ `CALIPTRA_ASSUME(StartProcessDoneMutex_a,
+ $onehot0({
+ start_i,
+ process_i,
+ caliptra_prim_mubi_pkg::mubi4_test_true_loose(done_i)
+ }))
+
+ // Sequence, start_i --> process_i --> absorbed_o --> done_i
+ //`CALIPTRA_ASSUME(Sequence_a, start_i ##[1:$] process_i ##[1:$] ##[1:$] absorbed_o ##[1:$] done_i)
+
+`ifndef SYNTHESIS
+ // Process only asserts after start and all message are fed.
+ // These valid signals are qualifier of FPV to trigger the control signal
+ // It is a little bit hard to specify these criteria in SVA property so creating
+ // qualifiers in RTL form is easier.
+ logic start_valid, process_valid, absorb_valid, done_valid;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ start_valid <= 1'b 1;
+ end else if (start_i) begin
+ start_valid <= 1'b 0;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ start_valid <= 1'b 1;
+ end
+ end
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ process_valid <= 1'b 0;
+ end else if (start_i) begin
+ process_valid <= 1'b 1;
+ end else if (process_i) begin
+ process_valid <= 1'b 0;
+ end
+ end
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ done_valid <= 1'b 0;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(absorbed_o)) begin
+ done_valid <= 1'b 1;
+ end else if (caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i)) begin
+ done_valid <= 1'b 0;
+ end
+ end
+
+ // Message can be fed in between start_i and process_i.
+ `CALIPTRA_ASSUME(MessageCondition_M, msg_valid_i && msg_ready_o |-> process_valid && !process_i)
+
+ // Message ready should be asserted only in between start_i and process_i
+ `CALIPTRA_ASSERT(MsgReadyCondition_A, msg_ready_o |-> process_valid && !process_i)
+
+ `CALIPTRA_ASSUME(ProcessCondition_M, process_i |-> process_valid)
+ `CALIPTRA_ASSUME(StartCondition_M, start_i |-> start_valid)
+ `CALIPTRA_ASSUME(DoneCondition_M,
+ caliptra_prim_mubi_pkg::mubi4_test_true_strict(done_i) |-> done_valid)
+
+ // Assume mode_i and strength_i are stable during the operation
+ // This will be guarded at the kmac top level
+ `CALIPTRA_ASSUME(ModeStableDuringOp_M,
+ $changed(mode_i) |-> start_valid)
+ `CALIPTRA_ASSUME(StrengthStableDuringOp_M,
+ $changed(strength_i) |-> start_valid)
+
+`endif // SYNTHESIS
+
+ // If not full block is written, the pad shall send message to keccak_round
+ // If it is end of the message, the state moves to StPad and send the request
+ `CALIPTRA_ASSERT(CompleteBlockWhenProcess_A,
+ $rose(process_latched) && (!end_of_block && !sent_blocksize )
+ && !(st inside {StPrefixWait, StMessageWait}) |-> ##[1:5] keccak_valid_o,
+ clk_i, !rst_ni || caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i))
+
+ // If process_i asserted, completion shall be asserted shall be asserted
+ //`CALIPTRA_ASSERT(ProcessToAbsorbed_A, process_i |=> strong(##[24*Share:$] absorbed_o))
+
+
+ // Assumption of input mode_i and strength_i
+ // SHA3 variants: SHA3-224, SHA3-256, SHA3-384, SHA3-512
+ // SHAKE, cSHAKE variants: SHAKE128, SHAKE256, cSHAKE128, cSHAKE256
+ `CALIPTRA_ASSUME_FPV(ModeStrengthCombinations_M,
+ start_i |->
+ (mode_i == Sha3 && (strength_i inside {L224, L256, L384, L512})) ||
+ ((mode_i == Shake || mode_i == CShake) && (strength_i inside {L128, L256})),
+ clk_i, !rst_ni)
+
+ // No partial write is allowed for Message FIFO interface
+ `CALIPTRA_ASSUME(NoPartialMsgFifo_M,
+ keccak_valid_o && (sel_mux == MuxFifo) |-> (&msg_strb_i) == 1'b1,
+ clk_i, !rst_ni)
+
+ // When transaction is stored into msg_buf, it shall be partial write.
+ `CALIPTRA_ASSUME(AlwaysPartialMsgBuf_M,
+ en_msgbuf |-> msg_valid_i && (msg_strb_i[MsgStrbW-1] == 1'b0),
+ clk_i, !rst_ni)
+
+ // if partial write comes and is acked, then no more msg_valid_i until
+ // next message
+ `CALIPTRA_ASSUME(PartialEndOfMsg_M,
+ msg_valid_i && msg_ready_o && msg_partial |=>
+ !msg_valid_i ##[1:$] $stable(msg_valid_i) ##1 process_latched,
+ clk_i, !rst_ni)
+
+ // At the first clock in StPad01 state, sent_blocksize shall not be set
+ `CALIPTRA_ASSERT(Pad01NotAttheEndOfBlock_A,
+ (st == StPad && st_d == StPad01) |-> !end_of_block,
+ clk_i, !rst_ni)
+
+ // When data sent to the keccak_round, the address should be in the range
+ `CALIPTRA_ASSERT(KeccakAddrInRange_A,
+ keccak_valid_o |-> keccak_addr_o < KeccakRate[strength_i],
+ clk_i, !rst_ni)
+
+ // NS data shall be stable during the operation.
+ //`CALIPTRA_ASSUME(NsStableInProcess_A,
+ // $stable(ns_data_i) throughout(start_i ##[1:$] process_i ##[1:$] absorbed_o),
+ // clk_i, !rst_ni)
+
+ // Functional Coverage
+ `CALIPTRA_COVER(StMessageFeed_C, st == StMessage)
+ `CALIPTRA_COVER(StPad_C, st == StPad01 && sent_blocksize)
+ `CALIPTRA_COVER(StPadSendMsg_C, st == StPad01 && keccak_ack)
+ `CALIPTRA_COVER(StComplete_C, st == StPadFlush)
+endmodule
diff --git a/src/caliptra_ss_lc_ctrl/rtl/top_pkg.sv b/src/caliptra_ss_lc_ctrl/rtl/top_pkg.sv
new file mode 100644
index 0000000..fd750a3
--- /dev/null
+++ b/src/caliptra_ss_lc_ctrl/rtl/top_pkg.sv
@@ -0,0 +1,22 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+
+package top_pkg;
+
+localparam int TL_AW=32;
+localparam int TL_DW=32; // = TL_DBW * 8; TL_DBW must be a power-of-two
+localparam int TL_AIW=8; // a_source, d_source
+localparam int TL_DIW=1; // d_sink
+localparam int TL_AUW=23; // a_user
+localparam int TL_DUW=14; // d_user
+localparam int TL_DBW=(TL_DW>>3);
+localparam int TL_SZW=$clog2($clog2(TL_DBW)+1);
+
+// NOTE THAT THIS IS A FEATURE FOR TEST CHIPS ONLY TO MITIGATE
+// THE RISK OF A BROKEN OTP MACRO. THIS WILL BE DISABLED FOR
+// PRODUCTION DEVICES.
+localparam int SecVolatileRawUnlockEn = 0;
+
+endpackage
diff --git a/src/dmi/config/compile.yml b/src/dmi/config/compile.yml
new file mode 100644
index 0000000..e4344f4
--- /dev/null
+++ b/src/dmi/config/compile.yml
@@ -0,0 +1,27 @@
+---
+provides: [dm_pkg]
+schema_version: 2.4.0
+requires:
+ - caliptra_prim_pkg
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/dm_pkg.sv
+ tb:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/dm_pkg.sv
+---
+provides: [dmi_jtag]
+schema_version: 2.4.0
+requires:
+ - dm_pkg
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/dmi_jtag_tap.sv
+ - $COMPILE_ROOT/rtl/dmi_cdc.sv
+ - $COMPILE_ROOT/rtl/dmi_jtag.sv
+ tops: [dmi_jtag]
diff --git a/src/dmi/rtl/dm_pkg.sv b/src/dmi/rtl/dm_pkg.sv
new file mode 100644
index 0000000..a8a27d2
--- /dev/null
+++ b/src/dmi/rtl/dm_pkg.sv
@@ -0,0 +1,451 @@
+/* Copyright 2018 ETH Zurich and University of Bologna.
+ * Copyright and related rights are licensed under the Solderpad Hardware
+ * License, Version 0.51 (the “License”); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
+ * or agreed to in writing, software, hardware and materials distributed under
+ * this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ * File: dm_pkg.sv
+ * Author: Florian Zaruba
+ * Date: 30.6.2018
+ *
+ * Description: Debug-module package, contains common system definitions.
+ *
+ */
+
+package dm;
+ localparam logic [3:0] DbgVersion013 = 4'h2;
+ // size of program buffer in junks of 32-bit words
+ localparam logic [4:0] ProgBufSize = 5'h8;
+
+ // amount of data count registers implemented
+ localparam logic [3:0] DataCount = 4'h2;
+
+ // address to which a hart should jump when it was requested to halt
+ localparam logic [63:0] HaltAddress = 64'h800;
+ localparam logic [63:0] ResumeAddress = HaltAddress + 8;
+ localparam logic [63:0] ExceptionAddress = HaltAddress + 16;
+
+ // address where data0-15 is shadowed or if shadowed in a CSR
+ // address of the first CSR used for shadowing the data
+ localparam logic [11:0] DataAddr = 12'h380; // we are aligned with Rocket here
+
+ // debug registers
+ typedef enum logic [7:0] {
+ Data0 = 8'h04,
+ Data1 = 8'h05,
+ Data2 = 8'h06,
+ Data3 = 8'h07,
+ Data4 = 8'h08,
+ Data5 = 8'h09,
+ Data6 = 8'h0A,
+ Data7 = 8'h0B,
+ Data8 = 8'h0C,
+ Data9 = 8'h0D,
+ Data10 = 8'h0E,
+ Data11 = 8'h0F,
+ DMControl = 8'h10,
+ DMStatus = 8'h11, // r/o
+ Hartinfo = 8'h12,
+ HaltSum1 = 8'h13,
+ HAWindowSel = 8'h14,
+ HAWindow = 8'h15,
+ AbstractCS = 8'h16,
+ Command = 8'h17,
+ AbstractAuto = 8'h18,
+ DevTreeAddr0 = 8'h19,
+ DevTreeAddr1 = 8'h1A,
+ DevTreeAddr2 = 8'h1B,
+ DevTreeAddr3 = 8'h1C,
+ NextDM = 8'h1D,
+ ProgBuf0 = 8'h20,
+ ProgBuf1 = 8'h21,
+ ProgBuf2 = 8'h22,
+ ProgBuf3 = 8'h23,
+ ProgBuf4 = 8'h24,
+ ProgBuf5 = 8'h25,
+ ProgBuf6 = 8'h26,
+ ProgBuf7 = 8'h27,
+ ProgBuf8 = 8'h28,
+ ProgBuf9 = 8'h29,
+ ProgBuf10 = 8'h2A,
+ ProgBuf11 = 8'h2B,
+ ProgBuf12 = 8'h2C,
+ ProgBuf13 = 8'h2D,
+ ProgBuf14 = 8'h2E,
+ ProgBuf15 = 8'h2F,
+ AuthData = 8'h30,
+ HaltSum2 = 8'h34,
+ HaltSum3 = 8'h35,
+ SBAddress3 = 8'h37,
+ SBCS = 8'h38,
+ SBAddress0 = 8'h39,
+ SBAddress1 = 8'h3A,
+ SBAddress2 = 8'h3B,
+ SBData0 = 8'h3C,
+ SBData1 = 8'h3D,
+ SBData2 = 8'h3E,
+ SBData3 = 8'h3F,
+ HaltSum0 = 8'h40
+ } dm_csr_e;
+
+ // debug causes
+ localparam logic [2:0] CauseBreakpoint = 3'h1;
+ localparam logic [2:0] CauseTrigger = 3'h2;
+ localparam logic [2:0] CauseRequest = 3'h3;
+ localparam logic [2:0] CauseSingleStep = 3'h4;
+
+ typedef struct packed {
+ logic [31:23] zero1;
+ logic impebreak;
+ logic [21:20] zero0;
+ logic allhavereset;
+ logic anyhavereset;
+ logic allresumeack;
+ logic anyresumeack;
+ logic allnonexistent;
+ logic anynonexistent;
+ logic allunavail;
+ logic anyunavail;
+ logic allrunning;
+ logic anyrunning;
+ logic allhalted;
+ logic anyhalted;
+ logic authenticated;
+ logic authbusy;
+ logic hasresethaltreq;
+ logic devtreevalid;
+ logic [3:0] version;
+ } dmstatus_t;
+
+ typedef struct packed {
+ logic haltreq;
+ logic resumereq;
+ logic hartreset;
+ logic ackhavereset;
+ logic zero1;
+ logic hasel;
+ logic [25:16] hartsello;
+ logic [15:6] hartselhi;
+ logic [5:4] zero0;
+ logic setresethaltreq;
+ logic clrresethaltreq;
+ logic ndmreset;
+ logic dmactive;
+ } dmcontrol_t;
+
+ typedef struct packed {
+ logic [31:24] zero1;
+ logic [23:20] nscratch;
+ logic [19:17] zero0;
+ logic dataaccess;
+ logic [15:12] datasize;
+ logic [11:0] dataaddr;
+ } hartinfo_t;
+
+ typedef enum logic [2:0] {
+ CmdErrNone, CmdErrBusy, CmdErrNotSupported,
+ CmdErrorException, CmdErrorHaltResume,
+ CmdErrorBus, CmdErrorOther = 7
+ } cmderr_e;
+
+ typedef struct packed {
+ logic [31:29] zero3;
+ logic [28:24] progbufsize;
+ logic [23:13] zero2;
+ logic busy;
+ logic zero1;
+ cmderr_e cmderr;
+ logic [7:4] zero0;
+ logic [3:0] datacount;
+ } abstractcs_t;
+
+ typedef enum logic [7:0] {
+ AccessRegister = 8'h0,
+ QuickAccess = 8'h1,
+ AccessMemory = 8'h2
+ } cmd_e;
+
+ typedef struct packed {
+ cmd_e cmdtype;
+ logic [23:0] control;
+ } command_t;
+
+ typedef struct packed {
+ logic [31:16] autoexecprogbuf;
+ logic [15:12] zero0;
+ logic [11:0] autoexecdata;
+ } abstractauto_t;
+
+ typedef struct packed {
+ logic zero1;
+ logic [22:20] aarsize;
+ logic aarpostincrement;
+ logic postexec;
+ logic transfer;
+ logic write;
+ logic [15:0] regno;
+ } ac_ar_cmd_t;
+
+ // DTM
+ typedef enum logic [1:0] {
+ DTM_NOP = 2'h0,
+ DTM_READ = 2'h1,
+ DTM_WRITE = 2'h2
+ } dtm_op_e;
+
+ typedef enum logic [1:0] {
+ DTM_SUCCESS = 2'h0,
+ DTM_ERR = 2'h2,
+ DTM_BUSY = 2'h3
+ } dtm_op_status_e;
+
+ typedef struct packed {
+ logic [31:29] sbversion;
+ logic [28:23] zero0;
+ logic sbbusyerror;
+ logic sbbusy;
+ logic sbreadonaddr;
+ logic [19:17] sbaccess;
+ logic sbautoincrement;
+ logic sbreadondata;
+ logic [14:12] sberror;
+ logic [11:5] sbasize;
+ logic sbaccess128;
+ logic sbaccess64;
+ logic sbaccess32;
+ logic sbaccess16;
+ logic sbaccess8;
+ } sbcs_t;
+
+ typedef struct packed {
+ logic [31:0] addr;
+ dtm_op_e op;
+ logic [31:0] data;
+ } dmi_req_t;
+
+ typedef struct packed {
+ logic [31:0] data;
+ logic [1:0] resp;
+ } dmi_resp_t;
+
+ typedef struct packed {
+ logic [31:18] zero1;
+ logic dmihardreset;
+ logic dmireset;
+ logic zero0;
+ logic [14:12] idle;
+ logic [11:10] dmistat;
+ logic [9:4] abits;
+ logic [3:0] version;
+ } dtmcs_t;
+
+ // privilege levels
+ typedef enum logic[1:0] {
+ PRIV_LVL_M = 2'b11,
+ PRIV_LVL_S = 2'b01,
+ PRIV_LVL_U = 2'b00
+ } priv_lvl_t;
+
+ // debugregs in core
+ typedef struct packed {
+ logic [31:28] xdebugver;
+ logic [27:16] zero2;
+ logic ebreakm;
+ logic zero1;
+ logic ebreaks;
+ logic ebreaku;
+ logic stepie;
+ logic stopcount;
+ logic stoptime;
+ logic [8:6] cause;
+ logic zero0;
+ logic mprven;
+ logic nmip;
+ logic step;
+ priv_lvl_t prv;
+ } dcsr_t;
+
+ // CSRs
+ typedef enum logic [11:0] {
+ // Floating-Point CSRs
+ CSR_FFLAGS = 12'h001,
+ CSR_FRM = 12'h002,
+ CSR_FCSR = 12'h003,
+ CSR_FTRAN = 12'h800,
+ // Supervisor Mode CSRs
+ CSR_SSTATUS = 12'h100,
+ CSR_SIE = 12'h104,
+ CSR_STVEC = 12'h105,
+ CSR_SCOUNTEREN = 12'h106,
+ CSR_SSCRATCH = 12'h140,
+ CSR_SEPC = 12'h141,
+ CSR_SCAUSE = 12'h142,
+ CSR_STVAL = 12'h143,
+ CSR_SIP = 12'h144,
+ CSR_SATP = 12'h180,
+ // Machine Mode CSRs
+ CSR_MSTATUS = 12'h300,
+ CSR_MISA = 12'h301,
+ CSR_MEDELEG = 12'h302,
+ CSR_MIDELEG = 12'h303,
+ CSR_MIE = 12'h304,
+ CSR_MTVEC = 12'h305,
+ CSR_MCOUNTEREN = 12'h306,
+ CSR_MSCRATCH = 12'h340,
+ CSR_MEPC = 12'h341,
+ CSR_MCAUSE = 12'h342,
+ CSR_MTVAL = 12'h343,
+ CSR_MIP = 12'h344,
+ CSR_PMPCFG0 = 12'h3A0,
+ CSR_PMPADDR0 = 12'h3B0,
+ CSR_MVENDORID = 12'hF11,
+ CSR_MARCHID = 12'hF12,
+ CSR_MIMPID = 12'hF13,
+ CSR_MHARTID = 12'hF14,
+ CSR_MCYCLE = 12'hB00,
+ CSR_MINSTRET = 12'hB02,
+ CSR_DCACHE = 12'h701,
+ CSR_ICACHE = 12'h700,
+
+ CSR_TSELECT = 12'h7A0,
+ CSR_TDATA1 = 12'h7A1,
+ CSR_TDATA2 = 12'h7A2,
+ CSR_TDATA3 = 12'h7A3,
+ CSR_TINFO = 12'h7A4,
+
+ // Debug CSR
+ CSR_DCSR = 12'h7b0,
+ CSR_DPC = 12'h7b1,
+ CSR_DSCRATCH0 = 12'h7b2, // optional
+ CSR_DSCRATCH1 = 12'h7b3, // optional
+
+ // Counters and Timers
+ CSR_CYCLE = 12'hC00,
+ CSR_TIME = 12'hC01,
+ CSR_INSTRET = 12'hC02
+ } csr_reg_t;
+
+ // SBA state
+ typedef enum logic [2:0] {
+ Idle,
+ Read,
+ Write,
+ WaitRead,
+ WaitWrite
+ } sba_state_e;
+
+ // Instruction Generation Helpers
+ function automatic logic [31:0] jal (logic [4:0] rd,
+ logic [20:0] imm);
+ // OpCode Jal
+ return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h6f};
+ endfunction
+
+ function automatic logic [31:0] jalr (logic [4:0] rd,
+ logic [4:0] rs1,
+ logic [11:0] offset);
+ // OpCode Jal
+ return {offset[11:0], rs1, 3'b0, rd, 7'h67};
+ endfunction
+
+ function automatic logic [31:0] andi (logic [4:0] rd,
+ logic [4:0] rs1,
+ logic [11:0] imm);
+ // OpCode andi
+ return {imm[11:0], rs1, 3'h7, rd, 7'h13};
+ endfunction
+
+ function automatic logic [31:0] slli (logic [4:0] rd,
+ logic [4:0] rs1,
+ logic [5:0] shamt);
+ // OpCode slli
+ return {6'b0, shamt[5:0], rs1, 3'h1, rd, 7'h13};
+ endfunction
+
+ function automatic logic [31:0] srli (logic [4:0] rd,
+ logic [4:0] rs1,
+ logic [5:0] shamt);
+ // OpCode srli
+ return {6'b0, shamt[5:0], rs1, 3'h5, rd, 7'h13};
+ endfunction
+
+ function automatic logic [31:0] load (logic [2:0] size,
+ logic [4:0] dest,
+ logic [4:0] base,
+ logic [11:0] offset);
+ // OpCode Load
+ return {offset[11:0], base, size, dest, 7'h03};
+ endfunction
+
+ function automatic logic [31:0] auipc (logic [4:0] rd,
+ logic [20:0] imm);
+ // OpCode Auipc
+ return {imm[20], imm[10:1], imm[11], imm[19:12], rd, 7'h17};
+ endfunction
+
+ function automatic logic [31:0] store (logic [2:0] size,
+ logic [4:0] src,
+ logic [4:0] base,
+ logic [11:0] offset);
+ // OpCode Store
+ return {offset[11:5], src, base, size, offset[4:0], 7'h23};
+ endfunction
+
+ function automatic logic [31:0] float_load (logic [2:0] size,
+ logic [4:0] dest,
+ logic [4:0] base,
+ logic [11:0] offset);
+ // OpCode Load
+ return {offset[11:0], base, size, dest, 7'b00_001_11};
+ endfunction
+
+ function automatic logic [31:0] float_store (logic [2:0] size,
+ logic [4:0] src,
+ logic [4:0] base,
+ logic [11:0] offset);
+ // OpCode Store
+ return {offset[11:5], src, base, size, offset[4:0], 7'b01_001_11};
+ endfunction
+
+ function automatic logic [31:0] csrw (csr_reg_t csr,
+ logic [4:0] rs1);
+ // CSRRW, rd, OpCode System
+ return {csr, rs1, 3'h1, 5'h0, 7'h73};
+ endfunction
+
+ function automatic logic [31:0] csrr (csr_reg_t csr,
+ logic [4:0] dest);
+ // rs1, CSRRS, rd, OpCode System
+ return {csr, 5'h0, 3'h2, dest, 7'h73};
+ endfunction
+
+ function automatic logic [31:0] branch(logic [4:0] src2,
+ logic [4:0] src1,
+ logic [2:0] funct3,
+ logic [11:0] offset);
+ // OpCode Branch
+ return {offset[11], offset[9:4], src2, src1, funct3,
+ offset[3:0], offset[10], 7'b11_000_11};
+ endfunction
+
+ function automatic logic [31:0] ebreak ();
+ return 32'h00100073;
+ endfunction
+
+ function automatic logic [31:0] wfi ();
+ return 32'h10500073;
+ endfunction
+
+ function automatic logic [31:0] nop ();
+ return 32'h00000013;
+ endfunction
+
+ function automatic logic [31:0] illegal ();
+ return 32'h00000000;
+ endfunction
+
+endpackage : dm
diff --git a/src/dmi/rtl/dmi_cdc.sv b/src/dmi/rtl/dmi_cdc.sv
new file mode 100644
index 0000000..e12794d
--- /dev/null
+++ b/src/dmi/rtl/dmi_cdc.sv
@@ -0,0 +1,123 @@
+/* Copyright 2018 ETH Zurich and University of Bologna.
+* Copyright and related rights are licensed under the Solderpad Hardware
+* License, Version 0.51 (the “License”); you may not use this file except in
+* compliance with the License. You may obtain a copy of the License at
+* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
+* or agreed to in writing, software, hardware and materials distributed under
+* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
+* CONDITIONS OF ANY KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations under the License.
+*
+* File: axi_riscv_debug_module.sv
+* Author: Andreas Traber
+* Author: Florian Zaruba
+*
+* Description: Clock domain crossings for JTAG to DMI very heavily based
+* on previous work by Andreas Traber for the PULP project.
+* This is mainly a wrapper around the existing CDCs.
+*/
+module dmi_cdc (
+ // Test controls
+ input logic testmode_i,
+ input logic test_rst_ni,
+
+ // JTAG side (master side)
+ input logic tck_i,
+ input logic trst_ni,
+ input dm::dmi_req_t jtag_dmi_req_i,
+ output logic jtag_dmi_ready_o,
+ input logic jtag_dmi_valid_i,
+ input logic jtag_dmi_cdc_clear_i, // Synchronous clear signal.
+ // Triggers reset sequencing
+ // accross CDC
+
+ output dm::dmi_resp_t jtag_dmi_resp_o,
+ output logic jtag_dmi_valid_o,
+ input logic jtag_dmi_ready_i,
+
+ // core side (slave side)
+ input logic clk_i,
+ input logic rst_ni,
+
+ output logic core_dmi_rst_no,
+ output dm::dmi_req_t core_dmi_req_o,
+ output logic core_dmi_valid_o,
+ input logic core_dmi_ready_i,
+
+ input dm::dmi_resp_t core_dmi_resp_i,
+ output logic core_dmi_ready_o,
+ input logic core_dmi_valid_i
+);
+
+
+ logic jtag_combined_rstn;
+ always_ff @(posedge tck_i or negedge trst_ni) begin
+ if (!trst_ni) begin
+ jtag_combined_rstn <= '0;
+ end else if (jtag_dmi_cdc_clear_i) begin
+ jtag_combined_rstn <= '0;
+ end else begin
+ jtag_combined_rstn <= 1'b1;
+ end
+ end
+
+ logic combined_rstn_premux;
+ caliptra_prim_flop_2sync #(
+ .Width(1),
+ .ResetValue(0)
+ ) u_combined_rstn_sync (
+ .clk_i,
+ .rst_ni(rst_ni),
+ .d_i(jtag_combined_rstn),
+ .q_o(combined_rstn_premux)
+ );
+
+ logic combined_rstn;
+ caliptra_prim_clock_mux2 #(
+ .NoFpgaBufG(1'b1)
+ ) u_rst_mux (
+ .clk0_i(combined_rstn_premux),
+ .clk1_i(test_rst_ni),
+ .sel_i(testmode_i),
+ .clk_o(combined_rstn)
+ );
+
+ caliptra_prim_fifo_async_simple #(
+ .Width($bits(dm::dmi_req_t)),
+ // Use the RZ protocol so that the two sides can be reset independently without getting
+ // out of sync due to EVEN/ODD states.
+ .EnRzHs(1)
+ ) i_cdc_req (
+ .clk_wr_i (tck_i),
+ .rst_wr_ni(trst_ni),
+ .wvalid_i (jtag_dmi_valid_i),
+ .wready_o (jtag_dmi_ready_o),
+ .wdata_i (jtag_dmi_req_i),
+ .clk_rd_i (clk_i),
+ .rst_rd_ni(combined_rstn),
+ .rvalid_o (core_dmi_valid_o),
+ .rready_i (core_dmi_ready_i),
+ .rdata_o (core_dmi_req_o)
+ );
+
+ caliptra_prim_fifo_async_simple #(
+ .Width($bits(dm::dmi_resp_t)),
+ // Use the RZ protocol so that the two sides can be reset independently without getting
+ // out of sync due to EVEN/ODD states.
+ .EnRzHs(1)
+ ) i_cdc_resp (
+ .clk_wr_i (clk_i),
+ .rst_wr_ni(combined_rstn),
+ .wvalid_i (core_dmi_valid_i),
+ .wready_o (core_dmi_ready_o),
+ .wdata_i (core_dmi_resp_i),
+ .clk_rd_i (tck_i),
+ .rst_rd_ni(trst_ni),
+ .rvalid_o (jtag_dmi_valid_o),
+ .rready_i (jtag_dmi_ready_i),
+ .rdata_o (jtag_dmi_resp_o)
+ );
+
+ assign core_dmi_rst_no = combined_rstn;
+
+endmodule : dmi_cdc
diff --git a/src/dmi/rtl/dmi_jtag.sv b/src/dmi/rtl/dmi_jtag.sv
new file mode 100644
index 0000000..b82bde1
--- /dev/null
+++ b/src/dmi/rtl/dmi_jtag.sv
@@ -0,0 +1,357 @@
+/* Copyright 2018 ETH Zurich and University of Bologna.
+* Copyright and related rights are licensed under the Solderpad Hardware
+* License, Version 0.51 (the “License”); you may not use this file except in
+* compliance with the License. You may obtain a copy of the License at
+* http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
+* or agreed to in writing, software, hardware and materials distributed under
+* this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
+* CONDITIONS OF ANY KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations under the License.
+*
+* File: axi_riscv_debug_module.sv
+* Author: Florian Zaruba
+* Date: 19.7.2018
+*
+* Description: JTAG DMI (debug module interface)
+*
+*/
+
+module dmi_jtag #(
+ parameter logic [31:0] IdcodeValue = 32'h00000DB3,
+ parameter int unsigned NumDmiWordAbits = 16 // Number of DMI address bits (7 - 32)
+) (
+ input logic clk_i, // DMI Clock
+ input logic rst_ni, // Asynchronous reset active low
+ input logic testmode_i,
+ input logic test_rst_ni,
+
+ // active-low glitch free reset signal. Is asserted
+ // (clk_i) whenever the dmi_jtag is reset.
+ output logic dmi_rst_no,
+ output dm::dmi_req_t dmi_req_o,
+ output logic dmi_req_valid_o,
+ input logic dmi_req_ready_i,
+
+ input dm::dmi_resp_t dmi_resp_i,
+ output logic dmi_resp_ready_o,
+ input logic dmi_resp_valid_i,
+
+ input logic tck_i, // JTAG test clock pad
+ input logic tms_i, // JTAG test mode select pad
+ input logic trst_ni, // JTAG test reset pad
+ input logic td_i, // JTAG test data input pad
+ output logic td_o, // JTAG test data output pad
+ output logic tdo_oe_o // Data out output enable
+);
+
+ typedef enum logic [1:0] {
+ DMINoError = 2'h0, DMIReservedError = 2'h1,
+ DMIOPFailed = 2'h2, DMIBusy = 2'h3
+ } dmi_error_e;
+ dmi_error_e error_d, error_q;
+
+ logic tck;
+ logic jtag_dmi_clear; // Synchronous reset of DMI triggered by TestLogicReset in
+ // jtag TAP
+ logic dmi_clear; // Functional (warm) reset of the entire DMI
+ logic update;
+ logic capture;
+ logic shift;
+ logic tdi;
+
+ logic dtmcs_select;
+ dm::dtmcs_t dtmcs_d, dtmcs_q;
+
+ assign dmi_clear = jtag_dmi_clear || (dtmcs_select && update && dtmcs_q.dmihardreset);
+
+ // -------------------------------
+ // Debug Module Control and Status
+ // -------------------------------
+
+ always_comb begin
+ dtmcs_d = dtmcs_q;
+ if (capture) begin
+ if (dtmcs_select) begin
+ dtmcs_d = '{
+ zero1 : '0,
+ dmihardreset : 1'b0,
+ dmireset : 1'b0,
+ zero0 : '0,
+ idle : 3'd1, // 1: Enter Run-Test/Idle and leave it immediately
+ dmistat : error_q, // 0: No error, 2: Op failed, 3: too fast
+ abits : 6'(NumDmiWordAbits), // The size of address in dmi
+ version : 4'd1 // Version described in spec version 0.13 (and later?)
+ };
+ end
+ end
+
+ if (shift) begin
+ if (dtmcs_select) dtmcs_d = {tdi, 31'(dtmcs_q >> 1)};
+ end
+ end
+
+ always_ff @(posedge tck or negedge trst_ni) begin
+ if (!trst_ni) begin
+ dtmcs_q <= '0;
+ end else begin
+ dtmcs_q <= dtmcs_d;
+ end
+ end
+
+ // ----------------------------
+ // DMI (Debug Module Interface)
+ // ----------------------------
+
+ logic dmi_select;
+ logic dmi_tdo;
+
+ dm::dmi_req_t dmi_req;
+ logic dmi_req_ready;
+ logic dmi_req_valid;
+
+ dm::dmi_resp_t dmi_resp;
+ logic dmi_resp_valid;
+ logic dmi_resp_ready;
+
+ typedef struct packed {
+ logic [NumDmiWordAbits-1:0] address;
+ logic [31:0] data;
+ logic [1:0] op;
+ } dmi_t;
+
+ typedef enum logic [2:0] { Idle, Read, WaitReadValid, Write, WaitWriteValid } state_e;
+ state_e state_d, state_q;
+
+ logic [$bits(dmi_t)-1:0] dr_d, dr_q;
+ logic [NumDmiWordAbits-1:0] address_d, address_q;
+ logic [31:0] data_d, data_q;
+
+ dmi_t dmi;
+ assign dmi = dmi_t'(dr_q);
+ assign dmi_req.addr = $bits(dmi_req.addr)'(address_q);
+ assign dmi_req.data = data_q;
+ assign dmi_req.op = (state_q == Write) ? dm::DTM_WRITE : dm::DTM_READ;
+ // We will always be ready to accept the data we requested.
+ assign dmi_resp_ready = 1'b1;
+
+ logic error_dmi_busy;
+ logic error_dmi_op_failed;
+
+ always_comb begin : p_fsm
+ error_dmi_busy = 1'b0;
+ error_dmi_op_failed = 1'b0;
+ // default assignments
+ state_d = state_q;
+ address_d = address_q;
+ data_d = data_q;
+ error_d = error_q;
+
+ dmi_req_valid = 1'b0;
+
+ if (dmi_clear) begin
+ state_d = Idle;
+ data_d = '0;
+ error_d = DMINoError;
+ address_d = '0;
+ end else begin
+ unique case (state_q)
+ Idle: begin
+ // make sure that no error is sticky
+ if (dmi_select && update && (error_q == DMINoError)) begin
+ // save address and value
+ address_d = dmi.address;
+ data_d = dmi.data;
+ if (dm::dtm_op_e'(dmi.op) == dm::DTM_READ) begin
+ state_d = Read;
+ end else if (dm::dtm_op_e'(dmi.op) == dm::DTM_WRITE) begin
+ state_d = Write;
+ end
+ // else this is a nop and we can stay here
+ end
+ end
+
+ Read: begin
+ dmi_req_valid = 1'b1;
+ if (dmi_req_ready) begin
+ state_d = WaitReadValid;
+ end
+ end
+
+ WaitReadValid: begin
+ // load data into register and shift out
+ if (dmi_resp_valid) begin
+ unique case (dmi_resp.resp)
+ dm::DTM_SUCCESS: begin
+ data_d = dmi_resp.data;
+ end
+ dm::DTM_ERR: begin
+ data_d = 32'hDEAD_BEEF;
+ error_dmi_op_failed = 1'b1;
+ end
+ dm::DTM_BUSY: begin
+ data_d = 32'hB051_B051;
+ error_dmi_busy = 1'b1;
+ end
+ default: begin
+ data_d = 32'hBAAD_C0DE;
+ end
+ endcase
+ state_d = Idle;
+ end
+ end
+
+ Write: begin
+ dmi_req_valid = 1'b1;
+ // request sent, wait for response before going back to idle
+ if (dmi_req_ready) begin
+ state_d = WaitWriteValid;
+ end
+ end
+
+ WaitWriteValid: begin
+ // got a valid answer go back to idle
+ if (dmi_resp_valid) begin
+ unique case (dmi_resp.resp)
+ dm::DTM_ERR: error_dmi_op_failed = 1'b1;
+ dm::DTM_BUSY: error_dmi_busy = 1'b1;
+ default: ;
+ endcase
+ state_d = Idle;
+ end
+ end
+
+ default: begin
+ // just wait for idle here
+ if (dmi_resp_valid) begin
+ state_d = Idle;
+ end
+ end
+ endcase
+
+ // update means we got another request but we didn't finish
+ // the one in progress, this state is sticky
+ if (update && state_q != Idle) begin
+ error_dmi_busy = 1'b1;
+ end
+
+ // if capture goes high while we are in the read state
+ // or in the corresponding wait state we are not giving back a valid word
+ // -> throw an error
+ if (capture && state_q inside {Read, WaitReadValid}) begin
+ error_dmi_busy = 1'b1;
+ end
+
+ if (error_dmi_busy && error_q == DMINoError) begin
+ error_d = DMIBusy;
+ end
+
+ if (error_dmi_op_failed && error_q == DMINoError) begin
+ error_d = DMIOPFailed;
+ end
+
+ // clear sticky error flag
+ if (update && dtmcs_q.dmireset && dtmcs_select) begin
+ error_d = DMINoError;
+ end
+ end
+ end
+
+ // shift register
+ assign dmi_tdo = dr_q[0];
+
+ always_comb begin : p_shift
+ dr_d = dr_q;
+ if (dmi_clear) begin
+ dr_d = '0;
+ end else begin
+ if (capture) begin
+ if (dmi_select) begin
+ if (error_q == DMINoError && !error_dmi_busy) begin
+ dr_d = {address_q, data_q, DMINoError};
+ // DMI was busy, report an error
+ end else if (error_q == DMIBusy || error_dmi_busy) begin
+ dr_d = {address_q, data_q, DMIBusy};
+ end
+ end
+ end
+
+ if (shift) begin
+ if (dmi_select) begin
+ dr_d = {tdi, dr_q[$bits(dr_q)-1:1]};
+ end
+ end
+ end
+ end
+
+ always_ff @(posedge tck or negedge trst_ni) begin
+ if (!trst_ni) begin
+ dr_q <= '0;
+ state_q <= Idle;
+ address_q <= '0;
+ data_q <= '0;
+ error_q <= DMINoError;
+ end else begin
+ dr_q <= dr_d;
+ state_q <= state_d;
+ address_q <= address_d;
+ data_q <= data_d;
+ error_q <= error_d;
+ end
+ end
+
+ // ---------
+ // TAP
+ // ---------
+ dmi_jtag_tap #(
+ .IrLength (5),
+ .IdcodeValue(IdcodeValue)
+ ) i_dmi_jtag_tap (
+ .tck_i,
+ .tms_i,
+ .trst_ni,
+ .td_i,
+ .td_o,
+ .tdo_oe_o,
+ .testmode_i,
+ .tck_o ( tck ),
+ .dmi_clear_o ( jtag_dmi_clear ),
+ .update_o ( update ),
+ .capture_o ( capture ),
+ .shift_o ( shift ),
+ .tdi_o ( tdi ),
+ .dtmcs_select_o ( dtmcs_select ),
+ .dtmcs_tdo_i ( dtmcs_q[0] ),
+ .dmi_select_o ( dmi_select ),
+ .dmi_tdo_i ( dmi_tdo )
+ );
+
+ // ---------
+ // CDC
+ // ---------
+ dmi_cdc i_dmi_cdc (
+ // Test controls
+ .testmode_i,
+ .test_rst_ni,
+ // JTAG side (master side)
+ .tck_i ( tck ),
+ .trst_ni ( trst_ni ),
+ .jtag_dmi_cdc_clear_i ( dmi_clear ),
+ .jtag_dmi_req_i ( dmi_req ),
+ .jtag_dmi_ready_o ( dmi_req_ready ),
+ .jtag_dmi_valid_i ( dmi_req_valid ),
+ .jtag_dmi_resp_o ( dmi_resp ),
+ .jtag_dmi_valid_o ( dmi_resp_valid ),
+ .jtag_dmi_ready_i ( dmi_resp_ready ),
+ // core side
+ .clk_i,
+ .rst_ni,
+ .core_dmi_rst_no ( dmi_rst_no ),
+ .core_dmi_req_o ( dmi_req_o ),
+ .core_dmi_valid_o ( dmi_req_valid_o ),
+ .core_dmi_ready_i ( dmi_req_ready_i ),
+ .core_dmi_resp_i ( dmi_resp_i ),
+ .core_dmi_ready_o ( dmi_resp_ready_o ),
+ .core_dmi_valid_i ( dmi_resp_valid_i )
+ );
+
+endmodule : dmi_jtag
diff --git a/src/dmi/rtl/dmi_jtag_tap.sv b/src/dmi/rtl/dmi_jtag_tap.sv
new file mode 100644
index 0000000..2638b81
--- /dev/null
+++ b/src/dmi/rtl/dmi_jtag_tap.sv
@@ -0,0 +1,323 @@
+/* Copyright 2018 ETH Zurich and University of Bologna.
+ * Copyright and related rights are licensed under the Solderpad Hardware
+ * License, Version 0.51 (the “License”); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://solderpad.org/licenses/SHL-0.51. Unless required by applicable law
+ * or agreed to in writing, software, hardware and materials distributed under
+ * this License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ *
+ * File: dmi_jtag_tap.sv
+ * Author: Florian Zaruba
+ * Date: 19.7.2018
+ *
+ * Description: JTAG TAP for DMI (according to debug spec 0.13)
+ *
+ */
+
+module dmi_jtag_tap #(
+ parameter int unsigned IrLength = 5,
+ // JTAG IDCODE Value
+ parameter logic [31:0] IdcodeValue = 32'h00000001
+ // xxxx version
+ // xxxxxxxxxxxxxxxx part number
+ // xxxxxxxxxxx manufacturer id
+ // 1 required by standard
+) (
+ input logic tck_i, // JTAG test clock pad
+ input logic tms_i, // JTAG test mode select pad
+ input logic trst_ni, // JTAG test reset pad
+ input logic td_i, // JTAG test data input pad
+ output logic td_o, // JTAG test data output pad
+ output logic tdo_oe_o, // Data out output enable
+ input logic testmode_i,
+ // JTAG is interested in writing the DTM CSR register
+ output logic tck_o,
+ // Synchronous reset of the dmi module triggered by JTAG TAP
+ output logic dmi_clear_o,
+ output logic update_o,
+ output logic capture_o,
+ output logic shift_o,
+ output logic tdi_o,
+ output logic dtmcs_select_o,
+ input logic dtmcs_tdo_i,
+ // we want to access DMI register
+ output logic dmi_select_o,
+ input logic dmi_tdo_i
+);
+
+ typedef enum logic [3:0] {
+ TestLogicReset, RunTestIdle, SelectDrScan,
+ CaptureDr, ShiftDr, Exit1Dr, PauseDr, Exit2Dr,
+ UpdateDr, SelectIrScan, CaptureIr, ShiftIr,
+ Exit1Ir, PauseIr, Exit2Ir, UpdateIr
+ } tap_state_e;
+
+ tap_state_e tap_state_q, tap_state_d;
+ logic update_dr, shift_dr, capture_dr;
+
+ typedef enum logic [IrLength-1:0] {
+ BYPASS0 = 'h0,
+ IDCODE = 'h1,
+ DTMCSR = 'h10,
+ DMIACCESS = 'h11,
+ BYPASS1 = 'h1f
+ } ir_reg_e;
+
+ // ----------------
+ // IR logic
+ // ----------------
+
+ // shift register
+ logic [IrLength-1:0] jtag_ir_shift_d, jtag_ir_shift_q;
+ // IR register -> this gets captured from shift register upon update_ir
+ ir_reg_e jtag_ir_d, jtag_ir_q;
+ logic capture_ir, shift_ir, update_ir, test_logic_reset; // pause_ir
+
+ always_comb begin : p_jtag
+ jtag_ir_shift_d = jtag_ir_shift_q;
+ jtag_ir_d = jtag_ir_q;
+
+ // IR shift register
+ if (shift_ir) begin
+ jtag_ir_shift_d = {td_i, jtag_ir_shift_q[IrLength-1:1]};
+ end
+
+ // capture IR register
+ if (capture_ir) begin
+ jtag_ir_shift_d = IrLength'(4'b0101);
+ end
+
+ // update IR register
+ if (update_ir) begin
+ jtag_ir_d = ir_reg_e'(jtag_ir_shift_q);
+ end
+
+ if (test_logic_reset) begin
+ // Bring all TAP state to the initial value.
+ jtag_ir_shift_d = '0;
+ jtag_ir_d = IDCODE;
+ end
+ end
+
+ always_ff @(posedge tck_i, negedge trst_ni) begin : p_jtag_ir_reg
+ if (!trst_ni) begin
+ jtag_ir_shift_q <= '0;
+ jtag_ir_q <= IDCODE;
+ end else begin
+ jtag_ir_shift_q <= jtag_ir_shift_d;
+ jtag_ir_q <= jtag_ir_d;
+ end
+ end
+
+ // ----------------
+ // TAP DR Regs
+ // ----------------
+ // - Bypass
+ // - IDCODE
+ // - DTM CS
+ logic [31:0] idcode_d, idcode_q;
+ logic idcode_select;
+ logic bypass_select;
+
+ logic bypass_d, bypass_q; // this is a 1-bit register
+
+ always_comb begin
+ idcode_d = idcode_q;
+ bypass_d = bypass_q;
+
+ if (capture_dr) begin
+ if (idcode_select) idcode_d = IdcodeValue;
+ if (bypass_select) bypass_d = 1'b0;
+ end
+
+ if (shift_dr) begin
+ if (idcode_select) idcode_d = {td_i, 31'(idcode_q >> 1)};
+ if (bypass_select) bypass_d = td_i;
+ end
+
+ if (test_logic_reset) begin
+ // Bring all TAP state to the initial value.
+ idcode_d = IdcodeValue;
+ bypass_d = 1'b0;
+ end
+ end
+
+ // ----------------
+ // Data reg select
+ // ----------------
+ always_comb begin : p_data_reg_sel
+ dmi_select_o = 1'b0;
+ dtmcs_select_o = 1'b0;
+ idcode_select = 1'b0;
+ bypass_select = 1'b0;
+ unique case (jtag_ir_q)
+ BYPASS0: bypass_select = 1'b1;
+ IDCODE: idcode_select = 1'b1;
+ DTMCSR: dtmcs_select_o = 1'b1;
+ DMIACCESS: dmi_select_o = 1'b1;
+ BYPASS1: bypass_select = 1'b1;
+ default: bypass_select = 1'b1;
+ endcase
+ end
+
+ // ----------------
+ // Output select
+ // ----------------
+ logic tdo_mux;
+
+ always_comb begin : p_out_sel
+ // we are shifting out the IR register
+ if (shift_ir) begin
+ tdo_mux = jtag_ir_shift_q[0];
+ // here we are shifting the DR register
+ end else begin
+ unique case (jtag_ir_q)
+ IDCODE: tdo_mux = idcode_q[0]; // Reading ID code
+ DTMCSR: tdo_mux = dtmcs_tdo_i; // Read from DTMCS TDO
+ DMIACCESS: tdo_mux = dmi_tdo_i; // Read from DMI TDO
+ default: tdo_mux = bypass_q; // BYPASS instruction
+ endcase
+ end
+ end
+
+ // ----------------
+ // DFT
+ // ----------------
+ logic tck_n;
+
+ caliptra_prim_clock_inv #(
+ .HasScanMode(1'b1),
+ .NoFpgaBufG(1'b1)
+ ) i_tck_inv (
+ .clk_i ( tck_i ),
+ .clk_no ( tck_n ),
+ .scanmode_i ( testmode_i )
+ );
+
+ // TDO changes state at negative edge of TCK
+ always_ff @(posedge tck_n, negedge trst_ni) begin : p_tdo_regs
+ if (!trst_ni) begin
+ td_o <= 1'b0;
+ tdo_oe_o <= 1'b0;
+ end else begin
+ td_o <= tdo_mux;
+ tdo_oe_o <= (shift_ir | shift_dr);
+ end
+ end
+ // ----------------
+ // TAP FSM
+ // ----------------
+ // Determination of next state; purely combinatorial
+ always_comb begin : p_tap_fsm
+
+ test_logic_reset = 1'b0;
+
+ capture_dr = 1'b0;
+ shift_dr = 1'b0;
+ update_dr = 1'b0;
+
+ capture_ir = 1'b0;
+ shift_ir = 1'b0;
+ // pause_ir = 1'b0; unused
+ update_ir = 1'b0;
+
+ unique case (tap_state_q)
+ TestLogicReset: begin
+ tap_state_d = (tms_i) ? TestLogicReset : RunTestIdle;
+ test_logic_reset = 1'b1;
+ end
+ RunTestIdle: begin
+ tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
+ end
+ // DR Path
+ SelectDrScan: begin
+ tap_state_d = (tms_i) ? SelectIrScan : CaptureDr;
+ end
+ CaptureDr: begin
+ capture_dr = 1'b1;
+ tap_state_d = (tms_i) ? Exit1Dr : ShiftDr;
+ end
+ ShiftDr: begin
+ shift_dr = 1'b1;
+ tap_state_d = (tms_i) ? Exit1Dr : ShiftDr;
+ end
+ Exit1Dr: begin
+ tap_state_d = (tms_i) ? UpdateDr : PauseDr;
+ end
+ PauseDr: begin
+ tap_state_d = (tms_i) ? Exit2Dr : PauseDr;
+ end
+ Exit2Dr: begin
+ tap_state_d = (tms_i) ? UpdateDr : ShiftDr;
+ end
+ UpdateDr: begin
+ update_dr = 1'b1;
+ tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
+ end
+ // IR Path
+ SelectIrScan: begin
+ tap_state_d = (tms_i) ? TestLogicReset : CaptureIr;
+ end
+ // In this controller state, the shift register bank in the
+ // Instruction Register parallel loads a pattern of fixed values on
+ // the rising edge of TCK. The last two significant bits must always
+ // be "01".
+ CaptureIr: begin
+ capture_ir = 1'b1;
+ tap_state_d = (tms_i) ? Exit1Ir : ShiftIr;
+ end
+ // In this controller state, the instruction register gets connected
+ // between TDI and TDO, and the captured pattern gets shifted on
+ // each rising edge of TCK. The instruction available on the TDI
+ // pin is also shifted in to the instruction register.
+ ShiftIr: begin
+ shift_ir = 1'b1;
+ tap_state_d = (tms_i) ? Exit1Ir : ShiftIr;
+ end
+ Exit1Ir: begin
+ tap_state_d = (tms_i) ? UpdateIr : PauseIr;
+ end
+ PauseIr: begin
+ // pause_ir = 1'b1; // unused
+ tap_state_d = (tms_i) ? Exit2Ir : PauseIr;
+ end
+ Exit2Ir: begin
+ tap_state_d = (tms_i) ? UpdateIr : ShiftIr;
+ end
+ // In this controller state, the instruction in the instruction
+ // shift register is latched to the latch bank of the Instruction
+ // Register on every falling edge of TCK. This instruction becomes
+ // the current instruction once it is latched.
+ UpdateIr: begin
+ update_ir = 1'b1;
+ tap_state_d = (tms_i) ? SelectDrScan : RunTestIdle;
+ end
+ default: ; // can't actually happen since case is full
+ endcase
+ end
+
+ always_ff @(posedge tck_i or negedge trst_ni) begin : p_regs
+ if (!trst_ni) begin
+ tap_state_q <= TestLogicReset;
+ idcode_q <= IdcodeValue;
+ bypass_q <= 1'b0;
+ end else begin
+ tap_state_q <= tap_state_d;
+ idcode_q <= idcode_d;
+ bypass_q <= bypass_d;
+ end
+ end
+
+ // Pass through JTAG signals to debug custom DR logic.
+ // In case of a single TAP those are just feed-through.
+ assign tck_o = tck_i;
+ assign tdi_o = td_i;
+ assign update_o = update_dr;
+ assign shift_o = shift_dr;
+ assign capture_o = capture_dr;
+ assign dmi_clear_o = test_logic_reset;
+
+
+endmodule : dmi_jtag_tap
diff --git a/src/fuse_ctrl/config/compile.yml b/src/fuse_ctrl/config/compile.yml
new file mode 100644
index 0000000..718b21a
--- /dev/null
+++ b/src/fuse_ctrl/config/compile.yml
@@ -0,0 +1,79 @@
+---
+provides: [fuse_ctrl_pkg]
+schema_version: 2.4.0
+requires:
+ - caliptra_prim
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/otp_ctrl_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_pkg.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_part_pkg.sv
+ tb:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/otp_ctrl_reg_pkg.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_pkg.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_part_pkg.sv
+---
+provides: [fuse_ctrl]
+schema_version: 2.4.0
+requires:
+ - axi2tlul
+ - tlul
+ - ast_pkg
+ - caliptra_prim
+ - caliptra_prim_generic
+ - edn_pkg
+ - pwrmgr_pkg
+ # - caliptra_ss_lc_ctrl_pkg
+ - fuse_ctrl_pkg
+targets:
+ rtl:
+ directories: [$COMPILE_ROOT/rtl]
+ files:
+ - $COMPILE_ROOT/rtl/otp_ctrl_core_reg_top.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_prim_reg_top.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_dai.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_ecc_reg.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_kdi.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_lci.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_lfsr_timer.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_part_buf.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_part_unbuf.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_scrmbl.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl_token_const.sv
+ - $COMPILE_ROOT/rtl/prim_generic_otp.sv
+ - $COMPILE_ROOT/rtl/otp_ctrl.sv
+ #- $COMPILE_ROOT/rtl/otp_ctrl_top.sv
+ tops: [otp_ctrl]
+#---
+#provides: [fuse_ctrl_tb_pkg]
+#schema_version: 2.4.0
+#requires:
+#targets:
+# tb:
+# directories: [$COMPILE_ROOT/tb]
+# files:
+# - $COMPILE_ROOT/tb/otp_ctrl_top_tb_pkg.sv
+# tops: [otp_ctrl_top_tb_pkg]
+#---
+#provides: [fuse_ctrl_tb]
+#schema_version: 2.4.0
+#requires:
+# - fuse_ctrl
+# - fuse_ctrl_tb_pkg
+#targets:
+# tb:
+# directories: [$COMPILE_ROOT/tb]
+# files:
+# - $COMPILE_ROOT/tb/otp_ctrl_top_tb.sv
+# tops: [otp_ctrl_top_tb]
+#global:
+# tool:
+# vcs:
+# default:
+# - '-assert svaext'
+# - +define+CLP_ASSERT_ON
+# - '-noinherit_timescale=1ns/1ps'
diff --git a/src/fuse_ctrl/data/dif_otp_ctrl.c.tpl b/src/fuse_ctrl/data/dif_otp_ctrl.c.tpl
new file mode 100755
index 0000000..12882f1
--- /dev/null
+++ b/src/fuse_ctrl/data/dif_otp_ctrl.c.tpl
@@ -0,0 +1,734 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+parts = otp_mmap.config["partitions"]
+digest_parts = [part for part in parts if
+ part["hw_digest"] or part["sw_digest"]]
+read_locked_csr_parts = [part for part in parts if part["read_lock"] == "CSR"]
+secret_parts = [part for part in parts if part["secret"]]
+%>\
+#include "sw/device/lib/dif/dif_otp_ctrl.h"
+
+#include
+
+#include "sw/device/lib/base/bitfield.h"
+#include "sw/device/lib/base/macros.h"
+#include "sw/device/lib/dif/dif_base.h"
+
+#include "otp_ctrl_regs.h" // Generated.
+
+/**
+ * Checks if integrity/consistency-check-related operations are locked.
+ *
+ * This is a convenience function to avoid superfluous error-checking in all the
+ * functions that can be locked out by this register.
+ *
+ * @param check_config True to check the config regwen. False to check the
+ * trigger regwen.
+ */
+static bool checks_are_locked(const dif_otp_ctrl_t *otp, bool check_config) {
+ ptrdiff_t reg_offset = check_config
+ ? OTP_CTRL_CHECK_REGWEN_REG_OFFSET
+ : OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET;
+ size_t regwen_bit =
+ check_config ? OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT
+ : OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT;
+ uint32_t locked = mmio_region_read32(otp->base_addr, reg_offset);
+ return !bitfield_bit32_read(locked, regwen_bit);
+}
+
+dif_result_t dif_otp_ctrl_configure(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_config_t config) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+ if (checks_are_locked(otp, /*check_config=*/true)) {
+ return kDifLocked;
+ }
+
+ mmio_region_write32(otp->base_addr, OTP_CTRL_CHECK_TIMEOUT_REG_OFFSET,
+ config.check_timeout);
+ mmio_region_write32(otp->base_addr,
+ OTP_CTRL_INTEGRITY_CHECK_PERIOD_REG_OFFSET,
+ config.integrity_period_mask);
+ mmio_region_write32(otp->base_addr,
+ OTP_CTRL_CONSISTENCY_CHECK_PERIOD_REG_OFFSET,
+ config.consistency_period_mask);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_check_integrity(const dif_otp_ctrl_t *otp) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+ if (checks_are_locked(otp, /*check_config=*/false)) {
+ return kDifLocked;
+ }
+
+ uint32_t reg =
+ bitfield_bit32_write(0, OTP_CTRL_CHECK_TRIGGER_INTEGRITY_BIT, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_CHECK_TRIGGER_REG_OFFSET, reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_check_consistency(const dif_otp_ctrl_t *otp) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+ if (checks_are_locked(otp, /*check_config=*/false)) {
+ return kDifLocked;
+ }
+
+ uint32_t reg =
+ bitfield_bit32_write(0, OTP_CTRL_CHECK_TRIGGER_CONSISTENCY_BIT, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_CHECK_TRIGGER_REG_OFFSET, reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_lock_dai(const dif_otp_ctrl_t *otp) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t reg = bitfield_bit32_write(
+ 0, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked) {
+ if (otp == NULL || is_locked == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t reg = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ *is_locked = !bitfield_bit32_read(
+ reg, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_lock_config(const dif_otp_ctrl_t *otp) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t reg =
+ bitfield_bit32_write(0, OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, false);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_CHECK_REGWEN_REG_OFFSET, reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_config_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked) {
+ if (otp == NULL || is_locked == NULL) {
+ return kDifBadArg;
+ }
+
+ *is_locked = checks_are_locked(otp, /*check_config=*/true);
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_lock_check_trigger(const dif_otp_ctrl_t *otp) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t reg = bitfield_bit32_write(
+ 0, OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, false);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_check_trigger_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked) {
+ if (otp == NULL || is_locked == NULL) {
+ return kDifBadArg;
+ }
+
+ *is_locked = checks_are_locked(otp, /*check_config=*/false);
+ return kDifOk;
+}
+
+static bool sw_read_lock_reg_offset(dif_otp_ctrl_partition_t partition,
+ ptrdiff_t *reg_offset,
+ bitfield_bit32_index_t *index) {
+ switch (partition) {
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_define = part_name.as_c_define()
+ index_line = f"*index = OTP_CTRL_{part_name_define}_READ_LOCK_{part_name_define}_READ_LOCK_BIT;"
+%>\
+ case kDifOtpCtrlPartition${part_name.as_camel_case()}:
+ *reg_offset = OTP_CTRL_${part_name_define}_READ_LOCK_REG_OFFSET;
+ % if len(index_line) > 80 - 6:
+ *index =
+ OTP_CTRL_${part_name_define}_READ_LOCK_${part_name_define}_READ_LOCK_BIT;
+ % else:
+ ${index_line}
+ % endif
+ break;
+% endfor
+ default:
+ return false;
+ }
+ return true;
+}
+
+dif_result_t dif_otp_ctrl_lock_reading(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition) {
+ if (otp == NULL) {
+ return kDifBadArg;
+ }
+
+ ptrdiff_t offset;
+ bitfield_bit32_index_t index;
+ if (!sw_read_lock_reg_offset(partition, &offset, &index)) {
+ return kDifBadArg;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ uint32_t reg = bitfield_bit32_write(0, index, false);
+ mmio_region_write32(otp->base_addr, offset, reg);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_reading_is_locked(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ bool *is_locked) {
+ if (otp == NULL || is_locked == NULL) {
+ return kDifBadArg;
+ }
+
+ ptrdiff_t offset;
+ bitfield_bit32_index_t index;
+ if (!sw_read_lock_reg_offset(partition, &offset, &index)) {
+ return kDifBadArg;
+ }
+
+ uint32_t reg = mmio_region_read32(otp->base_addr, offset);
+ *is_locked = !bitfield_bit32_read(reg, index);
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_get_status(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_status_t *status) {
+ if (otp == NULL || status == NULL) {
+ return kDifBadArg;
+ }
+
+ static const bitfield_bit32_index_t kIndices[] = {
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ lhs = f'[kDifOtpCtrlStatusCode{part_name.as_camel_case()}Error]'
+ rhs = f'OTP_CTRL_STATUS_{part_name.as_c_define()}_ERROR_BIT'
+ line = f'{lhs} = {rhs},'
+%>\
+ % if len(line) > 80 - 6:
+ ${lhs} =
+ ${rhs},
+ % else:
+ ${line}
+ % endif
+% endfor
+ [kDifOtpCtrlStatusCodeDaiError] = OTP_CTRL_STATUS_DAI_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeLciError] = OTP_CTRL_STATUS_LCI_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeTimeoutError] = OTP_CTRL_STATUS_TIMEOUT_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeLfsrError] = OTP_CTRL_STATUS_LFSR_FSM_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeScramblingError] =
+ OTP_CTRL_STATUS_SCRAMBLING_FSM_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeKdfError] = OTP_CTRL_STATUS_KEY_DERIV_FSM_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeBusIntegError] =
+ OTP_CTRL_STATUS_BUS_INTEG_ERROR_BIT,
+ [kDifOtpCtrlStatusCodeDaiIdle] = OTP_CTRL_STATUS_DAI_IDLE_BIT,
+ [kDifOtpCtrlStatusCodeCheckPending] = OTP_CTRL_STATUS_CHECK_PENDING_BIT,
+ };
+
+ status->codes = 0;
+ uint32_t status_code =
+ mmio_region_read32(otp->base_addr, OTP_CTRL_STATUS_REG_OFFSET);
+ for (int i = 0; i < ARRAYSIZE(kIndices); ++i) {
+ // If the error is not present at all, we clear its cause bit if relevant,
+ // and bail immediately.
+ if (!bitfield_bit32_read(status_code, kIndices[i])) {
+ if (i <= kDifOtpCtrlStatusCodeHasCauseLast) {
+ status->causes[i] = kDifOtpCtrlErrorOk;
+ }
+ continue;
+ }
+
+ status->codes =
+ bitfield_bit32_write(status->codes, (bitfield_bit32_index_t)i, true);
+
+ if (i <= kDifOtpCtrlStatusCodeHasCauseLast) {
+ bitfield_field32_t field;
+ field = (bitfield_field32_t){
+ .mask = OTP_CTRL_ERR_CODE_0_ERR_CODE_0_MASK,
+ .index = OTP_CTRL_ERR_CODE_0_ERR_CODE_0_OFFSET,
+ };
+
+ ptrdiff_t address =
+ OTP_CTRL_ERR_CODE_0_REG_OFFSET + i * (ptrdiff_t)sizeof(uint32_t);
+ uint32_t error_code = mmio_region_read32(otp->base_addr, address);
+
+ dif_otp_ctrl_error_t err;
+ switch (bitfield_field32_read(error_code, field)) {
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_NO_ERROR:
+ err = kDifOtpCtrlErrorOk;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_ERROR:
+ err = kDifOtpCtrlErrorMacroUnspecified;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_ECC_CORR_ERROR:
+ err = kDifOtpCtrlErrorMacroRecoverableRead;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_ECC_UNCORR_ERROR:
+ err = kDifOtpCtrlErrorMacroUnrecoverableRead;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_WRITE_BLANK_ERROR:
+ err = kDifOtpCtrlErrorMacroBlankCheckFailed;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_ACCESS_ERROR:
+ err = kDifOtpCtrlErrorLockedAccess;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_CHECK_FAIL_ERROR:
+ err = kDifOtpCtrlErrorBackgroundCheckFailed;
+ break;
+ case OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_FSM_STATE_ERROR:
+ err = kDifOtpCtrlErrorFsmBadState;
+ break;
+ default:
+ return kDifError;
+ }
+ status->causes[i] = err;
+ }
+ }
+
+ return kDifOk;
+}
+
+typedef struct partition_info {
+ /**
+ * The absolute OTP address at which this partition starts.
+ */
+ uint32_t start_addr;
+ /**
+ * The length of this partition, in bytes, including the digest.
+ *
+ * If the partition has a digest, it is expected to be at address
+ * `start_addr + len - sizeof(uint64_t)`.
+ */
+ uint32_t len;
+ /**
+ * The alignment mask for this partition.
+ *
+ * A valid address for this partition must be such that
+ * `addr & align_mask == 0`.
+ */
+ uint32_t align_mask;
+
+ /**
+ * Whether this is a software-managed partition with a software-managed
+ * digest.
+ */
+ bool is_software;
+
+ /**
+ * Whether this partition has a digest field.
+ */
+ bool has_digest;
+
+ /**
+ * Whether this partition is the lifecycle partition.
+ */
+ bool is_lifecycle;
+} partition_info_t;
+
+// This is generates too many lines with different formatting variants, so
+// We opt to just disable formatting.
+// clang-format off
+static const partition_info_t kPartitions[] = {
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+ has_digest = part["hw_digest"] or part["sw_digest"]
+ is_lifecycle = part["variant"] == "LifeCycle"
+ is_software = part["variant"] == "Unbuffered"
+%>\
+ [kDifOtpCtrlPartition${part_name_camel}] = {
+ .start_addr = OTP_CTRL_PARAM_${part_name_define}_OFFSET,
+ .len = OTP_CTRL_PARAM_${part_name_define}_SIZE,
+ .align_mask = ${"0x7" if part in secret_parts else "0x3"},
+ .is_software = ${"true" if is_software else "false"},
+ .has_digest = ${"true" if has_digest else "false"},
+ .is_lifecycle = ${"true" if is_lifecycle else "false"}},
+% endfor
+};
+// clang-format on
+
+dif_result_t dif_otp_ctrl_relative_address(dif_otp_ctrl_partition_t partition,
+ uint32_t abs_address,
+ uint32_t *relative_address) {
+ *relative_address = 0;
+
+ if (partition >= ARRAYSIZE(kPartitions)) {
+ return kDifBadArg;
+ }
+
+ if ((abs_address & kPartitions[partition].align_mask) != 0) {
+ return kDifUnaligned;
+ }
+
+ if (abs_address < kPartitions[partition].start_addr) {
+ return kDifOutOfRange;
+ }
+
+ *relative_address = abs_address - kPartitions[partition].start_addr;
+ if (*relative_address >= kPartitions[partition].len) {
+ *relative_address = 0;
+ return kDifOutOfRange;
+ }
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_read_start(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address) {
+ if (otp == NULL || partition >= ARRAYSIZE(kPartitions)) {
+ return kDifBadArg;
+ }
+
+ if ((address & kPartitions[partition].align_mask) != 0) {
+ return kDifUnaligned;
+ }
+
+ if (address >= kPartitions[partition].len) {
+ return kDifOutOfRange;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ address += kPartitions[partition].start_addr;
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ address);
+
+ uint32_t cmd =
+ bitfield_bit32_write(0, OTP_CTRL_DIRECT_ACCESS_CMD_RD_BIT, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ cmd);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_read32_end(const dif_otp_ctrl_t *otp,
+ uint32_t *value) {
+ if (otp == NULL || value == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ *value = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_RDATA_0_REG_OFFSET);
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_read64_end(const dif_otp_ctrl_t *otp,
+ uint64_t *value) {
+ if (otp == NULL || value == NULL) {
+ return kDifBadArg;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ *value = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_RDATA_1_REG_OFFSET);
+ *value <<= 32;
+ *value |= mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_RDATA_0_REG_OFFSET);
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_program32(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint32_t value) {
+ if (otp == NULL || partition >= ARRAYSIZE(kPartitions)) {
+ return kDifBadArg;
+ }
+
+ // Ensure that we are writing to a 32-bit-access partition by checking that
+ // the alignment mask is 0b11.
+ //
+ // Note furthermore that the LC partition is *not* writeable, so we eject
+ // here.
+ if (kPartitions[partition].align_mask != 0x3 ||
+ kPartitions[partition].is_lifecycle) {
+ return kDifError;
+ }
+
+ if ((address & kPartitions[partition].align_mask) != 0) {
+ return kDifUnaligned;
+ }
+
+ // NOTE: The bounds check is tightened here, since we disallow writing the
+ // digest directly. If the partition does not have a digest, no tightening is
+ // needed.
+ size_t digest_size = kPartitions[partition].has_digest * sizeof(uint64_t);
+ if (address >= kPartitions[partition].len - digest_size) {
+ return kDifOutOfRange;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ address += kPartitions[partition].start_addr;
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ address);
+
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET,
+ value);
+
+ uint32_t cmd =
+ bitfield_bit32_write(0, OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ cmd);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_program64(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint64_t value) {
+ if (otp == NULL || partition >= ARRAYSIZE(kPartitions)) {
+ return kDifBadArg;
+ }
+
+ // Ensure that we are writing to a 64-bit-access partition by checking that
+ // the alignment mask is 0b111.
+ if (kPartitions[partition].align_mask != 0x7) {
+ return kDifError;
+ }
+
+ if ((address & kPartitions[partition].align_mask) != 0) {
+ return kDifUnaligned;
+ }
+
+ // NOTE: The bounds check is tightened here, since we disallow writing the
+ // digest directly.
+ size_t digest_size = sizeof(uint64_t);
+ if (address >= kPartitions[partition].len - digest_size) {
+ return kDifOutOfRange;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ address += kPartitions[partition].start_addr;
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ address);
+
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET,
+ value & UINT32_MAX);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_WDATA_1_REG_OFFSET,
+ value >> 32);
+
+ uint32_t cmd =
+ bitfield_bit32_write(0, OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ cmd);
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_dai_digest(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint64_t digest) {
+ if (otp == NULL || partition >= ARRAYSIZE(kPartitions)) {
+ return kDifBadArg;
+ }
+
+ // Not all partitions have a digest.
+ if (!kPartitions[partition].has_digest) {
+ return kDifError;
+ }
+
+ // For software partitions, the digest must be nonzero; for all other
+ // partitions it must be zero.
+ bool is_sw = kPartitions[partition].is_software;
+ if (is_sw == (digest == 0)) {
+ return kDifBadArg;
+ }
+
+ uint32_t busy = mmio_region_read32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET);
+ if (!bitfield_bit32_read(
+ busy, OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT)) {
+ return kDifUnavailable;
+ }
+
+ uint32_t address = kPartitions[partition].start_addr;
+ if (is_sw) {
+ address += kPartitions[partition].len - sizeof(digest);
+ }
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ address);
+
+ if (digest != 0) {
+ mmio_region_write32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET,
+ digest & 0xffffffff);
+ mmio_region_write32(otp->base_addr,
+ OTP_CTRL_DIRECT_ACCESS_WDATA_1_REG_OFFSET,
+ digest >> 32);
+ }
+
+ bitfield_bit32_index_t cmd_bit = is_sw
+ ? OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT
+ : OTP_CTRL_DIRECT_ACCESS_CMD_DIGEST_BIT;
+ uint32_t cmd = bitfield_bit32_write(0, cmd_bit, true);
+ mmio_region_write32(otp->base_addr, OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ cmd);
+
+ return kDifOk;
+}
+
+static bool get_digest_regs(dif_otp_ctrl_partition_t partition, ptrdiff_t *reg0,
+ ptrdiff_t *reg1) {
+ switch (partition) {
+% for part in digest_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_define = part_name.as_c_define()
+%>\
+ case kDifOtpCtrlPartition${part_name.as_camel_case()}:
+ *reg0 = OTP_CTRL_${part_name_define}_DIGEST_0_REG_OFFSET;
+ *reg1 = OTP_CTRL_${part_name_define}_DIGEST_1_REG_OFFSET;
+ break;
+% endfor
+ default:
+ return false;
+ }
+
+ return true;
+}
+
+dif_result_t dif_otp_ctrl_is_digest_computed(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ bool *is_computed) {
+ if (otp == NULL || is_computed == NULL) {
+ return kDifBadArg;
+ }
+
+ ptrdiff_t reg0, reg1;
+ if (!get_digest_regs(partition, ®0, ®1)) {
+ return kDifBadArg;
+ }
+
+ uint64_t value = mmio_region_read32(otp->base_addr, reg1);
+ value <<= 32;
+ value |= mmio_region_read32(otp->base_addr, reg0);
+
+ *is_computed = value != 0;
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_get_digest(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint64_t *digest) {
+ if (otp == NULL || digest == NULL) {
+ return kDifBadArg;
+ }
+
+ ptrdiff_t reg0, reg1;
+ if (!get_digest_regs(partition, ®0, ®1)) {
+ return kDifBadArg;
+ }
+
+ uint64_t value = mmio_region_read32(otp->base_addr, reg1);
+ value <<= 32;
+ value |= mmio_region_read32(otp->base_addr, reg0);
+
+ if (value == 0) {
+ return kDifError;
+ }
+ *digest = value;
+
+ return kDifOk;
+}
+
+dif_result_t dif_otp_ctrl_read_blocking(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint32_t *buf,
+ size_t len) {
+ if (otp == NULL || partition >= ARRAYSIZE(kPartitions) || buf == NULL) {
+ return kDifBadArg;
+ }
+
+ if (!kPartitions[partition].is_software) {
+ return kDifError;
+ }
+
+ if ((address & kPartitions[partition].align_mask) != 0) {
+ return kDifUnaligned;
+ }
+
+ if (address + len >= kPartitions[partition].len) {
+ return kDifOutOfRange;
+ }
+
+ uint32_t reg_offset = OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET +
+ kPartitions[partition].start_addr + address;
+ mmio_region_memcpy_from_mmio32(otp->base_addr, reg_offset, buf,
+ len * sizeof(uint32_t));
+ return kDifOk;
+}
diff --git a/src/fuse_ctrl/data/dif_otp_ctrl.h.tpl b/src/fuse_ctrl/data/dif_otp_ctrl.h.tpl
new file mode 100755
index 0000000..e860bf6
--- /dev/null
+++ b/src/fuse_ctrl/data/dif_otp_ctrl.h.tpl
@@ -0,0 +1,615 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+parts = otp_mmap.config["partitions"]
+digest_parts = [part for part in parts if
+ part["hw_digest"] == "true" or part["sw_digest"] == "true"]
+read_locked_csr_parts = [part for part in parts if part["read_lock"] == "CSR"]
+secret_parts = [part for part in parts if part["secret"] == "true"]
+%>\
+#ifndef OPENTITAN_SW_DEVICE_LIB_DIF_DIF_OTP_CTRL_H_
+#define OPENTITAN_SW_DEVICE_LIB_DIF_DIF_OTP_CTRL_H_
+
+/**
+ * @file
+ * @brief OTP Controller Device Interface
+ * Functions
+ */
+
+#include
+
+#include "sw/device/lib/base/macros.h"
+#include "sw/device/lib/base/mmio.h"
+#include "sw/device/lib/dif/dif_base.h"
+
+#include "sw/device/lib/dif/autogen/dif_otp_ctrl_autogen.h"
+
+// Header Extern Guard (so header can be used from C and C++)
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+/**
+ * A partition within OTP memory.
+ */
+typedef enum dif_otp_ctrl_partition {
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ short_desc = part["desc"].split(".")[0].strip().replace("\n", " ")
+ long_desc_lines = part["desc"].split(".", 1)[1].strip().splitlines()
+ long_desc = "\n".join([" *" + (" " if line else "") + line for
+ line in long_desc_lines])
+%>\
+ /**
+ * ${short_desc}.
+ *
+ % if long_desc:
+${long_desc}
+ %endif
+ */
+ kDifOtpCtrlPartition${part_name.as_camel_case()},
+% endfor
+} dif_otp_ctrl_partition_t;
+
+/**
+ * Runtime configuration for OTP.
+ *
+ * This struct describes runtime information for one-time configuration of the
+ * hardware.
+ */
+typedef struct dif_otp_ctrl_config {
+ /**
+ * The timeout for an integrity or consistency check to succeed, in cycles.
+ *
+ * 100'000 is recommended as a minimum safe value.
+ */
+ uint32_t check_timeout;
+ /**
+ * A mask for the pseudo-random integrity check period.
+ *
+ * The value of this mask limits the period of the integrity check; when the
+ * pseudo-random period is computed, this mask is applied to limit it. For
+ * example, a value of 0x3'ffff would correspond to a maximum period of about
+ * 2.8s at 24MHz.
+ *
+ * A value of zero disables the check.
+ */
+ uint32_t integrity_period_mask;
+ /**
+ * A mask for the pseudo-random consistency check period.
+ *
+ * The value of this mask limits the period of the consistency check; when the
+ * pseudo-random period is computed, this mask is applied to limit it. For
+ * example, a value of 0x3ff'ffff would correspond to a maximum period of
+ * about 716s at 24MHz.
+ *
+ * A value of zero disables the check.
+ */
+ uint32_t consistency_period_mask;
+} dif_otp_ctrl_config_t;
+
+/**
+ * A hardware-level status code.
+ */
+typedef enum dif_otp_ctrl_status_code {
+ // NOTE: This enum's API *requires* that all "error"-like codes (that is,
+ // those which have associated cause registers) be a prefix of the enum
+ // values.
+ //
+ // Note furthermore that these enum variants are intended as bit indices, so
+ // their values should not be randomized.
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ /**
+ * Indicates an error occurred in the `${part_name_camel}` partition.
+ */
+ kDifOtpCtrlStatusCode${part_name_camel}Error${" = 0" if loop.first else ""},
+% endfor
+ /**
+ * Indicates an error occurred in the direct access interface.
+ */
+ kDifOtpCtrlStatusCodeDaiError,
+ /**
+ * Indicates an error occurred in the lifecycle interface.
+ */
+ kDifOtpCtrlStatusCodeLciError,
+ /**
+ * This is not a status code; rather, it represents the last error code which
+ * has a corresponding "cause" register.
+ *
+ * See `dif_otp_ctrl_status_t` for information on how to use this.
+ */
+ kDifOtpCtrlStatusCodeHasCauseLast = kDifOtpCtrlStatusCodeLciError,
+ /**
+ * Indicates that an integrity or consistency check has timed out.
+ *
+ * This error is unrecoverable.
+ */
+ kDifOtpCtrlStatusCodeTimeoutError,
+ /**
+ * Indicates that the LFSR that generates pseudo-random integrity and
+ * consistency checks is in a bad state.
+ *
+ * This error is unrecoverable.
+ */
+ kDifOtpCtrlStatusCodeLfsrError,
+ /**
+ * Indicates that the scrambling hardware is in a bad state.
+ *
+ * This error is unrecoverable.
+ */
+ kDifOtpCtrlStatusCodeScramblingError,
+ /**
+ * Indicates that the key derivation hardware is in a bad state.
+ *
+ * This error is unrecoverable.
+ */
+ kDifOtpCtrlStatusCodeKdfError,
+ /**
+ * Indicates a bus integrity error.
+ *
+ * This error will raise an alert.
+ */
+ kDifOtpCtrlStatusCodeBusIntegError,
+ /**
+ * Indicates that the direct access interface is idle.
+ */
+ kDifOtpCtrlStatusCodeDaiIdle,
+ /**
+ * Indicates that an integrity or consistency check is currently pending.
+ */
+ kDifOtpCtrlStatusCodeCheckPending,
+} dif_otp_ctrl_status_code_t;
+
+/**
+ * A hardware-level error code, associated with a particular error defined in
+ * `dif_otp_ctrl_status_t`.
+ */
+typedef enum dif_otp_ctrl_error {
+ /**
+ * Indicates no error.
+ */
+ kDifOtpCtrlErrorOk,
+ /**
+ * Indicates that an OTP macro command was invalid or did not
+ * complete successfully.
+ *
+ * This error indicates non-recoverable hardware malfunction.
+ */
+ kDifOtpCtrlErrorMacroUnspecified,
+ /**
+ * Indicates a recoverable error during a read operation.
+ *
+ * A followup read should work as expected.
+ */
+ kDifOtpCtrlErrorMacroRecoverableRead,
+ /**
+ * Indicates an unrecoverable error during a read operation.
+ *
+ * This error indicates non-recoverable hardware malfunction.
+ */
+ kDifOtpCtrlErrorMacroUnrecoverableRead,
+ /**
+ * Indicates that the blank write check failed during a write operation.
+ */
+ kDifOtpCtrlErrorMacroBlankCheckFailed,
+ /**
+ * Indicates a locked memory region was accessed.
+ */
+ kDifOtpCtrlErrorLockedAccess,
+ /**
+ * Indicates a parity, integrity or consistency check failed in the buffer
+ * registers.
+ *
+ * This error indicates non-recoverable hardware malfunction.
+ */
+ kDifOtpCtrlErrorBackgroundCheckFailed,
+ /**
+ * Indicates that the FSM of the controller is in a bad state or that the
+ * controller's FSM has been moved into its terminal state due to escalation
+ * via the alert subsystem.
+ *
+ * This error indicates that the device has been glitched by an attacker.
+ */
+ kDifOtpCtrlErrorFsmBadState,
+} dif_otp_ctrl_error_t;
+
+/**
+ * The overall status of the OTP controller.
+ *
+ * See `dif_otp_ctrl_get_status()`.
+ */
+typedef struct dif_otp_ctrl_status {
+ /**
+ * Currently active statuses, given as a bit vector. To check whether a
+ * particular status code was returned, write
+ *
+ * bool has_code = (status.codes >> kMyStatusCode) & 1;
+ *
+ * Note that it is possible to quickly check that the controller is idle and
+ * error-free by writing
+ *
+ * bool is_ok = status.codes == (1 << kDifOtpStatusCodeDaiIdle);
+ */
+ uint32_t codes;
+ /**
+ * A list of root causes for each error status code.
+ *
+ * If the error status code `error` is present in `codes`, and
+ * `error <= kDifOtpCtrlStatusCodeHasCauseLast`, then `causes[error]`
+ * will contain its root cause.
+ */
+ dif_otp_ctrl_error_t causes[kDifOtpCtrlStatusCodeHasCauseLast + 1];
+} dif_otp_ctrl_status_t;
+
+/**
+ * Configures OTP with runtime information.
+ *
+ * This function should need to be called at most once for the lifetime of
+ * `otp`.
+ *
+ * @param otp An OTP handle.
+ * @param config Runtime configuration parameters.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_configure(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_config_t config);
+
+/**
+ * Runs an integrity check on the OTP hardware.
+ *
+ * This function can be used to trigger an integrity check independent of the
+ * pseudo-random hardware-generated checks.
+ *
+ * @param otp An OTP handle.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_check_integrity(const dif_otp_ctrl_t *otp);
+
+/**
+ * Runs a consistency check on the OTP hardware.
+ *
+ * This function can be used to trigger a consistency check independent of the
+ * pseudo-random hardware-generated checks.
+ *
+ * @param otp An OTP handle.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_check_consistency(const dif_otp_ctrl_t *otp);
+
+/**
+ * Locks out access to the direct access interface registers.
+ *
+ * This function is idempotent: calling it while functionality is locked will
+ * have no effect and return `kDifOk`.
+ *
+ * @param otp An OTP handle.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_lock_dai(const dif_otp_ctrl_t *otp);
+
+/**
+ * Checks whether access to the direct access interface is locked.
+ *
+ * Note that besides locking the DAI out until the next reset using the
+ * dif_otp_ctrl_lock_dai function, the DAI is also temporarily locked by the
+ * HW itself when it is busy processing a DAI command. In such a case, the
+ * kDifOtpCtrlStatusCodeDaiIdle status bit will be set to 0 as well.
+ *
+ * @param otp An OTP handle.
+ * @param[out] is_locked Out-param for the locked state.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked);
+
+/**
+ * Locks out `dif_otp_ctrl_configure()` function.
+ *
+ * This function is idempotent: calling it while functionality is locked will
+ * have no effect and return `kDifOk`.
+ *
+ * @param otp An OTP handle.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_lock_config(const dif_otp_ctrl_t *otp);
+
+/**
+ * Checks whether `dif_otp_ctrl_configure()` function is locked-out.
+ *
+ * @param otp An OTP handle.
+ * @param[out] is_locked Out-param for the locked state.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_config_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked);
+
+/**
+ * Locks out `dif_otp_ctrl_check_*()` functions.
+ *
+ * This function is idempotent: calling it while functionality is locked will
+ * have no effect and return `kDifOk`.
+ *
+ * @param otp An OTP handle.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_lock_check_trigger(const dif_otp_ctrl_t *otp);
+
+/**
+ * Checks whether the `dif_otp_ctrl_check_*()` functions are locked-out.
+ *
+ * @param otp An OTP handle.
+ * @param[out] is_locked Out-param for the locked state.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_check_trigger_is_locked(const dif_otp_ctrl_t *otp,
+ bool *is_locked);
+
+/**
+ * Locks out reads to a SW partition.
+ *
+ * This function should only be called on SW partitions; doing otherwise will
+ * return an error.
+ *
+ * Note that this is distinct from the write-locking performed by calling
+ * `dif_otp_ctrl_dai_digest()`. In particular, the effects of this function will
+ * not persist past a system reset.
+ *
+ * This function is idempotent: calling it while functionality is locked will
+ * have no effect and return `kDifOk`.
+ *
+ * @param otp An OTP handle.
+ * @param partition The SW partition to lock.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_lock_reading(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition);
+
+/**
+ * Checks whether reads to a SW partition are locked out.
+ *
+ * This function should only be called on SW partitions; doing otherwise will
+ * return an error.
+ *
+ * @param otp An OTP handle.
+ * @param partition the SW partition to check for locking.
+ * @param[out] is_locked Out-param for the locked state.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_reading_is_locked(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ bool *is_locked);
+
+/**
+ * Gets the current status of the OTP controller.
+ *
+ * @param otp An OTP handle.
+ * @param[out] status Out-param for the controller's status.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_get_status(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_status_t *status);
+
+/**
+ * Calculates a `relative_address` with respect to a `partition` start
+ * address.
+ *
+ * @param partition The partition to use to calculate the reference start
+ * address.
+ * @param abs_address Input address relative to the OTP memory start address.
+ * @param[out] relative_address The result relative address with respect to the
+ * `partition` start address.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_relative_address(dif_otp_ctrl_partition_t partition,
+ uint32_t abs_address,
+ uint32_t *relative_address);
+
+/**
+ * Schedules a read on the Direct Access Interface.
+ *
+ * Reads are performed relative to a partition; `address` should be given
+ * relative to the start of `partition`. An error is returned for out-of-bounds
+ * access.
+ *
+ * Furthermore, `address` must be well-aligned: it must be four-byte aligned for
+ * normal partitions and eight-byte-aligned for secret partitions. An error is
+ * returned for unaligned access.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to read from.
+ * @param address A partition-relative address to read from.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_read_start(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address);
+
+/**
+ * Gets the result of a completed 32-bit read operation on the Direct Access
+ * Interface.
+ *
+ * Whether this function or its 64-bit variant should be called is dependent on
+ * the most recent partition read from.
+ *
+ * @param otp An OTP handle.
+ * @param[out] value Out-param for the read value.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_read32_end(const dif_otp_ctrl_t *otp,
+ uint32_t *value);
+
+/**
+ * Gets the result of a completed 64-bit read operation on the Direct Access
+ * Interface.
+ *
+ * Whether this function or its 32-bit variant should be called is dependent on
+ * the most recent partition read from.
+ *
+ * @param otp An OTP handle.
+ * @param[out] value Out-param for the read value.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_read64_end(const dif_otp_ctrl_t *otp,
+ uint64_t *value);
+
+/**
+ * Schedules a 32-bit write on the Direct Access Interface.
+ *
+ * Writes are performed relative to a partition; `address` should be given
+ * relative to the start of `partition`. An error is returned for out-of-bounds
+ * access.
+ *
+ * Furthermore, `address` must be four-byte-aligned, and `partition` must not be
+ * a secret partition. An error is returned if neither condition is met.
+ *
+ * Note that this function cannot be used to program the digest at the end of a
+ * `SW` partition; `dif_otp_ctrl_dai_digest()` must be used instead.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to program.
+ * @param address A partition-relative address to program.
+ * @param value The value to program into the OTP.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_program32(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint32_t value);
+
+/**
+ * Schedules a 64-bit write on the Direct Access Interface.
+ *
+ * Writes are performed relative to a partition; `address` should be given
+ * relative to the start of `partition`. An error is returned for out-of-bounds
+ * access.
+ *
+ * Furthermore, `address` must be eight-byte-aligned, and `partition` must be
+ * a secret partition. An error is returned if neither condition is met.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to program.
+ * @param address A partition-relative address to program.
+ * @param value The value to program into the OTP.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_program64(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint64_t value);
+
+/**
+ * Schedules a hardware digest operation on the Direct Access Interface.
+ *
+ * **This operation will also lock writes for the given partition.**
+ *
+ * If `partition` is a SW partition, `digest` must be non-zero; if it is a
+ * partition with a hardware-managed digest, `digest` *must* be zero (since the
+ * digest will be generated by the hardware). An error is returned if either
+ * precondition is not met.
+ *
+ * This function does not work with the lifecycle state partition, and will
+ * return an error in that case.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to digest and lock.
+ * @param digest The digest to program (for SW partitions).
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_dai_digest(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint64_t digest);
+
+/**
+ * Checks if the digest value for the given partition has been computed. Once a
+ * digest has been computed for a partition, the partition is write-locked
+ * (additionally, read-locked if the partition is secret).
+ *
+ * The lifecycle partition does not have a digest, and checking if this region
+ * has a computed digest will return an error.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to check the digest of.
+ * @param[out] is_computed Indicates if the digest has been computed.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_is_digest_computed(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ bool *is_computed);
+
+/**
+ * Gets the buffered digest value for the given partition.
+ *
+ * Note that this value is only updated when the device is reset; if the digest
+ * has not been computed yet, or has been computed but not since device reset,
+ * this function will return an error.
+ *
+ * The lifecycle partition does not have a digest and will result in an error
+ * being returned.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to get a digest for.
+ * @param[out] digest Out-param for the digest.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_get_digest(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint64_t *digest);
+
+/**
+ * Performs a memory-mapped read of the given partition, if it supports them.
+ *
+ * In particular, this function will read `len` words, starting at `address`,
+ * relative to the start of `partition`.
+ *
+ * The same caveats for `dif_otp_ctrl_dai_read_start()` apply to `address`; in
+ * addition, `address + len` must also be in-range and must not overflow.
+ *
+ * This function will block until the read completes, unlike Direct Access
+ * Interface functions.
+ *
+ * @param otp An OTP handle.
+ * @param partition The partition to read from.
+ * @param address A partition-relative address to read from.
+ * @param[out] buf A buffer of words to write read values to.
+ * @param len The number of words to read.
+ * @return The result of the operation.
+ */
+OT_WARN_UNUSED_RESULT
+dif_result_t dif_otp_ctrl_read_blocking(const dif_otp_ctrl_t *otp,
+ dif_otp_ctrl_partition_t partition,
+ uint32_t address, uint32_t *buf,
+ size_t len);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif // __cplusplus
+
+#endif // OPENTITAN_SW_DEVICE_LIB_DIF_DIF_OTP_CTRL_H_
diff --git a/src/fuse_ctrl/data/dif_otp_ctrl_unittest.cc.tpl b/src/fuse_ctrl/data/dif_otp_ctrl_unittest.cc.tpl
new file mode 100755
index 0000000..a9ecd6c
--- /dev/null
+++ b/src/fuse_ctrl/data/dif_otp_ctrl_unittest.cc.tpl
@@ -0,0 +1,867 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+parts = otp_mmap.config["partitions"]
+digest_parts = [part for part in parts if
+ part["hw_digest"] or part["sw_digest"]]
+hw_digest_parts = [part for part in parts if part["hw_digest"]]
+sw_digest_parts = [part for part in parts if part["sw_digest"]]
+read_locked_csr_parts = [part for part in parts if part["read_lock"] == "CSR"]
+secret_parts = [part for part in parts if part["secret"]]
+%>\
+#include "sw/device/lib/dif/dif_otp_ctrl.h"
+
+#include
+#include
+#include
+
+#include "gtest/gtest.h"
+#include "sw/device/lib/base/mmio.h"
+#include "sw/device/lib/base/mock_mmio.h"
+#include "sw/device/lib/dif/dif_test_base.h"
+
+#include "otp_ctrl_regs.h" // Generated.
+
+namespace dif_otp_ctrl_unittest {
+namespace {
+using ::mock_mmio::LeInt;
+using ::mock_mmio::MmioTest;
+using ::mock_mmio::MockDevice;
+using ::testing::Each;
+using ::testing::ElementsAre;
+
+class OtpTest : public testing::Test, public MmioTest {
+ protected:
+ dif_otp_ctrl_t otp_ = {.base_addr = dev().region()};
+};
+
+class DaiRegwenTest : public OtpTest {};
+
+TEST_F(DaiRegwenTest, LockDai) {
+ EXPECT_WRITE32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_lock_dai(&otp_));
+}
+
+TEST_F(DaiRegwenTest, IsDaiLocked) {
+ bool flag;
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_is_locked(&otp_, &flag));
+ EXPECT_FALSE(flag);
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_is_locked(&otp_, &flag));
+ EXPECT_TRUE(flag);
+}
+
+TEST_F(DaiRegwenTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_lock_dai(nullptr));
+
+ bool flag;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_is_locked(nullptr, &flag));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_is_locked(&otp_, nullptr));
+}
+
+class ConfigTest : public OtpTest {};
+
+TEST_F(ConfigTest, Basic) {
+ dif_otp_ctrl_config_t config = {
+ .check_timeout = 100'000,
+ .integrity_period_mask = 0x3'ffff,
+ .consistency_period_mask = 0x3ff'ffff,
+ };
+
+ EXPECT_READ32(OTP_CTRL_CHECK_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, true}});
+
+ EXPECT_WRITE32(OTP_CTRL_CHECK_TIMEOUT_REG_OFFSET, config.check_timeout);
+ EXPECT_WRITE32(OTP_CTRL_INTEGRITY_CHECK_PERIOD_REG_OFFSET,
+ config.integrity_period_mask);
+ EXPECT_WRITE32(OTP_CTRL_CONSISTENCY_CHECK_PERIOD_REG_OFFSET,
+ config.consistency_period_mask);
+
+ EXPECT_DIF_OK(dif_otp_ctrl_configure(&otp_, config));
+}
+
+TEST_F(ConfigTest, Locked) {
+ EXPECT_READ32(OTP_CTRL_CHECK_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, false}});
+
+ EXPECT_EQ(dif_otp_ctrl_configure(&otp_, {}), kDifLocked);
+}
+
+TEST_F(ConfigTest, IsConfigLocked) {
+ bool flag;
+
+ EXPECT_READ32(OTP_CTRL_CHECK_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, true}});
+ EXPECT_DIF_OK(dif_otp_ctrl_config_is_locked(&otp_, &flag));
+ EXPECT_FALSE(flag);
+
+ EXPECT_READ32(OTP_CTRL_CHECK_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_config_is_locked(&otp_, &flag));
+ EXPECT_TRUE(flag);
+}
+
+TEST_F(ConfigTest, LockConfig) {
+ EXPECT_WRITE32(OTP_CTRL_CHECK_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_REGWEN_CHECK_REGWEN_BIT, false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_lock_config(&otp_));
+}
+
+TEST_F(ConfigTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_configure(nullptr, {}));
+
+ bool flag;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_config_is_locked(nullptr, &flag));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_config_is_locked(&otp_, nullptr));
+
+ EXPECT_DIF_BADARG(dif_otp_ctrl_lock_config(nullptr));
+}
+
+class CheckTest : public OtpTest {};
+
+TEST_F(CheckTest, Integrity) {
+ EXPECT_READ32(
+ OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_CHECK_TRIGGER_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_INTEGRITY_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_check_integrity(&otp_));
+}
+
+TEST_F(CheckTest, Consistency) {
+ EXPECT_READ32(
+ OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_CHECK_TRIGGER_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_CONSISTENCY_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_check_consistency(&otp_));
+}
+
+TEST_F(CheckTest, LockTrigger) {
+ EXPECT_WRITE32(
+ OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_lock_check_trigger(&otp_));
+}
+
+TEST_F(CheckTest, Locked) {
+ EXPECT_READ32(
+ OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, false}});
+ EXPECT_EQ(dif_otp_ctrl_check_integrity(&otp_), kDifLocked);
+
+ EXPECT_READ32(
+ OTP_CTRL_CHECK_TRIGGER_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_CHECK_TRIGGER_REGWEN_CHECK_TRIGGER_REGWEN_BIT, false}});
+ EXPECT_EQ(dif_otp_ctrl_check_consistency(&otp_), kDifLocked);
+}
+
+TEST_F(CheckTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_check_integrity(nullptr));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_check_consistency(nullptr));
+}
+
+class ReadLockTest : public OtpTest {};
+
+// Too many formatting variants in template code, so disabling clang-format.
+// clang-format off
+TEST_F(ReadLockTest, IsLocked) {
+ bool flag;
+
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+%>\
+ EXPECT_READ32(
+ OTP_CTRL_${part_name_define}_READ_LOCK_REG_OFFSET,
+ {{OTP_CTRL_${part_name_define}_READ_LOCK_${part_name_define}_READ_LOCK_BIT,
+ true}});
+ EXPECT_DIF_OK(dif_otp_ctrl_reading_is_locked(
+ &otp_, kDifOtpCtrlPartition${part_name_camel}, &flag));
+ EXPECT_FALSE(flag);
+
+ EXPECT_READ32(
+ OTP_CTRL_${part_name_define}_READ_LOCK_REG_OFFSET,
+ {{OTP_CTRL_${part_name_define}_READ_LOCK_${part_name_define}_READ_LOCK_BIT,
+ false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_reading_is_locked(
+ &otp_, kDifOtpCtrlPartition${part_name_camel}, &flag));
+ EXPECT_TRUE(flag);
+ % if not loop.last:
+
+ %endif
+% endfor
+}
+
+TEST_F(ReadLockTest, Lock) {
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+%>\
+ EXPECT_READ32(OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET, 1);
+ EXPECT_WRITE32(
+ OTP_CTRL_${part_name_define}_READ_LOCK_REG_OFFSET,
+ {{OTP_CTRL_${part_name_define}_READ_LOCK_${part_name_define}_READ_LOCK_BIT,
+ false}});
+ EXPECT_DIF_OK(dif_otp_ctrl_lock_reading(
+ &otp_, kDifOtpCtrlPartition${part_name_camel}));
+ % if not loop.last:
+
+ %endif
+% endfor
+}
+
+TEST_F(ReadLockTest, NotLockablePartitions) {
+ bool flag;
+% for part in [p for p in parts if p not in read_locked_csr_parts]:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ EXPECT_DIF_BADARG(
+ dif_otp_ctrl_lock_reading(&otp_, kDifOtpCtrlPartition${part_name_camel}));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_reading_is_locked(
+ &otp_, kDifOtpCtrlPartition${part_name_camel}, &flag));
+ % if not loop.last:
+
+ %endif
+% endfor
+}
+// clang-format on
+
+TEST_F(ReadLockTest, NullArgs) {
+ bool flag;
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ lock_reading_line = f"dif_otp_ctrl_lock_reading(nullptr, kDifOtpCtrlPartition{part_name_camel}));"
+%>\
+ EXPECT_DIF_BADARG(dif_otp_ctrl_reading_is_locked(
+ nullptr, kDifOtpCtrlPartition${part_name_camel}, &flag));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_reading_is_locked(
+ &otp_, kDifOtpCtrlPartition${part_name_camel}, nullptr));
+ % if len(lock_reading_line) > 80 - 6:
+ EXPECT_DIF_BADARG(dif_otp_ctrl_lock_reading(
+ nullptr, kDifOtpCtrlPartition${part_name_camel}));
+ % else:
+ EXPECT_DIF_BADARG(
+ ${lock_reading_line}
+ % endif
+ % if not loop.last:
+
+ %endif
+% endfor
+}
+
+class StatusTest : public OtpTest {};
+
+TEST_F(StatusTest, Idle) {
+ dif_otp_ctrl_status_t status;
+
+ EXPECT_READ32(OTP_CTRL_STATUS_REG_OFFSET,
+ {{OTP_CTRL_STATUS_DAI_IDLE_BIT, true}});
+ EXPECT_DIF_OK(dif_otp_ctrl_get_status(&otp_, &status));
+
+ EXPECT_EQ(status.codes, 1 << kDifOtpCtrlStatusCodeDaiIdle);
+ EXPECT_THAT(status.causes, Each(kDifOtpCtrlErrorOk));
+}
+
+TEST_F(StatusTest, Errors) {
+ dif_otp_ctrl_status_t status;
+
+ EXPECT_READ32(OTP_CTRL_STATUS_REG_OFFSET,
+ {
+ {OTP_CTRL_STATUS_DAI_IDLE_BIT, true},
+ {OTP_CTRL_STATUS_HW_CFG0_ERROR_BIT, true},
+ {OTP_CTRL_STATUS_LCI_ERROR_BIT, true},
+ });
+
+<%
+ hw_cfg0_entries = [i for i, p in enumerate(parts) if p["name"] == "HW_CFG0"]
+ hw_cfg0_error_index = 0
+ if len(hw_cfg0_entries) > 0:
+ hw_cfg0_error_index = hw_cfg0_entries[0]
+ lci_error_index = len(parts) + 1
+%>\
+
+% if len(hw_cfg0_entries) > 0:
+ EXPECT_READ32(OTP_CTRL_ERR_CODE_${hw_cfg0_error_index}_REG_OFFSET,
+ {{OTP_CTRL_ERR_CODE_0_ERR_CODE_0_OFFSET,
+ OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_ECC_CORR_ERROR}});
+ EXPECT_READ32(OTP_CTRL_ERR_CODE_${lci_error_index}_REG_OFFSET,
+ {{OTP_CTRL_ERR_CODE_0_ERR_CODE_0_OFFSET,
+ OTP_CTRL_ERR_CODE_0_ERR_CODE_0_VALUE_MACRO_ERROR}});
+% endif
+
+ EXPECT_DIF_OK(dif_otp_ctrl_get_status(&otp_, &status));
+ EXPECT_EQ(status.codes, (1 << kDifOtpCtrlStatusCodeDaiIdle) |
+ (1 << kDifOtpCtrlStatusCodeHwCfg0Error) |
+ (1 << kDifOtpCtrlStatusCodeLciError));
+ EXPECT_EQ(status.causes[kDifOtpCtrlStatusCodeHwCfg0Error],
+ kDifOtpCtrlErrorMacroRecoverableRead);
+ EXPECT_EQ(status.causes[kDifOtpCtrlStatusCodeLciError],
+ kDifOtpCtrlErrorMacroUnspecified);
+}
+
+TEST_F(StatusTest, NullArgs) {
+ dif_otp_ctrl_status_t status;
+
+ EXPECT_DIF_BADARG(dif_otp_ctrl_get_status(nullptr, &status));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_get_status(&otp_, nullptr));
+}
+
+struct RelativeAddressParams {
+ std::string name;
+ dif_otp_ctrl_partition_t partition;
+ uint32_t abs_address;
+ dif_result_t expected_result;
+ uint32_t expected_relative_address;
+};
+
+class RelativeAddress
+ : public OtpTest,
+ public testing::WithParamInterface {};
+
+TEST_P(RelativeAddress, RelativeAddress) {
+ uint32_t got_relative_address;
+ dif_result_t got_result = dif_otp_ctrl_relative_address(
+ GetParam().partition, GetParam().abs_address, &got_relative_address);
+ EXPECT_EQ(got_result, GetParam().expected_result);
+ EXPECT_EQ(got_relative_address, GetParam().expected_relative_address);
+}
+
+INSTANTIATE_TEST_SUITE_P(
+ AllPartitions, RelativeAddress,
+ testing::Values(
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+ step = 8 if part["secret"] else 4
+%>\
+ RelativeAddressParams{
+ "${part_name_camel}Okay",
+ kDifOtpCtrlPartition${part_name_camel},
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET + ${step},
+ kDifOk,
+ ${step},
+ },
+ RelativeAddressParams{
+ "${part_name_camel}Unaligned",
+ kDifOtpCtrlPartition${part_name_camel},
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET + 1,
+ kDifUnaligned,
+ 0,
+ },
+<%
+ ## Exclude first partition to avoid a negative offset.
+%>\
+ % if not loop.first:
+ RelativeAddressParams{
+ "${part_name_camel}OutOfRangeBeforeStart",
+ kDifOtpCtrlPartition${part_name_camel},
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET - ${step},
+ kDifOutOfRange,
+ 0,
+ },
+ % endif
+ RelativeAddressParams{
+ "${part_name_camel}OutOfRangePastEnd",
+ kDifOtpCtrlPartition${part_name_camel},
+ % if len(f"OTP_CTRL_PARAM_{part_name_define}_OFFSET + OTP_CTRL_PARAM_{part_name_define}_SIZE,") <= 80 - 12:
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET + OTP_CTRL_PARAM_${part_name_define}_SIZE,
+ % else:
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET +
+ OTP_CTRL_PARAM_${part_name_define}_SIZE,
+ % endif
+ kDifOutOfRange,
+ 0,
+ }${")," if loop.last else ","}
+% endfor
+ [](const testing::TestParamInfo &info) {
+ return info.param.name;
+ });
+
+class DaiReadTest : public OtpTest {};
+
+TEST_F(DaiReadTest, Read32) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_MANUF_STATE_OFFSET);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_RD_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x20));
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_READ32(OTP_CTRL_DIRECT_ACCESS_RDATA_0_REG_OFFSET, 0x12345678);
+
+ uint32_t val;
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_read32_end(&otp_, &val));
+ EXPECT_EQ(val, 0x12345678);
+}
+
+TEST_F(DaiReadTest, Read64) {
+ uint64_t val;
+% for part in secret_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+%>\
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET + 0x8);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_RD_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartition${part_name_camel},
+ /*address=*/0x8));
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_READ32(OTP_CTRL_DIRECT_ACCESS_RDATA_1_REG_OFFSET, 0x12345678);
+ EXPECT_READ32(OTP_CTRL_DIRECT_ACCESS_RDATA_0_REG_OFFSET, 0x90abcdef);
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_read64_end(&otp_, &val));
+ EXPECT_EQ(val, 0x1234567890abcdef);
+ % if not loop.last:
+
+ % endif
+% endfor
+}
+
+TEST_F(DaiReadTest, Unaligned) {
+ EXPECT_EQ(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0b01),
+ kDifUnaligned);
+ EXPECT_EQ(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartitionSecret2,
+ /*address=*/0b100),
+ kDifUnaligned);
+}
+
+TEST_F(DaiReadTest, OutOfRange) {
+ EXPECT_EQ(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x100),
+ kDifOutOfRange);
+}
+
+TEST_F(DaiReadTest, Busy) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ EXPECT_EQ(dif_otp_ctrl_dai_read_start(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x0),
+ kDifUnavailable);
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ uint32_t val32;
+ EXPECT_EQ(dif_otp_ctrl_dai_read32_end(&otp_, &val32), kDifUnavailable);
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ uint64_t val64;
+ EXPECT_EQ(dif_otp_ctrl_dai_read64_end(&otp_, &val64), kDifUnavailable);
+}
+
+TEST_F(DaiReadTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_read_start(nullptr,
+ kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x0));
+
+ uint32_t val32;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_read32_end(nullptr, &val32));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_read32_end(&otp_, nullptr));
+
+ uint64_t val64;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_read64_end(nullptr, &val64));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_read64_end(&otp_, nullptr));
+}
+
+class DaiProgramTest : public OtpTest {};
+
+TEST_F(DaiProgramTest, Program32) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_MANUF_STATE_OFFSET);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET, 0x12345678);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_program32(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x20,
+ /*value=*/0x12345678));
+}
+
+TEST_F(DaiProgramTest, Program64) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_SECRET2_OFFSET + 0x8);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET, 0x90abcdef);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_WDATA_1_REG_OFFSET, 0x12345678);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_program64(&otp_, kDifOtpCtrlPartitionSecret2,
+ /*address=*/0x8,
+ /*value=*/0x1234567890abcdef));
+}
+
+TEST_F(DaiProgramTest, BadPartition) {
+ EXPECT_EQ(dif_otp_ctrl_dai_program32(&otp_, kDifOtpCtrlPartitionSecret1,
+ /*address=*/0x0, /*value=*/42),
+ kDifError);
+ EXPECT_EQ(dif_otp_ctrl_dai_program64(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x0, /*value=*/42),
+ kDifError);
+
+ // LC is never writeable.
+ EXPECT_EQ(dif_otp_ctrl_dai_program32(&otp_, kDifOtpCtrlPartitionLifeCycle,
+ /*address=*/0x0, /*value=*/42),
+ kDifError);
+}
+
+TEST_F(DaiProgramTest, Unaligned) {
+ EXPECT_EQ(dif_otp_ctrl_dai_program32(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0b01, /*value=*/42),
+ kDifUnaligned);
+ EXPECT_EQ(dif_otp_ctrl_dai_program64(&otp_, kDifOtpCtrlPartitionSecret2,
+ /*address=*/0b100, /*value=*/42),
+ kDifUnaligned);
+}
+
+TEST_F(DaiProgramTest, OutOfRange) {
+ // Check that we can't write a digest directly.
+ EXPECT_EQ(dif_otp_ctrl_dai_program32(
+ &otp_, kDifOtpCtrlPartitionCreatorSwCfg,
+ /*address=*/OTP_CTRL_PARAM_CREATOR_SW_CFG_DIGEST_OFFSET,
+ /*value=*/42),
+ kDifOutOfRange);
+
+ // Same digest check for 64-bit.
+ EXPECT_EQ(dif_otp_ctrl_dai_program64(
+ &otp_, kDifOtpCtrlPartitionSecret2,
+ /*address=*/OTP_CTRL_PARAM_SECRET2_DIGEST_OFFSET, /*value=*/42),
+ kDifOutOfRange);
+}
+
+TEST_F(DaiProgramTest, Busy) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ EXPECT_EQ(dif_otp_ctrl_dai_program32(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x0, /*value=*/42),
+ kDifUnavailable);
+
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+ EXPECT_EQ(dif_otp_ctrl_dai_program64(&otp_, kDifOtpCtrlPartitionSecret0,
+ /*address=*/0x0, /*value=*/42),
+ kDifUnavailable);
+}
+
+TEST_F(DaiProgramTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_program32(nullptr,
+ kDifOtpCtrlPartitionHwCfg0,
+ /*address=*/0x0, /*value=*/42));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_program64(nullptr,
+ kDifOtpCtrlPartitionSecret0,
+ /*address=*/0x0, /*value=*/42));
+}
+
+class DaiDigestTest : public OtpTest {};
+
+TEST_F(DaiDigestTest, DigestSw) {
+% for part in sw_digest_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_define = part_name.as_c_define()
+ part_name_camel = part_name.as_camel_case()
+ dai_digest_line = ("EXPECT_DIF_OK(dif_otp_ctrl_dai_digest(&otp_, "
+ + f"kDifOtpCtrlPartition{part_name_camel},")
+%>\
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_${part_name.as_c_define()}_DIGEST_OFFSET);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_WDATA_0_REG_OFFSET, 0x00abcdef);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_WDATA_1_REG_OFFSET, 0xabcdef00);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_WR_BIT, true}});
+
+ % if len(dai_digest_line) > 80 - 2:
+<% dai_digest_line = (f"kDifOtpCtrlPartition{part_name_camel},") %>\
+ % if len(dai_digest_line) > 80 - 40:
+ EXPECT_DIF_OK(
+ dif_otp_ctrl_dai_digest(&otp_, kDifOtpCtrlPartition${part_name_camel},
+ /*digest=*/0xabcdef0000abcdef));
+ % else:
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_digest(&otp_,
+ kDifOtpCtrlPartition${part_name_camel},
+ /*digest=*/0xabcdef0000abcdef));
+ % endif
+ % else:
+ ${dai_digest_line}
+ /*digest=*/0xabcdef0000abcdef));
+ % endif
+ % if not loop.last:
+
+ % endif
+% endfor
+}
+
+TEST_F(DaiDigestTest, DigestHw) {
+% for part in hw_digest_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_define = part_name.as_c_define()
+ part_name_camel = part_name.as_camel_case()
+ dai_digest_line = ("EXPECT_DIF_OK(dif_otp_ctrl_dai_digest(&otp_, "
+ + f"kDifOtpCtrlPartition{part_name_camel},")
+%>\
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, true}});
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_ADDRESS_REG_OFFSET,
+ OTP_CTRL_PARAM_${part_name_define}_OFFSET);
+ EXPECT_WRITE32(OTP_CTRL_DIRECT_ACCESS_CMD_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_CMD_DIGEST_BIT, true}});
+
+ EXPECT_DIF_OK(dif_otp_ctrl_dai_digest(&otp_, kDifOtpCtrlPartition${part_name_camel},
+ /*digest=*/0));
+ % if not loop.last:
+
+ % endif
+% endfor
+}
+
+TEST_F(DaiDigestTest, BadPartition) {
+ EXPECT_EQ(dif_otp_ctrl_dai_digest(&otp_, kDifOtpCtrlPartitionLifeCycle,
+ /*digest=*/0),
+ kDifError);
+}
+
+TEST_F(DaiDigestTest, Busy) {
+ EXPECT_READ32(
+ OTP_CTRL_DIRECT_ACCESS_REGWEN_REG_OFFSET,
+ {{OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_BIT, false}});
+
+ EXPECT_EQ(
+ dif_otp_ctrl_dai_digest(&otp_, kDifOtpCtrlPartitionHwCfg0, /*digest=*/0),
+ kDifUnavailable);
+}
+
+TEST_F(DaiDigestTest, BadDigest) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_digest(&otp_, kDifOtpCtrlPartitionHwCfg0,
+ /*digest=*/0xabcdef0000abcdef));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_digest(&otp_,
+ kDifOtpCtrlPartitionCreatorSwCfg,
+ /*digest=*/0));
+}
+
+TEST_F(DaiDigestTest, NullArgs) {
+ EXPECT_DIF_BADARG(dif_otp_ctrl_dai_digest(nullptr,
+ kDifOtpCtrlPartitionCreatorSwCfg,
+ /*digest=*/0xabcdef0000abcdef));
+}
+
+class IsDigestComputed : public OtpTest {};
+
+TEST_F(IsDigestComputed, NullArgs) {
+ bool is_computed;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_is_digest_computed(
+ nullptr, kDifOtpCtrlPartitionSecret2, &is_computed));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_is_digest_computed(
+ &otp_, kDifOtpCtrlPartitionSecret2, nullptr));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_is_digest_computed(
+ nullptr, kDifOtpCtrlPartitionSecret2, nullptr));
+}
+
+TEST_F(IsDigestComputed, BadPartition) {
+ bool is_computed;
+ EXPECT_DIF_BADARG(dif_otp_ctrl_is_digest_computed(
+ &otp_, kDifOtpCtrlPartitionLifeCycle, &is_computed));
+}
+
+TEST_F(IsDigestComputed, Success) {
+ bool is_computed;
+
+ EXPECT_READ32(OTP_CTRL_SECRET2_DIGEST_1_REG_OFFSET, 0x98abcdef);
+ EXPECT_READ32(OTP_CTRL_SECRET2_DIGEST_0_REG_OFFSET, 0xabcdef01);
+ EXPECT_DIF_OK(dif_otp_ctrl_is_digest_computed(
+ &otp_, kDifOtpCtrlPartitionSecret2, &is_computed));
+ EXPECT_TRUE(is_computed);
+
+ EXPECT_READ32(OTP_CTRL_SECRET2_DIGEST_1_REG_OFFSET, 0);
+ EXPECT_READ32(OTP_CTRL_SECRET2_DIGEST_0_REG_OFFSET, 0);
+ EXPECT_DIF_OK(dif_otp_ctrl_is_digest_computed(
+ &otp_, kDifOtpCtrlPartitionSecret2, &is_computed));
+ EXPECT_FALSE(is_computed);
+}
+
+struct DigestParams {
+ dif_otp_ctrl_partition_t partition;
+ bool has_digest;
+ ptrdiff_t reg0, reg1;
+};
+
+class GetDigest : public OtpTest,
+ public testing::WithParamInterface {};
+
+TEST_P(GetDigest, GetDigest) {
+ if (!GetParam().has_digest) {
+ uint64_t digest;
+ EXPECT_DIF_BADARG(
+ dif_otp_ctrl_get_digest(&otp_, GetParam().partition, &digest));
+ return;
+ }
+
+ EXPECT_READ32(GetParam().reg1, 0xabcdef99);
+ EXPECT_READ32(GetParam().reg0, 0x99abcdef);
+
+ uint64_t digest;
+ EXPECT_DIF_OK(dif_otp_ctrl_get_digest(&otp_, GetParam().partition, &digest));
+ EXPECT_EQ(digest, 0xabcdef9999abcdef);
+}
+
+TEST_P(GetDigest, BadDigest) {
+ if (!GetParam().has_digest) {
+ return;
+ }
+
+ EXPECT_READ32(GetParam().reg1, 0x0);
+ EXPECT_READ32(GetParam().reg0, 0x0);
+
+ uint64_t digest;
+ EXPECT_EQ(dif_otp_ctrl_get_digest(&otp_, GetParam().partition, &digest),
+ kDifError);
+}
+
+TEST_P(GetDigest, NullArgs) {
+ uint64_t digest;
+ EXPECT_DIF_BADARG(
+ dif_otp_ctrl_get_digest(nullptr, GetParam().partition, &digest));
+ EXPECT_DIF_BADARG(
+ dif_otp_ctrl_get_digest(&otp_, GetParam().partition, nullptr));
+}
+
+// This depends on the maximum length of partition names, which will
+// be changing, so turn formatting off.
+// clang-format off
+INSTANTIATE_TEST_SUITE_P(
+ AllDigests, GetDigest,
+ testing::Values(
+% for part in parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ part_name_define = part_name.as_c_define()
+%>\
+ % if part in digest_parts:
+ DigestParams{
+ kDifOtpCtrlPartition${part_name_camel},
+ true,
+ OTP_CTRL_${part_name_define}_DIGEST_0_REG_OFFSET,
+ OTP_CTRL_${part_name_define}_DIGEST_1_REG_OFFSET,
+ }${"" if loop.last else ","}
+ % else:
+ DigestParams{
+ kDifOtpCtrlPartition${part_name_camel},
+ false,
+ 0,
+ 0,
+ }${"));" if loop.last else ","}
+ % endif
+% endfor
+// clang-format on
+
+class BlockingIoTest : public OtpTest {
+ protected:
+ static constexpr size_t kWords = 4;
+};
+
+TEST_F(BlockingIoTest, Read) {
+ for (size_t i = 0; i < kWords; ++i) {
+ auto offset =
+ OTP_CTRL_PARAM_OWNER_SW_CFG_OFFSET + 0x10 + i * sizeof(uint32_t);
+ EXPECT_READ32(OTP_CTRL_SW_CFG_WINDOW_REG_OFFSET + offset, i + 1);
+ }
+
+ std::vector buf(kWords);
+ EXPECT_DIF_OK(dif_otp_ctrl_read_blocking(
+ &otp_, kDifOtpCtrlPartitionOwnerSwCfg, 0x10, buf.data(), buf.size()));
+ EXPECT_THAT(buf, ElementsAre(1, 2, 3, 4));
+}
+
+TEST_F(BlockingIoTest, BadPartition) {
+ std::vector buf(kWords);
+ EXPECT_EQ(dif_otp_ctrl_read_blocking(&otp_, kDifOtpCtrlPartitionHwCfg0, 0x10,
+ buf.data(), buf.size()),
+ kDifError);
+}
+
+TEST_F(BlockingIoTest, Unaligned) {
+ std::vector buf(kWords);
+ EXPECT_EQ(dif_otp_ctrl_read_blocking(&otp_, kDifOtpCtrlPartitionOwnerSwCfg,
+ 0x11, buf.data(), buf.size()),
+ kDifUnaligned);
+}
+
+TEST_F(BlockingIoTest, OutOfRange) {
+ std::vector buf(0x2f0);
+ EXPECT_EQ(dif_otp_ctrl_read_blocking(&otp_, kDifOtpCtrlPartitionOwnerSwCfg,
+ 0x300, buf.data(), buf.size()),
+ kDifOutOfRange);
+ EXPECT_EQ(dif_otp_ctrl_read_blocking(&otp_, kDifOtpCtrlPartitionOwnerSwCfg,
+ 0x10, buf.data(), 0x330),
+ kDifOutOfRange);
+}
+
+TEST_F(BlockingIoTest, NullArgs) {
+ std::vector buf(kWords);
+ EXPECT_DIF_BADARG(dif_otp_ctrl_read_blocking(
+ nullptr, kDifOtpCtrlPartitionOwnerSwCfg, 0x10, buf.data(), buf.size()));
+ EXPECT_DIF_BADARG(dif_otp_ctrl_read_blocking(
+ &otp_, kDifOtpCtrlPartitionOwnerSwCfg, 0x10, nullptr, buf.size()));
+}
+
+} // namespace
+} // namespace dif_otp_ctrl_unittest
diff --git a/src/fuse_ctrl/data/entropy_src.json b/src/fuse_ctrl/data/entropy_src.json
new file mode 100644
index 0000000..df7fd3a
--- /dev/null
+++ b/src/fuse_ctrl/data/entropy_src.json
@@ -0,0 +1,1369 @@
+{
+ "name": "entropy_src",
+ "clocking": [
+ {
+ "clock": "clk_i",
+ "reset": "rst_ni"
+ }
+ ],
+ "bus_interfaces": [
+ {
+ "protocol": "tlul",
+ "direction": "device"
+ }
+ ],
+ "interrupt_list": [
+ {
+ "name": "es_entropy_valid",
+ "desc": "Asserted when entropy source bits are available."
+ },
+ {
+ "name": "es_health_test_failed",
+ "desc": "Asserted when the alert count has been met."
+ },
+ {
+ "name": "es_observe_fifo_ready",
+ "desc": "Asserted when the observe FIFO has filled to the threshold level."
+ },
+ {
+ "name": "es_fatal_err",
+ "desc": "Asserted when a FIFO error occurs, or if an illegal state machine state is reached."
+ }
+ ],
+ "inter_signal_list": [
+ {
+ "struct": "entropy_src_hw_if",
+ "type": "req_rsp",
+ "name": "entropy_src_hw_if",
+ "act": "rsp",
+ "package": "entropy_src_pkg"
+ },
+ {
+ "struct": "cs_aes_halt",
+ "type": "req_rsp",
+ "name": "cs_aes_halt",
+ "act": "req",
+ "package": "entropy_src_pkg"
+ },
+ {
+ "struct": "entropy_src_rng",
+ "type": "req_rsp",
+ "name": "entropy_src_rng",
+ "act": "req",
+ "package": "entropy_src_pkg"
+ },
+ {
+ "struct": "entropy_src_xht",
+ "type": "req_rsp",
+ "name": "entropy_src_xht",
+ "act": "req",
+ "package": "entropy_src_pkg"
+ },
+ {
+ "struct": "mubi8",
+ "type": "uni",
+ "name": "otp_en_entropy_src_fw_read",
+ "act": "rcv",
+ "package": "caliptra_prim_mubi_pkg"
+ },
+ {
+ "struct": "mubi8",
+ "type": "uni",
+ "name": "otp_en_entropy_src_fw_over",
+ "act": "rcv",
+ "package": "caliptra_prim_mubi_pkg"
+ },
+ {
+ "struct": "logic",
+ "type": "uni",
+ "name": "rng_fips",
+ "act": "req",
+ "width": 1,
+ "package": ""
+ }
+ ],
+ "param_list": [
+ {
+ "name": "Stub",
+ "type": "bit",
+ "default": "0",
+ "desc": "Stub out the core of entropy_src logic",
+ "local": "false",
+ "expose": "true"
+ }
+ ],
+ "alert_list": [
+ {
+ "name": "recov_alert",
+ "desc": "This alert is triggered upon the alert health test threshold criteria not met."
+ },
+ {
+ "name": "fatal_alert",
+ "desc": "This alert triggers for any condition detected in the !!ERR_CODE register,\nwhich includes FIFO errors, COUNTER errors, FSM state errors,\nand also when integrity failures are detected on the TL-UL bus."
+ }
+ ],
+ "countermeasures": [
+ {
+ "name": "CONFIG.REGWEN",
+ "desc": "Registers are protected from writes."
+ },
+ {
+ "name": "CONFIG.MUBI",
+ "desc": "Registers have multi-bit encoded fields."
+ },
+ {
+ "name": "CONFIG.REDUN",
+ "desc": "Threshold register has an inverted copy to compare against."
+ },
+ {
+ "name": "INTERSIG.MUBI",
+ "desc": "OTP signal used to enable software access to registers."
+ },
+ {
+ "name": "MAIN_SM.FSM.SPARSE",
+ "desc": "The ENTROPY_SRC main state machine uses a sparse state encoding."
+ },
+ {
+ "name": "ACK_SM.FSM.SPARSE",
+ "desc": "The ENTROPY_SRC ack state machine uses a sparse state encoding."
+ },
+ {
+ "name": "RNG.BKGN_CHK",
+ "desc": "Random number generator is protected with continuous background health checks."
+ },
+ {
+ "name": "CTR.REDUN",
+ "desc": "Counter hardening for all health test counters."
+ },
+ {
+ "name": "CTR.LOCAL_ESC",
+ "desc": "Redundant counter failures will cause a local escalation to the main state machine."
+ },
+ {
+ "name": "ESFINAL_RDATA.BUS.CONSISTENCY",
+ "desc": "Comparison on successive bus values for the post-conditioned entropy seed bus."
+ },
+ {
+ "name": "TILE_LINK.BUS.INTEGRITY",
+ "desc": "Tilelink end-to-end bus integrity scheme."
+ }
+ ],
+ "regwidth": "32",
+ "registers": [
+ {
+ "name": "ME_REGWEN",
+ "desc": "Register write enable for module enable register",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When true, the !!MODULE_ENABLE register can be modified.\nWhen false, it becomes read-only.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "SW_REGUPD",
+ "desc": "Register write enable for control and threshold registers",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When this bit true and the MODULE_ENABLE field is false,\nthe REGWEN write enable bit read as true, and is distributed to\nall associated control and threshold registers.\nWhen false, these registers become read-only.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "REGWEN",
+ "desc": "Register write enable for all control registers",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "This read-only write enable bit will allow write access\nto control and theshold registers that are associated with this bit,\nbut only when the MODULE_ENABLE field is set to kMultiBitBool4False and the\nSW_REGUPD write enable bit is set to true.\nWhen read as false, these registers become read-only.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "REV",
+ "desc": "Revision register",
+ "swaccess": "ro",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "23:16",
+ "name": "CHIP_TYPE",
+ "desc": "Read of this register shows the type of chip using this block.",
+ "resval": "0x1"
+ },
+ {
+ "bits": "15:8",
+ "name": "HW_REVISION",
+ "desc": "Read of this register shows the revision of this block.",
+ "resval": "0x3"
+ },
+ {
+ "bits": "7:0",
+ "name": "ABI_REVISION",
+ "desc": "Read of this register shows the ABI of this block.",
+ "resval": "0x3"
+ }
+ ]
+ },
+ {
+ "name": "MODULE_ENABLE",
+ "desc": "Module enable register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "ME_REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "3:0",
+ "mubi": true,
+ "name": "MODULE_ENABLE",
+ "desc": "Setting this field to kMultiBitBool4True will enable the ENTROPY_SRC module. Setting\nthis field to kMultiBitBool4False will effectively reset the module. The modules of\nthe entropy complex may only be enabled and disabled in a specific order, see\nProgrammers Guide for details.",
+ "resval": false
+ }
+ ]
+ },
+ {
+ "name": "CONF",
+ "desc": "Configuration register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "3:0",
+ "name": "FIPS_ENABLE",
+ "mubi": true,
+ "desc": "Setting this field to kMultiBitBool4True will enable FIPS qualified entropy to be\ngenerated.",
+ "resval": false
+ },
+ {
+ "bits": "7:4",
+ "name": "ENTROPY_DATA_REG_ENABLE",
+ "mubi": true,
+ "desc": "Setting this field to kMultiBitBool4True will enable reading entropy values from the\nENTROPY_DATA register. This function also requires that the otp_en_entropy_src_fw_read\ninput vector is set to the enable encoding.",
+ "resval": false
+ },
+ {
+ "bits": "15:12",
+ "name": "THRESHOLD_SCOPE",
+ "mubi": true,
+ "desc": "This field controls the scope (either by-line or by-sum) of the health checks.\nIf set to kMultiBitBool4True, the Adaptive Proportion and Markov Tests will accumulate all\nRNG input lines into a single score, and thresholds will be applied to the sum all\nthe entropy input lines. If set to kMultiBitBool4False, the RNG input lines are all scored\nindividually. A statistical deviation in any one input line, be it due to\ncoincidence or failure, will force rejection of the sample, and count toward the\ntotal alert count.",
+ "resval": false
+ },
+ {
+ "bits": "23:20",
+ "name": "RNG_BIT_ENABLE",
+ "mubi": true,
+ "desc": "Setting this field to kMultiBitBool4True enables the single RNG bit mode, where only\none bit is sampled.",
+ "resval": false
+ },
+ {
+ "bits": "25:24",
+ "name": "RNG_BIT_SEL",
+ "desc": "When the above bit iset, this field selects which bit from the RNG bus will\nbe processed when in single RNG bit mode.\nThis two bit field selects the RNG bit stream:\n0b00: RNG bit 0\n0b01: RNG bit 1\n0b10: RNG bit 2\n0b11: RNG bit 3"
+ }
+ ]
+ },
+ {
+ "name": "ENTROPY_CONTROL",
+ "desc": "Entropy control register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "3:0",
+ "name": "ES_ROUTE",
+ "mubi": true,
+ "desc": "Setting this field to kMultiBitBool4True routes the generated entropy value to the ENTROPY_DATA\nregister to be read by firmware. When this field is kMultiBitBool4False, the generated\nentropy will be forwarded out of this module to the hardware interface.",
+ "resval": false
+ },
+ {
+ "bits": "7:4",
+ "name": "ES_TYPE",
+ "mubi": true,
+ "desc": "Setting this field to kMultiBitBool4True will bypass the conditioning logic and bring raw entropy\ndata to the ENTROPY_DATA register. When kMultiBitBool4False, FIPS compliant entropy\nwill be brought the ENTROPY_DATA register, after being conditioned.",
+ "resval": false
+ }
+ ]
+ },
+ {
+ "name": "ENTROPY_DATA",
+ "desc": "Entropy data bits",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwre": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "A read of this register provides generated entropy bits to firmware."
+ }
+ ]
+ },
+ {
+ "name": "HEALTH_TEST_WINDOWS",
+ "desc": "Health test windows register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WINDOW",
+ "desc": "This is the window size for all health tests. This value is used in normal mode\n when entropy is being tested in FIPS/CC compliance mode.\n The default value is (2048 bits * 1 clock/4 bits);",
+ "resval": "0x0200"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WINDOW",
+ "desc": "This is the window size for all health tests when running in bypass mode. This mode\n is active after reset for the first and only test run, or when this mode is\n programmed by firmware.\n The default value is (384 bits * 1 clock/4 bits);\n\n Note that currently only a window size of 384 is supported and tested (this\n corresponds to the register default value 0x60). Do not use any other values,\n unless you know what you are doing.",
+ "resval": "0x0060"
+ }
+ ]
+ },
+ {
+ "name": "REPCNT_THRESHOLDS",
+ "desc": "Repetition count test thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the repetition count health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the repetition count health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "REPCNTS_THRESHOLDS",
+ "desc": "Repetition count symbol test thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the repetition count symbol health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the repetition count symbol health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_HI_THRESHOLDS",
+ "desc": "Adaptive proportion test high thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the adaptive proportion health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the adaptive proportion health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_LO_THRESHOLDS",
+ "desc": "Adaptive proportion test low thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the adaptive proportion health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the adaptive proportion health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ }
+ ]
+ },
+ {
+ "name": "BUCKET_THRESHOLDS",
+ "desc": "Bucket test thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the bucket health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the bucket health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_HI_THRESHOLDS",
+ "desc": "Markov test high thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the Markov health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the Markov health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_LO_THRESHOLDS",
+ "desc": "Markov test low thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the Markov health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the Markov health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_HI_THRESHOLDS",
+ "desc": "External health test high thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the external health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the external health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is less than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_LO_THRESHOLDS",
+ "desc": "External health test low thresholds register",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_THRESH",
+ "desc": "This is the threshold size for the external health test.\n This value is used in normal mode when entropy is being tested in\n FIPS/CC compliance mode.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_THRESH",
+ "desc": "This is the threshold size for the external health test\n running in bypass mode. This mode is active after reset for the\n first and only test run, or when this mode is programmed by firmware.\n This register must be written before the module is enabled.\n Writing to this register will only update the register if the\n written value is greater than the current value of this register.\n A read from this register always reflects the current value.",
+ "resval": "0x0000"
+ }
+ ]
+ },
+ {
+ "name": "REPCNT_HI_WATERMARKS",
+ "desc": "Repetition count test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the REPCNT test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the REPCNT test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "REPCNTS_HI_WATERMARKS",
+ "desc": "Repetition count symbol test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the REPCNTS test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the REPCNTS test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_HI_WATERMARKS",
+ "desc": "Adaptive proportion test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the adaptive proportion test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the adaptive proportion test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_LO_WATERMARKS",
+ "desc": "Adaptive proportion test low watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "Low watermark value of the adaptive proportion test in FIPS mode.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "Low watermark value of the adaptive proportion test in bypass mode.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_HI_WATERMARKS",
+ "desc": "External health test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the external health test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the external health test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_LO_WATERMARKS",
+ "desc": "External health test low watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "Low watermark value of the external health test in FIPS mode.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "Low watermark value of the external health test in bypass mode.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "BUCKET_HI_WATERMARKS",
+ "desc": "Bucket test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the bucket test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the bucket test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_HI_WATERMARKS",
+ "desc": "Markov test high watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "High watermark value of the Markov test in FIPS mode."
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "High watermark value of the Markov test in bypass mode."
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_LO_WATERMARKS",
+ "desc": "Markov test low watermarks register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "FIPS_WATERMARK",
+ "desc": "Low watermark value of the Markov test in FIPS mode.",
+ "resval": "0xFFFF"
+ },
+ {
+ "bits": "31:16",
+ "name": "BYPASS_WATERMARK",
+ "desc": "Low watermark value of the Markov test in bypass mode.",
+ "resval": "0xFFFF"
+ }
+ ]
+ },
+ {
+ "name": "REPCNT_TOTAL_FAILS",
+ "desc": "Repetition count test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "REPCNT_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "REPCNTS_TOTAL_FAILS",
+ "desc": "Repetition count symbol test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "REPCNTS_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_HI_TOTAL_FAILS",
+ "desc": "Adaptive proportion high test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "ADAPTP_HI_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "ADAPTP_LO_TOTAL_FAILS",
+ "desc": "Adaptive proportion low test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "ADAPTP_LO_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "BUCKET_TOTAL_FAILS",
+ "desc": "Bucket test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "BUCKET_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_HI_TOTAL_FAILS",
+ "desc": "Markov high test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "MARKOV_HI_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "MARKOV_LO_TOTAL_FAILS",
+ "desc": "Markov low test failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "MARKOV_LO_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_HI_TOTAL_FAILS",
+ "desc": "External health test high threshold failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "EXTHT_HI_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_LO_TOTAL_FAILS",
+ "desc": "External health test low threshold failure counter register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "EXTHT_LO_TOTAL_FAILS",
+ "desc": "This register will hold a running count of test failures observed\n during normal operation. It will persist until cleared."
+ }
+ ]
+ },
+ {
+ "name": "ALERT_THRESHOLD",
+ "desc": "Alert threshold register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "ALERT_THRESHOLD",
+ "desc": "This is the threshold size that will signal an alert when\n value is reached. A value of zero will disable alerts.\n The default value is 2.",
+ "resval": "0x0002"
+ },
+ {
+ "bits": "31:16",
+ "name": "ALERT_THRESHOLD_INV",
+ "desc": "This should be set to the value above, but inverted.",
+ "resval": "0xfffd"
+ }
+ ]
+ },
+ {
+ "name": "ALERT_SUMMARY_FAIL_COUNTS",
+ "desc": "Alert summary failure counts register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "15:0",
+ "name": "ANY_FAIL_COUNT",
+ "desc": "This field will hold a running count of\n the total alert count, which is a sum of all of the other\n counters in the !!ALERT_FAIL_COUNTS register.\n It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ }
+ ]
+ },
+ {
+ "name": "ALERT_FAIL_COUNTS",
+ "desc": "Alert failure counts register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "7:4",
+ "name": "REPCNT_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "11:8",
+ "name": "ADAPTP_HI_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "15:12",
+ "name": "ADAPTP_LO_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "19:16",
+ "name": "BUCKET_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "23:20",
+ "name": "MARKOV_HI_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "27:24",
+ "name": "MARKOV_LO_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "31:28",
+ "name": "REPCNTS_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ }
+ ]
+ },
+ {
+ "name": "EXTHT_FAIL_COUNTS",
+ "desc": "External health test alert failure counts register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "3:0",
+ "name": "EXTHT_HI_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ },
+ {
+ "bits": "7:4",
+ "name": "EXTHT_LO_FAIL_COUNT",
+ "desc": "This field will hold a running count of test failures that\n contribute to the total alert count. It will be reset after every\n passing test sequence. If an alert is signaled, this value\n will persist until it is cleared."
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_CONTROL",
+ "desc": "Firmware override control register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "3:0",
+ "name": "FW_OV_MODE",
+ "desc": "Setting this field to kMultiBitBool4True will put the entropy flow in firmware override mode.\nIn this mode, firmware can monitor the post-health test entropy by reading\nthe observe FIFO. This function also requires that the otp_en_entropy_src_fw_over\ninput vector is set to the enable encoding.",
+ "mubi": true,
+ "resval": false
+ },
+ {
+ "bits": "7:4",
+ "name": "FW_OV_ENTROPY_INSERT",
+ "desc": "Setting this field to kMultiBitBool4True will switch the input into the pre-conditioner\npacker FIFO. Firmware can directly write into the packer FIFO, enabling\nthe ability to insert entropy bits back into the hardware flow. Firmware\ncan read data from the health check packer FIFO, then do optional health\nchecks or optional conditioning, then insert the results back into the flow.\nAlso, the !!FW_OV_CONTROL.FW_OV_MODE bit must be set.",
+ "mubi": true,
+ "resval": false
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_SHA3_START",
+ "desc": "Firmware override sha3 block start control register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "tags": [
+ "excl:CsrAllTests:CsrExclAll"
+ ],
+ "fields": [
+ {
+ "bits": "3:0",
+ "name": "FW_OV_INSERT_START",
+ "desc": "Setting this field to kMultiBitBool4True will instruct the ENTROPY_SRC main state machine\nto start the SHA3 process and be ready to accept entropy data. This field should\nbe set prior to writting the FW_OV_WR_DATA register. Once all data has been written,\nthis field should be set to kMultiBitBool4False. Once that happened, the SHA3 block will finish\nprocessing and push the result into the ESFINAL FIFO.\n\nNote that clearing this bit to kMultiBitBool4False while there is still unprocessed\nentropy in the !!FW_OV_WR_DATA will start the SHA3 engine before data can be added\nto the input message, and will also signal a recoverable alert in\n!!RECOV_ALERT_STS.ES_FW_OV_DISABLE_ALERT. To avoid this, check that\n!!FW_OV_WR_FIFO_FULL is clear before setting this field to kMultiBitBool4False.",
+ "mubi": true,
+ "resval": false
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_WR_FIFO_FULL",
+ "desc": "Firmware override FIFO write full status register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "FW_OV_WR_FIFO_FULL",
+ "desc": "\"When this bit is clear, writes to the FW_OV_WR_DATA register are allowed.\nIf this bit is set, it is the equivalent to a FIFO full condition, and writes\nto the FW_OV_WR_DATA register must be delayed until this bit is reset."
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_RD_FIFO_OVERFLOW",
+ "desc": "Firmware override Observe FIFO overflow status",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "FW_OV_RD_FIFO_OVERFLOW",
+ "desc": "This bit is set by hardware whenever RNG data is lost due to an overflow condition\nin the Observe FIFO. The RNG data rate is slow enough that firmware should always\nbe able to keep up. This register meanwhile provides an additional check to confirm\nthat bytes read from the !!FW_OV_RD_DATA register represent contiguous RNG samples.\nIf an overflow event occurs, this bit is cleared by hardware as soon as the FIFO is emptied."
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_RD_DATA",
+ "desc": "Firmware override Observe FIFO read register",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwre": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "A read of this register pops and returns the top of the Observe FIFO."
+ }
+ ]
+ },
+ {
+ "name": "FW_OV_WR_DATA",
+ "desc": "Firmware override FIFO write register",
+ "swaccess": "wo",
+ "hwaccess": "hro",
+ "hwext": "true",
+ "hwqe": "true",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "A write to this register will insert entropy back into the entropy source\nmodule flow. Both !!FW_OV_CONTROL.FW_OV_MODE and !!FW_OV_CONTROL.FW_OV_ENTROPY_INSERT bits need to be set\nto enable the insertion."
+ }
+ ]
+ },
+ {
+ "name": "OBSERVE_FIFO_THRESH",
+ "desc": "Observe FIFO threshold register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "REGWEN",
+ "fields": [
+ {
+ "bits": "6:0",
+ "desc": "This field will set the threshold that the depth of the Observe FIFO\nwill be compared with when setting the interrupt status bit.\nNote: a value of zero is reserved and not to be used.",
+ "resval": "0x20"
+ }
+ ]
+ },
+ {
+ "name": "OBSERVE_FIFO_DEPTH",
+ "desc": "Observe FIFO depth register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "6:0",
+ "desc": "This field will hold the current depth of the Observe FIFO."
+ }
+ ]
+ },
+ {
+ "name": "DEBUG_STATUS",
+ "desc": "Debug status register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "fields": [
+ {
+ "bits": "2:0",
+ "name": "ENTROPY_FIFO_DEPTH",
+ "desc": "This is the depth of the entropy source FIFO."
+ },
+ {
+ "bits": "5:3",
+ "name": "SHA3_FSM",
+ "desc": "This is the SHA3 finite state machine current state."
+ },
+ {
+ "bits": "6",
+ "name": "SHA3_BLOCK_PR",
+ "desc": "This is the SHA3 block processed signal current state."
+ },
+ {
+ "bits": "7",
+ "name": "SHA3_SQUEEZING",
+ "desc": "This is the SHA3 squeezing signal current state."
+ },
+ {
+ "bits": "8",
+ "name": "SHA3_ABSORBED",
+ "desc": "This is the SHA3 absorbed signal current state."
+ },
+ {
+ "bits": "9",
+ "name": "SHA3_ERR",
+ "desc": "This is a logic-or of all of the SHA3 error signals."
+ },
+ {
+ "bits": "16",
+ "name": "MAIN_SM_IDLE",
+ "desc": "The entropy_src main state machine is in the idle state.",
+ "resval": 1
+ },
+ {
+ "bits": "17",
+ "name": "MAIN_SM_BOOT_DONE",
+ "desc": "The entropy_src main state machine is in the boot phase done state."
+ }
+ ]
+ },
+ {
+ "name": "RECOV_ALERT_STS",
+ "desc": "Recoverable alert status register",
+ "swaccess": "rw0c",
+ "hwaccess": "hwo",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "FIPS_ENABLE_FIELD_ALERT",
+ "desc": "This bit is set when the FIPS_ENABLE field in the !!CONF register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "1",
+ "name": "ENTROPY_DATA_REG_EN_FIELD_ALERT",
+ "desc": "This bit is set when the ENTROPY_DATA_REG_ENABLE field in the !!CONF register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "2",
+ "name": "MODULE_ENABLE_FIELD_ALERT",
+ "desc": "This bit is set when the MODULE_ENABLE field in the !!MODULE_ENABLE register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "3",
+ "name": "THRESHOLD_SCOPE_FIELD_ALERT",
+ "desc": "This bit is set when the THRESHOLD_SCOPE field in the !!CONF register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "5",
+ "name": "RNG_BIT_ENABLE_FIELD_ALERT",
+ "desc": "This bit is set when the RNG_BIT_ENABLE field in the !!CONF register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "7",
+ "name": "FW_OV_SHA3_START_FIELD_ALERT",
+ "desc": "This bit is set when the FW_OV_SHA3_START field in the !!FW_OV_SHA3_START register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "8",
+ "name": "FW_OV_MODE_FIELD_ALERT",
+ "desc": "This bit is set when the FW_OV_MODE field in the !!FW_OV_CONTROL register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "9",
+ "name": "FW_OV_ENTROPY_INSERT_FIELD_ALERT",
+ "desc": "This bit is set when the FW_OV_ENTROPY_INSERT field in the !!FW_OV_CONTROL register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "10",
+ "name": "ES_ROUTE_FIELD_ALERT",
+ "desc": "This bit is set when the ES_ROUTE field in the !!ENTROPY_CONTROL register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "11",
+ "name": "ES_TYPE_FIELD_ALERT",
+ "desc": "This bit is set when the ES_TYPE field in the !!ENTROPY_CONTROL register is set to\na value other than kMultiBitBool4False or kMultiBitBool4True.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "12",
+ "name": "ES_MAIN_SM_ALERT",
+ "desc": "This bit is set when the main state machine detects a threshhold failure state.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "13",
+ "name": "ES_BUS_CMP_ALERT",
+ "desc": "This bit is set when the interal entropy bus value is equal to the prior\nvalid value on the bus, indicating a possible attack.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "14",
+ "name": "ES_THRESH_CFG_ALERT",
+ "desc": "This bit is set when the !!ALERT_THRESHOLD register is not configured properly.\nThe upper field must be the exact inverse of the lower field.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "15",
+ "name": "ES_FW_OV_WR_ALERT",
+ "desc": "This bit is set when the packer FIFO has been written but was full at the time,\nand in both FW_OV_MODE and FW_OV_ENTROPY_INSERT modes.\nThis alert would normally be the result of not monitoring the !!FW_OV_WR_FIFO_FULL\nregister before each write to the !!FW_OV_WR_DATA register.\nWriting a zero resets this status bit."
+ },
+ {
+ "bits": "16",
+ "name": "ES_FW_OV_DISABLE_ALERT",
+ "desc": "This bit is set when !!FW_OV_SHA3_START has been set to MuBi4 False, without\nwaiting for the FW_OV packer FIFO to clear. The final entropy entry in the FIFO\nwill not be included in the SHA3 digest. (Rather it will be added to the\nsubsequent SHA3 digest.) To avoid this alert, monitor !!FW_OV_WR_FIFO_FULL before\nclearing !!FW_OV_SHA3_START. This alert only applies when both FW_OV_MODE and\nFW_OV_ENTROPY_INSERT are set to MuBi4True.\nWriting a zero resets this status bit."
+ }
+ ]
+ },
+ {
+ "name": "ERR_CODE",
+ "desc": "Hardware detection of error conditions status register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "SFIFO_ESRNG_ERR",
+ "desc": "This bit will be set to one when an error has been detected for the\nesrng FIFO. The type of error is reflected in the type status\nbits (bits 28 through 30 of this register).\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "1",
+ "name": "SFIFO_OBSERVE_ERR",
+ "desc": "This bit will be set to one when an error has been detected for the\nobserve FIFO. The type of error is reflected in the type status\nbits (bits 28 through 30 of this register).\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "2",
+ "name": "SFIFO_ESFINAL_ERR",
+ "desc": "This bit will be set to one when an error has been detected for the\nesfinal FIFO. The type of error is reflected in the type status\nbits (bits 28 through 30 of this register).\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "20",
+ "name": "ES_ACK_SM_ERR",
+ "desc": "This bit will be set to one when an illegal state has been detected for the\nES ack stage state machine. This error will signal a fatal alert, and also\nan interrupt if enabled.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "21",
+ "name": "ES_MAIN_SM_ERR",
+ "desc": "This bit will be set to one when an illegal state has been detected for the\nES main stage state machine. This error will signal a fatal alert, and also\nan interrupt if enabled.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "22",
+ "name": "ES_CNTR_ERR",
+ "desc": "This bit will be set to one when a hardened counter has detected an error\ncondition. This error will signal a fatal alert, and also\nan interrupt if enabled.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "23",
+ "name": "SHA3_STATE_ERR",
+ "desc": "This bit will be set to one when a SHA3 state error has been detected.\nThis error will signal a fatal alert, and also an interrupt if enabled.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "24",
+ "name": "SHA3_RST_STORAGE_ERR",
+ "desc": "This bit will be set to one when a SHA3_RST_STORAGE_ERR signal being\nactive has been detected.\nThis error will signal a fatal alert, and also an interrupt if enabled.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "28",
+ "name": "FIFO_WRITE_ERR",
+ "desc": "This bit will be set to one when any of the source bits (bits 0 through 1 of this\nthis register) are asserted as a result of an error pulse generated from\nany full FIFO that has been recieved a write pulse.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "29",
+ "name": "FIFO_READ_ERR",
+ "desc": "This bit will be set to one when any of the source bits (bits 0 through 1 of this\nthis register) are asserted as a result of an error pulse generated from\nany empty FIFO that has recieved a read pulse.\nThis bit will stay set until the next reset."
+ },
+ {
+ "bits": "30",
+ "name": "FIFO_STATE_ERR",
+ "desc": "This bit will be set to one when any of the source bits (bits 0 through 1 of this\nthis register) are asserted as a result of an error pulse generated from\nany FIFO where both the empty and full status bits are set.\nThis bit will stay set until the next reset."
+ }
+ ]
+ },
+ {
+ "name": "ERR_CODE_TEST",
+ "desc": "Test error conditions register",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "4:0",
+ "name": "ERR_CODE_TEST",
+ "desc": "Setting this field will set the bit number for which an error\nwill be forced in the hardware. This bit number is that same one\nfound in the !!ERR_CODE register. The action of writing this\nregister will force an error pulse. The sole purpose of this\nregister is to test that any error properly propagates to either\nan interrupt or an alert."
+ }
+ ]
+ },
+ {
+ "name": "MAIN_SM_STATE",
+ "desc": "Main state machine state debug register",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "fields": [
+ {
+ "bits": "8:0",
+ "name": "MAIN_SM_STATE",
+ "desc": "This is the state of the ENTROPY_SRC main state machine.\nSee the RTL file `entropy_src_main_sm` for the meaning of the values.",
+ "resval": "0xf5"
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/fuse_ctrl/data/entropy_src.rdl b/src/fuse_ctrl/data/entropy_src.rdl
new file mode 100644
index 0000000..200bf5d
--- /dev/null
+++ b/src/fuse_ctrl/data/entropy_src.rdl
@@ -0,0 +1,965 @@
+addrmap entropy_src {
+ reg {
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Asserted when entropy source bits are available.";
+ } ES_ENTROPY_VALID[0:0];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Asserted when the alert count has been met.";
+ } ES_HEALTH_TEST_FAILED[1:1];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Asserted when the observe FIFO has filled to the threshold level.";
+ } ES_OBSERVE_FIFO_READY[2:2];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Asserted when a FIFO error occurs, or if an illegal state machine state is reached.";
+ } ES_FATAL_ERR[3:3];
+ } INTERRUPT_STATE @ 0x0;
+ reg {
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when es_entropy_valid is set.";
+ } ES_ENTROPY_VALID[0:0];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when es_health_test_failed is set.";
+ } ES_HEALTH_TEST_FAILED[1:1];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when es_observe_fifo_ready is set.";
+ } ES_OBSERVE_FIFO_READY[2:2];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when es_fatal_err is set.";
+ } ES_FATAL_ERR[3:3];
+ } INTERRUPT_ENABLE @ 0x4;
+ reg {
+ field {
+ sw = w;
+ desc = "Write 1 to force es_entropy_valid to 1.";
+ } ES_ENTROPY_VALID[0:0];
+ field {
+ sw = w;
+ desc = "Write 1 to force es_health_test_failed to 1.";
+ } ES_HEALTH_TEST_FAILED[1:1];
+ field {
+ sw = w;
+ desc = "Write 1 to force es_observe_fifo_ready to 1.";
+ } ES_OBSERVE_FIFO_READY[2:2];
+ field {
+ sw = w;
+ desc = "Write 1 to force es_fatal_err to 1.";
+ } ES_FATAL_ERR[3:3];
+ } INTERRUPT_TEST @ 0x8;
+ reg {
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } RECOV_ALERT[0:0];
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } FATAL_ALERT[1:1];
+ } ALERT_TEST @ 0xC;
+ reg {
+ field {
+ desc = "When true, the !!MODULE_ENABLE register can be modified.
+ When false, it becomes read-only.";
+ sw = rw;
+ onwrite = woclr;
+ } ME_REGWEN[0:0] = 0x1;
+ } ME_REGWEN @ 0x10;
+ reg {
+ field {
+ desc = "When this bit true and the MODULE_ENABLE field is false,
+ the REGWEN write enable bit read as true, and is distributed to
+ all associated control and threshold registers.
+ When false, these registers become read-only.";
+ sw = rw;
+ onwrite = woclr;
+ } SW_REGUPD[0:0] = 0x1;
+ } SW_REGUPD @ 0x14;
+ reg {
+ field {
+ desc = "This read-only write enable bit will allow write access
+ to control and theshold registers that are associated with this bit,
+ but only when the MODULE_ENABLE field is set to kMultiBitBool4False and the
+ SW_REGUPD write enable bit is set to true.
+ When read as false, these registers become read-only.";
+ sw = r;
+ } REGWEN[0:0] = 0x1;
+ } REGWEN @ 0x18;
+ reg {
+ field {
+ desc = "Read of this register shows the ABI of this block.";
+ sw = r;
+ } ABI_REVISION[7:0] = 0x3;
+ field {
+ desc = "Read of this register shows the revision of this block.";
+ sw = r;
+ } HW_REVISION[15:8] = 0x3;
+ field {
+ desc = "Read of this register shows the type of chip using this block.";
+ sw = r;
+ } CHIP_TYPE[23:16] = 0x1;
+ } REV @ 0x1C;
+ reg {
+ field {
+ desc = "Setting this field to kMultiBitBool4True will enable the ENTROPY_SRC module. Setting
+ this field to kMultiBitBool4False will effectively reset the module. The modules of
+ the entropy complex may only be enabled and disabled in a specific order, see
+ Programmers Guide for details.";
+ sw = rw;
+ } MODULE_ENABLE[3:0] = 0x9;
+ } MODULE_ENABLE @ 0x20;
+ reg {
+ field {
+ desc = "Setting this field to kMultiBitBool4True will enable FIPS qualified entropy to be
+ generated.";
+ sw = rw;
+ } FIPS_ENABLE[3:0] = 0x9;
+ field {
+ desc = "Setting this field to kMultiBitBool4True will enable reading entropy values from the
+ ENTROPY_DATA register. This function also requires that the otp_en_entropy_src_fw_read
+ input vector is set to the enable encoding.";
+ sw = rw;
+ } ENTROPY_DATA_REG_ENABLE[7:4] = 0x9;
+ field {
+ desc = "This field controls the scope (either by-line or by-sum) of the health checks.
+ If set to kMultiBitBool4True, the Adaptive Proportion and Markov Tests will accumulate all
+ RNG input lines into a single score, and thresholds will be applied to the sum all
+ the entropy input lines. If set to kMultiBitBool4False, the RNG input lines are all scored
+ individually. A statistical deviation in any one input line, be it due to
+ coincidence or failure, will force rejection of the sample, and count toward the
+ total alert count.";
+ sw = rw;
+ } THRESHOLD_SCOPE[15:12] = 0x9;
+ field {
+ desc = "Setting this field to kMultiBitBool4True enables the single RNG bit mode, where only
+ one bit is sampled.";
+ sw = rw;
+ } RNG_BIT_ENABLE[23:20] = 0x9;
+ field {
+ desc = "When the above bit iset, this field selects which bit from the RNG bus will
+ be processed when in single RNG bit mode.
+ This two bit field selects the RNG bit stream:
+ 0b00: RNG bit 0
+ 0b01: RNG bit 1
+ 0b10: RNG bit 2
+ 0b11: RNG bit 3";
+ sw = rw;
+ } RNG_BIT_SEL[25:24];
+ } CONF @ 0x24;
+ reg {
+ field {
+ desc = "Setting this field to kMultiBitBool4True routes the generated entropy value to the ENTROPY_DATA
+ register to be read by firmware. When this field is kMultiBitBool4False, the generated
+ entropy will be forwarded out of this module to the hardware interface.";
+ sw = rw;
+ } ES_ROUTE[3:0] = 0x9;
+ field {
+ desc = "Setting this field to kMultiBitBool4True will bypass the conditioning logic and bring raw entropy
+ data to the ENTROPY_DATA register. When kMultiBitBool4False, FIPS compliant entropy
+ will be brought the ENTROPY_DATA register, after being conditioned.";
+ sw = rw;
+ } ES_TYPE[7:4] = 0x9;
+ } ENTROPY_CONTROL @ 0x28;
+ reg {
+ field {
+ desc = "A read of this register provides generated entropy bits to firmware.";
+ sw = r;
+ } ENTROPY_DATA[31:0];
+ } ENTROPY_DATA @ 0x2C;
+ reg {
+ field {
+ desc = "This is the window size for all health tests. This value is used in normal mode
+ when entropy is being tested in FIPS/CC compliance mode.
+ The default value is (2048 bits * 1 clock/4 bits);";
+ sw = rw;
+ } FIPS_WINDOW[15:0] = 0x200;
+ field {
+ desc = "This is the window size for all health tests when running in bypass mode. This mode
+ is active after reset for the first and only test run, or when this mode is
+ programmed by firmware.
+ The default value is (384 bits * 1 clock/4 bits);
+
+ Note that currently only a window size of 384 is supported and tested (this
+ corresponds to the register default value 0x60). Do not use any other values,
+ unless you know what you are doing.";
+ sw = rw;
+ } BYPASS_WINDOW[31:16] = 0x60;
+ } HEALTH_TEST_WINDOWS @ 0x30;
+ reg {
+ field {
+ desc = "This is the threshold size for the repetition count health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the repetition count health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } REPCNT_THRESHOLDS @ 0x34;
+ reg {
+ field {
+ desc = "This is the threshold size for the repetition count symbol health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the repetition count symbol health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } REPCNTS_THRESHOLDS @ 0x38;
+ reg {
+ field {
+ desc = "This is the threshold size for the adaptive proportion health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the adaptive proportion health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } ADAPTP_HI_THRESHOLDS @ 0x3C;
+ reg {
+ field {
+ desc = "This is the threshold size for the adaptive proportion health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0x0;
+ field {
+ desc = "This is the threshold size for the adaptive proportion health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0x0;
+ } ADAPTP_LO_THRESHOLDS @ 0x40;
+ reg {
+ field {
+ desc = "This is the threshold size for the bucket health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the bucket health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } BUCKET_THRESHOLDS @ 0x44;
+ reg {
+ field {
+ desc = "This is the threshold size for the Markov health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the Markov health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } MARKOV_HI_THRESHOLDS @ 0x48;
+ reg {
+ field {
+ desc = "This is the threshold size for the Markov health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0x0;
+ field {
+ desc = "This is the threshold size for the Markov health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0x0;
+ } MARKOV_LO_THRESHOLDS @ 0x4C;
+ reg {
+ field {
+ desc = "This is the threshold size for the external health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0xFFFF;
+ field {
+ desc = "This is the threshold size for the external health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is less than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0xFFFF;
+ } EXTHT_HI_THRESHOLDS @ 0x50;
+ reg {
+ field {
+ desc = "This is the threshold size for the external health test.
+ This value is used in normal mode when entropy is being tested in
+ FIPS/CC compliance mode.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } FIPS_THRESH[15:0] = 0x0;
+ field {
+ desc = "This is the threshold size for the external health test
+ running in bypass mode. This mode is active after reset for the
+ first and only test run, or when this mode is programmed by firmware.
+ This register must be written before the module is enabled.
+ Writing to this register will only update the register if the
+ written value is greater than the current value of this register.
+ A read from this register always reflects the current value.";
+ sw = rw;
+ } BYPASS_THRESH[31:16] = 0x0;
+ } EXTHT_LO_THRESHOLDS @ 0x54;
+ reg {
+ field {
+ desc = "High watermark value of the REPCNT test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the REPCNT test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } REPCNT_HI_WATERMARKS @ 0x58;
+ reg {
+ field {
+ desc = "High watermark value of the REPCNTS test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the REPCNTS test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } REPCNTS_HI_WATERMARKS @ 0x5C;
+ reg {
+ field {
+ desc = "High watermark value of the adaptive proportion test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the adaptive proportion test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } ADAPTP_HI_WATERMARKS @ 0x60;
+ reg {
+ field {
+ desc = "Low watermark value of the adaptive proportion test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0] = 0xFFFF;
+ field {
+ desc = "Low watermark value of the adaptive proportion test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16] = 0xFFFF;
+ } ADAPTP_LO_WATERMARKS @ 0x64;
+ reg {
+ field {
+ desc = "High watermark value of the external health test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the external health test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } EXTHT_HI_WATERMARKS @ 0x68;
+ reg {
+ field {
+ desc = "Low watermark value of the external health test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0] = 0xFFFF;
+ field {
+ desc = "Low watermark value of the external health test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16] = 0xFFFF;
+ } EXTHT_LO_WATERMARKS @ 0x6C;
+ reg {
+ field {
+ desc = "High watermark value of the bucket test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the bucket test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } BUCKET_HI_WATERMARKS @ 0x70;
+ reg {
+ field {
+ desc = "High watermark value of the Markov test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0];
+ field {
+ desc = "High watermark value of the Markov test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16];
+ } MARKOV_HI_WATERMARKS @ 0x74;
+ reg {
+ field {
+ desc = "Low watermark value of the Markov test in FIPS mode.";
+ sw = r;
+ } FIPS_WATERMARK[15:0] = 0xFFFF;
+ field {
+ desc = "Low watermark value of the Markov test in bypass mode.";
+ sw = r;
+ } BYPASS_WATERMARK[31:16] = 0xFFFF;
+ } MARKOV_LO_WATERMARKS @ 0x78;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } REPCNT_TOTAL_FAILS[31:0];
+ } REPCNT_TOTAL_FAILS @ 0x7C;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } REPCNTS_TOTAL_FAILS[31:0];
+ } REPCNTS_TOTAL_FAILS @ 0x80;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } ADAPTP_HI_TOTAL_FAILS[31:0];
+ } ADAPTP_HI_TOTAL_FAILS @ 0x84;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } ADAPTP_LO_TOTAL_FAILS[31:0];
+ } ADAPTP_LO_TOTAL_FAILS @ 0x88;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } BUCKET_TOTAL_FAILS[31:0];
+ } BUCKET_TOTAL_FAILS @ 0x8C;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } MARKOV_HI_TOTAL_FAILS[31:0];
+ } MARKOV_HI_TOTAL_FAILS @ 0x90;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } MARKOV_LO_TOTAL_FAILS[31:0];
+ } MARKOV_LO_TOTAL_FAILS @ 0x94;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } EXTHT_HI_TOTAL_FAILS[31:0];
+ } EXTHT_HI_TOTAL_FAILS @ 0x98;
+ reg {
+ field {
+ desc = "This register will hold a running count of test failures observed
+ during normal operation. It will persist until cleared.";
+ sw = r;
+ } EXTHT_LO_TOTAL_FAILS[31:0];
+ } EXTHT_LO_TOTAL_FAILS @ 0x9C;
+ reg {
+ field {
+ desc = "This is the threshold size that will signal an alert when
+ value is reached. A value of zero will disable alerts.
+ The default value is 2.";
+ sw = rw;
+ } ALERT_THRESHOLD[15:0] = 0x2;
+ field {
+ desc = "This should be set to the value above, but inverted.";
+ sw = rw;
+ } ALERT_THRESHOLD_INV[31:16] = 0xFFFD;
+ } ALERT_THRESHOLD @ 0xA0;
+ reg {
+ field {
+ desc = "This field will hold a running count of
+ the total alert count, which is a sum of all of the other
+ counters in the !!ALERT_FAIL_COUNTS register.
+ It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } ANY_FAIL_COUNT[15:0];
+ } ALERT_SUMMARY_FAIL_COUNTS @ 0xA4;
+ reg {
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } REPCNT_FAIL_COUNT[7:4];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } ADAPTP_HI_FAIL_COUNT[11:8];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } ADAPTP_LO_FAIL_COUNT[15:12];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } BUCKET_FAIL_COUNT[19:16];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } MARKOV_HI_FAIL_COUNT[23:20];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } MARKOV_LO_FAIL_COUNT[27:24];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } REPCNTS_FAIL_COUNT[31:28];
+ } ALERT_FAIL_COUNTS @ 0xA8;
+ reg {
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } EXTHT_HI_FAIL_COUNT[3:0];
+ field {
+ desc = "This field will hold a running count of test failures that
+ contribute to the total alert count. It will be reset after every
+ passing test sequence. If an alert is signaled, this value
+ will persist until it is cleared.";
+ sw = r;
+ } EXTHT_LO_FAIL_COUNT[7:4];
+ } EXTHT_FAIL_COUNTS @ 0xAC;
+ reg {
+ field {
+ desc = "Setting this field to kMultiBitBool4True will put the entropy flow in firmware override mode.
+ In this mode, firmware can monitor the post-health test entropy by reading
+ the observe FIFO. This function also requires that the otp_en_entropy_src_fw_over
+ input vector is set to the enable encoding.";
+ sw = rw;
+ } FW_OV_MODE[3:0] = 0x9;
+ field {
+ desc = "Setting this field to kMultiBitBool4True will switch the input into the pre-conditioner
+ packer FIFO. Firmware can directly write into the packer FIFO, enabling
+ the ability to insert entropy bits back into the hardware flow. Firmware
+ can read data from the health check packer FIFO, then do optional health
+ checks or optional conditioning, then insert the results back into the flow.
+ Also, the !!FW_OV_CONTROL.FW_OV_MODE bit must be set.";
+ sw = rw;
+ } FW_OV_ENTROPY_INSERT[7:4] = 0x9;
+ } FW_OV_CONTROL @ 0xB0;
+ reg {
+ field {
+ desc = "Setting this field to kMultiBitBool4True will instruct the ENTROPY_SRC main state machine
+ to start the SHA3 process and be ready to accept entropy data. This field should
+ be set prior to writting the FW_OV_WR_DATA register. Once all data has been written,
+ this field should be set to kMultiBitBool4False. Once that happened, the SHA3 block will finish
+ processing and push the result into the ESFINAL FIFO.
+
+ Note that clearing this bit to kMultiBitBool4False while there is still unprocessed
+ entropy in the !!FW_OV_WR_DATA will start the SHA3 engine before data can be added
+ to the input message, and will also signal a recoverable alert in
+ !!RECOV_ALERT_STS.ES_FW_OV_DISABLE_ALERT. To avoid this, check that
+ !!FW_OV_WR_FIFO_FULL is clear before setting this field to kMultiBitBool4False.";
+ sw = rw;
+ } FW_OV_INSERT_START[3:0] = 0x9;
+ } FW_OV_SHA3_START @ 0xB4;
+ reg {
+ field {
+ desc = "\"When this bit is clear, writes to the FW_OV_WR_DATA register are allowed.
+ If this bit is set, it is the equivalent to a FIFO full condition, and writes
+ to the FW_OV_WR_DATA register must be delayed until this bit is reset.";
+ sw = r;
+ } FW_OV_WR_FIFO_FULL[0:0];
+ } FW_OV_WR_FIFO_FULL @ 0xB8;
+ reg {
+ field {
+ desc = "This bit is set by hardware whenever RNG data is lost due to an overflow condition
+ in the Observe FIFO. The RNG data rate is slow enough that firmware should always
+ be able to keep up. This register meanwhile provides an additional check to confirm
+ that bytes read from the !!FW_OV_RD_DATA register represent contiguous RNG samples.
+ If an overflow event occurs, this bit is cleared by hardware as soon as the FIFO is emptied.";
+ sw = r;
+ } FW_OV_RD_FIFO_OVERFLOW[0:0];
+ } FW_OV_RD_FIFO_OVERFLOW @ 0xBC;
+ reg {
+ field {
+ desc = "A read of this register pops and returns the top of the Observe FIFO.";
+ sw = r;
+ } FW_OV_RD_DATA[31:0];
+ } FW_OV_RD_DATA @ 0xC0;
+ reg {
+ field {
+ desc = "A write to this register will insert entropy back into the entropy source
+ module flow. Both !!FW_OV_CONTROL.FW_OV_MODE and !!FW_OV_CONTROL.FW_OV_ENTROPY_INSERT bits need to be set
+ to enable the insertion.";
+ sw = w;
+ } FW_OV_WR_DATA[31:0];
+ } FW_OV_WR_DATA @ 0xC4;
+ reg {
+ field {
+ desc = "This field will set the threshold that the depth of the Observe FIFO
+ will be compared with when setting the interrupt status bit.
+ Note: a value of zero is reserved and not to be used.";
+ sw = rw;
+ } OBSERVE_FIFO_THRESH[6:0] = 0x20;
+ } OBSERVE_FIFO_THRESH @ 0xC8;
+ reg {
+ field {
+ desc = "This field will hold the current depth of the Observe FIFO.";
+ sw = r;
+ } OBSERVE_FIFO_DEPTH[6:0];
+ } OBSERVE_FIFO_DEPTH @ 0xCC;
+ reg {
+ field {
+ desc = "This is the depth of the entropy source FIFO.";
+ sw = r;
+ } ENTROPY_FIFO_DEPTH[2:0];
+ field {
+ desc = "This is the SHA3 finite state machine current state.";
+ sw = r;
+ } SHA3_FSM[5:3];
+ field {
+ desc = "This is the SHA3 block processed signal current state.";
+ sw = r;
+ } SHA3_BLOCK_PR[6:6];
+ field {
+ desc = "This is the SHA3 squeezing signal current state.";
+ sw = r;
+ } SHA3_SQUEEZING[7:7];
+ field {
+ desc = "This is the SHA3 absorbed signal current state.";
+ sw = r;
+ } SHA3_ABSORBED[8:8];
+ field {
+ desc = "This is a logic-or of all of the SHA3 error signals.";
+ sw = r;
+ } SHA3_ERR[9:9];
+ field {
+ desc = "The entropy_src main state machine is in the idle state.";
+ sw = r;
+ } MAIN_SM_IDLE[16:16] = 0x1;
+ field {
+ desc = "The entropy_src main state machine is in the boot phase done state.";
+ sw = r;
+ } MAIN_SM_BOOT_DONE[17:17];
+ } DEBUG_STATUS @ 0xD0;
+ reg {
+ field {
+ desc = "This bit is set when the FIPS_ENABLE field in the !!CONF register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } FIPS_ENABLE_FIELD_ALERT[0:0];
+ field {
+ desc = "This bit is set when the ENTROPY_DATA_REG_ENABLE field in the !!CONF register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ENTROPY_DATA_REG_EN_FIELD_ALERT[1:1];
+ field {
+ desc = "This bit is set when the MODULE_ENABLE field in the !!MODULE_ENABLE register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } MODULE_ENABLE_FIELD_ALERT[2:2];
+ field {
+ desc = "This bit is set when the THRESHOLD_SCOPE field in the !!CONF register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } THRESHOLD_SCOPE_FIELD_ALERT[3:3];
+ field {
+ desc = "This bit is set when the RNG_BIT_ENABLE field in the !!CONF register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } RNG_BIT_ENABLE_FIELD_ALERT[5:5];
+ field {
+ desc = "This bit is set when the FW_OV_SHA3_START field in the !!FW_OV_SHA3_START register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } FW_OV_SHA3_START_FIELD_ALERT[7:7];
+ field {
+ desc = "This bit is set when the FW_OV_MODE field in the !!FW_OV_CONTROL register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } FW_OV_MODE_FIELD_ALERT[8:8];
+ field {
+ desc = "This bit is set when the FW_OV_ENTROPY_INSERT field in the !!FW_OV_CONTROL register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } FW_OV_ENTROPY_INSERT_FIELD_ALERT[9:9];
+ field {
+ desc = "This bit is set when the ES_ROUTE field in the !!ENTROPY_CONTROL register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_ROUTE_FIELD_ALERT[10:10];
+ field {
+ desc = "This bit is set when the ES_TYPE field in the !!ENTROPY_CONTROL register is set to
+ a value other than kMultiBitBool4False or kMultiBitBool4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_TYPE_FIELD_ALERT[11:11];
+ field {
+ desc = "This bit is set when the main state machine detects a threshhold failure state.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_MAIN_SM_ALERT[12:12];
+ field {
+ desc = "This bit is set when the interal entropy bus value is equal to the prior
+ valid value on the bus, indicating a possible attack.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_BUS_CMP_ALERT[13:13];
+ field {
+ desc = "This bit is set when the !!ALERT_THRESHOLD register is not configured properly.
+ The upper field must be the exact inverse of the lower field.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_THRESH_CFG_ALERT[14:14];
+ field {
+ desc = "This bit is set when the packer FIFO has been written but was full at the time,
+ and in both FW_OV_MODE and FW_OV_ENTROPY_INSERT modes.
+ This alert would normally be the result of not monitoring the !!FW_OV_WR_FIFO_FULL
+ register before each write to the !!FW_OV_WR_DATA register.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_FW_OV_WR_ALERT[15:15];
+ field {
+ desc = "This bit is set when !!FW_OV_SHA3_START has been set to MuBi4 False, without
+ waiting for the FW_OV packer FIFO to clear. The final entropy entry in the FIFO
+ will not be included in the SHA3 digest. (Rather it will be added to the
+ subsequent SHA3 digest.) To avoid this alert, monitor !!FW_OV_WR_FIFO_FULL before
+ clearing !!FW_OV_SHA3_START. This alert only applies when both FW_OV_MODE and
+ FW_OV_ENTROPY_INSERT are set to MuBi4True.
+ Writing a zero resets this status bit.";
+ sw = rw;
+ onwrite = woclr;
+ } ES_FW_OV_DISABLE_ALERT[16:16];
+ } RECOV_ALERT_STS @ 0xD4;
+ reg {
+ field {
+ desc = "This bit will be set to one when an error has been detected for the
+ esrng FIFO. The type of error is reflected in the type status
+ bits (bits 28 through 30 of this register).
+ This bit will stay set until the next reset.";
+ sw = r;
+ } SFIFO_ESRNG_ERR[0:0];
+ field {
+ desc = "This bit will be set to one when an error has been detected for the
+ observe FIFO. The type of error is reflected in the type status
+ bits (bits 28 through 30 of this register).
+ This bit will stay set until the next reset.";
+ sw = r;
+ } SFIFO_OBSERVE_ERR[1:1];
+ field {
+ desc = "This bit will be set to one when an error has been detected for the
+ esfinal FIFO. The type of error is reflected in the type status
+ bits (bits 28 through 30 of this register).
+ This bit will stay set until the next reset.";
+ sw = r;
+ } SFIFO_ESFINAL_ERR[2:2];
+ field {
+ desc = "This bit will be set to one when an illegal state has been detected for the
+ ES ack stage state machine. This error will signal a fatal alert, and also
+ an interrupt if enabled.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } ES_ACK_SM_ERR[20:20];
+ field {
+ desc = "This bit will be set to one when an illegal state has been detected for the
+ ES main stage state machine. This error will signal a fatal alert, and also
+ an interrupt if enabled.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } ES_MAIN_SM_ERR[21:21];
+ field {
+ desc = "This bit will be set to one when a hardened counter has detected an error
+ condition. This error will signal a fatal alert, and also
+ an interrupt if enabled.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } ES_CNTR_ERR[22:22];
+ field {
+ desc = "This bit will be set to one when a SHA3 state error has been detected.
+ This error will signal a fatal alert, and also an interrupt if enabled.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } SHA3_STATE_ERR[23:23];
+ field {
+ desc = "This bit will be set to one when a SHA3_RST_STORAGE_ERR signal being
+ active has been detected.
+ This error will signal a fatal alert, and also an interrupt if enabled.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } SHA3_RST_STORAGE_ERR[24:24];
+ field {
+ desc = "This bit will be set to one when any of the source bits (bits 0 through 1 of this
+ this register) are asserted as a result of an error pulse generated from
+ any full FIFO that has been recieved a write pulse.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } FIFO_WRITE_ERR[28:28];
+ field {
+ desc = "This bit will be set to one when any of the source bits (bits 0 through 1 of this
+ this register) are asserted as a result of an error pulse generated from
+ any empty FIFO that has recieved a read pulse.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } FIFO_READ_ERR[29:29];
+ field {
+ desc = "This bit will be set to one when any of the source bits (bits 0 through 1 of this
+ this register) are asserted as a result of an error pulse generated from
+ any FIFO where both the empty and full status bits are set.
+ This bit will stay set until the next reset.";
+ sw = r;
+ } FIFO_STATE_ERR[30:30];
+ } ERR_CODE @ 0xD8;
+ reg {
+ field {
+ desc = "Setting this field will set the bit number for which an error
+ will be forced in the hardware. This bit number is that same one
+ found in the !!ERR_CODE register. The action of writing this
+ register will force an error pulse. The sole purpose of this
+ register is to test that any error properly propagates to either
+ an interrupt or an alert.";
+ sw = rw;
+ } ERR_CODE_TEST[4:0];
+ } ERR_CODE_TEST @ 0xDC;
+ reg {
+ field {
+ desc = "This is the state of the ENTROPY_SRC main state machine.
+ See the RTL file `entropy_src_main_sm` for the meaning of the values.";
+ sw = r;
+ } MAIN_SM_STATE[8:0] = 0xF5;
+ } MAIN_SM_STATE @ 0xE0;
+};
\ No newline at end of file
diff --git a/src/fuse_ctrl/data/otp-img.2048.vmem b/src/fuse_ctrl/data/otp-img.2048.vmem
new file mode 100644
index 0000000..4cb8350
--- /dev/null
+++ b/src/fuse_ctrl/data/otp-img.2048.vmem
@@ -0,0 +1,1032 @@
+// Generated on Sat, 07 Dec 2024 03:36:54 UTC with
+// $ gen-otp-img.py \
+// --img-cfg /home/ws/caliptra/anjpar/opentitan_1106/hw/ip/otp_ctrl/data/otp_ctrl_img_raw.hjson \
+// --lc-state-def /home/ws/caliptra/anjpar/opentitan_1106/hw/ip/lc_ctrl/data/lc_ctrl_state.hjson \
+// --mmap-def /home/ws/caliptra/anjpar/opentitan_1106/hw/ip/otp_ctrl/data/otp_ctrl_mmap.hjson \
+// --out hw/ip/otp_ctrl/data/otp-img.2048.vmem
+//
+// OTP MEM file with 1024 x 24bit layout
+@000000 000000 // VENDOR_TEST: SCRATCH
+@000001 000000 // VENDOR_TEST: SCRATCH
+@000002 000000 // VENDOR_TEST: SCRATCH
+@000003 000000 // VENDOR_TEST: SCRATCH
+@000004 000000 // VENDOR_TEST: SCRATCH
+@000005 000000 // VENDOR_TEST: SCRATCH
+@000006 000000 // VENDOR_TEST: SCRATCH
+@000007 000000 // VENDOR_TEST: SCRATCH
+@000008 000000 // VENDOR_TEST: SCRATCH
+@000009 000000 // VENDOR_TEST: SCRATCH
+@00000a 000000 // VENDOR_TEST: SCRATCH
+@00000b 000000 // VENDOR_TEST: SCRATCH
+@00000c 000000 // VENDOR_TEST: SCRATCH
+@00000d 000000 // VENDOR_TEST: SCRATCH
+@00000e 000000 // VENDOR_TEST: SCRATCH
+@00000f 000000 // VENDOR_TEST: SCRATCH
+@000010 000000 // VENDOR_TEST: SCRATCH
+@000011 000000 // VENDOR_TEST: SCRATCH
+@000012 000000 // VENDOR_TEST: SCRATCH
+@000013 000000 // VENDOR_TEST: SCRATCH
+@000014 000000 // VENDOR_TEST: SCRATCH
+@000015 000000 // VENDOR_TEST: SCRATCH
+@000016 000000 // VENDOR_TEST: SCRATCH
+@000017 000000 // VENDOR_TEST: SCRATCH
+@000018 000000 // VENDOR_TEST: SCRATCH
+@000019 000000 // VENDOR_TEST: SCRATCH
+@00001a 000000 // VENDOR_TEST: SCRATCH
+@00001b 000000 // VENDOR_TEST: SCRATCH
+@00001c 000000 // VENDOR_TEST: VENDOR_TEST_DIGEST
+@00001d 000000 // VENDOR_TEST: VENDOR_TEST_DIGEST
+@00001e 000000 // VENDOR_TEST: VENDOR_TEST_DIGEST
+@00001f 000000 // VENDOR_TEST: VENDOR_TEST_DIGEST
+@000020 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000021 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000022 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000023 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000024 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000025 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000026 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000027 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000028 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000029 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00002f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000030 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000031 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000032 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000033 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000034 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000035 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000036 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000037 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000038 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000039 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00003f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000040 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000041 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000042 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000043 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000044 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000045 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000046 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000047 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000048 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000049 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00004f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000050 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000051 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000052 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000053 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000054 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000055 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000056 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000057 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000058 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000059 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00005f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000060 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000061 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000062 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000063 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000064 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000065 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000066 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000067 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000068 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@000069 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00006a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00006b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00006c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00006d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_CFG
+@00006e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_INIT_EN
+@00006f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_AST_INIT_EN
+@000070 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_ROM_EXT_SKU
+@000071 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_ROM_EXT_SKU
+@000072 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_SIGVERIFY_SPX_EN
+@000073 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_SIGVERIFY_SPX_EN
+@000074 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG
+@000075 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG
+@000076 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG
+@000077 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG
+@000078 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE
+@000079 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE
+@00007a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EN
+@00007b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EN
+@00007c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_JITTER_EN
+@00007d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_JITTER_EN
+@00007e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RET_RAM_RESET_MASK
+@00007f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RET_RAM_RESET_MASK
+@000080 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MANUF_STATE
+@000081 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MANUF_STATE
+@000082 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_ROM_EXEC_EN
+@000083 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_ROM_EXEC_EN
+@000084 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_CPUCTRL
+@000085 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_CPUCTRL
+@000086 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT
+@000087 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT
+@000088 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MIN_SEC_VER_BL0
+@000089 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_MIN_SEC_VER_BL0
+@00008a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN
+@00008b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN
+@00008c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RMA_SPIN_EN
+@00008d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RMA_SPIN_EN
+@00008e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RMA_SPIN_CYCLES
+@00008f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RMA_SPIN_CYCLES
+@000090 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS
+@000091 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS
+@000092 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS
+@000093 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS
+@000094 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS
+@000095 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS
+@000096 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS
+@000097 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS
+@000098 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS
+@000099 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS
+@00009a 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS
+@00009b 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS
+@00009c 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS
+@00009d 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS
+@00009e 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS
+@00009f 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS
+@0000a0 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS
+@0000a1 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS
+@0000a2 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ALERT_THRESHOLD
+@0000a3 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_ALERT_THRESHOLD
+@0000a4 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST
+@0000a5 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST
+@0000a6 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_SRAM_KEY_RENEW_EN
+@0000a7 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_SRAM_KEY_RENEW_EN
+@0000a8 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN
+@0000a9 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_EN
+@0000aa 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_START_OFFSET
+@0000ab 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_START_OFFSET
+@0000ac 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_LENGTH
+@0000ad 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_LENGTH
+@0000ae 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000af 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b0 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b1 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b2 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b3 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b4 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b5 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b6 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b7 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b8 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000b9 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000ba 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000bb 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000bc 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000bd 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_IMMUTABLE_ROM_EXT_SHA256_HASH
+@0000be 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000bf 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c0 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c1 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c2 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c3 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c4 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c5 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c6 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c7 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c8 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000c9 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000ca 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000cb 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000cc 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000cd 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_RESERVED
+@0000ce 000000 // unallocated
+@0000cf 000000 // unallocated
+@0000d0 000000 // unallocated
+@0000d1 000000 // unallocated
+@0000d2 000000 // unallocated
+@0000d3 000000 // unallocated
+@0000d4 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DIGEST
+@0000d5 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DIGEST
+@0000d6 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DIGEST
+@0000d7 000000 // CREATOR_SW_CFG: CREATOR_SW_CFG_DIGEST
+@0000d8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ERROR_REPORTING
+@0000d9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ERROR_REPORTING
+@0000da 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_BOOTSTRAP_DIS
+@0000db 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_BOOTSTRAP_DIS
+@0000dc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASS_EN
+@0000dd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASS_EN
+@0000de 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ESCALATION
+@0000df 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ESCALATION
+@0000e0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000e9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ea 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000eb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ec 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ed 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ee 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ef 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000f9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000fa 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000fb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000fc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000fd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000fe 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@0000ff 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000100 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000101 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000102 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000103 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000104 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000105 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000106 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000107 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000108 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000109 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00010f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000110 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000111 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000112 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000113 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000114 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000115 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000116 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000117 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000118 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000119 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00011f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000120 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000121 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000122 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000123 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000124 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000125 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000126 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000127 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000128 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000129 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00012f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000130 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000131 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000132 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000133 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000134 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000135 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000136 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000137 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000138 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000139 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00013f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000140 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000141 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000142 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000143 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000144 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000145 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000146 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000147 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000148 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000149 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00014f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000150 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000151 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000152 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000153 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000154 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000155 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000156 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000157 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000158 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000159 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00015f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000160 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000161 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000162 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000163 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000164 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000165 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000166 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000167 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000168 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000169 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00016f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000170 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000171 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000172 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000173 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000174 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000175 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000176 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000177 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000178 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000179 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@00017f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION
+@000180 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000181 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000182 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000183 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000184 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000185 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000186 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000187 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000188 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000189 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00018f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000190 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000191 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000192 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000193 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000194 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000195 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000196 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000197 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000198 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@000199 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@00019f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION
+@0001a0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH
+@0001a8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001a9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001aa 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001ab 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001ac 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001ad 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001ae 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001af 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES
+@0001b0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001b9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001ba 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001bb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001bc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001bd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001be 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001bf 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001c9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001ca 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001cb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001cc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001cd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001ce 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001cf 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES
+@0001d0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD
+@0001d1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD
+@0001d2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END
+@0001d3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END
+@0001d4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV
+@0001d5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV
+@0001d6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA
+@0001d7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA
+@0001d8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES
+@0001d9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES
+@0001da 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
+@0001db 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_KEYMGR_OTP_MEAS_EN
+@0001dc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_MANUF_STATE
+@0001dd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_MANUF_STATE
+@0001de 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_RSTMGR_INFO_EN
+@0001df 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_RSTMGR_INFO_EN
+@0001e0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN
+@0001e1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN
+@0001e2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SENSOR_CTRL_ALERT_CFG
+@0001e8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SRAM_READBACK_EN
+@0001e9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_SRAM_READBACK_EN
+@0001ea 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_PRESERVE_RESET_REASON_EN
+@0001eb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_PRESERVE_RESET_REASON_EN
+@0001ec 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_RESET_REASON_CHECK_VALUE
+@0001ed 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_RESET_REASON_CHECK_VALUE
+@0001ee 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_BANNER_EN
+@0001ef 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_BANNER_EN
+@0001f0 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_FLASH_ECC_EXC_HANDLER_EN
+@0001f1 000000 // OWNER_SW_CFG: OWNER_SW_CFG_ROM_FLASH_ECC_EXC_HANDLER_EN
+@0001f2 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f3 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f4 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f5 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f6 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f7 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f8 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001f9 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001fa 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001fb 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001fc 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001fd 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001fe 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@0001ff 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000200 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000201 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000202 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000203 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000204 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000205 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000206 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000207 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000208 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000209 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00020f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000210 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000211 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000212 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000213 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000214 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000215 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000216 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000217 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000218 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000219 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00021f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000220 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000221 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000222 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000223 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000224 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000225 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000226 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000227 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000228 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000229 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022c 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022d 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022e 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@00022f 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000230 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000231 000000 // OWNER_SW_CFG: OWNER_SW_CFG_RESERVED
+@000232 000000 // unallocated
+@000233 000000 // unallocated
+@000234 000000 // unallocated
+@000235 000000 // unallocated
+@000236 000000 // unallocated
+@000237 000000 // unallocated
+@000238 000000 // OWNER_SW_CFG: OWNER_SW_CFG_DIGEST
+@000239 000000 // OWNER_SW_CFG: OWNER_SW_CFG_DIGEST
+@00023a 000000 // OWNER_SW_CFG: OWNER_SW_CFG_DIGEST
+@00023b 000000 // OWNER_SW_CFG: OWNER_SW_CFG_DIGEST
+@00023c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0
+@00023d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0
+@00023e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00023f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000240 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000241 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000242 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000243 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000244 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000245 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000246 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000247 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000248 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000249 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00024f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000250 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000251 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000252 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000253 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000254 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000255 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000256 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000257 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000258 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@000259 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00025a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00025b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00025c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00025d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0
+@00025e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1
+@00025f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1
+@000260 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000261 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000262 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000263 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000264 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000265 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000266 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000267 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000268 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000269 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00026f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000270 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000271 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000272 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000273 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000274 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000275 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000276 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000277 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000278 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000279 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@00027f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1
+@000280 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2
+@000281 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2
+@000282 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000283 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000284 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000285 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000286 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000287 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000288 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000289 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00028f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000290 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000291 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000292 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000293 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000294 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000295 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000296 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000297 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000298 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@000299 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@00029f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@0002a0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@0002a1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2
+@0002a2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3
+@0002a3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3
+@0002a4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002a5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002a6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002a7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002a8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002a9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002aa 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002ab 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002ac 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002ad 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002ae 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002af 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002b9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002ba 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002bb 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002bc 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002bd 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002be 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002bf 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002c0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002c1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002c2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002c3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3
+@0002c4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0
+@0002c5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0
+@0002c6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002c7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002c8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002c9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002ca 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002cb 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002cc 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002cd 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002ce 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002cf 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0
+@0002d6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0
+@0002d7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0
+@0002d8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1
+@0002d9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1
+@0002da 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002db 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002dc 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002dd 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002de 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002df 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002e9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1
+@0002ea 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1
+@0002eb 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1
+@0002ec 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2
+@0002ed 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2
+@0002ee 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002ef 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f0 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f1 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f2 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f3 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f4 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f5 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f6 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f7 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f8 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002f9 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002fa 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002fb 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002fc 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002fd 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2
+@0002fe 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2
+@0002ff 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2
+@000300 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3
+@000301 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3
+@000302 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000303 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000304 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000305 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000306 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000307 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000308 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000309 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@00030f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000310 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000311 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3
+@000312 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3
+@000313 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3
+@000314 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000315 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000316 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000317 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000318 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000319 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031a 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031b 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031c 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031d 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031e 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@00031f 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000320 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000321 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000322 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000323 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH
+@000324 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_DIGEST
+@000325 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_DIGEST
+@000326 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_DIGEST
+@000327 000000 // ROT_CREATOR_AUTH_CODESIGN: ROT_CREATOR_AUTH_CODESIGN_DIGEST
+@000328 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY0
+@000329 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY0
+@00032a 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY1
+@00032b 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY1
+@00032c 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY2
+@00032d 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY2
+@00032e 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY3
+@00032f 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_ECDSA_KEY3
+@000330 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY0
+@000331 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY0
+@000332 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY1
+@000333 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY1
+@000334 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY2
+@000335 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY2
+@000336 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY3
+@000337 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_SPX_KEY3
+@000338 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_DIGEST
+@000339 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_DIGEST
+@00033a 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_DIGEST
+@00033b 000000 // ROT_CREATOR_AUTH_STATE: ROT_CREATOR_AUTH_STATE_DIGEST
+@00033c 000000 // HW_CFG0: DEVICE_ID
+@00033d 000000 // HW_CFG0: DEVICE_ID
+@00033e 000000 // HW_CFG0: DEVICE_ID
+@00033f 000000 // HW_CFG0: DEVICE_ID
+@000340 000000 // HW_CFG0: DEVICE_ID
+@000341 000000 // HW_CFG0: DEVICE_ID
+@000342 000000 // HW_CFG0: DEVICE_ID
+@000343 000000 // HW_CFG0: DEVICE_ID
+@000344 000000 // HW_CFG0: DEVICE_ID
+@000345 000000 // HW_CFG0: DEVICE_ID
+@000346 000000 // HW_CFG0: DEVICE_ID
+@000347 000000 // HW_CFG0: DEVICE_ID
+@000348 000000 // HW_CFG0: DEVICE_ID
+@000349 000000 // HW_CFG0: DEVICE_ID
+@00034a 000000 // HW_CFG0: DEVICE_ID
+@00034b 000000 // HW_CFG0: DEVICE_ID
+@00034c 000000 // HW_CFG0: MANUF_STATE
+@00034d 000000 // HW_CFG0: MANUF_STATE
+@00034e 000000 // HW_CFG0: MANUF_STATE
+@00034f 000000 // HW_CFG0: MANUF_STATE
+@000350 000000 // HW_CFG0: MANUF_STATE
+@000351 000000 // HW_CFG0: MANUF_STATE
+@000352 000000 // HW_CFG0: MANUF_STATE
+@000353 000000 // HW_CFG0: MANUF_STATE
+@000354 000000 // HW_CFG0: MANUF_STATE
+@000355 000000 // HW_CFG0: MANUF_STATE
+@000356 000000 // HW_CFG0: MANUF_STATE
+@000357 000000 // HW_CFG0: MANUF_STATE
+@000358 000000 // HW_CFG0: MANUF_STATE
+@000359 000000 // HW_CFG0: MANUF_STATE
+@00035a 000000 // HW_CFG0: MANUF_STATE
+@00035b 000000 // HW_CFG0: MANUF_STATE
+@00035c 000000 // HW_CFG0: HW_CFG0_DIGEST
+@00035d 000000 // HW_CFG0: HW_CFG0_DIGEST
+@00035e 000000 // HW_CFG0: HW_CFG0_DIGEST
+@00035f 000000 // HW_CFG0: HW_CFG0_DIGEST
+@000360 000000 // HW_CFG1: EN_SRAM_IFETCH, HW_CFG1: EN_CSRNG_SW_APP_READ
+@000361 000000 // HW_CFG1: DIS_RV_DM_LATE_DEBUG, unallocated
+@000362 000000 // unallocated
+@000363 000000 // unallocated
+@000364 000000 // HW_CFG1: HW_CFG1_DIGEST
+@000365 000000 // HW_CFG1: HW_CFG1_DIGEST
+@000366 000000 // HW_CFG1: HW_CFG1_DIGEST
+@000367 000000 // HW_CFG1: HW_CFG1_DIGEST
+@000368 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@000369 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036a 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036b 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036c 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036d 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036e 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@00036f 000000 // SECRET0: TEST_UNLOCK_TOKEN
+@000370 000000 // SECRET0: TEST_EXIT_TOKEN
+@000371 000000 // SECRET0: TEST_EXIT_TOKEN
+@000372 000000 // SECRET0: TEST_EXIT_TOKEN
+@000373 000000 // SECRET0: TEST_EXIT_TOKEN
+@000374 000000 // SECRET0: TEST_EXIT_TOKEN
+@000375 000000 // SECRET0: TEST_EXIT_TOKEN
+@000376 000000 // SECRET0: TEST_EXIT_TOKEN
+@000377 000000 // SECRET0: TEST_EXIT_TOKEN
+@000378 000000 // SECRET0: SECRET0_DIGEST
+@000379 000000 // SECRET0: SECRET0_DIGEST
+@00037a 000000 // SECRET0: SECRET0_DIGEST
+@00037b 000000 // SECRET0: SECRET0_DIGEST
+@00037c 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00037d 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00037e 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00037f 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000380 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000381 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000382 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000383 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000384 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000385 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000386 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000387 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000388 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@000389 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00038a 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00038b 000000 // SECRET1: FLASH_ADDR_KEY_SEED
+@00038c 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00038d 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00038e 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00038f 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000390 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000391 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000392 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000393 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000394 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000395 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000396 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000397 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000398 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@000399 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00039a 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00039b 000000 // SECRET1: FLASH_DATA_KEY_SEED
+@00039c 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@00039d 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@00039e 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@00039f 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@0003a0 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@0003a1 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@0003a2 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@0003a3 000000 // SECRET1: SRAM_DATA_KEY_SEED
+@0003a4 000000 // SECRET1: SECRET1_DIGEST
+@0003a5 000000 // SECRET1: SECRET1_DIGEST
+@0003a6 000000 // SECRET1: SECRET1_DIGEST
+@0003a7 000000 // SECRET1: SECRET1_DIGEST
+@0003a8 000000 // SECRET2: RMA_TOKEN
+@0003a9 000000 // SECRET2: RMA_TOKEN
+@0003aa 000000 // SECRET2: RMA_TOKEN
+@0003ab 000000 // SECRET2: RMA_TOKEN
+@0003ac 000000 // SECRET2: RMA_TOKEN
+@0003ad 000000 // SECRET2: RMA_TOKEN
+@0003ae 000000 // SECRET2: RMA_TOKEN
+@0003af 000000 // SECRET2: RMA_TOKEN
+@0003b0 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b1 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b2 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b3 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b4 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b5 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b6 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b7 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b8 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003b9 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003ba 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003bb 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003bc 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003bd 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003be 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003bf 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE0
+@0003c0 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c1 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c2 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c3 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c4 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c5 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c6 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c7 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c8 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003c9 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003ca 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003cb 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003cc 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003cd 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003ce 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003cf 000000 // SECRET2: CREATOR_ROOT_KEY_SHARE1
+@0003d0 000000 // SECRET2: SECRET2_DIGEST
+@0003d1 000000 // SECRET2: SECRET2_DIGEST
+@0003d2 000000 // SECRET2: SECRET2_DIGEST
+@0003d3 000000 // SECRET2: SECRET2_DIGEST
+@0003d4 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003d5 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003d6 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003d7 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003d8 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003d9 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003da 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003db 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003dc 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003dd 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003de 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003df 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e0 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e1 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e2 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e3 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e4 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e5 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e6 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e7 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e8 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003e9 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003ea 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003eb 000000 // LIFE_CYCLE: LC_TRANSITION_CNT
+@0003ec 000000 // LIFE_CYCLE: LC_STATE
+@0003ed 000000 // LIFE_CYCLE: LC_STATE
+@0003ee 000000 // LIFE_CYCLE: LC_STATE
+@0003ef 000000 // LIFE_CYCLE: LC_STATE
+@0003f0 000000 // LIFE_CYCLE: LC_STATE
+@0003f1 000000 // LIFE_CYCLE: LC_STATE
+@0003f2 000000 // LIFE_CYCLE: LC_STATE
+@0003f3 000000 // LIFE_CYCLE: LC_STATE
+@0003f4 000000 // LIFE_CYCLE: LC_STATE
+@0003f5 000000 // LIFE_CYCLE: LC_STATE
+@0003f6 000000 // LIFE_CYCLE: LC_STATE
+@0003f7 000000 // LIFE_CYCLE: LC_STATE
+@0003f8 000000 // LIFE_CYCLE: LC_STATE
+@0003f9 000000 // LIFE_CYCLE: LC_STATE
+@0003fa 000000 // LIFE_CYCLE: LC_STATE
+@0003fb 000000 // LIFE_CYCLE: LC_STATE
+@0003fc 000000 // LIFE_CYCLE: LC_STATE
+@0003fd 000000 // LIFE_CYCLE: LC_STATE
+@0003fe 000000 // LIFE_CYCLE: LC_STATE
+@0003ff 000000 // LIFE_CYCLE: LC_STATE
\ No newline at end of file
diff --git a/src/fuse_ctrl/data/otp_ctrl.hjson b/src/fuse_ctrl/data/otp_ctrl.hjson
new file mode 100755
index 0000000..6bc2ae4
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl.hjson
@@ -0,0 +1,1986 @@
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// HJSON with partition metadata.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+{
+ name: "caliptra_otp_ctrl",
+ human_name: " Caliptra One-Time Programmable Memory COntroller",
+ one_line_desc: "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ one_paragraph_desc: '''
+ One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.
+ On top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.
+ It features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.
+ '''
+ // Uique comportablre IP identifier defined under KNOWN_CIP_IDS in the regtool
+ // TODO: This section needs to be updated for Caliptra (copying OT settings for now, to mark as placeholders)
+ cip_id: "16",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otp_ctrl",
+ revisions: [
+ {
+ version: "0.1.0",
+ life_stage: "L1",
+ design_stage: "D2",
+ verification_stage: "V2",
+ dif_stage: "S1",
+ commit_id: "127b109e2fab9336e830158abe449a3922544ded",
+ notes: "",
+ }
+ {
+ version: "1.0.0",
+ life_stage: "L1",
+ design_stage: "D3",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ {
+ version: "2.0.0",
+ life_stage: "L1",
+ design_stage: "D2S",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ ]
+ clocking: [
+ {clock: "clk_i", reset: "rst_ni", primary: true},
+ {clock: "clk_edn_i", reset: "rst_edn_ni"}
+ ]
+ scan: "true", // Enable `scanmode_i` port
+ scan_reset: "true", // Enable `scan_rst_ni` port
+ scan_en: "true", // Enable `scan_en_i` port
+ bus_interfaces: [
+ { protocol: "tlul", direction: "device", name: "core" }
+ { protocol: "tlul", direction: "device", name: "prim", hier_path: "u_otp.gen_generic.u_impl_generic.u_reg_top" }
+ ],
+
+ available_output_list: [
+ { name: "test",
+ width: 8,
+ desc: "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+
+ ///////////////////////////
+ // Interrupts and Alerts //
+ ///////////////////////////
+
+ interrupt_list: [
+ { name: "otp_operation_done",
+ desc: "A direct access command or digest calculation operation has completed."
+ }
+ { name: "otp_error",
+ desc: "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+
+ alert_list: [
+ { name: "fatal_macro_error",
+ desc: "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array.",
+ }
+ { name: "fatal_check_error",
+ desc: "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers.",
+ }
+ { name: "fatal_bus_integ_error",
+ desc: "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ }
+ { name: "fatal_prim_otp_alert",
+ desc: "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ }
+ { name: "recov_prim_otp_alert",
+ desc: "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+
+ ////////////////
+ // Parameters //
+ ////////////////
+ param_list: [
+ // Init file
+ { name: "MemInitFile",
+ desc: "VMEM file to initialize the OTP macro.",
+ type: "",
+ default: '""',
+ expose: "true",
+ local: "false"
+ }
+ // Random netlist constants
+ { name: "RndCnstLfsrSeed",
+ desc: "Compile-time random bits for initial LFSR seed",
+ type: "otp_ctrl_pkg::lfsr_seed_t"
+ randcount: "40",
+ randtype: "data", // randomize randcount databits
+ }
+ { name: "RndCnstLfsrPerm",
+ desc: "Compile-time random permutation for LFSR output",
+ type: "otp_ctrl_pkg::lfsr_perm_t"
+ randcount: "40",
+ randtype: "perm", // random permutation for randcount elements
+ }
+ { name: "RndCnstScrmblKeyInit",
+ desc: "Compile-time random permutation for scrambling key/nonce register reset value",
+ type: "otp_ctrl_pkg::scrmbl_key_init_t"
+ randcount: "256",
+ randtype: "data", // random permutation for randcount elements
+ }
+ // Normal parameters
+ { name: "NumSramKeyReqSlots",
+ desc: "Number of key slots",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OtpByteAddrWidth",
+ desc: "Width of the OTP byte address.",
+ type: "int",
+ default: "12",
+ local: "true"
+ },
+ { name: "NumErrorEntries",
+ desc: "Number of error register entries.",
+ type: "int",
+ default: "9", // partitions + DAI/LCI
+ local: "true"
+ },
+ { name: "NumDaiWords",
+ desc: "Number of 32bit words in the DAI.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumDigestWords",
+ desc: "Size of the digest fields in 32bit words.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumSwCfgWindowWords",
+ desc: "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ type: "int",
+ default: "1024",
+ local: "true"
+ }
+
+ // Memory map Info
+ { name: "NumPart",
+ desc: "Number of partitions",
+ type: "int",
+ default: "7",
+ local: "true"
+ },
+ { name: "NumPartUnbuf",
+ desc: "Number of unbuffered partitions",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumPartBuf",
+ desc: "Number of buffered partitions (including 1 lifecycle partition)",
+ type: "int",
+ default: "5",
+ local: "true"
+ },
+ { name: "VendorTestOffset",
+ desc: "Offset of the VENDOR_TEST partition",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "VendorTestSize",
+ desc: "Size of the VENDOR_TEST partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "ScratchOffset",
+ desc: "Offset of SCRATCH",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "ScratchSize",
+ desc: "Size of SCRATCH",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestOffset",
+ desc: "Offset of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestSize",
+ desc: "Size of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "NonSecretFusesOffset",
+ desc: "Offset of the NON_SECRET_FUSES partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "NonSecretFusesSize",
+ desc: "Size of the NON_SECRET_FUSES partition",
+ type: "int",
+ default: "3736",
+ local: "true"
+ },
+ { name: "FmcKeyManifestSvnOffset",
+ desc: "Offset of FMC_KEY_MANIFEST_SVN",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "FmcKeyManifestSvnSize",
+ desc: "Size of FMC_KEY_MANIFEST_SVN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RuntimeSvnOffset",
+ desc: "Offset of RUNTIME_SVN",
+ type: "int",
+ default: "68",
+ local: "true"
+ },
+ { name: "RuntimeSvnSize",
+ desc: "Size of RUNTIME_SVN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "LmsVerifyOffset",
+ desc: "Offset of LMS_VERIFY",
+ type: "int",
+ default: "84",
+ local: "true"
+ },
+ { name: "LmsVerifySize",
+ desc: "Size of LMS_VERIFY",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "LmsRevocationOffset",
+ desc: "Offset of LMS_REVOCATION",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "LmsRevocationSize",
+ desc: "Size of LMS_REVOCATION",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashMaskOffset",
+ desc: "Offset of KEY_MANIFEST_PK_HASH_MASK",
+ type: "int",
+ default: "92",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashMaskSize",
+ desc: "Size of KEY_MANIFEST_PK_HASH_MASK",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerPkHashOffset",
+ desc: "Offset of OWNER_PK_HASH",
+ type: "int",
+ default: "96",
+ local: "true"
+ },
+ { name: "OwnerPkHashSize",
+ desc: "Size of OWNER_PK_HASH",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "IdevidCertAttrOffset",
+ desc: "Offset of IDEVID_CERT_ATTR",
+ type: "int",
+ default: "144",
+ local: "true"
+ },
+ { name: "IdevidCertAttrSize",
+ desc: "Size of IDEVID_CERT_ATTR",
+ type: "int",
+ default: "96",
+ local: "true"
+ },
+ { name: "IdevidManufHsmIdOffset",
+ desc: "Offset of IDEVID_MANUF_HSM_ID",
+ type: "int",
+ default: "240",
+ local: "true"
+ },
+ { name: "IdevidManufHsmIdSize",
+ desc: "Size of IDEVID_MANUF_HSM_ID",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "SocSteppingIdOffset",
+ desc: "Offset of SOC_STEPPING_ID",
+ type: "int",
+ default: "256",
+ local: "true"
+ },
+ { name: "SocSteppingIdSize",
+ desc: "Size of SOC_STEPPING_ID",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "NonSecretFusesDigestOffset",
+ desc: "Offset of NON_SECRET_FUSES_DIGEST",
+ type: "int",
+ default: "3792",
+ local: "true"
+ },
+ { name: "NonSecretFusesDigestSize",
+ desc: "Size of NON_SECRET_FUSES_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret0Offset",
+ desc: "Offset of the SECRET0 partition",
+ type: "int",
+ default: "3800",
+ local: "true"
+ },
+ { name: "Secret0Size",
+ desc: "Size of the SECRET0 partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "TestUnlockTokenOffset",
+ desc: "Offset of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "3800",
+ local: "true"
+ },
+ { name: "TestUnlockTokenSize",
+ desc: "Size of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "TestExitTokenOffset",
+ desc: "Offset of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "3816",
+ local: "true"
+ },
+ { name: "TestExitTokenSize",
+ desc: "Size of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret0DigestOffset",
+ desc: "Offset of SECRET0_DIGEST",
+ type: "int",
+ default: "3832",
+ local: "true"
+ },
+ { name: "Secret0DigestSize",
+ desc: "Size of SECRET0_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret1Offset",
+ desc: "Offset of the SECRET1 partition",
+ type: "int",
+ default: "3840",
+ local: "true"
+ },
+ { name: "Secret1Size",
+ desc: "Size of the SECRET1 partition",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "UdsSeedOffset",
+ desc: "Offset of UDS_SEED",
+ type: "int",
+ default: "3840",
+ local: "true"
+ },
+ { name: "UdsSeedSize",
+ desc: "Size of UDS_SEED",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "Secret1DigestOffset",
+ desc: "Offset of SECRET1_DIGEST",
+ type: "int",
+ default: "3888",
+ local: "true"
+ },
+ { name: "Secret1DigestSize",
+ desc: "Size of SECRET1_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret2Offset",
+ desc: "Offset of the SECRET2 partition",
+ type: "int",
+ default: "3896",
+ local: "true"
+ },
+ { name: "Secret2Size",
+ desc: "Size of the SECRET2 partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "FieldEntropyOffset",
+ desc: "Offset of FIELD_ENTROPY",
+ type: "int",
+ default: "3896",
+ local: "true"
+ },
+ { name: "FieldEntropySize",
+ desc: "Size of FIELD_ENTROPY",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "Secret2DigestOffset",
+ desc: "Offset of SECRET2_DIGEST",
+ type: "int",
+ default: "3928",
+ local: "true"
+ },
+ { name: "Secret2DigestSize",
+ desc: "Size of SECRET2_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret3Offset",
+ desc: "Offset of the SECRET3 partition",
+ type: "int",
+ default: "3936",
+ local: "true"
+ },
+ { name: "Secret3Size",
+ desc: "Size of the SECRET3 partition",
+ type: "int",
+ default: "72",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashOffset",
+ desc: "Offset of KEY_MANIFEST_PK_HASH",
+ type: "int",
+ default: "3936",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashSize",
+ desc: "Size of KEY_MANIFEST_PK_HASH",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "RmaTokenOffset",
+ desc: "Offset of RMA_TOKEN",
+ type: "int",
+ default: "3984",
+ local: "true"
+ },
+ { name: "RmaTokenSize",
+ desc: "Size of RMA_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret3DigestOffset",
+ desc: "Offset of SECRET3_DIGEST",
+ type: "int",
+ default: "4000",
+ local: "true"
+ },
+ { name: "Secret3DigestSize",
+ desc: "Size of SECRET3_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "LifeCycleOffset",
+ desc: "Offset of the LIFE_CYCLE partition",
+ type: "int",
+ default: "4008",
+ local: "true"
+ },
+ { name: "LifeCycleSize",
+ desc: "Size of the LIFE_CYCLE partition",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "LcTransitionCntOffset",
+ desc: "Offset of LC_TRANSITION_CNT",
+ type: "int",
+ default: "4008",
+ local: "true"
+ },
+ { name: "LcTransitionCntSize",
+ desc: "Size of LC_TRANSITION_CNT",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "LcStateOffset",
+ desc: "Offset of LC_STATE",
+ type: "int",
+ default: "4056",
+ local: "true"
+ },
+ { name: "LcStateSize",
+ desc: "Size of LC_STATE",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ ]
+
+ /////////////////////////////
+ // Intermodule Connections //
+ /////////////////////////////
+
+ inter_signal_list: [
+ // OTP dedicated power connection from AST
+ { struct: ""
+ type: "io"
+ name: "otp_ext_voltage_h"
+ act: "none"
+ default: "'0"
+ package: "",
+ }
+ // Power sequencing signals to AST
+ { struct: "otp_ast_req"
+ type: "uni"
+ name: "otp_ast_pwr_seq"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals to AST (VDD domain)."
+ }
+ // Power sequencing signals from AST
+ { struct: "otp_ast_rsp"
+ type: "uni"
+ name: "otp_ast_pwr_seq_h"
+ act: "rcv"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals coming from AST (VCC domain)."
+ }
+ // EDN interface
+ { struct: "edn"
+ type: "req_rsp"
+ name: "edn"
+ act: "req"
+ package: "edn_pkg"
+ desc: "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ }
+ // Power manager init command
+ { struct: "pwr_otp"
+ type: "req_rsp"
+ name: "pwr_otp"
+ act: "rsp"
+ default: "'0"
+ package: "pwrmgr_pkg"
+ desc: "Initialization request/acknowledge from/to power manager."
+ }
+ // Macro-specific test signals to/from LC TAP
+ { struct: "lc_otp_vendor_test"
+ type: "req_rsp"
+ name: "lc_otp_vendor_test"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Vendor test control signals from/to the life cycle TAP."
+ }
+ // LC transition command
+ { struct: "lc_otp_program"
+ type: "req_rsp"
+ name: "lc_otp_program"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Life cycle state transition interface."
+ }
+ // Broadcast to LC
+ { struct: "otp_lc_data"
+ type: "uni"
+ name: "otp_lc_data"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: '''
+ Life cycle state output holding the current life cycle state,
+ the value of the transition counter and the tokens needed for life cycle transitions.
+ '''
+ }
+ // Broadcast from LC
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_escalate_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle escalation enable coming from life cycle controller.
+ This signal moves all FSMs within OTP into the error state.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_creator_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_owner_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the OWNER_SEED.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_seed_hw_rd_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Seed read enable coming from life cycle controller.
+ This signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_dft_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Test enable qualifier coming from life cycle controller.
+ This signals enables the TL-UL access port to the proprietary OTP IP.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_check_byp_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle partition check bypass signal.
+ This signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures.
+ '''
+ }
+ // Broadcast to Key Manager
+ { struct: "otp_keymgr_key"
+ type: "uni"
+ name: "otp_keymgr_key"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ }
+ // Broadcast to Flash Controller
+ { struct: "flash_otp_key"
+ type: "req_rsp"
+ name: "flash_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for FLASH scrambling."
+ }
+ // Key request from SRAM scramblers
+ { struct: "sram_otp_key"
+ // TODO: would be nice if this could accept parameters.
+ // Split this out into an issue.
+ width: "4"
+ type: "req_rsp"
+ name: "sram_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Array with key derivation interfaces for SRAM scrambling devices."
+ }
+ // Key request from OTBN RAM Scrambler
+ { struct: "otbn_otp_key"
+ type: "req_rsp"
+ name: "otbn_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for OTBN scrambling devices."
+ }
+ // Hardware config partition
+ { struct: "otp_broadcast"
+ type: "uni"
+ name: "otp_broadcast"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_part_pkg"
+ desc: "Output of the HW partitions with breakout data types."
+ }
+ // AST observability control
+ { struct: "ast_obs_ctrl",
+ type: "uni",
+ name: "obs_ctrl",
+ act: "rcv",
+ package: "ast_pkg"
+ desc: "AST observability control signals."
+ }
+ // prim otp observe bus
+ { struct: "logic",
+ type: "uni",
+ name: "otp_obs",
+ act: "req",
+ width: "8",
+ package: ""
+ desc: "AST observability bus."
+ }
+ ] // inter_signal_list
+
+ /////////////////////
+ // Countermeasures //
+ /////////////////////
+
+ countermeasures: [
+ { name: "BUS.INTEGRITY",
+ desc: "End-to-end bus integrity scheme."
+ }
+ { name: "SECRET.MEM.SCRAMBLE",
+ desc: "Secret partitions are scrambled with a full-round PRESENT cipher."
+ }
+ { name: "PART.MEM.DIGEST",
+ desc: "Integrity of buffered partitions is ensured via a 64bit digest."
+ }
+ { name: "DAI.FSM.SPARSE",
+ desc: "The direct access interface FSM is sparsely encoded."
+ }
+ { name: "KDI.FSM.SPARSE",
+ desc: "The key derivation interface FSM is sparsely encoded."
+ }
+ { name: "LCI.FSM.SPARSE",
+ desc: "The life cycle interface FSM is sparsely encoded."
+ }
+ { name: "PART.FSM.SPARSE",
+ desc: "The partition FSMs are sparsely encoded."
+ }
+ { name: "SCRMBL.FSM.SPARSE",
+ desc: "The scramble datapath FSM is sparsely encoded."
+ }
+ { name: "TIMER.FSM.SPARSE",
+ desc: "The background check timer FSM is sparsely encoded."
+ }
+ { name: "DAI.CTR.REDUN",
+ desc: "The direct access interface address counter employs a cross-counter implementation."
+ }
+ { name: "KDI_SEED.CTR.REDUN",
+ desc: "The key derivation interface counter employs a cross-counter implementation."
+ }
+ { name: "KDI_ENTROPY.CTR.REDUN",
+ desc: "The key derivation entropy counter employs a cross-counter implementation."
+ }
+ { name: "LCI.CTR.REDUN",
+ desc: "The life cycle interface address counter employs a cross-counter implementation."
+ }
+ { name: "PART.CTR.REDUN",
+ desc: "The address counter of buffered partitions employs a cross-counter implementation."
+ }
+ { name: "SCRMBL.CTR.REDUN",
+ desc: "The srambling datapath counter employs a cross-counter implementation."
+ }
+ { name: "TIMER_INTEG.CTR.REDUN",
+ desc: "The background integrity check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER_CNSTY.CTR.REDUN",
+ desc: "The background consistency check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER.LFSR.REDUN",
+ desc: "The background check LFSR is duplicated."
+ }
+ { name: "DAI.FSM.LOCAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "LCI.FSM.LOCAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "KDI.FSM.LOCAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "PART.FSM.LOCAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon local escalation."
+ }
+ { name: "SCRMBL.FSM.LOCAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "TIMER.FSM.LOCAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "DAI.FSM.GLOBAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "LCI.FSM.GLOBAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "KDI.FSM.GLOBAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.FSM.GLOBAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "SCRMBL.FSM.GLOBAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "TIMER.FSM.GLOBAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.DATA_REG.INTEGRITY",
+ desc: "All partition buffer registers are protected with ECC on 64bit blocks."
+ }
+ { name: "PART.DATA_REG.BKGN_CHK",
+ desc: "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ }
+ { name: "PART.MEM.REGREN"
+ desc: "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ }
+ { name: "PART.MEM.SW_UNREADABLE"
+ desc: "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ }
+ { name: "PART.MEM.SW_UNWRITABLE"
+ desc: "All partitions become unwritable by software once they are locked via the digest."
+ }
+ { name: "LC_PART.MEM.SW_NOACCESS"
+ desc: "The life cycle partition is not directly readable nor writable via software."
+ }
+ { name: "ACCESS.CTRL.MUBI",
+ desc: "The access control signals going from the partitions to the DAI are MUBI encoded."
+ }
+ { name: "TOKEN_VALID.CTRL.MUBI",
+ desc: "The token valid signals going to the life cycle controller are MUBI encoded."
+ }
+ { name: "LC_CTRL.INTERSIG.MUBI",
+ desc: "The life cycle control signals are multibit encoded."
+ }
+ { name: "TEST.BUS.LC_GATED",
+ desc: "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ }
+ { name: "TEST_TL_LC_GATE.FSM.SPARSE",
+ desc: "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ }
+ { name: "DIRECT_ACCESS.CONFIG.REGWEN",
+ desc: "The direct access CSRs are REGWEN protected."
+ }
+ { name: "CHECK_TRIGGER.CONFIG.REGWEN",
+ desc: "The check trigger CSR is REGWEN protected."
+ }
+ { name: "CHECK.CONFIG.REGWEN",
+ desc: "The check CSR is REGWEN protected."
+ }
+ { name: "MACRO.MEM.INTEGRITY",
+ desc: '''
+ The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.
+ The scheme is able to at least detect single bit errors.
+ '''
+ }
+ { name: "MACRO.MEM.CM",
+ desc: "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ]
+
+ features: [
+ {
+ name: "OTP_CTRL.PARTITION.VENDOR_TEST"
+ desc: '''Vendor test partition is used for OTP programming smoke check during manufacturing flow.
+ In this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.
+ Instead the error will be reported as correctable ECC error.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.CREATOR_SW_CFG"
+ desc: '''During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition.
+ '''
+ }
+ {
+ name: "OTP_CTRL.INIT"
+ desc: '''When power is up, OTP controller reads devices status.
+ After all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.
+ Once all integrity checks are complete, the controller marks outputs as valid.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PROGRAM"
+ desc: '''All other partitions except life cycle partition are programmed through DAI interface.
+ And once non-zero digest is programmed to these partition, no further write access is allowed.
+ Life cycle partition is programmed by LC_CTRL.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET0"
+ desc: "Obfuscated UDS Seed"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET1"
+ desc: "Obfuscated Field Entropy"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.LIFE_CYCLE"
+ desc: '''LC state, LC transition count.
+ This feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK"
+ desc: '''Following partitions can be read lockable by CSR.
+ - VENDOR_TEST
+ - CREATOR_SW_CFG
+ Following partitions can be read lockable by writing digest.
+ - SECRET0
+ - SECRET1
+ All read attempt to these partitions after read is locked will trigger AccessError (recoverable).
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK"
+ desc: "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.RECOVERABLE"
+ desc: "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.FATAL"
+ desc: "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT"
+ desc: "Timeout value for the integrity and consistency checks."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD"
+ desc: "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD"
+ desc: "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ]
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ regwidth: "32",
+ registers: {
+ core: [
+ ////////////////////////
+ // Ctrl / Status CSRs //
+ ////////////////////////
+
+ { name: "STATUS",
+ desc: "OTP status register.",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ resval: 0,
+ tags: [ // OTP internal HW can modify status register
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "0"
+ name: "VENDOR_TEST_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "1"
+ name: "NON_SECRET_FUSES_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "2"
+ name: "SECRET0_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "3"
+ name: "SECRET1_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "4"
+ name: "SECRET2_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "5"
+ name: "SECRET3_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "6"
+ name: "LIFE_CYCLE_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "7"
+ name: "DAI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the DAI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "8"
+ name: "LCI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the LCI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "9"
+ name: "TIMEOUT_ERROR"
+ desc: '''
+ Set to 1 if an integrity or consistency check times out.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "10"
+ name: "LFSR_FSM_ERROR"
+ desc: '''
+ Set to 1 if the LFSR timer FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "11"
+ name: "SCRAMBLING_FSM_ERROR"
+ desc: '''
+ Set to 1 if the scrambling datapath FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "12"
+ name: "KEY_DERIV_FSM_ERROR"
+ desc: '''
+ Set to 1 if the key derivation FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "13"
+ name: "BUS_INTEG_ERROR"
+ desc: '''
+ This bit is set to 1 if a fatal bus integrity fault is detected.
+ This error triggers a fatal_bus_integ_error alert.
+ '''
+ }
+ { bits: "14"
+ name: "DAI_IDLE"
+ desc: "Set to 1 if the DAI is idle and ready to accept commands."
+ }
+ { bits: "15"
+ name: "CHECK_PENDING"
+ desc: "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ }
+ { multireg: {
+ name: "ERR_CODE",
+ desc: '''
+ This register holds information about error conditions that occurred in the agents
+ interacting with the OTP macro via the internal bus. The error codes should be checked
+ if the partitions, DAI or LCI flag an error in the !!STATUS register, or when an
+ !!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error
+ interrupt, and in addition some errors may trigger either an fatal_macro_error or an
+ fatal_check_error alert.
+ ''',
+ count: "NumErrorEntries",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "AGENT",
+ compact: "false",
+ resval: 0,
+ tags: [ // OTP internal HW can modify the error code registers
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "2:0"
+ enum: [
+ { value: "0",
+ name: "NO_ERROR",
+ desc: '''
+ No error condition has occurred.
+ '''
+ },
+ { value: "1",
+ name: "MACRO_ERROR",
+ desc: '''
+ Returned if the OTP macro command was invalid or did not complete successfully
+ due to a macro malfunction.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "2",
+ name: "MACRO_ECC_CORR_ERROR",
+ desc: '''
+ A correctable ECC error has occured during an OTP read operation.
+ The corresponding controller automatically recovers from this error when
+ issuing a new command.
+ '''
+ },
+ { value: "3",
+ name: "MACRO_ECC_UNCORR_ERROR",
+ desc: '''
+ An uncorrectable ECC error has occurred during an OTP read operation.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present this may be a sign that the device is malfunctioning.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "4",
+ name: "MACRO_WRITE_BLANK_ERROR",
+ desc: '''
+ This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+
+ Note however that the affected OTP word may be left in an inconsistent state if this error occurs.
+ This can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).
+
+ It is important that SW ensures that each word is only written once, since this can render the device useless.
+ '''
+ },
+ { value: "5",
+ name: "ACCESS_ERROR",
+ desc: '''
+ This error indicates that a locked memory region has been accessed.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+ '''
+ },
+ { value: "6",
+ name: "CHECK_FAIL_ERROR",
+ desc: '''
+ An ECC, integrity or consistency mismatch has been detected in the buffer registers.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_check_error alert.
+ '''
+ },
+ { value: "7",
+ name: "FSM_STATE_ERROR",
+ desc: '''
+ The FSM of the corresponding controller has reached an invalid state, or the FSM has
+ been moved into a terminal error state due to an escalation action via lc_escalate_en_i.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present, this is a sign that the device has fallen victim to
+ an invasive attack. This error triggers an fatal_check_error alert.
+ '''
+ },
+ ]
+ }
+ ]
+ }
+ }
+ { name: "DIRECT_ACCESS_REGWEN",
+ desc: '''
+ Register write enable for all direct access interface registers.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hrw",
+ hwext: "true",
+ hwqe: "true",
+ tags: [ // OTP internal HW will set this enable register to 0 when OTP is not under IDLE
+ // state, so could not auto-predict its value
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "0",
+ desc: '''
+ This bit controls whether the DAI registers can be written.
+ Write 0 to it in order to clear the bit.
+
+ Note that the hardware also modulates this bit and sets it to 0 temporarily
+ during an OTP operation such that the corresponding address and data registers
+ cannot be modified while an operation is pending. The !!DAI_IDLE status bit
+ will also be set to 0 in such a case.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "DIRECT_ACCESS_CMD",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // Write to DIRECT_ACCESS_CMD randomly might cause OTP_ERRORs and illegal sequences
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD",
+ desc: '''
+ Initiates a readout sequence that reads the location specified
+ by !!DIRECT_ACCESS_ADDRESS. The command places the data read into
+ !!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions).
+ '''
+ }
+ { bits: "1",
+ name: "WR",
+ desc: '''
+ Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0
+ and !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ { bits: "2",
+ name: "DIGEST",
+ desc: '''
+ Initiates the digest calculation and locking sequence for the partition specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ ]
+ }
+ { name: "DIRECT_ACCESS_ADDRESS",
+ desc: "Address register for direct accesses.",
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The enable register "DIRECT_ACCESS_REGWEN" is HW controlled,
+ // so not able to predict this register value automatically
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ { bits: "OtpByteAddrWidth-1:0",
+ desc: '''
+ This is the address for the OTP word to be read or written through
+ the direct access interface. Note that the address is aligned to the access size
+ internally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored
+ for 64bit accesses.
+
+ For the digest calculation command, set this register to the partition base offset.
+ '''
+ }
+ ]
+ }
+ { multireg: {
+ name: "DIRECT_ACCESS_WDATA",
+ desc: '''Write data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is being written to.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // The value of this register is written from "DIRECT_ACCESS_RDATA",
+ // so could not predict this register value automatically
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "DIRECT_ACCESS_RDATA",
+ desc: '''Read data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is read from.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+
+ //////////////////////////////////////
+ // Integrity and Consistency Checks //
+ //////////////////////////////////////
+ { name: "CHECK_TRIGGER_REGWEN",
+ desc: '''
+ Register write enable for !!CHECK_TRIGGER.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TRIGGER",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "CHECK_TRIGGER_REGWEN",
+ fields: [
+ { bits: "0",
+ name: "INTEGRITY",
+ desc: '''
+ Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts.
+ '''
+ }
+ { bits: "1",
+ name: "CONSISTENCY",
+ desc: '''
+ Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts.
+ '''
+ }
+ ]
+ },
+ { name: "CHECK_REGWEN",
+ desc: '''
+ Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TIMEOUT",
+ desc: '''
+ Timeout value for the integrity and consistency checks.
+ ''',
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ tags: [ // Do not write to this automatically, as it may trigger fatal alert, and cause
+ // escalation.
+ "excl:CsrAllTests:CsrExclWrite"],
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency
+ check does not complete within the timeout window, an error will be flagged in the !!STATUS register,
+ an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should
+ be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the
+ number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to
+ roughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the
+ safe side. A value of zero disables the timeout mechanism (default).
+ '''
+ resval: 0,
+ },
+ ]
+ },
+ { name: "INTEGRITY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ Only applies to the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.INTEGRITY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+ { name: "CONSISTENCY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ This applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.CONSISTENCY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+
+ ////////////////////////////////////
+ // Dynamic Locks of SW Parititons //
+ ////////////////////////////////////
+ { name: "VENDOR_TEST_READ_LOCK",
+ desc: '''
+ Runtime read lock for the VENDOR_TEST partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the VENDOR_TEST partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "NON_SECRET_FUSES_READ_LOCK",
+ desc: '''
+ Runtime read lock for the NON_SECRET_FUSES partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the NON_SECRET_FUSES partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+
+ ///////////////////////
+ // Integrity Digests //
+ ///////////////////////
+ { multireg: {
+ name: "VENDOR_TEST_DIGEST",
+ desc: '''
+ Integrity digest for the VENDOR_TEST partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the VENDOR_TEST partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "NON_SECRET_FUSES_DIGEST",
+ desc: '''
+ Integrity digest for the NON_SECRET_FUSES partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the NON_SECRET_FUSES partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET0_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET0 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET1_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET1 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET2_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET2 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET3_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET3 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+
+ ////////////////////////////////
+ // Software Config Partitions //
+ ////////////////////////////////
+ { skipto: "0x1000" }
+
+ { window: {
+ name: "SW_CFG_WINDOW"
+ items: "NumSwCfgWindowWords"
+ swaccess: "ro",
+ desc: '''
+ Any read to this window directly maps to the corresponding offset in the creator and owner software
+ config partitions, and triggers an OTP readout of the bytes requested. Note that the transaction
+ will block until OTP readout has completed.
+ '''
+ }
+ }
+ ],
+
+ // OTP wrapper-specific registers
+ prim: [
+ { name: "CSR0",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "1",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "2",
+ name: "field2",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "26:16",
+ name: "field4",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR1",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "6:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "7:7",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "14:8",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "15:15",
+ name: "field3",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field4",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR2",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR3",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "2:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field1",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "16",
+ name: "field2",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "17",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "18",
+ name: "field4",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "19",
+ name: "field5",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "20",
+ name: "field6",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "21",
+ name: "field7",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "22",
+ name: "field8",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR4",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field1",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR5",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "7:6",
+ name: "field1",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "8",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "11:9",
+ name: "field3",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field4",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field5",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field6",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR6",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "11",
+ name: "field1",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field2",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR7",
+ desc: "",
+ swaccess: "ro",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "10:8",
+ name: "field1",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "15",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ ]
+ }
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/fuse_ctrl/data/otp_ctrl.hjson.tpl b/src/fuse_ctrl/data/otp_ctrl.hjson.tpl
new file mode 100755
index 0000000..89ccf45
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl.hjson.tpl
@@ -0,0 +1,1522 @@
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// HJSON with partition metadata.
+//
+${gen_comment}
+<%
+from topgen.lib import Name
+
+num_part = len(otp_mmap.config["partitions"])
+num_part_unbuf = 0
+for part in otp_mmap.config["partitions"]:
+ if part["variant"] == "Unbuffered":
+ num_part_unbuf += 1
+num_part_buf = num_part - num_part_unbuf
+otp_size_as_bytes = 2 ** otp_mmap.config["otp"]["byte_addr_width"]
+otp_size_as_uint32 = otp_size_as_bytes // 4
+%>\
+{
+ name: "caliptra_otp_ctrl",
+ human_name: " Caliptra One-Time Programmable Memory COntroller",
+ one_line_desc: "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ one_paragraph_desc: '''
+ One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.
+ On top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.
+ It features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.
+ '''
+ // Uique comportablre IP identifier defined under KNOWN_CIP_IDS in the regtool
+ // TODO: This section needs to be updated for Caliptra (copying OT settings for now, to mark as placeholders)
+ cip_id: "16",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otp_ctrl",
+ revisions: [
+ {
+ version: "0.1.0",
+ life_stage: "L1",
+ design_stage: "D2",
+ verification_stage: "V2",
+ dif_stage: "S1",
+ commit_id: "127b109e2fab9336e830158abe449a3922544ded",
+ notes: "",
+ }
+ {
+ version: "1.0.0",
+ life_stage: "L1",
+ design_stage: "D3",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ {
+ version: "2.0.0",
+ life_stage: "L1",
+ design_stage: "D2S",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ ]
+ clocking: [
+ {clock: "clk_i", reset: "rst_ni", primary: true},
+ {clock: "clk_edn_i", reset: "rst_edn_ni"}
+ ]
+ scan: "true", // Enable `scanmode_i` port
+ scan_reset: "true", // Enable `scan_rst_ni` port
+ scan_en: "true", // Enable `scan_en_i` port
+ bus_interfaces: [
+ { protocol: "tlul", direction: "device", name: "core" }
+ { protocol: "tlul", direction: "device", name: "prim", hier_path: "u_otp.gen_generic.u_impl_generic.u_reg_top" }
+ ],
+
+ available_output_list: [
+ { name: "test",
+ width: 8,
+ desc: "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+
+ ///////////////////////////
+ // Interrupts and Alerts //
+ ///////////////////////////
+
+ interrupt_list: [
+ { name: "otp_operation_done",
+ desc: "A direct access command or digest calculation operation has completed."
+ }
+ { name: "otp_error",
+ desc: "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+
+ alert_list: [
+ { name: "fatal_macro_error",
+ desc: "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array.",
+ }
+ { name: "fatal_check_error",
+ desc: "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers.",
+ }
+ { name: "fatal_bus_integ_error",
+ desc: "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ }
+ { name: "fatal_prim_otp_alert",
+ desc: "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ }
+ { name: "recov_prim_otp_alert",
+ desc: "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+
+ ////////////////
+ // Parameters //
+ ////////////////
+ param_list: [
+ // Init file
+ { name: "MemInitFile",
+ desc: "VMEM file to initialize the OTP macro.",
+ type: "",
+ default: '""',
+ expose: "true",
+ local: "false"
+ }
+ // Random netlist constants
+ { name: "RndCnstLfsrSeed",
+ desc: "Compile-time random bits for initial LFSR seed",
+ type: "otp_ctrl_pkg::lfsr_seed_t"
+ randcount: "40",
+ randtype: "data", // randomize randcount databits
+ }
+ { name: "RndCnstLfsrPerm",
+ desc: "Compile-time random permutation for LFSR output",
+ type: "otp_ctrl_pkg::lfsr_perm_t"
+ randcount: "40",
+ randtype: "perm", // random permutation for randcount elements
+ }
+ { name: "RndCnstScrmblKeyInit",
+ desc: "Compile-time random permutation for scrambling key/nonce register reset value",
+ type: "otp_ctrl_pkg::scrmbl_key_init_t"
+ randcount: "256",
+ randtype: "data", // random permutation for randcount elements
+ }
+ // Normal parameters
+ { name: "NumSramKeyReqSlots",
+ desc: "Number of key slots",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OtpByteAddrWidth",
+ desc: "Width of the OTP byte address.",
+ type: "int",
+ default: "${otp_mmap.config["otp"]["byte_addr_width"]}",
+ local: "true"
+ },
+ { name: "NumErrorEntries",
+ desc: "Number of error register entries.",
+ type: "int",
+ default: "${num_part + 2}", // partitions + DAI/LCI
+ local: "true"
+ },
+ { name: "NumDaiWords",
+ desc: "Number of 32bit words in the DAI.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumDigestWords",
+ desc: "Size of the digest fields in 32bit words.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumSwCfgWindowWords",
+ desc: "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ type: "int",
+ default: "${otp_size_as_uint32}",
+ local: "true"
+ }
+
+ // Memory map Info
+ { name: "NumPart",
+ desc: "Number of partitions",
+ type: "int",
+ default: "${num_part}",
+ local: "true"
+ },
+ { name: "NumPartUnbuf",
+ desc: "Number of unbuffered partitions",
+ type: "int",
+ default: "${num_part_unbuf}",
+ local: "true"
+ },
+ { name: "NumPartBuf",
+ desc: "Number of buffered partitions (including 1 lifecycle partition)",
+ type: "int",
+ default: "${num_part_buf}",
+ local: "true"
+ },
+ % for part in otp_mmap.config["partitions"]:
+ <%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+ %>\
+ { name: "${part_name_camel}Offset",
+ desc: "Offset of the ${part["name"]} partition",
+ type: "int",
+ default: "${part["offset"]}",
+ local: "true"
+ },
+ { name: "${part_name_camel}Size",
+ desc: "Size of the ${part["name"]} partition",
+ type: "int",
+ default: "${part["size"]}",
+ local: "true"
+ },
+ % for item in part["items"]:
+ <%
+ item_name = Name.from_snake_case(item["name"])
+ item_name_camel = item_name.as_camel_case()
+ %>\
+ { name: "${item_name_camel}Offset",
+ desc: "Offset of ${item["name"]}",
+ type: "int",
+ default: "${item["offset"]}",
+ local: "true"
+ },
+ { name: "${item_name_camel}Size",
+ desc: "Size of ${item["name"]}",
+ type: "int",
+ default: "${item["size"]}",
+ local: "true"
+ },
+ % endfor
+ % endfor
+ ]
+
+ /////////////////////////////
+ // Intermodule Connections //
+ /////////////////////////////
+
+ inter_signal_list: [
+ // OTP dedicated power connection from AST
+ { struct: ""
+ type: "io"
+ name: "otp_ext_voltage_h"
+ act: "none"
+ default: "'0"
+ package: "",
+ }
+ // Power sequencing signals to AST
+ { struct: "otp_ast_req"
+ type: "uni"
+ name: "otp_ast_pwr_seq"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals to AST (VDD domain)."
+ }
+ // Power sequencing signals from AST
+ { struct: "otp_ast_rsp"
+ type: "uni"
+ name: "otp_ast_pwr_seq_h"
+ act: "rcv"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals coming from AST (VCC domain)."
+ }
+ // EDN interface
+ { struct: "edn"
+ type: "req_rsp"
+ name: "edn"
+ act: "req"
+ package: "edn_pkg"
+ desc: "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ }
+ // Power manager init command
+ { struct: "pwr_otp"
+ type: "req_rsp"
+ name: "pwr_otp"
+ act: "rsp"
+ default: "'0"
+ package: "pwrmgr_pkg"
+ desc: "Initialization request/acknowledge from/to power manager."
+ }
+ // Macro-specific test signals to/from LC TAP
+ { struct: "lc_otp_vendor_test"
+ type: "req_rsp"
+ name: "lc_otp_vendor_test"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Vendor test control signals from/to the life cycle TAP."
+ }
+ // LC transition command
+ { struct: "lc_otp_program"
+ type: "req_rsp"
+ name: "lc_otp_program"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Life cycle state transition interface."
+ }
+ // Broadcast to LC
+ { struct: "otp_lc_data"
+ type: "uni"
+ name: "otp_lc_data"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: '''
+ Life cycle state output holding the current life cycle state,
+ the value of the transition counter and the tokens needed for life cycle transitions.
+ '''
+ }
+ // Broadcast from LC
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_escalate_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle escalation enable coming from life cycle controller.
+ This signal moves all FSMs within OTP into the error state.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_creator_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_owner_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the OWNER_SEED.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_seed_hw_rd_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Seed read enable coming from life cycle controller.
+ This signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_dft_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Test enable qualifier coming from life cycle controller.
+ This signals enables the TL-UL access port to the proprietary OTP IP.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_check_byp_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle partition check bypass signal.
+ This signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures.
+ '''
+ }
+ // Broadcast to Key Manager
+ { struct: "otp_keymgr_key"
+ type: "uni"
+ name: "otp_keymgr_key"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ }
+ // Broadcast to Flash Controller
+ { struct: "flash_otp_key"
+ type: "req_rsp"
+ name: "flash_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for FLASH scrambling."
+ }
+ // Key request from SRAM scramblers
+ { struct: "sram_otp_key"
+ // TODO: would be nice if this could accept parameters.
+ // Split this out into an issue.
+ width: "4"
+ type: "req_rsp"
+ name: "sram_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Array with key derivation interfaces for SRAM scrambling devices."
+ }
+ // Key request from OTBN RAM Scrambler
+ { struct: "otbn_otp_key"
+ type: "req_rsp"
+ name: "otbn_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for OTBN scrambling devices."
+ }
+ // Hardware config partition
+ { struct: "otp_broadcast"
+ type: "uni"
+ name: "otp_broadcast"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_part_pkg"
+ desc: "Output of the HW partitions with breakout data types."
+ }
+ // AST observability control
+ { struct: "ast_obs_ctrl",
+ type: "uni",
+ name: "obs_ctrl",
+ act: "rcv",
+ package: "ast_pkg"
+ desc: "AST observability control signals."
+ }
+ // prim otp observe bus
+ { struct: "logic",
+ type: "uni",
+ name: "otp_obs",
+ act: "req",
+ width: "8",
+ package: ""
+ desc: "AST observability bus."
+ }
+ ] // inter_signal_list
+
+ /////////////////////
+ // Countermeasures //
+ /////////////////////
+
+ countermeasures: [
+ { name: "BUS.INTEGRITY",
+ desc: "End-to-end bus integrity scheme."
+ }
+ { name: "SECRET.MEM.SCRAMBLE",
+ desc: "Secret partitions are scrambled with a full-round PRESENT cipher."
+ }
+ { name: "PART.MEM.DIGEST",
+ desc: "Integrity of buffered partitions is ensured via a 64bit digest."
+ }
+ { name: "DAI.FSM.SPARSE",
+ desc: "The direct access interface FSM is sparsely encoded."
+ }
+ { name: "KDI.FSM.SPARSE",
+ desc: "The key derivation interface FSM is sparsely encoded."
+ }
+ { name: "LCI.FSM.SPARSE",
+ desc: "The life cycle interface FSM is sparsely encoded."
+ }
+ { name: "PART.FSM.SPARSE",
+ desc: "The partition FSMs are sparsely encoded."
+ }
+ { name: "SCRMBL.FSM.SPARSE",
+ desc: "The scramble datapath FSM is sparsely encoded."
+ }
+ { name: "TIMER.FSM.SPARSE",
+ desc: "The background check timer FSM is sparsely encoded."
+ }
+ { name: "DAI.CTR.REDUN",
+ desc: "The direct access interface address counter employs a cross-counter implementation."
+ }
+ { name: "KDI_SEED.CTR.REDUN",
+ desc: "The key derivation interface counter employs a cross-counter implementation."
+ }
+ { name: "KDI_ENTROPY.CTR.REDUN",
+ desc: "The key derivation entropy counter employs a cross-counter implementation."
+ }
+ { name: "LCI.CTR.REDUN",
+ desc: "The life cycle interface address counter employs a cross-counter implementation."
+ }
+ { name: "PART.CTR.REDUN",
+ desc: "The address counter of buffered partitions employs a cross-counter implementation."
+ }
+ { name: "SCRMBL.CTR.REDUN",
+ desc: "The srambling datapath counter employs a cross-counter implementation."
+ }
+ { name: "TIMER_INTEG.CTR.REDUN",
+ desc: "The background integrity check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER_CNSTY.CTR.REDUN",
+ desc: "The background consistency check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER.LFSR.REDUN",
+ desc: "The background check LFSR is duplicated."
+ }
+ { name: "DAI.FSM.LOCAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "LCI.FSM.LOCAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "KDI.FSM.LOCAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "PART.FSM.LOCAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon local escalation."
+ }
+ { name: "SCRMBL.FSM.LOCAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "TIMER.FSM.LOCAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "DAI.FSM.GLOBAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "LCI.FSM.GLOBAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "KDI.FSM.GLOBAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.FSM.GLOBAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "SCRMBL.FSM.GLOBAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "TIMER.FSM.GLOBAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.DATA_REG.INTEGRITY",
+ desc: "All partition buffer registers are protected with ECC on 64bit blocks."
+ }
+ { name: "PART.DATA_REG.BKGN_CHK",
+ desc: "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ }
+ { name: "PART.MEM.REGREN"
+ desc: "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ }
+ { name: "PART.MEM.SW_UNREADABLE"
+ desc: "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ }
+ { name: "PART.MEM.SW_UNWRITABLE"
+ desc: "All partitions become unwritable by software once they are locked via the digest."
+ }
+ { name: "LC_PART.MEM.SW_NOACCESS"
+ desc: "The life cycle partition is not directly readable nor writable via software."
+ }
+ { name: "ACCESS.CTRL.MUBI",
+ desc: "The access control signals going from the partitions to the DAI are MUBI encoded."
+ }
+ { name: "TOKEN_VALID.CTRL.MUBI",
+ desc: "The token valid signals going to the life cycle controller are MUBI encoded."
+ }
+ { name: "LC_CTRL.INTERSIG.MUBI",
+ desc: "The life cycle control signals are multibit encoded."
+ }
+ { name: "TEST.BUS.LC_GATED",
+ desc: "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ }
+ { name: "TEST_TL_LC_GATE.FSM.SPARSE",
+ desc: "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ }
+ { name: "DIRECT_ACCESS.CONFIG.REGWEN",
+ desc: "The direct access CSRs are REGWEN protected."
+ }
+ { name: "CHECK_TRIGGER.CONFIG.REGWEN",
+ desc: "The check trigger CSR is REGWEN protected."
+ }
+ { name: "CHECK.CONFIG.REGWEN",
+ desc: "The check CSR is REGWEN protected."
+ }
+ { name: "MACRO.MEM.INTEGRITY",
+ desc: '''
+ The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.
+ The scheme is able to at least detect single bit errors.
+ '''
+ }
+ { name: "MACRO.MEM.CM",
+ desc: "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ]
+
+ features: [
+ {
+ name: "OTP_CTRL.PARTITION.VENDOR_TEST"
+ desc: '''Vendor test partition is used for OTP programming smoke check during manufacturing flow.
+ In this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.
+ Instead the error will be reported as correctable ECC error.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.CREATOR_SW_CFG"
+ desc: '''During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition.
+ '''
+ }
+ {
+ name: "OTP_CTRL.INIT"
+ desc: '''When power is up, OTP controller reads devices status.
+ After all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.
+ Once all integrity checks are complete, the controller marks outputs as valid.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PROGRAM"
+ desc: '''All other partitions except life cycle partition are programmed through DAI interface.
+ And once non-zero digest is programmed to these partition, no further write access is allowed.
+ Life cycle partition is programmed by LC_CTRL.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET0"
+ desc: "Obfuscated UDS Seed"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET1"
+ desc: "Obfuscated Field Entropy"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.LIFE_CYCLE"
+ desc: '''LC state, LC transition count.
+ This feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK"
+ desc: '''Following partitions can be read lockable by CSR.
+ - VENDOR_TEST
+ - CREATOR_SW_CFG
+ Following partitions can be read lockable by writing digest.
+ - SECRET0
+ - SECRET1
+ All read attempt to these partitions after read is locked will trigger AccessError (recoverable).
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK"
+ desc: "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.RECOVERABLE"
+ desc: "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.FATAL"
+ desc: "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT"
+ desc: "Timeout value for the integrity and consistency checks."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD"
+ desc: "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD"
+ desc: "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ]
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ regwidth: "32",
+ registers: {
+ core: [
+ ////////////////////////
+ // Ctrl / Status CSRs //
+ ////////////////////////
+
+ { name: "STATUS",
+ desc: "OTP status register.",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ resval: 0,
+ tags: [ // OTP internal HW can modify status register
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ % for k, part in enumerate(otp_mmap.config["partitions"]):
+ { bits: "${k}"
+ name: "${part["name"]}_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ % endfor
+ { bits: "${num_part}"
+ name: "DAI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the DAI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "${num_part+1}"
+ name: "LCI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the LCI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "${num_part+2}"
+ name: "TIMEOUT_ERROR"
+ desc: '''
+ Set to 1 if an integrity or consistency check times out.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "${num_part+3}"
+ name: "LFSR_FSM_ERROR"
+ desc: '''
+ Set to 1 if the LFSR timer FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "${num_part+4}"
+ name: "SCRAMBLING_FSM_ERROR"
+ desc: '''
+ Set to 1 if the scrambling datapath FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "${num_part+5}"
+ name: "KEY_DERIV_FSM_ERROR"
+ desc: '''
+ Set to 1 if the key derivation FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "${num_part+6}"
+ name: "BUS_INTEG_ERROR"
+ desc: '''
+ This bit is set to 1 if a fatal bus integrity fault is detected.
+ This error triggers a fatal_bus_integ_error alert.
+ '''
+ }
+ { bits: "${num_part+7}"
+ name: "DAI_IDLE"
+ desc: "Set to 1 if the DAI is idle and ready to accept commands."
+ }
+ { bits: "${num_part+8}"
+ name: "CHECK_PENDING"
+ desc: "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ }
+ { multireg: {
+ name: "ERR_CODE",
+ desc: '''
+ This register holds information about error conditions that occurred in the agents
+ interacting with the OTP macro via the internal bus. The error codes should be checked
+ if the partitions, DAI or LCI flag an error in the !!STATUS register, or when an
+ !!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error
+ interrupt, and in addition some errors may trigger either an fatal_macro_error or an
+ fatal_check_error alert.
+ ''',
+ count: "NumErrorEntries",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "AGENT",
+ compact: "false",
+ resval: 0,
+ tags: [ // OTP internal HW can modify the error code registers
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "2:0"
+ enum: [
+ { value: "0",
+ name: "NO_ERROR",
+ desc: '''
+ No error condition has occurred.
+ '''
+ },
+ { value: "1",
+ name: "MACRO_ERROR",
+ desc: '''
+ Returned if the OTP macro command was invalid or did not complete successfully
+ due to a macro malfunction.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "2",
+ name: "MACRO_ECC_CORR_ERROR",
+ desc: '''
+ A correctable ECC error has occured during an OTP read operation.
+ The corresponding controller automatically recovers from this error when
+ issuing a new command.
+ '''
+ },
+ { value: "3",
+ name: "MACRO_ECC_UNCORR_ERROR",
+ desc: '''
+ An uncorrectable ECC error has occurred during an OTP read operation.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present this may be a sign that the device is malfunctioning.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "4",
+ name: "MACRO_WRITE_BLANK_ERROR",
+ desc: '''
+ This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+
+ Note however that the affected OTP word may be left in an inconsistent state if this error occurs.
+ This can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).
+
+ It is important that SW ensures that each word is only written once, since this can render the device useless.
+ '''
+ },
+ { value: "5",
+ name: "ACCESS_ERROR",
+ desc: '''
+ This error indicates that a locked memory region has been accessed.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+ '''
+ },
+ { value: "6",
+ name: "CHECK_FAIL_ERROR",
+ desc: '''
+ An ECC, integrity or consistency mismatch has been detected in the buffer registers.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_check_error alert.
+ '''
+ },
+ { value: "7",
+ name: "FSM_STATE_ERROR",
+ desc: '''
+ The FSM of the corresponding controller has reached an invalid state, or the FSM has
+ been moved into a terminal error state due to an escalation action via lc_escalate_en_i.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present, this is a sign that the device has fallen victim to
+ an invasive attack. This error triggers an fatal_check_error alert.
+ '''
+ },
+ ]
+ }
+ ]
+ }
+ }
+ { name: "DIRECT_ACCESS_REGWEN",
+ desc: '''
+ Register write enable for all direct access interface registers.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hrw",
+ hwext: "true",
+ hwqe: "true",
+ tags: [ // OTP internal HW will set this enable register to 0 when OTP is not under IDLE
+ // state, so could not auto-predict its value
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "0",
+ desc: '''
+ This bit controls whether the DAI registers can be written.
+ Write 0 to it in order to clear the bit.
+
+ Note that the hardware also modulates this bit and sets it to 0 temporarily
+ during an OTP operation such that the corresponding address and data registers
+ cannot be modified while an operation is pending. The !!DAI_IDLE status bit
+ will also be set to 0 in such a case.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "DIRECT_ACCESS_CMD",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // Write to DIRECT_ACCESS_CMD randomly might cause OTP_ERRORs and illegal sequences
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD",
+ desc: '''
+ Initiates a readout sequence that reads the location specified
+ by !!DIRECT_ACCESS_ADDRESS. The command places the data read into
+ !!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions).
+ '''
+ }
+ { bits: "1",
+ name: "WR",
+ desc: '''
+ Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0
+ and !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ { bits: "2",
+ name: "DIGEST",
+ desc: '''
+ Initiates the digest calculation and locking sequence for the partition specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ ]
+ }
+ { name: "DIRECT_ACCESS_ADDRESS",
+ desc: "Address register for direct accesses.",
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The enable register "DIRECT_ACCESS_REGWEN" is HW controlled,
+ // so not able to predict this register value automatically
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ { bits: "OtpByteAddrWidth-1:0",
+ desc: '''
+ This is the address for the OTP word to be read or written through
+ the direct access interface. Note that the address is aligned to the access size
+ internally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored
+ for 64bit accesses.
+
+ For the digest calculation command, set this register to the partition base offset.
+ '''
+ }
+ ]
+ }
+ { multireg: {
+ name: "DIRECT_ACCESS_WDATA",
+ desc: '''Write data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is being written to.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // The value of this register is written from "DIRECT_ACCESS_RDATA",
+ // so could not predict this register value automatically
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "DIRECT_ACCESS_RDATA",
+ desc: '''Read data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is read from.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+
+ //////////////////////////////////////
+ // Integrity and Consistency Checks //
+ //////////////////////////////////////
+ { name: "CHECK_TRIGGER_REGWEN",
+ desc: '''
+ Register write enable for !!CHECK_TRIGGER.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TRIGGER",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "CHECK_TRIGGER_REGWEN",
+ fields: [
+ { bits: "0",
+ name: "INTEGRITY",
+ desc: '''
+ Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts.
+ '''
+ }
+ { bits: "1",
+ name: "CONSISTENCY",
+ desc: '''
+ Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts.
+ '''
+ }
+ ]
+ },
+ { name: "CHECK_REGWEN",
+ desc: '''
+ Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TIMEOUT",
+ desc: '''
+ Timeout value for the integrity and consistency checks.
+ ''',
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ tags: [ // Do not write to this automatically, as it may trigger fatal alert, and cause
+ // escalation.
+ "excl:CsrAllTests:CsrExclWrite"],
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency
+ check does not complete within the timeout window, an error will be flagged in the !!STATUS register,
+ an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should
+ be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the
+ number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to
+ roughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the
+ safe side. A value of zero disables the timeout mechanism (default).
+ '''
+ resval: 0,
+ },
+ ]
+ },
+ { name: "INTEGRITY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ Only applies to the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.INTEGRITY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+ { name: "CONSISTENCY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ This applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.CONSISTENCY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+
+ ////////////////////////////////////
+ // Dynamic Locks of SW Parititons //
+ ////////////////////////////////////
+ % for part in otp_mmap.config["partitions"]:
+ % if part["read_lock"].lower() == "csr":
+ { name: "${part["name"]}_READ_LOCK",
+ desc: '''
+ Runtime read lock for the ${part["name"]} partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the ${part["name"]} partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ % endif
+ % endfor
+
+ ///////////////////////
+ // Integrity Digests //
+ ///////////////////////
+ % for part in otp_mmap.config["partitions"]:
+ % if part["sw_digest"]:
+ { multireg: {
+ name: "${part["name"]}_DIGEST",
+ desc: '''
+ Integrity digest for the ${part["name"]} partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the ${part["name"]} partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ % elif part["hw_digest"]:
+ { multireg: {
+ name: "${part["name"]}_DIGEST",
+ desc: '''
+ Integrity digest for the ${part["name"]} partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ % endif
+ % endfor
+
+ ////////////////////////////////
+ // Software Config Partitions //
+ ////////////////////////////////
+ { skipto: "${hex(otp_size_as_bytes)}" }
+
+ { window: {
+ name: "SW_CFG_WINDOW"
+ items: "NumSwCfgWindowWords"
+ swaccess: "ro",
+ desc: '''
+ Any read to this window directly maps to the corresponding offset in the creator and owner software
+ config partitions, and triggers an OTP readout of the bytes requested. Note that the transaction
+ will block until OTP readout has completed.
+ '''
+ }
+ }
+ ],
+
+ // OTP wrapper-specific registers
+ prim: [
+ { name: "CSR0",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "1",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "2",
+ name: "field2",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "26:16",
+ name: "field4",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR1",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "6:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "7:7",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "14:8",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "15:15",
+ name: "field3",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field4",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR2",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR3",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "2:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field1",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "16",
+ name: "field2",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "17",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "18",
+ name: "field4",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "19",
+ name: "field5",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "20",
+ name: "field6",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "21",
+ name: "field7",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "22",
+ name: "field8",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR4",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field1",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR5",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "7:6",
+ name: "field1",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "8",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "11:9",
+ name: "field3",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field4",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field5",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field6",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR6",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "11",
+ name: "field1",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field2",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR7",
+ desc: "",
+ swaccess: "ro",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "10:8",
+ name: "field1",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "15",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ ]
+ }
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/fuse_ctrl/data/otp_ctrl.json b/src/fuse_ctrl/data/otp_ctrl.json
new file mode 100644
index 0000000..7c2c795
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl.json
@@ -0,0 +1,1916 @@
+{
+ "name": "caliptra_otp_ctrl",
+ "human_name": " Caliptra One-Time Programmable Memory COntroller",
+ "one_line_desc": "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ "one_paragraph_desc": "One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.\nOn top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.\nIt features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.",
+ "cip_id": "16",
+ "design_spec": "../doc",
+ "dv_doc": "../doc/dv",
+ "hw_checklist": "../doc/checklist",
+ "sw_checklist": "/sw/device/lib/dif/dif_otp_ctrl",
+ "revisions": [
+ {
+ "version": "0.1.0",
+ "life_stage": "L1",
+ "design_stage": "D2",
+ "verification_stage": "V2",
+ "dif_stage": "S1",
+ "commit_id": "127b109e2fab9336e830158abe449a3922544ded",
+ "notes": ""
+ },
+ {
+ "version": "1.0.0",
+ "life_stage": "L1",
+ "design_stage": "D3",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ },
+ {
+ "version": "2.0.0",
+ "life_stage": "L1",
+ "design_stage": "D2S",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ }
+ ],
+ "clocking": [
+ {
+ "clock": "clk_i",
+ "reset": "rst_ni",
+ "primary": true
+ },
+ {
+ "clock": "clk_edn_i",
+ "reset": "rst_edn_ni"
+ }
+ ],
+ "scan": "true",
+ "scan_reset": "true",
+ "scan_en": "true",
+ "bus_interfaces": [
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "core"
+ },
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "prim",
+ "hier_path": "u_otp.gen_generic.u_impl_generic.u_reg_top"
+ }
+ ],
+ "available_output_list": [
+ {
+ "name": "test",
+ "width": 8,
+ "desc": "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+ "interrupt_list": [
+ {
+ "name": "otp_operation_done",
+ "desc": "A direct access command or digest calculation operation has completed."
+ },
+ {
+ "name": "otp_error",
+ "desc": "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+ "alert_list": [
+ {
+ "name": "fatal_macro_error",
+ "desc": "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array."
+ },
+ {
+ "name": "fatal_check_error",
+ "desc": "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers."
+ },
+ {
+ "name": "fatal_bus_integ_error",
+ "desc": "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ },
+ {
+ "name": "fatal_prim_otp_alert",
+ "desc": "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ },
+ {
+ "name": "recov_prim_otp_alert",
+ "desc": "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+ "param_list": [
+ {
+ "name": "MemInitFile",
+ "desc": "VMEM file to initialize the OTP macro.",
+ "type": "",
+ "default": "\"\"",
+ "expose": "true",
+ "local": "false"
+ },
+ {
+ "name": "RndCnstLfsrSeed",
+ "desc": "Compile-time random bits for initial LFSR seed",
+ "type": "otp_ctrl_pkg::lfsr_seed_t",
+ "randcount": "40",
+ "randtype": "data"
+ },
+ {
+ "name": "RndCnstLfsrPerm",
+ "desc": "Compile-time random permutation for LFSR output",
+ "type": "otp_ctrl_pkg::lfsr_perm_t",
+ "randcount": "40",
+ "randtype": "perm"
+ },
+ {
+ "name": "RndCnstScrmblKeyInit",
+ "desc": "Compile-time random permutation for scrambling key/nonce register reset value",
+ "type": "otp_ctrl_pkg::scrmbl_key_init_t",
+ "randcount": "256",
+ "randtype": "data"
+ },
+ {
+ "name": "NumSramKeyReqSlots",
+ "desc": "Number of key slots",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OtpByteAddrWidth",
+ "desc": "Width of the OTP byte address.",
+ "type": "int",
+ "default": "12",
+ "local": "true"
+ },
+ {
+ "name": "NumErrorEntries",
+ "desc": "Number of error register entries.",
+ "type": "int",
+ "default": "9",
+ "local": "true"
+ },
+ {
+ "name": "NumDaiWords",
+ "desc": "Number of 32bit words in the DAI.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumDigestWords",
+ "desc": "Size of the digest fields in 32bit words.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumSwCfgWindowWords",
+ "desc": "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ "type": "int",
+ "default": "1024",
+ "local": "true"
+ },
+ {
+ "name": "NumPart",
+ "desc": "Number of partitions",
+ "type": "int",
+ "default": "7",
+ "local": "true"
+ },
+ {
+ "name": "NumPartUnbuf",
+ "desc": "Number of unbuffered partitions",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumPartBuf",
+ "desc": "Number of buffered partitions (including 1 lifecycle partition)",
+ "type": "int",
+ "default": "5",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestOffset",
+ "desc": "Offset of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestSize",
+ "desc": "Size of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "ScratchOffset",
+ "desc": "Offset of SCRATCH",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "ScratchSize",
+ "desc": "Size of SCRATCH",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestOffset",
+ "desc": "Offset of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestSize",
+ "desc": "Size of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesOffset",
+ "desc": "Offset of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesSize",
+ "desc": "Size of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "3736",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnOffset",
+ "desc": "Offset of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnSize",
+ "desc": "Size of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnOffset",
+ "desc": "Offset of RUNTIME_SVN",
+ "type": "int",
+ "default": "68",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnSize",
+ "desc": "Size of RUNTIME_SVN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifyOffset",
+ "desc": "Offset of LMS_VERIFY",
+ "type": "int",
+ "default": "84",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifySize",
+ "desc": "Size of LMS_VERIFY",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationOffset",
+ "desc": "Offset of LMS_REVOCATION",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationSize",
+ "desc": "Size of LMS_REVOCATION",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "92",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashOffset",
+ "desc": "Offset of OWNER_PK_HASH",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashSize",
+ "desc": "Size of OWNER_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrOffset",
+ "desc": "Offset of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "144",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrSize",
+ "desc": "Size of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdOffset",
+ "desc": "Offset of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "240",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdSize",
+ "desc": "Size of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdOffset",
+ "desc": "Offset of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "256",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdSize",
+ "desc": "Size of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestOffset",
+ "desc": "Offset of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "3792",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestSize",
+ "desc": "Size of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Offset",
+ "desc": "Offset of the SECRET0 partition",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Size",
+ "desc": "Size of the SECRET0 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenOffset",
+ "desc": "Offset of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenSize",
+ "desc": "Size of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenOffset",
+ "desc": "Offset of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "3816",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenSize",
+ "desc": "Size of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestOffset",
+ "desc": "Offset of SECRET0_DIGEST",
+ "type": "int",
+ "default": "3832",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestSize",
+ "desc": "Size of SECRET0_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Offset",
+ "desc": "Offset of the SECRET1 partition",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Size",
+ "desc": "Size of the SECRET1 partition",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedOffset",
+ "desc": "Offset of UDS_SEED",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedSize",
+ "desc": "Size of UDS_SEED",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestOffset",
+ "desc": "Offset of SECRET1_DIGEST",
+ "type": "int",
+ "default": "3888",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestSize",
+ "desc": "Size of SECRET1_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Offset",
+ "desc": "Offset of the SECRET2 partition",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Size",
+ "desc": "Size of the SECRET2 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropyOffset",
+ "desc": "Offset of FIELD_ENTROPY",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropySize",
+ "desc": "Size of FIELD_ENTROPY",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestOffset",
+ "desc": "Offset of SECRET2_DIGEST",
+ "type": "int",
+ "default": "3928",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestSize",
+ "desc": "Size of SECRET2_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Offset",
+ "desc": "Offset of the SECRET3 partition",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Size",
+ "desc": "Size of the SECRET3 partition",
+ "type": "int",
+ "default": "72",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenOffset",
+ "desc": "Offset of RMA_TOKEN",
+ "type": "int",
+ "default": "3984",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenSize",
+ "desc": "Size of RMA_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestOffset",
+ "desc": "Offset of SECRET3_DIGEST",
+ "type": "int",
+ "default": "4000",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestSize",
+ "desc": "Size of SECRET3_DIGEST",
+
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleOffset",
+ "desc": "Offset of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleSize",
+ "desc": "Size of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntOffset",
+ "desc": "Offset of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntSize",
+ "desc": "Size of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "LcStateOffset",
+ "desc": "Offset of LC_STATE",
+ "type": "int",
+ "default": "4056",
+ "local": "true"
+ },
+ {
+ "name": "LcStateSize",
+ "desc": "Size of LC_STATE",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ }
+ ],
+ "inter_signal_list": [
+ {
+ "struct": "",
+ "type": "io",
+ "name": "otp_ext_voltage_h",
+ "act": "none",
+ "default": "'0",
+ "package": ""
+ },
+ {
+ "struct": "otp_ast_req",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals to AST (VDD domain)."
+ },
+ {
+ "struct": "otp_ast_rsp",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq_h",
+ "act": "rcv",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals coming from AST (VCC domain)."
+ },
+ {
+ "struct": "edn",
+ "type": "req_rsp",
+ "name": "edn",
+ "act": "req",
+ "package": "edn_pkg",
+ "desc": "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ },
+ {
+ "struct": "pwr_otp",
+ "type": "req_rsp",
+ "name": "pwr_otp",
+ "act": "rsp",
+ "default": "'0",
+ "package": "pwrmgr_pkg",
+ "desc": "Initialization request/acknowledge from/to power manager."
+ },
+ {
+ "struct": "lc_otp_vendor_test",
+ "type": "req_rsp",
+ "name": "lc_otp_vendor_test",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Vendor test control signals from/to the life cycle TAP."
+ },
+ {
+ "struct": "lc_otp_program",
+ "type": "req_rsp",
+ "name": "lc_otp_program",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state transition interface."
+ },
+ {
+ "struct": "otp_lc_data",
+ "type": "uni",
+ "name": "otp_lc_data",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state output holding the current life cycle state,\nthe value of the transition counter and the tokens needed for life cycle transitions."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_escalate_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle escalation enable coming from life cycle controller.\nThis signal moves all FSMs within OTP into the error state."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_creator_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_owner_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the OWNER_SEED."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_seed_hw_rd_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Seed read enable coming from life cycle controller.\nThis signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_dft_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Test enable qualifier coming from life cycle controller.\nThis signals enables the TL-UL access port to the proprietary OTP IP."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_check_byp_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle partition check bypass signal.\nThis signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures."
+ },
+ {
+ "struct": "otp_keymgr_key",
+ "type": "uni",
+ "name": "otp_keymgr_key",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "flash_otp_key",
+ "type": "req_rsp",
+ "name": "flash_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for FLASH scrambling."
+ },
+ {
+ "struct": "sram_otp_key",
+ "width": "4",
+ "type": "req_rsp",
+ "name": "sram_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Array with key derivation interfaces for SRAM scrambling devices."
+ },
+ {
+ "struct": "otbn_otp_key",
+ "type": "req_rsp",
+ "name": "otbn_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for OTBN scrambling devices."
+ },
+ {
+ "struct": "otp_broadcast",
+ "type": "uni",
+ "name": "otp_broadcast",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_part_pkg",
+ "desc": "Output of the HW partitions with breakout data types."
+ },
+ {
+ "struct": "ast_obs_ctrl",
+ "type": "uni",
+ "name": "obs_ctrl",
+ "act": "rcv",
+ "package": "ast_pkg",
+ "desc": "AST observability control signals."
+ },
+ {
+ "struct": "logic",
+ "type": "uni",
+ "name": "otp_obs",
+ "act": "req",
+ "width": "8",
+ "package": "",
+ "desc": "AST observability bus."
+ }
+ ],
+ "countermeasures": [
+ {
+ "name": "BUS.INTEGRITY",
+ "desc": "End-to-end bus integrity scheme."
+ },
+ {
+ "name": "SECRET.MEM.SCRAMBLE",
+ "desc": "Secret partitions are scrambled with a full-round PRESENT cipher."
+ },
+ {
+ "name": "PART.MEM.DIGEST",
+ "desc": "Integrity of buffered partitions is ensured via a 64bit digest."
+ },
+ {
+ "name": "DAI.FSM.SPARSE",
+ "desc": "The direct access interface FSM is sparsely encoded."
+ },
+ {
+ "name": "KDI.FSM.SPARSE",
+ "desc": "The key derivation interface FSM is sparsely encoded."
+ },
+ {
+ "name": "LCI.FSM.SPARSE",
+ "desc": "The life cycle interface FSM is sparsely encoded."
+ },
+ {
+ "name": "PART.FSM.SPARSE",
+ "desc": "The partition FSMs are sparsely encoded."
+ },
+ {
+ "name": "SCRMBL.FSM.SPARSE",
+ "desc": "The scramble datapath FSM is sparsely encoded."
+ },
+ {
+ "name": "TIMER.FSM.SPARSE",
+ "desc": "The background check timer FSM is sparsely encoded."
+ },
+ {
+ "name": "DAI.CTR.REDUN",
+ "desc": "The direct access interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_SEED.CTR.REDUN",
+ "desc": "The key derivation interface counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_ENTROPY.CTR.REDUN",
+ "desc": "The key derivation entropy counter employs a cross-counter implementation."
+ },
+ {
+ "name": "LCI.CTR.REDUN",
+ "desc": "The life cycle interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "PART.CTR.REDUN",
+ "desc": "The address counter of buffered partitions employs a cross-counter implementation."
+ },
+ {
+ "name": "SCRMBL.CTR.REDUN",
+ "desc": "The srambling datapath counter employs a cross-counter implementation."
+ },
+ {
+ "name": "TIMER_INTEG.CTR.REDUN",
+ "desc": "The background integrity check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER_CNSTY.CTR.REDUN",
+ "desc": "The background consistency check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER.LFSR.REDUN",
+ "desc": "The background check LFSR is duplicated."
+ },
+ {
+ "name": "DAI.FSM.LOCAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "LCI.FSM.LOCAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "KDI.FSM.LOCAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "PART.FSM.LOCAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "SCRMBL.FSM.LOCAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "TIMER.FSM.LOCAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "DAI.FSM.GLOBAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "LCI.FSM.GLOBAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "KDI.FSM.GLOBAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.FSM.GLOBAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "SCRMBL.FSM.GLOBAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "TIMER.FSM.GLOBAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.DATA_REG.INTEGRITY",
+ "desc": "All partition buffer registers are protected with ECC on 64bit blocks."
+ },
+ {
+ "name": "PART.DATA_REG.BKGN_CHK",
+ "desc": "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ },
+ {
+ "name": "PART.MEM.REGREN",
+ "desc": "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ },
+ {
+ "name": "PART.MEM.SW_UNREADABLE",
+ "desc": "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ },
+ {
+ "name": "PART.MEM.SW_UNWRITABLE",
+ "desc": "All partitions become unwritable by software once they are locked via the digest."
+ },
+ {
+ "name": "LC_PART.MEM.SW_NOACCESS",
+ "desc": "The life cycle partition is not directly readable nor writable via software."
+ },
+ {
+ "name": "ACCESS.CTRL.MUBI",
+ "desc": "The access control signals going from the partitions to the DAI are MUBI encoded."
+ },
+ {
+ "name": "TOKEN_VALID.CTRL.MUBI",
+ "desc": "The token valid signals going to the life cycle controller are MUBI encoded."
+ },
+ {
+ "name": "LC_CTRL.INTERSIG.MUBI",
+ "desc": "The life cycle control signals are multibit encoded."
+ },
+ {
+ "name": "TEST.BUS.LC_GATED",
+ "desc": "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ },
+ {
+ "name": "TEST_TL_LC_GATE.FSM.SPARSE",
+ "desc": "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ },
+ {
+ "name": "DIRECT_ACCESS.CONFIG.REGWEN",
+ "desc": "The direct access CSRs are REGWEN protected."
+ },
+ {
+ "name": "CHECK_TRIGGER.CONFIG.REGWEN",
+ "desc": "The check trigger CSR is REGWEN protected."
+ },
+ {
+ "name": "CHECK.CONFIG.REGWEN",
+ "desc": "The check CSR is REGWEN protected."
+ },
+ {
+ "name": "MACRO.MEM.INTEGRITY",
+ "desc": " The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.\n The scheme is able to at least detect single bit errors.\n "
+ },
+ {
+ "name": "MACRO.MEM.CM",
+ "desc": "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ],
+ "features": [
+ {
+ "name": "OTP_CTRL.PARTITION.VENDOR_TEST",
+ "desc": "Vendor test partition is used for OTP programming smoke check during manufacturing flow.\nIn this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.\nInstead the error will be reported as correctable ECC error."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.CREATOR_SW_CFG",
+ "desc": "During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition."
+ },
+ {
+ "name": "OTP_CTRL.INIT",
+ "desc": "When power is up, OTP controller reads devices status.\nAfter all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.\nOnce all integrity checks are complete, the controller marks outputs as valid."
+ },
+ {
+ "name": "OTP_CTRL.PROGRAM",
+ "desc": "All other partitions except life cycle partition are programmed through DAI interface.\nAnd once non-zero digest is programmed to these partition, no further write access is allowed.\nLife cycle partition is programmed by LC_CTRL."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET0",
+ "desc": "Obfuscated UDS Seed"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET1",
+ "desc": "Obfuscated Field Entropy"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.LIFE_CYCLE",
+ "desc": "LC state, LC transition count.\nThis feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK",
+ "desc": "Following partitions can be read lockable by CSR.\n - VENDOR_TEST\n - CREATOR_SW_CFG\n Following partitions can be read lockable by writing digest.\n - SECRET0\n - SECRET1\nAll read attempt to these partitions after read is locked will trigger AccessError (recoverable)."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK",
+ "desc": "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.RECOVERABLE",
+ "desc": "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.FATAL",
+ "desc": "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD",
+ "desc": "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD",
+ "desc": "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ],
+ "regwidth": "32",
+ "registers": {
+ "core": [
+ {
+ "name": "STATUS",
+ "desc": "OTP status register.",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "VENDOR_TEST_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "1",
+ "name": "NON_SECRET_FUSES_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "2",
+ "name": "SECRET0_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "3",
+ "name": "SECRET1_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "4",
+ "name": "SECRET2_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "5",
+ "name": "SECRET3_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "6",
+ "name": "LIFE_CYCLE_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "7",
+ "name": "DAI_ERROR",
+ "desc": "Set to 1 if an error occurred in the DAI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "8",
+ "name": "LCI_ERROR",
+ "desc": "Set to 1 if an error occurred in the LCI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "9",
+ "name": "TIMEOUT_ERROR",
+ "desc": "Set to 1 if an integrity or consistency check times out.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "10",
+ "name": "LFSR_FSM_ERROR",
+ "desc": "Set to 1 if the LFSR timer FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "11",
+ "name": "SCRAMBLING_FSM_ERROR",
+ "desc": "Set to 1 if the scrambling datapath FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "12",
+ "name": "KEY_DERIV_FSM_ERROR",
+ "desc": "Set to 1 if the key derivation FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "13",
+ "name": "BUS_INTEG_ERROR",
+ "desc": "This bit is set to 1 if a fatal bus integrity fault is detected.\nThis error triggers a fatal_bus_integ_error alert."
+ },
+ {
+ "bits": "14",
+ "name": "DAI_IDLE",
+ "desc": "Set to 1 if the DAI is idle and ready to accept commands."
+ },
+ {
+ "bits": "15",
+ "name": "CHECK_PENDING",
+ "desc": "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "ERR_CODE",
+ "desc": "This register holds information about error conditions that occurred in the agents\ninteracting with the OTP macro via the internal bus. The error codes should be checked\nif the partitions, DAI or LCI flag an error in the !!STATUS register, or when an\n!!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error\ninterrupt, and in addition some errors may trigger either an fatal_macro_error or an\nfatal_check_error alert.",
+ "count": "NumErrorEntries",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "AGENT",
+ "compact": "false",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "2:0",
+ "enum": [
+ {
+ "value": "0",
+ "name": "NO_ERROR",
+ "desc": "No error condition has occurred."
+ },
+ {
+ "value": "1",
+ "name": "MACRO_ERROR",
+ "desc": "Returned if the OTP macro command was invalid or did not complete successfully\ndue to a macro malfunction.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "2",
+ "name": "MACRO_ECC_CORR_ERROR",
+ "desc": "A correctable ECC error has occured during an OTP read operation.\nThe corresponding controller automatically recovers from this error when\nissuing a new command."
+ },
+ {
+ "value": "3",
+ "name": "MACRO_ECC_UNCORR_ERROR",
+ "desc": "An uncorrectable ECC error has occurred during an OTP read operation.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present this may be a sign that the device is malfunctioning.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "4",
+ "name": "MACRO_WRITE_BLANK_ERROR",
+ "desc": "This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.\nThe corresponding controller automatically recovers from this error when issuing a new command.\n\nNote however that the affected OTP word may be left in an inconsistent state if this error occurs.\nThis can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).\n\nIt is important that SW ensures that each word is only written once, since this can render the device useless."
+ },
+ {
+ "value": "5",
+ "name": "ACCESS_ERROR",
+ "desc": "This error indicates that a locked memory region has been accessed.\nThe corresponding controller automatically recovers from this error when issuing a new command."
+ },
+ {
+ "value": "6",
+ "name": "CHECK_FAIL_ERROR",
+ "desc": "An ECC, integrity or consistency mismatch has been detected in the buffer registers.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_check_error alert."
+ },
+ {
+ "value": "7",
+ "name": "FSM_STATE_ERROR",
+ "desc": "The FSM of the corresponding controller has reached an invalid state, or the FSM has\nbeen moved into a terminal error state due to an escalation action via lc_escalate_en_i.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present, this is a sign that the device has fallen victim to\nan invasive attack. This error triggers an fatal_check_error alert."
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "DIRECT_ACCESS_REGWEN",
+ "desc": "Register write enable for all direct access interface registers.",
+ "swaccess": "rw0c",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "This bit controls whether the DAI registers can be written.\nWrite 0 to it in order to clear the bit.\n\nNote that the hardware also modulates this bit and sets it to 0 temporarily\nduring an OTP operation such that the corresponding address and data registers\ncannot be modified while an operation is pending. The !!DAI_IDLE status bit\nwill also be set to 0 in such a case.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_CMD",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD",
+ "desc": "Initiates a readout sequence that reads the location specified\nby !!DIRECT_ACCESS_ADDRESS. The command places the data read into\n!!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions)."
+ },
+ {
+ "bits": "1",
+ "name": "WR",
+ "desc": "Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0\nand !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by\n!!DIRECT_ACCESS_ADDRESS."
+ },
+ {
+ "bits": "2",
+ "name": "DIGEST",
+ "desc": "Initiates the digest calculation and locking sequence for the partition specified by\n!!DIRECT_ACCESS_ADDRESS."
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_ADDRESS",
+ "desc": "Address register for direct accesses.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "OtpByteAddrWidth-1:0",
+ "desc": "This is the address for the OTP word to be read or written through\nthe direct access interface. Note that the address is aligned to the access size\ninternally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored\nfor 64bit accesses.\n\nFor the digest calculation command, set this register to the partition base offset."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_WDATA",
+ "desc": "Write data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is being written to.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_RDATA",
+ "desc": "Read data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is read from.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "name": "CHECK_TRIGGER_REGWEN",
+ "desc": "Register write enable for !!CHECK_TRIGGER.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TRIGGER",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "CHECK_TRIGGER_REGWEN",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "INTEGRITY",
+ "desc": "Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts."
+ },
+ {
+ "bits": "1",
+ "name": "CONSISTENCY",
+ "desc": "Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts."
+ }
+ ]
+ },
+ {
+ "name": "CHECK_REGWEN",
+ "desc": "Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency\ncheck does not complete within the timeout window, an error will be flagged in the !!STATUS register,\nan otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should\nbe set to a large value to stay on the safe side. The maximum check time can be upper bounded by the\nnumber of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to\nroughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the\nsafe side. A value of zero disables the timeout mechanism (default).",
+ "resval": 0
+ }
+ ]
+ },
+ {
+ "name": "INTEGRITY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nOnly applies to the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.INTEGRITY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "CONSISTENCY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nThis applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.CONSISTENCY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "VENDOR_TEST_READ_LOCK",
+ "desc": "Runtime read lock for the VENDOR_TEST partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the VENDOR_TEST partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "NON_SECRET_FUSES_READ_LOCK",
+ "desc": "Runtime read lock for the NON_SECRET_FUSES partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the NON_SECRET_FUSES partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "VENDOR_TEST_DIGEST",
+ "desc": " Integrity digest for the VENDOR_TEST partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the VENDOR_TEST partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "NON_SECRET_FUSES_DIGEST",
+ "desc": " Integrity digest for the NON_SECRET_FUSES partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the NON_SECRET_FUSES partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET0_DIGEST",
+ "desc": " Integrity digest for the SECRET0 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET1_DIGEST",
+ "desc": " Integrity digest for the SECRET1 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET2_DIGEST",
+ "desc": " Integrity digest for the SECRET2 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET3_DIGEST",
+ "desc": " Integrity digest for the SECRET3 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ }
+ ],
+ "prim": [
+ {
+ "name": "CSR0",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "1",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "2",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "26:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR1",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "6:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:7",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14:8",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15:15",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR2",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR3",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "2:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "16",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "17",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "18",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "19",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "20",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "21",
+ "name": "field7",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "22",
+ "name": "field8",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR4",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR5",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:6",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "8",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11:9",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR6",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR7",
+ "desc": "",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "10:8",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl.rdl b/src/fuse_ctrl/data/otp_ctrl.rdl
new file mode 100644
index 0000000..686037d
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl.rdl
@@ -0,0 +1,727 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+////////////////////////////////////////////////////////////////
+// Fuse Contrller Registers
+
+//parameter int OtpByteAddrWidth = 12;
+
+addrmap caliptra_otp_ctrl {
+ reg {
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "A direct access command or digest calculation operation has completed.";
+ } OTP_OPERATION_DONE[0:0];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "An error has occurred in the OTP contrller. Check the !!ERR_CODE register to get more information.";
+ } OTP_error[1:1];
+ } INTERRUPT_STATE @ 0x0;
+
+ reg {
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when otp_operation_done is set.";
+ } OTP_OPERATION_DONE[0:0];
+ field {
+ sw = rw;
+ onwrite = woclr;
+ desc = "Enable interrupt when otp_error is set.";
+ } OTP_error[1:1];
+ } INTERRUPT_ENABLE @ 0x4;
+
+ reg {
+ field {
+ sw = w;
+ desc = "Write 1 to force otp_operation_done to 1.";
+ } OTP_OPERATION_DONE[0:0];
+ field {
+ sw = w;
+ desc = "Write 1 to force otp_error to 1.";
+ } OTP_error[1:1];
+ } INTERRUPT_TEST @ 0x8;
+
+ reg {
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } FATAL_MACr_error[0:0];
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } FATAL_CHECK_error[1:1];
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } FATAL_BUS_INTEG_error[2:2];
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } FATAL_PRIM_OTP_ALERT[3:3];
+ field {
+ sw = w;
+ desc = "Write 1 to trigger one alert event of this kind.";
+ } RECOV_PRIM_OTP_ALERT[4:4];
+ } ALERT_TEST @ 0xC;
+
+ reg {
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } VENDOR_TEST_error[0:0];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } NON_SECRET_FUSES_error[1:1];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } SECRET0_error[2:2];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } SECRET1_error[3:3];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } SECRET2_error[4:4];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } SECRET3_error[5:5];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } LIFE_CYCLE_error[6:6];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in the DAI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } DAI_error[7:7];
+ field {
+ sw = r;
+ desc = "Set to 1 if an error occurred in the LCI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index.";
+ } LCI_error[8:8];
+ field {
+ sw = r;
+ desc = "Set to 1 if an integrity or consistency check times out.\nThis raises an fatal_check_error alert and is an unrecoverable error condition.";
+ } TIMEOUT_error[9:9];
+ field {
+ sw = r;
+ desc = "Set to 1 if the LFSR timer FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition.";
+ } LFSR_FSM_error[10:10];
+ field {
+ sw = r;
+ desc = "Set to 1 if the scrambling datapath FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition.";
+ } SCRAMBLING_FSM_error[11:11];
+ field {
+ sw = r;
+ desc = "Set to 1 if the key derivation FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition.";
+ } KEY_DERIV_FSM_error[12:12];
+ field {
+ sw = r;
+ desc = "This bit is set to 1 if a fatal bus integrity fault is detected.\nThis error triggers a fatal_bus_integ_error alert.";
+ } BUS_INTEG_error[13:13];
+ field {
+ sw = r;
+ desc = "Set to 1 if the DAI is idle and ready to accept commands.";
+ } DAIL_IDLE[14:14];
+ field {
+ sw = r;
+ desc = "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending.";
+ } CHECK_PENDING[15:15];
+ } STATUS @ 0x10;
+
+ regfile err_code_t {
+
+ /* -----------------------------------
+ * Default prperties for Register File
+ * --------------------------------- */
+
+ name = "error Code Register Block";
+ desc = "Set of registers to implement error_code functionality
+ for Fuse Contrller.";
+
+ default regwidth = 32; // reg property
+ default accesswidth = 32; // reg property
+ default sw = r; // field property
+ default hw = w; // field property
+
+ /* ------------------------------------
+ * Register definitions
+ * -----------------------------------*/
+ reg err_code_reg_t {
+ desc = "This register holds information about error conditions that occurred in the agents
+ interacting with the OTP macr via the internal bus. The error codes should be checked
+ if the partitions, DAI or LCI flag an error in the !!STATUS register, or when an
+ !!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error
+ interrupt, and in addition some errors may trigger either an fatal_macr_error or an
+ fatal_check_error alert.";
+
+ default sw = r; // field property
+ default hw = w; // field property
+
+ field { desc = "No error condition has occurred.";} NO_error = 3'h0;
+ field { desc = "Returned if the OTP macr command was invalid or did not complete successfully
+ due to a macr malfunction. This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_macr_error alert.";} MACr_error = 3'h1;
+ field { desc = "A correctable ECC error has occured during an OTP read operation.\nThe corresponding contrller automatically recovers frm this error when\nissuing a new command.";} MACr_ECC_CORR_error = 3'h2;
+ field { desc = "An uncorrectable ECC error has occurred during an OTP read operation.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present this may be a sign that the device is malfunctioning.\nThis error triggers an fatal_macr_error alert.";} MACr_ECC_UNCORR_error = 3'h3;
+ field { desc = "This error is returned if a prgramming operation attempted to clear a bit that has previously been prgrammed to 1.\nThe corresponding contrller automatically recovers frm this error when issuing a new command.\n\nNote however that the affected OTP word may be left in an inconsistent state if this error occurs.\nThis can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a backgrund check).\n\nIt is important that SW ensures that each word is only written once, since this can render the device useless.";} MACr_WRITE_BLANK_error = 3'h4;
+ field { desc = "This error indicates that a locked memory region has been accessed.\nThe corresponding contrller automatically recovers frm this error when issuing a new command.";} ACCESS_error = 3'h5;
+ field { desc = "An ECC, integrity or consistency mismatch has been detected in the buffer registers.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_check_error alert.";} CHECK_FAIL_error = 3'h6;
+ field { desc = "The FSM of the corresponding contrller has reached an invalid state, or the FSM has\nbeen moved into a terminal error state due to an escalation action via lc_escalate_en_i.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present, this is a sign that the device has fallen victim to\nan invasive attack. This error triggers an fatal_check_error alert.";} FSM_STATE_error = 3'h7;
+ };
+
+ /* ----------- Registers -----------*/
+ err_code_reg_t ERR_CODE_0 @0x0; //
+ err_code_reg_t ERR_CODE_1 @0x4; //
+ err_code_reg_t ERR_CODE_2 @0x8; //
+ err_code_reg_t ERR_CODE_3 @0xC; //
+ err_code_reg_t ERR_CODE_4 @0x10; //
+ err_code_reg_t ERR_CODE_5 @0x14; //
+ err_code_reg_t ERR_CODE_6 @0x18; //
+ err_code_reg_t ERR_CODE_7 @0x1C; //
+ err_code_reg_t ERR_CODE_8 @0x20; //
+ /* ---------------------------------*/
+ };
+
+ err_code_t err_code_rf @ 0x14;
+
+ reg {
+ desc = "Register write enable for all direct access interface registers.";
+ default sw = rw;
+ default onwrite = wzc;
+ default hw = rw;
+ //default hwext = true;
+ field {
+ desc = "This bit contrls whether the DAI registers can be written.\nWrite 0 to it in order to clear the bit.\n\nNote that the hardware also modulates this bit and sets it to 0 temporarily\nduring an OTP operation such that the corresponding address and data registers\ncannot be modified while an operation is pending. The !!DAI_IDLE status bit\nwill also be set to 0 in such a case.";
+ reset = 0x1;
+ } REGWEN [0:0];
+ } DIRECT_ACCESS_REGWEN @ 0x38;
+
+ reg {
+ desc = "Command register for direct accesses.";
+ default sw = w;
+ default onwrite = wzc;
+ default hw = r;
+ //hwext = true;
+ default reset = 0x0;
+ default swwe = DIRECT_ACCESS_REGWEN;
+ field {
+ desc = "Initiates a readout sequence that reads the location specified\nby !!DIRECT_ACCESS_ADDRESS. The command places the data read into\n!!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions).";
+ } RD [0:0];
+ field {
+ desc = "Initiates a prgramming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0\nand !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by\n!!DIRECT_ACCESS_ADDRESS.";
+ } WR [1:1];
+ field {
+ desc = "Initiates the digest calculation and locking sequence for the partition specified by\n!!DIRECT_ACCESS_ADDRESS.";
+ } DIGEST [2:2];
+ } DIRECT_ACCESS_CMD @ 0x3C;
+
+ reg {
+ desc = "Address register for direct accesses.";
+ default sw = rw;
+ default hw = r;
+ default reset = 0x0;
+ default swwe = DIRECT_ACCESS_REGWEN;
+ field {
+ desc = "This is the address for the OTP word to be read or written thrugh\nthe direct access interface. Note that the address is aligned to the access size\ninternally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored\nfor 64bit accesses.\n\nFor the digest calculation command, set this register to the partition base offset.";
+ } ADDRESS [11:0];
+ } DIRECT_ACCESS_ADDRESS @ 0x40;
+
+ regfile dir_acc_wdata_t {
+ /* -----------------------------------
+ * Default prperties for Register File
+ * --------------------------------- */
+
+ name = "Direct Access Wdata Register Block";
+ desc = "Set of registers to implement wdata functionality
+ for Fuse Contrller.";
+ default reset = 0x0;
+ default swwe = DIRECT_ACCESS_REGWEN;
+ default regwidth = 32; // reg property
+ default accesswidth = 32; // reg property
+ default sw = r; // field property
+ default hw = w; // field property
+ //defalt hwext = true;
+
+ /* ------------------------------------
+ * Register definitions
+ * -----------------------------------*/
+ reg dai_wdata_t {
+ desc = "Write data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is being written to.";
+
+ default sw = r; // field prperty
+ default hw = w; // field prperty
+
+ field { desc = "wdata.";} WDATA [31:0];
+ };
+
+ /* ------------- Registers --------------*/
+ dai_wdata_t DIRECT_ACCESS_WDATA_0 @ 0x0; //
+ dai_wdata_t DIRECT_ACCESS_WDATA_1 @ 0x4; //
+ /* --------------------------------------*/
+ };
+
+ dir_acc_wdata_t dai_wdata_rf @ 0x44;
+
+ regfile dir_acc_rdata_t {
+ /* -----------------------------------
+ * Default prperties for Register File
+ * --------------------------------- */
+
+ name = "Direct Access Wdata Register Block";
+ desc = "Set of registers to implement wdata functionality
+ for Fuse Contrller.";
+ default reset = 0x0;
+
+ default regwidth = 32; // reg prperty
+ default accesswidth = 32; // reg prperty
+ default sw = r; // field prperty
+ default hw = w; // field prperty
+ //default hwext = true;
+
+ /* ------------------------------------
+ * Register definitions
+ * -----------------------------------*/
+ reg dai_rdata_t {
+ desc = "Read data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is read from.";
+
+ default sw = r; // field prperty
+ default hw = w; // field prperty
+
+ field { desc = "rdata.";} RDATA [31:0];
+ };
+
+ /* ------------- Registers --------------*/
+ dai_rdata_t DIRECT_ACCESS_RDATA_0 @ 0x0; //
+ dai_rdata_t DIRECT_ACCESS_RDATA_1 @ 0x4; //
+ /* --------------------------------------*/
+ };
+
+ dir_acc_rdata_t dai_rdata_rf @ 0x4C;
+
+ reg {
+ desc = "Register write enable for !!CHECK_TRIGGER.";
+ default sw = rw;
+ default onwrite = wzc;
+ default hw = na;
+ field {
+ desc = "When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.
+ Write 0 to clear this bit.";
+ reset = 0x1;
+ } REGWEN [0:0];
+ } CHECK_TRIGGER_REGWEN @ 0x54;
+
+ reg {
+ desc = "Command register for direct accesses.";
+ default sw = w;
+ default onwrite = woclr;
+ default hw = r; // Needs to read 0
+ //hwext = true;
+ default reset = 0x0;
+ default swwe = CHECK_TRIGGER_REGWEN;
+ field {
+ desc = "Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts.";
+ } INTEGRITY[0:0];
+ field {
+ desc = "Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts.";
+ } CONSISTENCY[1:1];
+ } CHECK_TRIGGER @ 0x58;
+
+ reg {
+ desc = "Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.";
+ default sw = w;
+ default onwrite = wzc;
+ default hw = na;
+ field {
+ desc = "When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.\nWrite 0 to clear this bit.";
+ reset = 0x1;
+ } REGWEN [0:0];
+ } CHECK_REGWEN @ 0x5C;
+
+ reg {
+ desc = "Timeout value for the integrity and consistency checks.";
+ default sw = rw;
+ default hw = r;
+ default swwe = CHECK_REGWEN;
+ field {
+ desc = "Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency
+ check does not complete within the timeout window, an error will be flagged in the !!STATUS register,
+ an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should
+ be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the
+ number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to
+ rughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the
+ safe side. A value of zer disables the timeout mechanism (default).";
+ reset = 0x0;
+ } TIMEOUT [31:0];
+ } CHECK_TIMEOUT @ 0x60;
+
+ reg {
+ desc = "This value specifies the maximum period that can be generated pseudo-randomly.\nOnly applies to the HW_CFG* and SECRET* partitions once they are locked.";
+ default sw = rw;
+ default hw = r;
+ default swwe = CHECK_REGWEN;
+ field {
+ desc = "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.
+ A value of zer disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.INTEGRITY.";
+ reset = 0x0;
+ } PERIOD [31:0];
+ } INTEGRITY_CHECK_PERIOD @ 0x64;
+
+ reg {
+ desc = "This value specifies the maximum period that can be generated pseudo-randomly.\nThis applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.";
+ default sw = rw;
+ default hw = r;
+ default swwe = CHECK_REGWEN;
+ field {
+ desc = "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.\nA value of zer disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.CONSISTENCY.";
+ reset = 0x0;
+ } PERIOD [31:0];
+ } CONSISTENCY_CHECK_PERIOD @ 0x68;
+
+ reg {
+ desc = "Runtime read lock for the VENDOR_TEST partition.";
+ default sw = rw;
+ default onwrite = wzc;
+ default hw = r;
+ default swwe = DIRECT_ACCESS_REGWEN;
+ field {
+ desc = "When cleared to 0, read access to the VENDOR_TEST partition is locked.\nWrite 0 to clear this bit.";
+ reset = 0x1;
+ } READ_LOCK [0:0];
+ } VENDOR_TEST_READ_LOCK @ 0x6C;
+
+ reg {
+ desc = "Runtime read lock for the NON_SECRET_FUSES partition.";
+ default sw = rw;
+ default onwrite = wzc;
+ default hw = r;
+ default swwe = DIRECT_ACCESS_REGWEN;
+ field {
+ desc = "When cleared to 0, read access to the NON_SECRET_FUSES_READ_LOCK partition is locked.\nWrite 0 to clear this bit.";
+ reset = 0x1;
+ } READ_LOCK [0:0];
+ } NON_SECRET_FUSES_READ_LOCK @ 0x70;
+
+ regfile digest_t {
+ /* -----------------------------------
+ * Default prperties for Register File
+ * --------------------------------- */
+ name = "DIGEST";
+ desc = "Digest register block";
+ default reset = 0x0;
+
+ default sw = r;
+ default hw = r;
+ //default hwext = true;
+
+ /* ------------------------------------
+ * Register definitions
+ * -----------------------------------*/
+ reg digest_reg_t {
+ name = "DIGEST";
+ desc = "Integrity digest for partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the VENDOR_TEST partition is locked and\n the digest becomes visible in this CSR.";
+
+ default sw = r; // field prperty
+ default hw = w; // field prperty
+
+ field { desc = "Digest.";} DIGEST [31:0];
+ };
+
+ /* ------------- Registers --------------*/
+ digest_reg_t DIGEST_0 @ 0x0; //
+ digest_reg_t DIGEST_1 @ 0x4; //
+ /* --------------------------------------*/
+ };
+
+ digest_t VENDOR_TEST_DIGEST @ 0x74;
+ digest_t NON_SECRET_FUSES_DIGEST @ 0x7C;
+
+ regfile secret_digest_t {
+ /* -----------------------------------
+ * Default prperties for Register File
+ * --------------------------------- */
+ name = "SECRET_DIGEST";
+ desc = "Secret digest register block";
+ default reset = 0x0;
+
+ default sw = r;
+ default hw = r;
+ //default hwext = true;
+
+ /* ------------------------------------
+ * Register definitions
+ * -----------------------------------*/
+ reg secret_digest_reg_t {
+ name = "SECRET_DIGEST";
+ desc = "Integrity digest for secret partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.";
+
+ default sw = r; // field prperty
+ default hw = w; // field prperty
+
+ field { desc = "Digest.";} DIGEST [31:0];
+ };
+
+ /* ------------- Registers --------------*/
+ secret_digest_reg_t DIGEST_0 @ 0x0; //
+ secret_digest_reg_t DIGEST_1 @ 0x4; //
+ /* --------------------------------------*/
+ };
+
+ secret_digest_t SECRET0_DIGEST @ 0x84;
+ secret_digest_t SECRET1_DIGEST @ 0x8C;
+ secret_digest_t SECRET2_DIGEST @ 0x94;
+ secret_digest_t SECRET3_DIGEST @ 0x9C;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field0[0:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field1[1:1] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field2[2:2] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field3[13:4] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field4[26:16] = 0x0;
+ } CSR0 @ 0xA4;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field0[6:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field1[7:7] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field2[14:8] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field3[15:15] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field4[31:16] = 0x0;
+ } CSR1 @ 0xA8;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field0[0:0] = 0x0;
+ } CSR2 @ 0xAC;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field0[2:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ onwrite = woclr;
+ hw = rw;
+ } field1[13:4] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ onwrite = woclr;
+ hw = rw;
+ } field2[16:16] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field3[17:17] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field4[18:18] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field5[19:19] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field6[20:20] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field7[21:21] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field8[22:22] = 0x0;
+ } CSR3 @ 0xB0;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field0[9:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field1[12:12] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field2[13:13] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field3[14:14] = 0x0;
+ } CSR4 @ 0xB4;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field0[5:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field1[7:6] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field2[8] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field3[11:9] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field4[12] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field5[13] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field6[31:16] = 0x0;
+ } CSR5 @ 0xB8;
+
+ reg {
+ field {
+ desc = "";
+ sw = rw;
+ hw = r;
+ } field0[9:0] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field1[11:11] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field2[12:12] = 0x0;
+ field {
+ desc = "";
+ sw = rw;
+ hw = rw;
+ } field3[31:16] = 0x0;
+ } CSR6 @ 0xBC;
+
+ reg {
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field0[5:0] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field1[10:8] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field2[14:14] = 0x0;
+ field {
+ desc = "";
+ sw = r;
+ hw = rw;
+ } field3[15:15] = 0x0;
+ } CSR7 @ 0xC0;
+};
\ No newline at end of file
diff --git a/src/fuse_ctrl/data/otp_ctrl_base_vseq.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_base_vseq.sv.tpl
new file mode 100755
index 0000000..0be039d
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_base_vseq.sv.tpl
@@ -0,0 +1,643 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+unbuf_parts_with_digest = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Unbuffered" and
+ (part["sw_digest"] or part["hw_digest"])]
+parts_with_digest = [part for part in otp_mmap.config["partitions"] if
+ (part["sw_digest"] or part["hw_digest"])]
+read_locked_csr_parts = [part for part in otp_mmap.config["partitions"] if
+ part["read_lock"] == "CSR"]
+write_locked_digest_parts = [part for part in otp_mmap.config["partitions"] if
+ part["write_lock"] == "Digest"]
+secret_parts = [part for part in otp_mmap.config["partitions"] if
+ part["secret"]]
+%>\
+class otp_ctrl_base_vseq extends cip_base_vseq #(
+ .RAL_T (otp_ctrl_core_reg_block),
+ .CFG_T (otp_ctrl_env_cfg),
+ .COV_T (otp_ctrl_env_cov),
+ .VIRTUAL_SEQUENCER_T (otp_ctrl_virtual_sequencer)
+ );
+ `uvm_object_utils(otp_ctrl_base_vseq)
+ `uvm_object_new
+
+ // various knobs to enable certain routines
+ bit do_otp_ctrl_init = 1'b1;
+ bit do_otp_pwr_init = 1'b1;
+
+ // To only write unused OTP address, sequence will collect all the written addresses to an
+ // associative array to avoid `write_blank_addr_error`.
+ bit write_unused_addr = 1;
+ static bit used_dai_addrs[bit [OTP_ADDR_WIDTH - 1 : 0]];
+
+ rand bit [NumOtpCtrlIntr-1:0] en_intr;
+
+ rand int apply_reset_during_pwr_init_cycles;
+
+ bit is_valid_dai_op = 1;
+
+ // According to spec, the period between digest calculation and reset should not issue any write.
+ bit [NumPart-2:0] digest_calculated;
+
+ // For stress_all_with_rand reset sequence to issue reset during OTP operations.
+ bit do_digest_cal, do_otp_rd, do_otp_wr;
+
+ // LC program request will use a separate variable to automatically set to non-blocking setting
+ // when LC error bit is set.
+ bit default_req_blocking = 1;
+ bit lc_prog_blocking = 1;
+ bit dai_wr_inprogress = 0;
+ uint32_t op_done_spinwait_timeout_ns = 20_000_000;
+
+ // Collect current lc_state and lc_cnt. This is used to create next lc_state and lc_cnt without
+ // error.
+ lc_ctrl_state_pkg::lc_state_e lc_state;
+ lc_ctrl_state_pkg::lc_cnt_e lc_cnt;
+
+ otp_ctrl_callback_vseq callback_vseq;
+
+ constraint apply_reset_during_pwr_init_cycles_c {
+ apply_reset_during_pwr_init_cycles == 0;
+ }
+
+ virtual task pre_start();
+ `uvm_create_on(callback_vseq, p_sequencer);
+ super.pre_start();
+ endtask
+
+ virtual task dut_init(string reset_kind = "HARD");
+ // OTP has dut and edn reset. If assign OTP values after `super.dut_init()`, and if dut reset
+ // deasserts earlier than edn reset, some OTP outputs might remain X or Z when dut clock is
+ // running.
+ otp_ctrl_vif_init();
+ super.dut_init(reset_kind);
+ callback_vseq.dut_init_callback();
+
+ cfg.backdoor_clear_mem = 0;
+ // reset power init pin and lc pins
+ if (do_otp_ctrl_init && do_apply_reset) otp_ctrl_init();
+ cfg.clk_rst_vif.wait_clks($urandom_range(0, 10));
+ if (do_otp_pwr_init && do_apply_reset) otp_pwr_init();
+ callback_vseq.post_otp_pwr_init();
+ endtask
+
+ // Cfg errors are cleared after reset
+ virtual task apply_reset(string kind = "HARD");
+ super.apply_reset(kind);
+ cfg.otp_ctrl_vif.release_part_access_mubi();
+ clear_seq_flags();
+ endtask
+
+ virtual function void clear_seq_flags();
+ do_digest_cal = 0;
+ do_otp_rd = 0;
+ do_otp_wr = 0;
+ endfunction
+
+ virtual task otp_ctrl_vif_init();
+ cfg.otp_ctrl_vif.drive_lc_creator_seed_sw_rw_en(lc_ctrl_pkg::On);
+ cfg.otp_ctrl_vif.drive_lc_owner_seed_sw_rw_en(lc_ctrl_pkg::On);
+ cfg.otp_ctrl_vif.drive_lc_seed_hw_rd_en(get_rand_lc_tx_val());
+ cfg.otp_ctrl_vif.drive_lc_dft_en(get_rand_lc_tx_val(.t_weight(0)));
+ cfg.otp_ctrl_vif.drive_lc_escalate_en(lc_ctrl_pkg::Off);
+ cfg.otp_ctrl_vif.drive_pwr_otp_init(0);
+ cfg.otp_ctrl_vif.drive_ext_voltage_h_io(1'bz);
+
+ // Unused signals in open sourced OTP memory
+ `DV_CHECK_RANDOMIZE_FATAL(cfg.dut_cfg)
+ cfg.otp_ctrl_vif.otp_ast_pwr_seq_h_i = cfg.dut_cfg.otp_ast_pwr_seq_h;
+ cfg.otp_ctrl_vif.scan_en_i = cfg.dut_cfg.scan_en;
+ cfg.otp_ctrl_vif.scan_rst_ni = cfg.dut_cfg.scan_rst_n;
+ cfg.otp_ctrl_vif.scanmode_i = cfg.dut_cfg.scanmode;
+ cfg.otp_ctrl_vif.otp_vendor_test_ctrl_i = cfg.dut_cfg.otp_vendor_test_ctrl;
+ endtask
+
+ // drive otp_pwr req pin to initialize OTP, and wait until init is done
+ virtual task otp_pwr_init();
+ cfg.otp_ctrl_vif.drive_pwr_otp_init(1);
+ if (apply_reset_during_pwr_init_cycles > 0) begin
+ `DV_SPINWAIT_EXIT(
+ cfg.clk_rst_vif.wait_clks(apply_reset_during_pwr_init_cycles);,
+ wait (cfg.otp_ctrl_vif.pwr_otp_done_o == 1);)
+ if (cfg.otp_ctrl_vif.pwr_otp_done_o == 0) begin
+ cfg.otp_ctrl_vif.drive_pwr_otp_init(0);
+ apply_reset();
+ cfg.otp_ctrl_vif.drive_pwr_otp_init(1);
+ end
+ end
+ wait (cfg.otp_ctrl_vif.pwr_otp_done_o == 1);
+ cfg.otp_ctrl_vif.drive_pwr_otp_init(0);
+ digest_calculated = 0;
+ endtask
+
+ // setup basic otp_ctrl features
+ virtual task otp_ctrl_init();
+ // reset memory to avoid readout X
+ clear_otp_memory();
+ lc_state = lc_state_e'(0);
+ lc_cnt = lc_cnt_e'(0);
+ endtask
+
+ virtual function void clear_otp_memory();
+ cfg.mem_bkdr_util_h.clear_mem();
+ cfg.backdoor_clear_mem = 1;
+ used_dai_addrs.delete();
+ endfunction
+
+ // Overide this task for otp_ctrl_common_vseq and otp_ctrl_stress_all_with_rand_reset_vseq
+ // because some registers won't set to default value until otp_init is done.
+ virtual task read_and_check_all_csrs_after_reset();
+ cfg.otp_ctrl_vif.drive_lc_escalate_en(lc_ctrl_pkg::Off);
+ otp_pwr_init();
+ super.read_and_check_all_csrs_after_reset();
+ endtask
+
+ // this task triggers an OTP write sequence via the DAI interface
+ virtual task dai_wr(bit [TL_DW-1:0] addr,
+ bit [TL_DW-1:0] wdata0,
+ bit [TL_DW-1:0] wdata1 = 0);
+ bit [TL_DW-1:0] val;
+ dai_wr_inprogress = 1;
+ if (write_unused_addr) begin
+ if (used_dai_addrs.exists(addr[OTP_ADDR_WIDTH - 1 : 0])) begin
+ `uvm_info(`gfn, $sformatf("addr %0h is already written!", addr), UVM_MEDIUM)
+ dai_wr_inprogress = 0;
+ return;
+ end else begin
+ used_dai_addrs[addr] = 1;
+ end
+ end
+ addr = randomize_dai_addr(addr);
+ `uvm_info(`gfn, $sformatf("dai write addr %0h, data %0h", addr, wdata0), UVM_HIGH)
+ csr_wr(ral.direct_access_address, addr);
+ csr_wr(ral.direct_access_wdata[0], wdata0);
+ if (is_secret(addr) || is_sw_digest(addr)) csr_wr(ral.direct_access_wdata[1], wdata1);
+
+ do_otp_wr = 1;
+ csr_wr(ral.direct_access_cmd, int'(otp_ctrl_pkg::DaiWrite));
+ `uvm_info(`gfn, $sformatf("DAI write, address %0h, data0 %0h data1 %0h, is_secret = %0b",
+ addr, wdata0, wdata1, is_secret(addr)), UVM_DEBUG)
+
+ // Direct_access_regwen and dai_idle are checked only when following conditions are met:
+ // - the dai operation is valid, otherwise it is hard to predict which cycle the error is
+ // detected
+ // - zero delays in TLUL interface, otherwise dai operation might be finished before reading
+ // these two CSRs
+ if (cfg.zero_delays && is_valid_dai_op &&
+ cfg.otp_ctrl_vif.lc_escalate_en_i == lc_ctrl_pkg::Off) begin
+ csr_rd_check(ral.status.dai_idle, .compare_value(0), .backdoor(1));
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.direct_access_regwen), .value(val));
+ end
+ wait_dai_op_done();
+ rd_and_clear_intrs();
+ dai_wr_inprogress = 0;
+ endtask : dai_wr
+
+ // This task triggers an OTP readout sequence via the DAI interface
+ virtual task dai_rd(input bit [TL_DW-1:0] addr,
+ output bit [TL_DW-1:0] rdata0,
+ output bit [TL_DW-1:0] rdata1);
+ bit [TL_DW-1:0] val;
+ addr = randomize_dai_addr(addr);
+
+ csr_wr(ral.direct_access_address, addr);
+ do_otp_rd = 1;
+ csr_wr(ral.direct_access_cmd, int'(otp_ctrl_pkg::DaiRead));
+
+ if (cfg.zero_delays && is_valid_dai_op &&
+ cfg.otp_ctrl_vif.lc_escalate_en_i == lc_ctrl_pkg::Off) begin
+ csr_rd_check(ral.status.dai_idle, .compare_value(0), .backdoor(1));
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.direct_access_regwen), .value(val));
+ end
+
+ wait_dai_op_done();
+ csr_rd(ral.direct_access_rdata[0], rdata0);
+ if (is_secret(addr) || is_digest(addr)) csr_rd(ral.direct_access_rdata[1], rdata1);
+ rd_and_clear_intrs();
+ endtask : dai_rd
+
+ virtual task dai_rd_check(bit [TL_DW-1:0] addr,
+ bit [TL_DW-1:0] exp_data0,
+ bit [TL_DW-1:0] exp_data1 = 0);
+ bit [TL_DW-1:0] rdata0, rdata1;
+ dai_rd(addr, rdata0, rdata1);
+ if (!cfg.under_reset) begin
+ `DV_CHECK_EQ(rdata0, exp_data0, $sformatf("dai addr %0h rdata0 readout mismatch", addr))
+ if (is_secret(addr) || is_digest(addr)) begin
+ `DV_CHECK_EQ(rdata1, exp_data1, $sformatf("dai addr %0h rdata1 readout mismatch", addr))
+ end
+ end
+ endtask: dai_rd_check
+
+ // this task exercises an OTP digest calculation via the DAI interface
+ virtual task cal_digest(int part_idx);
+ bit [TL_DW-1:0] val;
+ csr_wr(ral.direct_access_address, PART_BASE_ADDRS[part_idx]);
+ csr_wr(ral.direct_access_cmd, otp_ctrl_pkg::DaiDigest);
+
+ if (cfg.zero_delays && is_valid_dai_op &&
+ cfg.otp_ctrl_vif.lc_escalate_en_i == lc_ctrl_pkg::Off) begin
+ csr_rd_check(ral.status.dai_idle, .compare_value(0), .backdoor(1));
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.direct_access_regwen), .value(val));
+ end
+ do_digest_cal = 1;
+ wait_dai_op_done();
+ digest_calculated[part_idx] = 1;
+ rd_and_clear_intrs();
+ endtask
+
+ // this task provisions all HW partitions
+ // SW partitions could not be provisioned via DAI interface
+ // LC partitions cannot be locked
+ virtual task cal_hw_digests(bit [NumPart-1:0] trigger_digest = $urandom());
+ foreach (PartInfo[i]) begin
+ if (PartInfo[i].hw_digest && trigger_digest[i]) begin
+ cal_digest(i);
+ end
+ end
+ endtask
+
+ // SW digest data are calculated in sw and won't be checked in OTP.
+ // Here to simplify testbench, write random data to sw digest.
+ virtual task write_sw_digests(bit [NumPartUnbuf-1:0] wr_digest = $urandom());
+ bit [TL_DW*2-1:0] wdata;
+ % for part in unbuf_parts_with_digest:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (wr_digest[${part_name_camel}Idx]) begin
+ `DV_CHECK_STD_RANDOMIZE_FATAL(wdata);
+ dai_wr(${part_name_camel}DigestOffset, wdata[TL_DW-1:0], wdata[TL_DW*2-1:TL_DW]);
+ end
+% endfor
+ endtask
+
+ virtual task write_sw_rd_locks(bit [NumPartUnbuf-1:0] do_rd_lock= $urandom());
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (do_rd_lock[${part_name_camel}Idx]) csr_wr(ral.${part["name"].lower()}_read_lock, 0);
+% endfor
+ endtask
+
+ // The digest CSR values are verified in otp_ctrl_scoreboard
+ virtual task rd_digests();
+ bit [TL_DW-1:0] val;
+% for part in parts_with_digest:
+ csr_rd(.ptr(ral.${part["name"].lower()}_digest[0]), .value(val));
+ csr_rd(.ptr(ral.${part["name"].lower()}_digest[1]), .value(val));
+% endfor
+ endtask
+
+ // If the partition is read/write locked, there is 20% chance we will force the internal mubi
+ // access signal to the values other than mubi::true or mubi::false.
+ virtual task force_mubi_part_access();
+ // Stress_all_with_rand_reset seq will issue reset and wait until reset is done then kill the
+ // parallel sequence. This gating logic avoid injecting error during reset active.
+ if (cfg.otp_ctrl_vif.alert_reqs == 0 && !cfg.under_reset) begin
+ otp_part_access_lock_t forced_mubi_part_access[NumPart-1];
+
+ // Digest write locks
+% for part in write_locked_digest_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if ((`gmv(ral.${part["name"].lower()}_digest[0]) ||
+ `gmv(ral.${part["name"].lower()}_digest[1])) &&
+ !$urandom_range(0, 4)) begin
+ forced_mubi_part_access[${part_name_camel}Idx].write_lock = 1;
+ end
+% endfor
+
+ // CSR read locks
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if ((`gmv(ral.${part["name"].lower()}_read_lock) == 0) && !$urandom_range(0, 4)) begin
+ forced_mubi_part_access[${part_name_camel}Idx].read_lock = 1;
+ end
+% endfor
+
+
+ // Digest read locks
+% for part in secret_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if ((`gmv(ral.${part["name"].lower()}_digest[0]) ||
+ `gmv(ral.${part["name"].lower()}_digest[1])) &&
+ !$urandom_range(0, 4)) begin
+ forced_mubi_part_access[${part_name_camel}Idx].read_lock = 1;
+ end
+% endfor
+
+ foreach (forced_mubi_part_access[i]) begin
+ `uvm_info(`gfn, $sformatf("partition %0d inject mubi value: read=%0b, write=%0b", i,
+ forced_mubi_part_access[i].read_lock, forced_mubi_part_access[i].write_lock), UVM_HIGH)
+ end
+
+ cfg.otp_ctrl_vif.force_part_access_mubi(forced_mubi_part_access);
+ end
+ endtask
+
+ // This function backdoor inject error according to ecc_err.
+ // For example, if err_mask is set to 'b01, bit 1 in OTP macro will be flipped.
+ // This function will output original backdoor read data for the given address.
+ virtual function bit [TL_DW-1:0] backdoor_inject_ecc_err(bit [TL_DW-1:0] addr,
+ otp_ecc_err_e ecc_err);
+ bit [TL_DW-1:0] val;
+ addr = {addr[TL_DW-1:2], 2'b00};
+ val = cfg.mem_bkdr_util_h.read32(addr);
+ if (ecc_err == OtpNoEccErr || addr >= (LifeCycleOffset + LifeCycleSize)) return val;
+
+ // Backdoor read and write back with error bits
+ cfg.mem_bkdr_util_h.inject_errors(addr, (ecc_err == OtpEccUncorrErr) ? 2 : 1);
+ `uvm_info(`gfn, $sformatf("original val %0h, addr %0h, err_type %0s",
+ val, addr, ecc_err.name), UVM_HIGH)
+ return val;
+ endfunction
+
+ virtual task trigger_checks(bit [1:0] val,
+ bit wait_done = 1,
+ otp_ecc_err_e ecc_err = OtpNoEccErr);
+ bit [TL_DW-1:0] backdoor_rd_val, addr;
+
+ // If ECC and check error happens in the same consistency check, the scb cannot predict which
+ // error will happen first, so it cannot correctly predict the error status and alert
+ // triggered.
+ // So the sequence only allows one error at a time.
+ if (get_field_val(ral.check_trigger.consistency, val) &&
+ `gmv(ral.check_timeout) > 0 && `gmv(ral.check_timeout) <= CHK_TIMEOUT_CYC) begin
+ ecc_err = OtpNoEccErr;
+ end
+
+ // Backdoor write ECC errors
+ if (ecc_err != OtpNoEccErr) begin
+ int part_idx = $urandom_range(HwCfg0Idx, LifeCycleIdx);
+
+ // Only HW cfgs check digest correctness
+ if (part_idx != LifeCycleIdx) begin
+ addr = $urandom_range(0, 1) ? PART_OTP_DIGEST_ADDRS[part_idx] << 2 :
+ (PART_OTP_DIGEST_ADDRS[part_idx] + 1) << 2;
+ end else begin
+ addr = $urandom_range(LifeCycleOffset, LifeCycleOffset + LifeCycleSize - 1);
+ addr = {addr[TL_DW-1:2], 2'b00};
+ end
+ backdoor_rd_val = backdoor_inject_ecc_err(addr, ecc_err);
+ cfg.ecc_chk_err[part_idx] = ecc_err;
+ end
+
+ csr_wr(ral.check_trigger, val);
+ if (wait_done && val) csr_spinwait(ral.status.check_pending, 0);
+
+ if (ecc_err != OtpNoEccErr) begin
+ cfg.mem_bkdr_util_h.write32(addr, backdoor_rd_val);
+ cfg.ecc_chk_err = '{default: OtpNoEccErr};
+ end
+ endtask
+
+ // For a DAI interface operation to finish, either way until status dai_idle is set, or check
+ // err_code and see if fatal error happened. In any case, break out of this wait if there
+ // is a need to stop transaction generators, since a spinwait will otherwise just stop
+ // when it times-out.
+ virtual task wait_dai_op_done();
+ if (cfg.stop_transaction_generators()) return;
+ fork begin
+ fork
+ begin
+ csr_spinwait(.ptr(ral.status.dai_idle),
+ .exp_data(1),
+ .timeout_ns(op_done_spinwait_timeout_ns),
+ .spinwait_delay_ns($urandom_range(0, 5)));
+ end
+ begin
+ forever begin
+ bit [TL_DW-1:0] err_val;
+ cfg.clk_rst_vif.wait_clks(1);
+ csr_rd(.ptr(ral.err_code[DaiIdx].err_code), .value(err_val), .backdoor(1));
+ // Break if error will cause fatal alerts
+ if (err_val inside {OTP_TERMINAL_ERRS}) break;
+ end
+ end
+ begin
+ forever begin
+ cfg.clk_rst_vif.wait_clks(1);
+ if (cfg.stop_transaction_generators()) break;
+ end
+ end
+ join_any
+ wait_no_outstanding_access();
+ disable fork;
+ end join
+ endtask
+
+ virtual task rd_and_clear_intrs();
+ bit [TL_DW-1:0] val;
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check == 0) begin
+ csr_rd(ral.intr_state, val);
+ // In case lc_program request is issued after intr_state read
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check == 0) csr_wr(ral.intr_state, val);
+ end
+ endtask
+
+ // first two or three LSB bits of DAI address can be randomized based on if it is secret
+ virtual function bit [TL_AW-1:0] randomize_dai_addr(bit [TL_AW-1:0] dai_addr);
+ if (is_secret(dai_addr)) begin
+ bit [2:0] rand_addr = $urandom();
+ randomize_dai_addr = {dai_addr[TL_DW-1:3], rand_addr};
+ end else begin
+ bit [1:0] rand_addr = $urandom();
+ randomize_dai_addr = {dai_addr[TL_DW-1:2], rand_addr};
+ end
+ endfunction
+
+ // The following interface requests are separated to blocking and non-blocking accesses.
+ // The non-blocking access is mainly used when lc_escalate_en is On, which acts like a reset and
+ // move all design state machines to ErrorSt. Thus pending request will never get a response
+ // until reset.
+ virtual task req_sram_key(int index, bit blocking = default_req_blocking);
+ // Return if the request is already high, this is mainly due to lc_escalate_en On.
+ if (cfg.m_sram_pull_agent_cfg[index].vif.req === 1'b1) return;
+
+ if (blocking) begin
+ req_sram_key_sub(index);
+ end else begin
+ fork
+ begin
+ req_sram_key_sub(index);
+ end
+ join_none;
+ // Add #0 to ensure that this thread starts executing before any subsequent call
+ #0;
+ end
+ endtask
+
+ virtual task req_sram_key_sub(int index);
+ push_pull_host_seq#(.DeviceDataWidth(SRAM_DATA_SIZE)) sram_pull_seq;
+ wait(cfg.under_reset == 0);
+ `uvm_create_on(sram_pull_seq, p_sequencer.sram_pull_sequencer_h[index]);
+ `DV_CHECK_RANDOMIZE_FATAL(sram_pull_seq)
+ `uvm_send(sram_pull_seq)
+ endtask
+
+ virtual task req_all_sram_keys(bit blocking = default_req_blocking);
+ for (int i = 0; i < NumSramKeyReqSlots; i++) req_sram_key(i, blocking);
+ endtask
+
+ virtual task req_otbn_key(bit blocking = default_req_blocking);
+ if (cfg.m_otbn_pull_agent_cfg.vif.req === 1'b1) return;
+
+ if (blocking) begin
+ req_otbn_key_sub();
+ end else begin
+ fork
+ begin
+ req_otbn_key_sub();
+ end
+ join_none;
+ // Add #0 to ensure that this thread starts executing before any subsequent call
+ #0;
+ end
+ endtask
+
+ virtual task req_otbn_key_sub();
+ push_pull_host_seq#(.DeviceDataWidth(OTBN_DATA_SIZE)) otbn_pull_seq;
+ wait(cfg.under_reset == 0);
+ `uvm_create_on(otbn_pull_seq, p_sequencer.otbn_pull_sequencer_h);
+ `DV_CHECK_RANDOMIZE_FATAL(otbn_pull_seq)
+ `uvm_send(otbn_pull_seq)
+ endtask
+
+ virtual task req_flash_addr_key(bit blocking = default_req_blocking);
+ if (cfg.m_flash_addr_pull_agent_cfg.vif.req === 1'b1) return;
+
+ if (blocking) begin
+ req_flash_addr_key_sub();
+ end else begin
+ fork
+ begin
+ req_flash_addr_key_sub();
+ end
+ join_none;
+ // Add #0 to ensure that this thread starts executing before any subsequent call
+ #0;
+ end
+ endtask
+
+ virtual task req_flash_addr_key_sub();
+ push_pull_host_seq#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_addr_pull_seq;
+ wait(cfg.under_reset == 0);
+ `uvm_create_on(flash_addr_pull_seq, p_sequencer.flash_addr_pull_sequencer_h);
+ `DV_CHECK_RANDOMIZE_FATAL(flash_addr_pull_seq)
+ `uvm_send(flash_addr_pull_seq)
+ endtask
+
+ virtual task req_flash_data_key(bit blocking = default_req_blocking);
+ if (cfg.m_flash_data_pull_agent_cfg.vif.req === 1'b1) return;
+
+ if (blocking) begin
+ req_flash_data_key_sub();
+ end else begin
+ fork
+ begin
+ req_flash_data_key_sub();
+ end
+ join_none;
+ // Add #0 to ensure that this thread starts executing before any subsequent call
+ #0;
+ end
+ endtask
+
+ virtual task req_flash_data_key_sub();
+ push_pull_host_seq#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_data_pull_seq;
+ wait(cfg.under_reset == 0);
+ `uvm_create_on(flash_data_pull_seq, p_sequencer.flash_data_pull_sequencer_h);
+ `DV_CHECK_RANDOMIZE_FATAL(flash_data_pull_seq)
+ `uvm_send(flash_data_pull_seq)
+ endtask
+
+ virtual task req_lc_transition(bit check_intr = 0,
+ bit blocking = default_req_blocking,
+ bit wr_blank_err = !write_unused_addr);
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req === 1'b1) return;
+
+ if (blocking) begin
+ req_lc_transition_sub(check_intr, wr_blank_err);
+ end else begin
+ fork
+ begin
+ req_lc_transition_sub(check_intr, wr_blank_err);
+ end
+ join_none;
+ // Add #0 to ensure that this thread starts executing before any subsequent call
+ #0;
+ end
+ endtask
+
+ virtual task req_lc_transition_sub(bit check_intr = 0, bit wr_blank_err = !write_unused_addr);
+ lc_ctrl_state_pkg::lc_cnt_e next_lc_cnt;
+ lc_ctrl_state_pkg::dec_lc_state_e next_lc_state, lc_state_dec;
+ bit [TL_DW-1:0] intr_val;
+ push_pull_host_seq#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1))
+ lc_prog_pull_seq;
+ wait(cfg.under_reset == 0);
+ `uvm_create_on(lc_prog_pull_seq, p_sequencer.lc_prog_pull_sequencer_h);
+
+ if (!wr_blank_err) begin
+ // Find valid next state and next cnt using lc_ctrl_dv_utils_pkg.
+ // If terminal state or max LcCnt reaches, will not program any new data.
+ if ((lc_state != LcStScrap) && (lc_cnt != LcCnt24)) begin
+ lc_state_dec = lc_ctrl_dv_utils_pkg::dec_lc_state(lc_state);
+ `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(next_lc_state,
+ next_lc_state inside {VALID_NEXT_STATES[lc_state_dec]};)
+ `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(next_lc_cnt, next_lc_cnt > lc_cnt;)
+ lc_state = lc_ctrl_dv_utils_pkg::encode_lc_state(next_lc_state);
+ lc_cnt = next_lc_cnt;
+ end
+ cfg.m_lc_prog_pull_agent_cfg.add_h_user_data({lc_cnt, lc_state});
+ end
+
+ `DV_CHECK_RANDOMIZE_FATAL(lc_prog_pull_seq)
+ `uvm_send(lc_prog_pull_seq)
+
+ if (check_intr) rd_and_clear_intrs();
+ endtask
+
+ // This test access OTP_CTRL's test_access memory. The open-sourced code only test if the access
+ // is valid. Please override this task in proprietary OTP.
+ virtual task otp_test_access();
+ if (`PRIM_DEFAULT_IMPL == prim_pkg::ImplGeneric) begin
+ repeat (10) begin
+ bit [TL_DW-1:0] data;
+ bit test_access_en;
+ bit [TL_AW-1:0] rand_addr = $urandom_range(0, NUM_PRIM_REG - 1) * 4;
+ bit [TL_AW-1:0] tlul_addr =
+ cfg.ral_models["otp_ctrl_prim_reg_block"].get_addr_from_offset(rand_addr);
+ if (cfg.stop_transaction_generators()) break;
+ rand_drive_dft_en();
+ `DV_CHECK_STD_RANDOMIZE_FATAL(data)
+ test_access_en = cfg.otp_ctrl_vif.lc_dft_en_i == lc_ctrl_pkg::On;
+ tl_access(.addr(tlul_addr), .write(1), .data(data), .exp_err_rsp(~test_access_en),
+ .tl_sequencer_h(p_sequencer.tl_sequencer_hs["otp_ctrl_prim_reg_block"]));
+ tl_access(.addr(tlul_addr), .write(0), .data(data), .exp_err_rsp(~test_access_en),
+ .tl_sequencer_h(p_sequencer.tl_sequencer_hs["otp_ctrl_prim_reg_block"]));
+ end
+ end
+ endtask
+
+ // Empty task, only drive it under `otp_ctrl_test_access_vseq`
+ virtual task rand_drive_dft_en();
+ endtask
+endclass : otp_ctrl_base_vseq
diff --git a/src/fuse_ctrl/data/otp_ctrl_cov_bind.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_cov_bind.sv.tpl
new file mode 100755
index 0000000..fa61630
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_cov_bind.sv.tpl
@@ -0,0 +1,84 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Binds OTP_CTRL functional coverage interaface to the top level OTP_CTRL module.
+//
+${gen_comment}
+<%
+from topgen.lib import Name
+
+# The unsavory ${"\\"} tokens are used to escape the macros newline handling.
+%>\
+`define PART_MUBI_COV(__part_name, __index) ${"\\"}
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) ``__part_name``_read_lock_mubi_cov_if ( ${"\\"}
+ .rst_ni (rst_ni), ${"\\"}
+ .mubi (part_access[``__index``].read_lock) ${"\\"}
+ ); ${"\\"}
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) ``__part_name``_write_lock_mubi_cov_if ( ${"\\"}
+ .rst_ni (rst_ni), ${"\\"}
+ .mubi (part_access[``__index``].write_lock) ${"\\"}
+ );
+
+`define DAI_MUBI_COV(__part_name, __index) ${"\\"}
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) dai_``__part_name``_read_lock_mubi_cov_if ( ${"\\"}
+ .rst_ni (rst_ni), ${"\\"}
+ .mubi (part_access_dai[``__index``].read_lock) ${"\\"}
+ ); ${"\\"}
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) dai_``__part_name``_write_lock_mubi_cov_if ( ${"\\"}
+ .rst_ni (rst_ni), ${"\\"}
+ .mubi (part_access_dai[``__index``].write_lock) ${"\\"}
+ );
+
+module otp_ctrl_cov_bind;
+ import otp_ctrl_part_pkg::*;
+
+ bind otp_ctrl otp_ctrl_cov_if u_otp_ctrl_cov_if (
+ .pwr_otp_o (pwr_otp_o),
+ .lc_otp_program_i (lc_otp_program_i),
+ .lc_escalate_en_i (lc_escalate_en_i),
+ .flash_otp_key_i (flash_otp_key_i),
+ .sram_otp_key_i (sram_otp_key_i),
+ .otbn_otp_key_i (otbn_otp_key_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_creator_seed_sw_rw_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_creator_seed_sw_rw_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_seed_hw_rd_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_seed_hw_rd_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_dft_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_dft_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_escalate_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_escalate_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_check_byp_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_check_byp_en_i)
+ );
+
+ // Mubi internal coverage for buffered and unbuffered partitions.
+% for part in otp_mmap.config["partitions"][:-1]:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ `PART_MUBI_COV(${part_name.as_snake_case()}, otp_ctrl_part_pkg::${part_name.as_camel_case()}Idx)
+% endfor
+
+ // Mubi internal coverage for DAI interface access
+% for part in otp_mmap.config["partitions"][:-1]:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ `DAI_MUBI_COV(${part_name.as_snake_case()}, otp_ctrl_part_pkg::${part_name.as_camel_case()}Idx)
+% endfor
+
+`undef PART_MUBI_COV
+`undef DAI_MUBI_COV
+endmodule
diff --git a/src/fuse_ctrl/data/otp_ctrl_dai_lock_vseq.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_dai_lock_vseq.sv.tpl
new file mode 100755
index 0000000..05e81f1
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_dai_lock_vseq.sv.tpl
@@ -0,0 +1,90 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] in ["Buffered", "Unbuffered"]]
+
+parts_with_digest = [part for part in otp_mmap.config["partitions"] if
+ (part["sw_digest"] or part["hw_digest"])]
+%>\
+// otp_ctrl_dai_lock_vseq is developed to read/write lock DAI interface by partitions, and request
+// read/write access to check if correct status and error code is triggered
+
+// Partition's legal range covers offset to digest addresses, dai_rd/dai_wr function will
+// randomize the address based on the granularity.
+`define PART_ADDR_RANGE(i) ${"\\"}
+ {[PartInfo[``i``].offset : (PartInfo[``i``].offset + PartInfo[``i``].size - 8)]}
+
+class otp_ctrl_dai_lock_vseq extends otp_ctrl_smoke_vseq;
+ `uvm_object_utils(otp_ctrl_dai_lock_vseq)
+
+ `uvm_object_new
+
+ // enable access_err for each cycle
+ constraint no_access_err_c {access_locked_parts == 1;}
+
+ constraint num_trans_c {
+ num_trans inside {[1:10]};
+ num_dai_op inside {[1:50]};
+ }
+
+ // the LC partition is always the last one
+ constraint partition_index_c {part_idx inside {[0:LifeCycleIdx]};}
+
+ constraint dai_wr_legal_addr_c {
+% for part in parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (part_idx == ${part_name_camel}Idx) {
+ dai_addr inside `PART_ADDR_RANGE(${part_name_camel}Idx);
+ }
+% endfor
+ if (part_idx == LifeCycleIdx) {
+ if (write_unused_addr) {
+ dai_addr inside {[PartInfo[LifeCycleIdx].offset : {OTP_ADDR_WIDTH{1'b1}}]};
+ } else {
+ dai_addr inside `PART_ADDR_RANGE(LifeCycleIdx);
+ }
+ }
+ solve part_idx before dai_addr;
+ }
+
+ constraint dai_wr_digests_c {
+ {dai_addr[TL_AW-1:2], 2'b0} dist {
+ {
+% for part in parts_with_digest:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ ${part_name_camel}DigestOffset${"" if loop.last else ","}
+% endfor
+ } :/ 1,
+ [VendorTestOffset : '1] :/ 9
+ };
+ }
+
+ virtual task pre_start();
+ super.pre_start();
+ is_valid_dai_op = 0;
+ endtask
+
+ virtual task dut_init(string reset_kind = "HARD");
+ super.dut_init(reset_kind);
+ if ($urandom_range(0, 1)) begin
+ cfg.otp_ctrl_vif.drive_lc_creator_seed_sw_rw_en(get_rand_lc_tx_val(.t_weight(0)));
+ end
+ if ($urandom_range(0, 1)) begin
+ cfg.otp_ctrl_vif.drive_lc_owner_seed_sw_rw_en(get_rand_lc_tx_val(.t_weight(0)));
+ end
+ endtask
+
+endclass
+
+`undef PART_ADDR_RANGE
diff --git a/src/fuse_ctrl/data/otp_ctrl_env_cov.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_env_cov.sv.tpl
new file mode 100755
index 0000000..f20736c
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_env_cov.sv.tpl
@@ -0,0 +1,358 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+/**
+ * Covergoups that are dependent on run-time parameters that may be available
+ * only in build_phase can be defined here
+ * Covergroups may also be wrapped inside helper classes if needed.
+ */
+<%
+from topgen.lib import Name
+
+parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] in ["Buffered", "Unbuffered"]]
+
+unbuffered_parts = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Unbuffered"]
+
+unbuffered_parts_with_digest = [part for part in unbuffered_parts if
+ (part["sw_digest"] or part["hw_digest"])]
+
+buffered_parts = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Buffered"]
+
+buffered_nonsecret_parts_with_digest = [part for part in buffered_parts if
+ (part["sw_digest"] or part["hw_digest"]) and
+ not part["secret"]]
+
+buffered_secret_parts_with_digest = [part for part in buffered_parts if
+ (part["sw_digest"] or part["hw_digest"]) and
+ part["secret"]]
+## Partitions + LCI + DAI
+num_err_code = len(otp_mmap.config["partitions"]) + 2
+%>\
+class otp_ctrl_unbuf_err_code_cg_wrap;
+ // Unbuffered partition can use TLUL interface to read out but cannot write, thus error_code does
+ // not have write_blank_err.
+ covergroup unbuf_err_code_cg(string name) with function sample(bit [TL_DW-1:0] val);
+ option.per_instance = 1;
+ option.name = name;
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins access_err = {OtpAccessError};
+ bins check_fail = {OtpCheckFailError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ function new(string name);
+ unbuf_err_code_cg = new(name);
+ endfunction
+endclass
+
+class otp_ctrl_buf_err_code_cg_wrap;
+ // Buffered partition must use DAI interface to access partition, so it does not have access_err
+ // and write_blank err.
+ covergroup buf_err_code_cg(string name) with function sample(bit [TL_DW-1:0] val);
+ option.per_instance = 1;
+ option.name = name;
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins check_fail = {OtpCheckFailError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ function new(string name);
+ buf_err_code_cg = new(name);
+ endfunction
+endclass
+
+class otp_ctrl_csr_rd_after_alert_cg_wrap;
+ // This covergroup samples CSRs being checked (via CSR read) after fatal alert is issued.
+ covergroup csr_rd_after_alert_cg(otp_ctrl_core_reg_block ral) with function sample(bit[TL_DW-1:0]
+ csr_offset);
+ read_csr_after_alert_issued: coverpoint csr_offset {
+ bins unbuffered_digests = {
+% for part in unbuffered_parts_with_digest:
+ ral.${part["name"].lower()}_digest[0].get_offset(),
+ ral.${part["name"].lower()}_digest[1].get_offset()${"" if loop.last else ","}
+% endfor
+ };
+ bins hw_digests = {
+% for part in buffered_nonsecret_parts_with_digest:
+ ral.${part["name"].lower()}_digest[0].get_offset(),
+ ral.${part["name"].lower()}_digest[1].get_offset()${"" if loop.last else ","}
+% endfor
+ };
+ bins secret_digests = {
+% for part in buffered_secret_parts_with_digest:
+ ral.${part["name"].lower()}_digest[0].get_offset(),
+ ral.${part["name"].lower()}_digest[1].get_offset()${"" if loop.last else ","}
+% endfor
+ };
+ bins direct_access_rdata = {
+ ral.direct_access_rdata[0].get_offset(),
+ ral.direct_access_rdata[1].get_offset()
+ };
+ bins status = {
+ ral.status.get_offset()
+ };
+ bins error_code = {
+% for k in range(num_err_code):
+ ral.err_code[${k}].get_offset()${"" if loop.last else ","}
+% endfor
+ };
+ }
+ endgroup
+
+ function new(otp_ctrl_core_reg_block ral);
+ csr_rd_after_alert_cg = new(ral);
+ endfunction
+
+ function void sample(bit[TL_DW-1:0] csr_offset);
+ csr_rd_after_alert_cg.sample(csr_offset);
+ endfunction
+endclass
+
+class otp_ctrl_unbuf_access_lock_cg_wrap;
+ covergroup unbuf_access_lock_cg(string name) with function sample(bit read_lock, bit write_lock,
+ bit is_write);
+ option.per_instance = 1;
+ option.name = name;
+ read_access_locked: coverpoint read_lock;
+ write_access_locked: coverpoint write_lock;
+ operation_type: coverpoint is_write {
+ bins write_op = {1};
+ bins read_op = {0};
+ }
+ unbuf_part_access_cross: cross read_access_locked, write_access_locked, operation_type;
+ endgroup
+
+ function new(string name);
+ unbuf_access_lock_cg = new(name);
+ endfunction
+
+ function void sample(bit read_lock, bit write_lock, bit is_write);
+ unbuf_access_lock_cg.sample(read_lock, write_lock, is_write);
+ endfunction
+endclass
+
+class otp_ctrl_env_cov extends cip_base_env_cov #(.CFG_T(otp_ctrl_env_cfg));
+ `uvm_component_utils(otp_ctrl_env_cov)
+
+ // the base class provides the following handles for use:
+ // otp_ctrl_env_cfg: cfg
+
+ otp_ctrl_unbuf_err_code_cg_wrap unbuf_err_code_cg_wrap[NumPartUnbuf];
+ otp_ctrl_buf_err_code_cg_wrap buf_err_code_cg_wrap[NumPartBuf];
+ otp_ctrl_csr_rd_after_alert_cg_wrap csr_rd_after_alert_cg_wrap;
+ otp_ctrl_unbuf_access_lock_cg_wrap unbuf_access_lock_cg_wrap[NumPartUnbuf];
+
+ bit_toggle_cg_wrap lc_prog_cg;
+ bit_toggle_cg_wrap otbn_req_cg;
+ bit_toggle_cg_wrap status_csr_cg[OtpStatusFieldSize];
+
+ // covergroups
+ // This covergroup collects different conditions when outputs (hwcfg_o, keymgr_key_o) are checked
+ // in scb:
+ // - If lc_esc_en is On
+ // - If each partition is locked (expect LC)
+ covergroup power_on_cg with function sample (bit lc_esc_en, bit[NumPart-2:0] parts_locked);
+ lc_esc: coverpoint lc_esc_en;
+% for k, part in enumerate(parts_without_lc):
+ ${part["name"].lower()}_lock: coverpoint parts_locked[${k}];
+% endfor
+ endgroup
+
+ // This covergroup is sampled only if flash request passed scb check.
+ covergroup flash_req_cg with function sample (int index, bit locked);
+ flash_index: coverpoint index {
+ bins flash_data_key = {FlashDataKey};
+ bins flash_addr_key = {FlashAddrKey};
+ illegal_bins il = default;
+ }
+ secret1_lock: coverpoint locked;
+ flash_req_lock_cross: cross flash_index, secret1_lock;
+ endgroup
+
+ // This covergroup is sampled only if sram request passed scb check.
+ covergroup sram_req_cg with function sample (int index, bit locked);
+ sram_index: coverpoint index {
+ bins sram_key[NumSramKeyReqSlots] = {[0:(NumSramKeyReqSlots-1)]};
+ illegal_bins il = default;
+ }
+ secret1_lock: coverpoint locked;
+ sram_req_lock_cross: cross sram_index, secret1_lock;
+ endgroup
+
+ // This covergroup is sampled only if keymgr output passed scb check.
+ covergroup keymgr_o_cg with function sample (bit lc_seed_hw_rd_en, bit locked);
+ keymgr_rd_en: coverpoint lc_seed_hw_rd_en;
+ // TODO: probably should add all partitions with keymgr material here.
+ secret2_lock: coverpoint locked;
+ keymgr_output_conditions: cross keymgr_rd_en, secret2_lock;
+ endgroup
+
+ // This covergroup samples dai request being issued after fatal alert is issued.
+ covergroup req_dai_access_after_alert_cg with function sample(bit [TL_DW-1:0] val);
+ req_dai_access_after_alert_issued: coverpoint val {
+ bins dai_write = {DaiWrite};
+ bins dai_read = {DaiRead};
+ bins dai_digest = {DaiDigest};
+ }
+ endgroup
+
+ // This covergroup samples background check being issued after fatal alert is issued.
+ covergroup issue_checks_after_alert_cg with function sample(bit [TL_DW-1:0] val);
+ issue_checks_after_alert_issued: coverpoint val {
+ bins integrity_check = {1};
+ bins consistency_check = {2};
+ }
+ endgroup
+
+ // This covergroup collects DAI err_code value.
+ // DAI access does not have checks, thus no check_fail error.
+ covergroup dai_err_code_cg with function sample(bit [TL_DW-1:0] val, int part_idx);
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins write_blank_err = {OtpMacroWriteBlankError};
+ bins access_err = {OtpAccessError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ partition: coverpoint part_idx {
+% for part in otp_mmap.config["partitions"]:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ bins ${part["name"].lower()} = {${part_name.as_camel_case()}Idx};
+% endfor
+ bins illegal_idx = default;
+ }
+ // LC partition has a separate LCI err_code to collect macro related errors.
+ dai_err_code_for_all_partitions: cross err_code_vals, partition {
+ // Illegal bin - vendor_test partition does not have EccUncorrectable error.
+ illegal_bins vendor_test_ecc_uncorrectable_err =
+ binsof (partition.vendor_test) && binsof (err_code_vals.ecc_uncorr_err);
+ ignore_bins life_cycle_ignore = binsof (partition.life_cycle) &&
+ binsof(err_code_vals) intersect {[OtpMacroError:OtpMacroWriteBlankError]};
+ }
+ endgroup
+
+ // This covergroup collects LCI err_code value.
+ // LCI access does not have digest, thus no access_err. Check_fail, ecc_errors are covered in lc
+ // buffered partition instead of LCI here.
+ covergroup lci_err_code_cg with function sample(bit [TL_DW-1:0] val);
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins write_blank_err = {OtpMacroWriteBlankError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ covergroup dai_access_secret2_cg with function sample(bit lc_rw_en, dai_cmd_e dai_cmd);
+ lc_creator_seed_sw_rw_en: coverpoint lc_rw_en;
+ dai_access_cmd: coverpoint dai_cmd {
+ bins dai_rd = {DaiRead};
+ bins dai_wr = {DaiWrite};
+ bins dai_digest = {DaiDigest};
+ }
+ dai_access_secret2: cross lc_creator_seed_sw_rw_en, dai_access_cmd;
+ endgroup
+
+ function new(string name, uvm_component parent);
+ super.new(name, parent);
+ // Create coverage from local covergroups.
+ power_on_cg = new();
+ flash_req_cg = new();
+ sram_req_cg = new();
+ keymgr_o_cg = new();
+ req_dai_access_after_alert_cg = new();
+ issue_checks_after_alert_cg = new();
+ dai_err_code_cg = new();
+ lci_err_code_cg = new();
+ dai_access_secret2_cg = new();
+ endfunction : new
+
+ virtual function void build_phase(uvm_phase phase);
+ super.build_phase(phase);
+ // Create instances from bit_toggle_cg_wrapper.
+ lc_prog_cg = new("lc_prog_cg", "", 0);
+ otbn_req_cg = new("otbn_req_cg", "", 0);
+ foreach (status_csr_cg[i]) begin
+ otp_status_e index = otp_status_e'(i);
+ status_csr_cg[i]= new(index.name, "status_csr_cg", 0);
+ end
+
+ // Create instances from external wrapper classes.
+ csr_rd_after_alert_cg_wrap = new(cfg.ral);
+ foreach (unbuf_err_code_cg_wrap[i]) begin
+ otp_status_e index = otp_status_e'(i);
+ unbuf_err_code_cg_wrap[i] = new($sformatf("unbuf_err_code_cg_wrap[%0s]", index.name));
+ end
+ foreach (buf_err_code_cg_wrap[i]) begin
+ otp_status_e index = otp_status_e'(i + 2);
+ buf_err_code_cg_wrap[i] = new($sformatf("buf_err_code_cg_wrap[%0s]", index.name));
+ end
+ foreach (unbuf_access_lock_cg_wrap[i]) begin
+ part_idx_e index = part_idx_e'(i);
+ unbuf_access_lock_cg_wrap[i] = new($sformatf("buf_err_code_cg_wrap[%0s]", index.name));
+ end
+ endfunction
+
+ function void collect_status_cov(bit [TL_DW-1:0] val);
+ foreach (status_csr_cg[i]) begin
+ status_csr_cg[i].sample(val[i]);
+ end
+ endfunction
+
+ // Collect coverage for err_code when it is a compact multi-reg. For DAI error it uses the given
+ // access_part_idx as the target of the DAI access.
+ function void collect_compact_err_code_cov(bit [TL_DW-1:0] val, int access_part_idx = DaiIdx);
+ dv_base_reg_field err_code_flds[$];
+ cfg.ral.err_code[0].get_dv_base_reg_fields(err_code_flds);
+ foreach (err_code_flds[part]) begin
+ collect_err_code_cov(part, get_field_val(err_code_flds[part], val), access_part_idx);
+ end
+ endfunction
+
+ // Collect coverage for a given partition error_code. For DAI error it uses the given
+ // access_part_idx as the target of the DAI access.
+ function void collect_err_code_cov(int part_idx, bit [TL_DW-1:0] val,
+ int access_part_idx = DaiIdx);
+ case (part_idx)
+% for part in otp_mmap.config["partitions"]:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ Otp${part_name.as_camel_case()}ErrIdx: begin
+ % if part in unbuffered_parts:
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ % elif part in buffered_parts:
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ % endif
+ end
+% endfor
+ OtpDaiErrIdx: begin
+ dai_err_code_cg.sample(val, access_part_idx);
+ end
+ OtpLciErrIdx: begin
+ lci_err_code_cg.sample(val);
+ end
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid err_code index %0d", part_idx))
+ end
+ endcase
+ endfunction
+endclass
diff --git a/src/fuse_ctrl/data/otp_ctrl_env_pkg.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_env_pkg.sv.tpl
new file mode 100755
index 0000000..08c86cb
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_env_pkg.sv.tpl
@@ -0,0 +1,265 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] in ["Buffered", "Unbuffered"]]
+otp_size_as_hex_text = f'{(2 ** otp_mmap.config["otp"]["byte_addr_width"]):x}'
+%>\
+package otp_ctrl_env_pkg;
+ // dep packages
+ import uvm_pkg::*;
+ import top_pkg::*;
+ import dv_utils_pkg::*;
+ import dv_lib_pkg::*;
+ import dv_base_reg_pkg::*;
+ import tl_agent_pkg::*;
+ import cip_base_pkg::*;
+ import csr_utils_pkg::*;
+ import push_pull_agent_pkg::*;
+ import otp_ctrl_core_ral_pkg::*;
+ import otp_ctrl_prim_ral_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import lc_ctrl_pkg::*;
+ import lc_ctrl_state_pkg::*;
+ import lc_ctrl_dv_utils_pkg::*;
+ import mem_bkdr_util_pkg::*;
+ import otp_scrambler_pkg::*;
+ import sec_cm_pkg::*;
+
+ // macro includes
+ `include "uvm_macros.svh"
+ `include "dv_macros.svh"
+
+ // parameters
+ parameter string LIST_OF_ALERTS[] = {"fatal_macro_error",
+ "fatal_check_error",
+ "fatal_bus_integ_error",
+ "fatal_prim_otp_alert",
+ "recov_prim_otp_alert"};
+ parameter uint NUM_ALERTS = 5;
+ parameter uint NUM_EDN = 1;
+
+ parameter uint DIGEST_SIZE = 8;
+ parameter uint SW_WINDOW_BASE_ADDR = 'h${otp_size_as_hex_text};
+ parameter uint SW_WINDOW_SIZE = NumSwCfgWindowWords * 4;
+
+ parameter uint TL_SIZE = (TL_DW / 8);
+ // LC has its own storage in scb
+ // we can use the LC offset here because it will always be the last partition.
+ parameter uint OTP_ARRAY_SIZE = LcTransitionCntOffset / TL_SIZE;
+
+ parameter int OTP_ADDR_WIDTH = OtpByteAddrWidth-2;
+
+ parameter uint NUM_PRIM_REG = 8;
+
+ // sram rsp data has 1 bit for seed_valid, the rest are for key and nonce
+ parameter uint SRAM_DATA_SIZE = 1 + SramKeyWidth + SramNonceWidth;
+ // otbn rsp data has 1 bit for seed_valid, the rest are for key and nonce
+ parameter uint OTBN_DATA_SIZE = 1 + OtbnKeyWidth + OtbnNonceWidth;
+ // flash rsp data has 1 bit for seed_valid, the rest are for key
+ parameter uint FLASH_DATA_SIZE = 1 + FlashKeyWidth;
+ // lc program data has lc_state data and lc_cnt data
+ parameter uint LC_PROG_DATA_SIZE = LcStateWidth + LcCountWidth;
+
+ parameter uint NUM_SRAM_EDN_REQ = 12;
+ parameter uint NUM_OTBN_EDN_REQ = 10;
+
+ parameter uint CHK_TIMEOUT_CYC = 40;
+
+ // When fatal alert triggered, all partitions and the DAI & LCI go to error state and status will
+ // be set to 1.
+ parameter bit [NumErrorEntries-1:0] FATAL_EXP_STATUS = '1;
+
+ // lc does not have dai access
+ parameter int PART_BASE_ADDRS [NumPart-1] = {
+% for part in parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ ${part_name_camel}Offset${"" if loop.last else ","}
+% endfor
+ };
+
+ // lc does not have digest
+ parameter int PART_OTP_DIGEST_ADDRS [NumPart-1] = {
+% for part in parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+% if part["sw_digest"] or part["hw_digest"]:
+ ${part_name_camel}DigestOffset >> 2${"" if loop.last else ","}
+% else:
+ -1${"" if loop.last else ","} // This partition does not have a digest.
+% endif
+% endfor
+ };
+
+ // types
+ typedef enum bit [1:0] {
+ OtpOperationDone,
+ OtpErr,
+ NumOtpCtrlIntr
+ } otp_intr_e;
+
+ typedef enum bit [5:0] {
+% for part in otp_mmap.config["partitions"]:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ Otp${part_name_camel}ErrIdx,
+% endfor
+ OtpDaiErrIdx,
+ OtpLciErrIdx,
+ OtpTimeoutErrIdx,
+ OtpLfsrFsmErrIdx,
+ OtpScramblingFsmErrIdx,
+ OtpDerivKeyFsmErrIdx,
+ OtpBusIntegErrorIdx,
+ OtpDaiIdleIdx,
+ OtpCheckPendingIdx,
+ OtpStatusFieldSize
+ } otp_status_e;
+
+ typedef enum bit [2:0] {
+ OtpNoError,
+ OtpMacroError,
+ OtpMacroEccCorrError,
+ OtpMacroEccUncorrError,
+ OtpMacroWriteBlankError,
+ OtpAccessError,
+ OtpCheckFailError,
+ OtpFsmStateError
+ } otp_err_code_e;
+
+ typedef enum bit [1:0] {
+ OtpNoEccErr,
+ OtpEccCorrErr,
+ OtpEccUncorrErr
+ } otp_ecc_err_e;
+
+ typedef enum bit [1:0] {
+ OtpNoAlert,
+ OtpCheckAlert,
+ OtpMacroAlert
+ } otp_alert_e;
+
+ typedef struct packed {
+ bit read_lock;
+ bit write_lock;
+ } otp_part_access_lock_t;
+
+ // OTP conditions when driving specific port.
+ typedef enum bit [2:0] {
+ DuringOTPInit,
+ DuringOTPDaiBusy,
+ DuringOTPDaiDigest,
+ DuringOTPRead,
+ DriveRandomly
+ } port_drive_condition_e;
+
+ typedef virtual otp_ctrl_if otp_ctrl_vif;
+
+ parameter otp_err_code_e OTP_TERMINAL_ERRS[4] = {OtpMacroEccUncorrError,
+ OtpCheckFailError,
+ OtpFsmStateError,
+ OtpMacroError};
+
+ // functions
+ function automatic int get_part_index(bit [TL_DW-1:0] addr);
+ int index;
+ for (index = 0; index < NumPart; index++) begin
+ if (PartInfo[index].offset > addr) begin
+ index--;
+ break;
+ end
+ end
+ if (index == NumPart) index--;
+ return index;
+ endfunction
+
+ function automatic bit is_secret(bit [TL_DW-1:0] addr);
+ int part_index = get_part_index(addr);
+ return PartInfo[part_index].secret;
+ endfunction
+
+ function automatic bit part_has_digest(int part_idx);
+ return PartInfo[part_idx].hw_digest || PartInfo[part_idx].sw_digest;
+ endfunction
+
+ function automatic bit part_has_hw_digest(int part_idx);
+ return PartInfo[part_idx].hw_digest;
+ endfunction
+
+ function automatic bit is_sw_digest(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ if (PartInfo[part_idx].sw_digest) begin
+ // If the partition contains a digest, it will be located in the last 64bit of the partition.
+ return {addr[TL_DW-1:3], 3'b0} == ((PartInfo[part_idx].offset + PartInfo[part_idx].size) - 8);
+ end else begin
+ return 0;
+ end
+ endfunction
+
+ function automatic bit is_digest(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ if (PartInfo[part_idx].sw_digest || PartInfo[part_idx].hw_digest) begin
+ // If the partition contains a digest, it will be located in the last 64bit of the partition.
+ return {addr[TL_DW-1:3], 3'b0} == ((PartInfo[part_idx].offset + PartInfo[part_idx].size) - 8);
+ end else begin
+ return 0;
+ end
+ endfunction
+
+ function automatic bit is_sw_part(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ return is_sw_part_idx(part_idx);
+ endfunction
+
+ function automatic bit is_sw_part_idx(int part_idx);
+ return (PartInfo[part_idx].variant == Unbuffered);
+ endfunction
+
+ function automatic bit is_hw_part(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ return is_hw_part_idx(part_idx);
+ endfunction
+
+ function automatic bit is_hw_part_idx(int part_idx);
+ return (PartInfo[part_idx].variant == Buffered);
+ endfunction
+
+ // Returns true if this partition supports ECC. Otherwise, no ECC errors are reported, and
+ // the single bit errors are not corrected.
+ function automatic bit part_has_integrity(int part_idx);
+ return PartInfo[part_idx].integrity;
+ endfunction
+
+ // Resolve an offset within the software window as an offset within the whole otp_ctrl block.
+ function automatic bit [TL_AW-1:0] get_sw_window_offset(bit [TL_AW-1:0] dai_addr);
+ return dai_addr + SW_WINDOW_BASE_ADDR;
+ endfunction
+
+ function automatic bit [TL_DW-1:0] normalize_dai_addr(bit [TL_DW-1:0] dai_addr);
+ normalize_dai_addr = (is_secret(dai_addr) || is_digest(dai_addr)) ? dai_addr >> 3 << 3 :
+ dai_addr >> 2 << 2;
+ endfunction
+
+ // package sources
+ `include "otp_ctrl_ast_inputs_cfg.sv"
+ `include "otp_ctrl_env_cfg.sv"
+ `include "otp_ctrl_env_cov.sv"
+ `include "otp_ctrl_virtual_sequencer.sv"
+ `include "otp_ctrl_scoreboard.sv"
+ `include "otp_ctrl_env.sv"
+ `include "otp_ctrl_vseq_list.sv"
+
+endpackage
diff --git a/src/fuse_ctrl/data/otp_ctrl_fixes.json b/src/fuse_ctrl/data/otp_ctrl_fixes.json
new file mode 100644
index 0000000..9f42ef7
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_fixes.json
@@ -0,0 +1,1925 @@
+{
+ "name": "caliptra_otp_ctrl",
+ "human_name": " Caliptra One-Time Programmable Memory COntroller",
+ "one_line_desc": "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ "one_paragraph_desc": "One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.\nOn top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.\nIt features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.",
+ "cip_id": "16",
+ "design_spec": "../doc",
+ "dv_doc": "../doc/dv",
+ "hw_checklist": "../doc/checklist",
+ "sw_checklist": "/sw/device/lib/dif/dif_otp_ctrl",
+ "revisions": [
+ {
+ "version": "0.1.0",
+ "life_stage": "L1",
+ "design_stage": "D2",
+ "verification_stage": "V2",
+ "dif_stage": "S1",
+ "commit_id": "127b109e2fab9336e830158abe449a3922544ded",
+ "notes": ""
+ },
+ {
+ "version": "1.0.0",
+ "life_stage": "L1",
+ "design_stage": "D3",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ },
+ {
+ "version": "2.0.0",
+ "life_stage": "L1",
+ "design_stage": "D2S",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ }
+ ],
+ "clocking": [
+ {
+ "clock": "clk_i",
+ "reset": "rst_ni",
+ "primary": true
+ },
+ {
+ "clock": "clk_edn_i",
+ "reset": "rst_edn_ni"
+ }
+ ],
+ "scan": "true",
+ "scan_reset": "true",
+ "scan_en": "true",
+ "bus_interfaces": [
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "core"
+ },
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "prim",
+ "hier_path": "u_otp.gen_generic.u_impl_generic.u_reg_top"
+ }
+ ],
+ "available_output_list": [
+ {
+ "name": "test",
+ "width": 8,
+ "desc": "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+ "interrupt_list": [
+ {
+ "name": "otp_operation_done",
+ "desc": "A direct access command or digest calculation operation has completed."
+ },
+ {
+ "name": "otp_error",
+ "desc": "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+ "alert_list": [
+ {
+ "name": "fatal_macro_error",
+ "desc": "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array."
+ },
+ {
+ "name": "fatal_check_error",
+ "desc": "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers."
+ },
+ {
+ "name": "fatal_bus_integ_error",
+ "desc": "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ },
+ {
+ "name": "fatal_prim_otp_alert",
+ "desc": "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ },
+ {
+ "name": "recov_prim_otp_alert",
+ "desc": "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+ "param_list": [
+ {
+ "name": "MemInitFile",
+ "desc": "VMEM file to initialize the OTP macro.",
+ "type": "",
+ "default": "\"\"",
+ "expose": "true",
+ "local": "false"
+ },
+ {
+ "name": "RndCnstLfsrSeed",
+ "desc": "Compile-time random bits for initial LFSR seed",
+ "type": "otp_ctrl_pkg::lfsr_seed_t",
+ "randcount": "40",
+ "randtype": "data"
+ },
+ {
+ "name": "RndCnstLfsrPerm",
+ "desc": "Compile-time random permutation for LFSR output",
+ "type": "otp_ctrl_pkg::lfsr_perm_t",
+ "randcount": "40",
+ "randtype": "perm"
+ },
+ {
+ "name": "RndCnstScrmblKeyInit",
+ "desc": "Compile-time random permutation for scrambling key/nonce register reset value",
+ "type": "otp_ctrl_pkg::scrmbl_key_init_t",
+ "randcount": "256",
+ "randtype": "data"
+ },
+ {
+ "name": "NumSramKeyReqSlots",
+ "desc": "Number of key slots",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OtpByteAddrWidth",
+ "desc": "Width of the OTP byte address.",
+ "type": "int",
+ "default": "12",
+ "local": "true"
+ },
+ {
+ "name": "NumErrorEntries",
+ "desc": "Number of error register entries.",
+ "type": "int",
+ "default": "9",
+ "local": "true"
+ },
+ {
+ "name": "NumDaiWords",
+ "desc": "Number of 32bit words in the DAI.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumDigestWords",
+ "desc": "Size of the digest fields in 32bit words.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumSwCfgWindowWords",
+ "desc": "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ "type": "int",
+ "default": "1024",
+ "local": "true"
+ },
+ {
+ "name": "NumPart",
+ "desc": "Number of partitions",
+ "type": "int",
+ "default": "7",
+ "local": "true"
+ },
+ {
+ "name": "NumPartUnbuf",
+ "desc": "Number of unbuffered partitions",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumPartBuf",
+ "desc": "Number of buffered partitions (including 1 lifecycle partition)",
+ "type": "int",
+ "default": "5",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestOffset",
+ "desc": "Offset of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestSize",
+ "desc": "Size of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "ScratchOffset",
+ "desc": "Offset of SCRATCH",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "ScratchSize",
+ "desc": "Size of SCRATCH",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestOffset",
+ "desc": "Offset of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestSize",
+ "desc": "Size of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesOffset",
+ "desc": "Offset of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesSize",
+ "desc": "Size of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "3736",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnOffset",
+ "desc": "Offset of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnSize",
+ "desc": "Size of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnOffset",
+ "desc": "Offset of RUNTIME_SVN",
+ "type": "int",
+ "default": "68",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnSize",
+ "desc": "Size of RUNTIME_SVN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifyOffset",
+ "desc": "Offset of LMS_VERIFY",
+ "type": "int",
+ "default": "84",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifySize",
+ "desc": "Size of LMS_VERIFY",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationOffset",
+ "desc": "Offset of LMS_REVOCATION",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationSize",
+ "desc": "Size of LMS_REVOCATION",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "92",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashOffset",
+ "desc": "Offset of OWNER_PK_HASH",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashSize",
+ "desc": "Size of OWNER_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrOffset",
+ "desc": "Offset of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "144",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrSize",
+ "desc": "Size of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdOffset",
+ "desc": "Offset of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "240",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdSize",
+ "desc": "Size of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdOffset",
+ "desc": "Offset of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "256",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdSize",
+ "desc": "Size of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestOffset",
+ "desc": "Offset of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "3792",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestSize",
+ "desc": "Size of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Offset",
+ "desc": "Offset of the SECRET0 partition",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Size",
+ "desc": "Size of the SECRET0 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenOffset",
+ "desc": "Offset of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenSize",
+ "desc": "Size of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenOffset",
+ "desc": "Offset of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "3816",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenSize",
+ "desc": "Size of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestOffset",
+ "desc": "Offset of SECRET0_DIGEST",
+ "type": "int",
+ "default": "3832",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestSize",
+ "desc": "Size of SECRET0_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Offset",
+ "desc": "Offset of the SECRET1 partition",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Size",
+ "desc": "Size of the SECRET1 partition",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedOffset",
+ "desc": "Offset of UDS_SEED",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedSize",
+ "desc": "Size of UDS_SEED",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestOffset",
+ "desc": "Offset of SECRET1_DIGEST",
+ "type": "int",
+ "default": "3888",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestSize",
+ "desc": "Size of SECRET1_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Offset",
+ "desc": "Offset of the SECRET2 partition",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Size",
+ "desc": "Size of the SECRET2 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropyOffset",
+ "desc": "Offset of FIELD_ENTROPY",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropySize",
+ "desc": "Size of FIELD_ENTROPY",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestOffset",
+ "desc": "Offset of SECRET2_DIGEST",
+ "type": "int",
+ "default": "3928",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestSize",
+ "desc": "Size of SECRET2_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Offset",
+ "desc": "Offset of the SECRET3 partition",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Size",
+ "desc": "Size of the SECRET3 partition",
+ "type": "int",
+ "default": "72",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenOffset",
+ "desc": "Offset of RMA_TOKEN",
+ "type": "int",
+ "default": "3984",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenSize",
+ "desc": "Size of RMA_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestOffset",
+ "desc": "Offset of SECRET3_DIGEST",
+ "type": "int",
+ "default": "4000",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestSize",
+ "desc": "Size of SECRET3_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleOffset",
+ "desc": "Offset of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleSize",
+ "desc": "Size of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntOffset",
+ "desc": "Offset of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntSize",
+ "desc": "Size of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "LcStateOffset",
+ "desc": "Offset of LC_STATE",
+ "type": "int",
+ "default": "4056",
+ "local": "true"
+ },
+ {
+ "name": "LcStateSize",
+ "desc": "Size of LC_STATE",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ }
+ ],
+ "inter_signal_list": [
+ {
+ "struct": "",
+ "type": "io",
+ "name": "otp_ext_voltage_h",
+ "act": "none",
+ "default": "'0",
+ "package": ""
+ },
+ {
+ "struct": "otp_ast_req",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals to AST (VDD domain)."
+ },
+ {
+ "struct": "otp_ast_rsp",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq_h",
+ "act": "rcv",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals coming from AST (VCC domain)."
+ },
+ {
+ "struct": "edn",
+ "type": "req_rsp",
+ "name": "edn",
+ "act": "req",
+ "package": "edn_pkg",
+ "desc": "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ },
+ {
+ "struct": "pwr_otp",
+ "type": "req_rsp",
+ "name": "pwr_otp",
+ "act": "rsp",
+ "default": "'0",
+ "package": "pwrmgr_pkg",
+ "desc": "Initialization request/acknowledge from/to power manager."
+ },
+ {
+ "struct": "lc_otp_vendor_test",
+ "type": "req_rsp",
+ "name": "lc_otp_vendor_test",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Vendor test control signals from/to the life cycle TAP."
+ },
+ {
+ "struct": "lc_otp_program",
+ "type": "req_rsp",
+ "name": "lc_otp_program",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state transition interface."
+ },
+ {
+ "struct": "otp_lc_data",
+ "type": "uni",
+ "name": "otp_lc_data",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state output holding the current life cycle state,\nthe value of the transition counter and the tokens needed for life cycle transitions."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_escalate_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle escalation enable coming from life cycle controller.\nThis signal moves all FSMs within OTP into the error state."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_creator_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_owner_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the OWNER_SEED."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_seed_hw_rd_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Seed read enable coming from life cycle controller.\nThis signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_dft_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Test enable qualifier coming from life cycle controller.\nThis signals enables the TL-UL access port to the proprietary OTP IP."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_check_byp_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle partition check bypass signal.\nThis signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures."
+ },
+ {
+ "struct": "otp_keymgr_key",
+ "type": "uni",
+ "name": "otp_keymgr_key",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "flash_otp_key",
+ "type": "req_rsp",
+ "name": "flash_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for FLASH scrambling."
+ },
+ {
+ "struct": "sram_otp_key",
+ "width": "4",
+ "type": "req_rsp",
+ "name": "sram_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Array with key derivation interfaces for SRAM scrambling devices."
+ },
+ {
+ "struct": "otbn_otp_key",
+ "type": "req_rsp",
+ "name": "otbn_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for OTBN scrambling devices."
+ },
+ {
+ "struct": "otp_broadcast",
+ "type": "uni",
+ "name": "otp_broadcast",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_part_pkg",
+ "desc": "Output of the HW partitions with breakout data types."
+ },
+ {
+ "struct": "ast_obs_ctrl",
+ "type": "uni",
+ "name": "obs_ctrl",
+ "act": "rcv",
+ "package": "ast_pkg",
+ "desc": "AST observability control signals."
+ },
+ {
+ "struct": "logic",
+ "type": "uni",
+ "name": "otp_obs",
+ "act": "req",
+ "width": "8",
+ "package": "",
+ "desc": "AST observability bus."
+ }
+ ],
+ "countermeasures": [
+ {
+ "name": "BUS.INTEGRITY",
+ "desc": "End-to-end bus integrity scheme."
+ },
+ {
+ "name": "SECRET.MEM.SCRAMBLE",
+ "desc": "Secret partitions are scrambled with a full-round PRESENT cipher."
+ },
+ {
+ "name": "PART.MEM.DIGEST",
+ "desc": "Integrity of buffered partitions is ensured via a 64bit digest."
+ },
+ {
+ "name": "DAI.FSM.SPARSE",
+ "desc": "The direct access interface FSM is sparsely encoded."
+ },
+ {
+ "name": "KDI.FSM.SPARSE",
+ "desc": "The key derivation interface FSM is sparsely encoded."
+ },
+ {
+ "name": "LCI.FSM.SPARSE",
+ "desc": "The life cycle interface FSM is sparsely encoded."
+ },
+ {
+ "name": "PART.FSM.SPARSE",
+ "desc": "The partition FSMs are sparsely encoded."
+ },
+ {
+ "name": "SCRMBL.FSM.SPARSE",
+ "desc": "The scramble datapath FSM is sparsely encoded."
+ },
+ {
+ "name": "TIMER.FSM.SPARSE",
+ "desc": "The background check timer FSM is sparsely encoded."
+ },
+ {
+ "name": "DAI.CTR.REDUN",
+ "desc": "The direct access interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_SEED.CTR.REDUN",
+ "desc": "The key derivation interface counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_ENTROPY.CTR.REDUN",
+ "desc": "The key derivation entropy counter employs a cross-counter implementation."
+ },
+ {
+ "name": "LCI.CTR.REDUN",
+ "desc": "The life cycle interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "PART.CTR.REDUN",
+ "desc": "The address counter of buffered partitions employs a cross-counter implementation."
+ },
+ {
+ "name": "SCRMBL.CTR.REDUN",
+ "desc": "The srambling datapath counter employs a cross-counter implementation."
+ },
+ {
+ "name": "TIMER_INTEG.CTR.REDUN",
+ "desc": "The background integrity check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER_CNSTY.CTR.REDUN",
+ "desc": "The background consistency check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER.LFSR.REDUN",
+ "desc": "The background check LFSR is duplicated."
+ },
+ {
+ "name": "DAI.FSM.LOCAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "LCI.FSM.LOCAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "KDI.FSM.LOCAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "PART.FSM.LOCAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "SCRMBL.FSM.LOCAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "TIMER.FSM.LOCAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "DAI.FSM.GLOBAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "LCI.FSM.GLOBAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "KDI.FSM.GLOBAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.FSM.GLOBAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "SCRMBL.FSM.GLOBAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "TIMER.FSM.GLOBAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.DATA_REG.INTEGRITY",
+ "desc": "All partition buffer registers are protected with ECC on 64bit blocks."
+ },
+ {
+ "name": "PART.DATA_REG.BKGN_CHK",
+ "desc": "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ },
+ {
+ "name": "PART.MEM.REGREN",
+ "desc": "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ },
+ {
+ "name": "PART.MEM.SW_UNREADABLE",
+ "desc": "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ },
+ {
+ "name": "PART.MEM.SW_UNWRITABLE",
+ "desc": "All partitions become unwritable by software once they are locked via the digest."
+ },
+ {
+ "name": "LC_PART.MEM.SW_NOACCESS",
+ "desc": "The life cycle partition is not directly readable nor writable via software."
+ },
+ {
+ "name": "ACCESS.CTRL.MUBI",
+ "desc": "The access control signals going from the partitions to the DAI are MUBI encoded."
+ },
+ {
+ "name": "TOKEN_VALID.CTRL.MUBI",
+ "desc": "The token valid signals going to the life cycle controller are MUBI encoded."
+ },
+ {
+ "name": "LC_CTRL.INTERSIG.MUBI",
+ "desc": "The life cycle control signals are multibit encoded."
+ },
+ {
+ "name": "TEST.BUS.LC_GATED",
+ "desc": "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ },
+ {
+ "name": "TEST_TL_LC_GATE.FSM.SPARSE",
+ "desc": "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ },
+ {
+ "name": "DIRECT_ACCESS.CONFIG.REGWEN",
+ "desc": "The direct access CSRs are REGWEN protected."
+ },
+ {
+ "name": "CHECK_TRIGGER.CONFIG.REGWEN",
+ "desc": "The check trigger CSR is REGWEN protected."
+ },
+ {
+ "name": "CHECK.CONFIG.REGWEN",
+ "desc": "The check CSR is REGWEN protected."
+ },
+ {
+ "name": "MACRO.MEM.INTEGRITY",
+ "desc": " The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.\n The scheme is able to at least detect single bit errors.\n "
+ },
+ {
+ "name": "MACRO.MEM.CM",
+ "desc": "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ],
+ "features": [
+ {
+ "name": "OTP_CTRL.PARTITION.VENDOR_TEST",
+ "desc": "Vendor test partition is used for OTP programming smoke check during manufacturing flow.\nIn this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.\nInstead the error will be reported as correctable ECC error."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.CREATOR_SW_CFG",
+ "desc": "During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition."
+ },
+ {
+ "name": "OTP_CTRL.INIT",
+ "desc": "When power is up, OTP controller reads devices status.\nAfter all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.\nOnce all integrity checks are complete, the controller marks outputs as valid."
+ },
+ {
+ "name": "OTP_CTRL.PROGRAM",
+ "desc": "All other partitions except life cycle partition are programmed through DAI interface.\nAnd once non-zero digest is programmed to these partition, no further write access is allowed.\nLife cycle partition is programmed by LC_CTRL."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET0",
+ "desc": "Obfuscated UDS Seed"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET1",
+ "desc": "Obfuscated Field Entropy"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.LIFE_CYCLE",
+ "desc": "LC state, LC transition count.\nThis feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK",
+ "desc": "Following partitions can be read lockable by CSR.\n - VENDOR_TEST\n - CREATOR_SW_CFG\n Following partitions can be read lockable by writing digest.\n - SECRET0\n - SECRET1\nAll read attempt to these partitions after read is locked will trigger AccessError (recoverable)."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK",
+ "desc": "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.RECOVERABLE",
+ "desc": "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.FATAL",
+ "desc": "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD",
+ "desc": "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD",
+ "desc": "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ],
+ "regwidth": "32",
+ "registers": [
+ {
+ "name": "STATUS",
+ "desc": "OTP status register.",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "bits": "31:0",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "VENDOR_TEST_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "1",
+ "name": "NON_SECRET_FUSES_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "2",
+ "name": "SECRET0_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "3",
+ "name": "SECRET1_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "4",
+ "name": "SECRET2_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "5",
+ "name": "SECRET3_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "6",
+ "name": "LIFE_CYCLE_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "7",
+ "name": "DAI_ERROR",
+ "desc": "Set to 1 if an error occurred in the DAI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "8",
+ "name": "LCI_ERROR",
+ "desc": "Set to 1 if an error occurred in the LCI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "9",
+ "name": "TIMEOUT_ERROR",
+ "desc": "Set to 1 if an integrity or consistency check times out.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "10",
+ "name": "LFSR_FSM_ERROR",
+ "desc": "Set to 1 if the LFSR timer FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "11",
+ "name": "SCRAMBLING_FSM_ERROR",
+ "desc": "Set to 1 if the scrambling datapath FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "12",
+ "name": "KEY_DERIV_FSM_ERROR",
+ "desc": "Set to 1 if the key derivation FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "13",
+ "name": "BUS_INTEG_ERROR",
+ "desc": "This bit is set to 1 if a fatal bus integrity fault is detected.\nThis error triggers a fatal_bus_integ_error alert."
+ },
+ {
+ "bits": "14",
+ "name": "DAI_IDLE",
+ "desc": "Set to 1 if the DAI is idle and ready to accept commands."
+ },
+ {
+ "bits": "15",
+ "name": "CHECK_PENDING",
+ "desc": "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "ERR_CODE",
+ "desc": "This register holds information about error conditions that occurred in the agents\ninteracting with the OTP macro via the internal bus. The error codes should be checked\nif the partitions, DAI or LCI flag an error in the !!STATUS register, or when an\n!!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error\ninterrupt, and in addition some errors may trigger either an fatal_macro_error or an\nfatal_check_error alert.",
+ "count": "NumErrorEntries",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "AGENT",
+ "compact": "false",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "2:0",
+ "enum": [
+ {
+ "value": "0",
+ "name": "NO_ERROR",
+ "desc": "No error condition has occurred."
+ },
+ {
+ "value": "1",
+ "name": "MACRO_ERROR",
+ "desc": "Returned if the OTP macro command was invalid or did not complete successfully\ndue to a macro malfunction.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "2",
+ "name": "MACRO_ECC_CORR_ERROR",
+ "desc": "A correctable ECC error has occured during an OTP read operation.\nThe corresponding controller automatically recovers from this error when\nissuing a new command."
+ },
+ {
+ "value": "3",
+ "name": "MACRO_ECC_UNCORR_ERROR",
+ "desc": "An uncorrectable ECC error has occurred during an OTP read operation.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present this may be a sign that the device is malfunctioning.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "4",
+ "name": "MACRO_WRITE_BLANK_ERROR",
+ "desc": "This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.\nThe corresponding controller automatically recovers from this error when issuing a new command.\n\nNote however that the affected OTP word may be left in an inconsistent state if this error occurs.\nThis can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).\n\nIt is important that SW ensures that each word is only written once, since this can render the device useless."
+ },
+ {
+ "value": "5",
+ "name": "ACCESS_ERROR",
+ "desc": "This error indicates that a locked memory region has been accessed.\nThe corresponding controller automatically recovers from this error when issuing a new command."
+ },
+ {
+ "value": "6",
+ "name": "CHECK_FAIL_ERROR",
+ "desc": "An ECC, integrity or consistency mismatch has been detected in the buffer registers.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_check_error alert."
+ },
+ {
+ "value": "7",
+ "name": "FSM_STATE_ERROR",
+ "desc": "The FSM of the corresponding controller has reached an invalid state, or the FSM has\nbeen moved into a terminal error state due to an escalation action via lc_escalate_en_i.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present, this is a sign that the device has fallen victim to\nan invasive attack. This error triggers an fatal_check_error alert."
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "DIRECT_ACCESS_REGWEN",
+ "desc": "Register write enable for all direct access interface registers.",
+ "swaccess": "rw0c",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+
+ "desc": "This bit controls whether the DAI registers can be written.\nWrite 0 to it in order to clear the bit.\n\nNote that the hardware also modulates this bit and sets it to 0 temporarily\nduring an OTP operation such that the corresponding address and data registers\ncannot be modified while an operation is pending. The !!DAI_IDLE status bit\nwill also be set to 0 in such a case.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_CMD",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD",
+ "desc": "Initiates a readout sequence that reads the location specified\nby !!DIRECT_ACCESS_ADDRESS. The command places the data read into\n!!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions)."
+ },
+ {
+ "bits": "1",
+ "name": "WR",
+ "desc": "Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0\nand !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by\n!!DIRECT_ACCESS_ADDRESS."
+ },
+ {
+ "bits": "2",
+ "name": "DIGEST",
+ "desc": "Initiates the digest calculation and locking sequence for the partition specified by\n!!DIRECT_ACCESS_ADDRESS."
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_ADDRESS",
+ "desc": "Address register for direct accesses.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "OtpByteAddrWidth-1:0",
+ "desc": "This is the address for the OTP word to be read or written through\nthe direct access interface. Note that the address is aligned to the access size\ninternally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored\nfor 64bit accesses.\n\nFor the digest calculation command, set this register to the partition base offset."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_WDATA",
+ "desc": "Write data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is being written to.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_RDATA",
+ "desc": "Read data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is read from.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "name": "CHECK_TRIGGER_REGWEN",
+ "desc": "Register write enable for !!CHECK_TRIGGER.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TRIGGER",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "CHECK_TRIGGER_REGWEN",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "INTEGRITY",
+ "desc": "Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts."
+ },
+ {
+ "bits": "1",
+ "name": "CONSISTENCY",
+ "desc": "Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts."
+ }
+ ]
+ },
+ {
+ "name": "CHECK_REGWEN",
+ "desc": "Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency\ncheck does not complete within the timeout window, an error will be flagged in the !!STATUS register,\nan otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should\nbe set to a large value to stay on the safe side. The maximum check time can be upper bounded by the\nnumber of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to\nroughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the\nsafe side. A value of zero disables the timeout mechanism (default).",
+ "resval": 0
+ }
+ ]
+ },
+ {
+ "name": "INTEGRITY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nOnly applies to the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.INTEGRITY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "CONSISTENCY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nThis applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.CONSISTENCY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "VENDOR_TEST_READ_LOCK",
+ "desc": "Runtime read lock for the VENDOR_TEST partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the VENDOR_TEST partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "NON_SECRET_FUSES_READ_LOCK",
+ "desc": "Runtime read lock for the NON_SECRET_FUSES partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the NON_SECRET_FUSES partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "VENDOR_TEST_DIGEST",
+ "desc": " Integrity digest for the VENDOR_TEST partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the VENDOR_TEST partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "NON_SECRET_FUSES_DIGEST",
+ "desc": " Integrity digest for the NON_SECRET_FUSES partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the NON_SECRET_FUSES partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET0_DIGEST",
+ "desc": " Integrity digest for the SECRET0 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET1_DIGEST",
+ "desc": " Integrity digest for the SECRET1 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET2_DIGEST",
+ "desc": " Integrity digest for the SECRET2 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET3_DIGEST",
+ "desc": " Integrity digest for the SECRET3 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "skipto": "0x1000"
+ },
+ {
+ "window": {
+ "name": "SW_CFG_WINDOW",
+ "items": "NumSwCfgWindowWords",
+ "swaccess": "ro",
+ "desc": "Any read to this window directly maps to the corresponding offset in the creator and owner software\nconfig partitions, and triggers an OTP readout of the bytes requested. Note that the transaction\nwill block until OTP readout has completed."
+ }
+ },
+
+ {
+ "name": "CSR0",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "1",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "2",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "26:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR1",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "6:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:7",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14:8",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15:15",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR2",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR3",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "2:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "16",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "17",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "18",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "19",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "20",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "21",
+ "name": "field7",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "22",
+ "name": "field8",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR4",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR5",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:6",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "8",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11:9",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR6",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR7",
+ "desc": "",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "10:8",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_if.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_if.sv.tpl
new file mode 100755
index 0000000..4fac06b
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_if.sv.tpl
@@ -0,0 +1,350 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+unbuf_parts_with_digest = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Unbuffered" and
+ (part["sw_digest"] or part["hw_digest"])]
+parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] in ["Buffered", "Unbuffered"]]
+buf_parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Buffered"]
+%>\
+// This interface collect the broadcast output data from OTP,
+// and drive input requests coming into OTP.
+`define ECC_REG_PATH gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+
+// This only supports buffered partitions.
+`define BUF_PART_OTP_CMD_PATH(i) ${"\\"}
+ tb.dut.gen_partitions[``i``].gen_buffered.u_part_buf.otp_cmd_o
+
+`define LC_PART_OTP_CMD_PATH ${"\\"}
+ tb.dut.gen_partitions[LifeCycleIdx].gen_lifecycle.u_part_buf.otp_cmd_o
+
+`define FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(i) ${"\\"}
+ if (forced_part_access_sel[``i``].read_lock) begin ${"\\"}
+ force tb.dut.part_access[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); ${"\\"}
+ force tb.dut.part_access_dai[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); ${"\\"}
+ end ${"\\"}
+ if (forced_part_access_sel[``i``].write_lock) begin ${"\\"}
+ force tb.dut.part_access[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); ${"\\"}
+ force tb.dut.part_access_dai[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); ${"\\"}
+ end
+
+`ifndef PRIM_GENERIC_OTP_PATH
+ `define PRIM_GENERIC_OTP_PATH${"\\"}
+ tb.dut.u_otp
+`endif
+
+`ifndef PRIM_GENERIC_OTP_CMD_I_PATH
+ `define PRIM_GENERIC_OTP_CMD_I_PATH ${"\\"}
+ `PRIM_GENERIC_OTP_PATH.gen_generic.u_impl_generic.cmd_i
+`endif
+
+interface otp_ctrl_if(input clk_i, input rst_ni);
+ import uvm_pkg::*;
+ import otp_ctrl_env_pkg::*;
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import cip_base_pkg::*;
+
+ // Output from DUT
+ otp_broadcast_t otp_broadcast_o;
+ otp_keymgr_key_t keymgr_key_o;
+ otp_lc_data_t lc_data_o;
+ logic pwr_otp_done_o, pwr_otp_idle_o;
+
+ // Inputs to DUT
+ logic pwr_otp_init_i, scan_en_i, scan_rst_ni, ext_voltage_h_io;
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i, lc_escalate_en_i, lc_check_byp_en_i,
+ lc_creator_seed_sw_rw_en_i, lc_owner_seed_sw_rw_en_i,
+ lc_seed_hw_rd_en_i;
+ prim_mubi_pkg::mubi4_t scanmode_i;
+ otp_ast_rsp_t otp_ast_pwr_seq_h_i;
+ ast_pkg::ast_obs_ctrl_t obs_ctrl_i;
+
+ // Unused in prim_generic_otp memory.
+ logic [OtpTestCtrlWidth-1:0] otp_vendor_test_ctrl_i;
+ logic [OtpTestStatusWidth-1:0] otp_vendor_test_status_o;
+ logic [OtpTestVectWidth-1:0] cio_test_o;
+ logic [OtpTestVectWidth-1:0] cio_test_en_o;
+
+ // Connect with lc_prog push_pull interface.
+ logic lc_prog_req, lc_prog_err;
+ logic lc_prog_err_dly1, lc_prog_no_sta_check;
+
+ // Connect push_pull interfaces ack signals for assertion checks.
+ logic otbn_ack, lc_prog_ack;
+ logic [1:0] flash_acks;
+ logic [NumSramKeyReqSlots-1:0] sram_acks;
+
+ // Variables for internal interface logic.
+ // `lc_escalate_en` is async, take two clock cycles to synchronize.
+ lc_ctrl_pkg::lc_tx_t lc_esc_dly1, lc_esc_dly2;
+
+ // Variable for scoreboard.
+ // For `lc_escalate_en`, any value that is not `Off` is a `On`.
+ bit lc_esc_on;
+
+ // Probe design signal for alert request.
+ logic alert_reqs;
+
+ // Usually the `lc_check_byp_en` will be automatically set to `On` when LC program request is
+ // issued, and stays `On` until reset is issued.
+ // Set this variable to 0 after a LC program request might cause otp checks to fail.
+ bit lc_check_byp_en = 1;
+
+ // Internal veriable to track which sw partitions have ECC reg error.
+ bit [NumPartUnbuf-1:0] force_sw_parts_ecc_reg;
+
+ // DUT configuration object
+ otp_ctrl_ast_inputs_cfg dut_cfg;
+
+ // for DV macros ID
+ string msg_id = "otp_ctrl_if";
+
+ // Lc_err could trigger during LC program, so check intr and status after lc_req is finished.
+ // Lc_err takes one clock cycle to propogate to intr signal. So avoid intr check if it happens
+ // during the transition.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ lc_prog_err_dly1 <= 0;
+ lc_esc_dly1 <= lc_ctrl_pkg::Off;
+ lc_esc_dly2 <= lc_ctrl_pkg::Off;
+ lc_check_byp_en_i <= get_rand_lc_tx_val();
+ lc_esc_on <= 0;
+ end else begin
+ lc_prog_err_dly1 <= lc_prog_err;
+ lc_esc_dly1 <= lc_escalate_en_i;
+ lc_esc_dly2 <= lc_esc_dly1;
+ if (lc_prog_req) begin
+ lc_check_byp_en_i <= lc_check_byp_en ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off;
+ end
+ if (lc_esc_dly2 != lc_ctrl_pkg::Off && !lc_esc_on) begin
+ lc_esc_on <= 1;
+ end
+ end
+ end
+
+ assign lc_prog_no_sta_check = lc_prog_err | lc_prog_err_dly1 | lc_prog_req | lc_esc_on;
+
+ function automatic void drive_pwr_otp_init(logic val);
+ pwr_otp_init_i = val;
+ endfunction
+
+ function automatic void drive_ext_voltage_h_io(logic val);
+ ext_voltage_h_io = val;
+ endfunction
+
+ function automatic void drive_lc_creator_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_creator_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_owner_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_owner_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_dft_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_dft_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_escalate_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_escalate_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_seed_hw_rd_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_seed_hw_rd_en_i = val;
+ endfunction
+
+ function automatic bit under_error_states();
+ return lc_esc_on | alert_reqs;
+ endfunction
+
+ // SW partitions do not have any internal checks.
+ // Here we force internal ECC check to fail.
+ task automatic force_sw_check_fail(
+ bit[NumPartUnbuf-1:0] fail_idx = $urandom_range(1, (1'b1 << NumPartUnbuf) - 1));
+ @(posedge clk_i);
+% for part in unbuf_parts_with_digest:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (fail_idx[${part_name_camel}Idx]) begin
+ force tb.dut.gen_partitions[${part_name_camel}Idx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[${part_name_camel}Idx] = 1;
+ end
+% endfor
+ endtask
+
+ task automatic release_sw_check_fail();
+ @(posedge clk_i);
+% for part in unbuf_parts_with_digest:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (force_sw_parts_ecc_reg[${part_name_camel}Idx]) begin
+ release tb.dut.gen_partitions[${part_name_camel}Idx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[${part_name_camel}Idx] = 0;
+ end
+% endfor
+ endtask
+
+ // Force prim_generic_otp input cmd_i to a invalid value.
+ task automatic force_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ force `PRIM_GENERIC_OTP_CMD_I_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ endtask
+
+ task automatic release_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ release `PRIM_GENERIC_OTP_CMD_I_PATH;
+ endtask
+
+ // Force part_buf partitions output otp_cmd_o to a invalid value.
+ task automatic force_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+% for part in buf_parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ ${part_name_camel}Idx: force `BUF_PART_OTP_CMD_PATH(${part_name_camel}Idx) = prim_otp_pkg::cmd_e'(2'b10);
+% endfor
+ LifeCycleIdx: force `LC_PART_OTP_CMD_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("force invalid otp_cmd_o only supports buffered partitions: %0d", part_idx))
+ end
+ endcase
+ endtask
+
+ task automatic release_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+% for part in buf_parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ ${part_name_camel}Idx: release `BUF_PART_OTP_CMD_PATH(${part_name_camel}Idx);
+% endfor
+ LifeCycleIdx: release `LC_PART_OTP_CMD_PATH;
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("release invalid otp_cmd_o only supports buffered partitions: %0d",
+ part_idx))
+ end
+ endcase
+ endtask
+
+ // This task forces otp_ctrl's internal mubi signals to values that are not mubi::true or mubi::
+ // false. Then scb will check if design treats these values as locking the partition access.
+ task automatic force_part_access_mubi(otp_part_access_lock_t forced_part_access_sel[NumPart-1]);
+ @(posedge clk_i);
+% for part in parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(${part_name_camel}Idx)
+% endfor
+ endtask
+
+ task automatic release_part_access_mubi();
+ @(posedge clk_i);
+ release tb.dut.part_access;
+ release tb.dut.part_access_dai;
+ endtask
+
+ // Connectivity assertions for test related I/Os.
+ `ASSERT(LcOtpTestStatusO_A, otp_vendor_test_status_o == `PRIM_GENERIC_OTP_PATH.test_status_o)
+ `ASSERT(LcOtpTestCtrlI_A, otp_vendor_test_ctrl_i == `PRIM_GENERIC_OTP_PATH.test_ctrl_i)
+
+ `ASSERT(CioTestOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |->
+ ${"##"}[2:3] cio_test_o == `PRIM_GENERIC_OTP_PATH.test_vect_o)
+ `ASSERT(CioTestOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_o == 0)
+ `ASSERT(CioTestEnOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == '1)
+ `ASSERT(CioTestEnOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == 0)
+
+
+ `define OTP_ASSERT_WO_LC_ESC(NAME, SEQ) ${"\\"}
+ `ASSERT(NAME, SEQ, clk_i, !rst_ni || lc_esc_on || alert_reqs)
+
+ // If pwr_otp_idle is set only if pwr_otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpPwrDoneWhenIdle_A, pwr_otp_idle_o |-> pwr_otp_done_o)
+
+ // otp_broadcast_o is valid only when otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOn_A, pwr_otp_done_o |->
+ otp_broadcast_o.valid == lc_ctrl_pkg::On)
+ // If otp_broadcast is Off, then hw partition is not finished calculation,
+ // then otp init is not done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOff_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off |->
+ pwr_otp_done_o == 0)
+ // Once OTP init is done, otp_broadcast_o output value stays stable until next power cycle
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgStable_A, otp_broadcast_o.valid == lc_ctrl_pkg::On |=>
+ $stable(otp_broadcast_o))
+
+ // Otp_keymgr valid is related to part_digest, should not be changed after otp_pwr_init
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable0_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share0_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable1_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share1_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable2_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_seed_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable3_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.owner_seed_valid))
+
+ // During lc_prog_req, either otp_idle will be reset or lc_error is set
+ `OTP_ASSERT_WO_LC_ESC(LcProgReq_A, $rose(lc_prog_req) |=>
+ (pwr_otp_idle_o == 0 || $rose(lc_prog_err)) within lc_prog_req[*1:$])
+
+ // During fatal alert, check if otp outputs revert back to default value.
+ // Wait three clock cycles until error propogates to each FSM states and regs.
+ `define OTP_FATAL_ERR_ASSERT(NAME, SEQ) ${"\\"}
+ `ASSERT(FatalErr``NAME``, alert_reqs |-> ##3 SEQ)
+
+ `OTP_FATAL_ERR_ASSERT(LcDataValid_A, lc_data_o.valid == 0 && lc_data_o.error == 1)
+ `OTP_FATAL_ERR_ASSERT(LcDataState_A, lc_data_o.state ==
+ PartInvDefault[LcStateOffset*8+:LcStateSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataCount_A, lc_data_o.count ==
+ PartInvDefault[LcTransitionCntOffset*8+:LcTransitionCntSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestUnlockToken_A, lc_data_o.test_unlock_token ==
+ PartInvDefault[TestUnlockTokenOffset*8+:TestUnlockTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestExitToken_A, lc_data_o.test_exit_token ==
+ PartInvDefault[TestExitTokenOffset*8+:TestExitTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataRmaToken_A, lc_data_o.rma_token ==
+ PartInvDefault[RmaTokenOffset*8+:RmaTokenSize*8])
+
+ `OTP_FATAL_ERR_ASSERT(KeymgrKeyData_A, keymgr_key_o.creator_root_key_share0 ==
+ PartInvDefault[CreatorRootKeyShare0Offset*8+:CreatorRootKeyShare0Size*8] &&
+ keymgr_key_o.creator_root_key_share1 ==
+ PartInvDefault[CreatorRootKeyShare1Offset*8+:CreatorRootKeyShare1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(HwCfgOValid_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off)
+ `OTP_FATAL_ERR_ASSERT(HwCfg0OData_A, otp_broadcast_o.hw_cfg0_data ==
+ PartInvDefault[HwCfg0Offset*8+:HwCfg0Size*8])
+ `OTP_FATAL_ERR_ASSERT(HwCfg1OData_A, otp_broadcast_o.hw_cfg1_data ==
+ PartInvDefault[HwCfg1Offset*8+:HwCfg1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(LcProgAck_A, lc_prog_ack == 0)
+ `OTP_FATAL_ERR_ASSERT(FlashAcks_A, flash_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(SramAcks_A, sram_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(OtbnAck_A, otbn_ack == 0)
+
+ `undef OTP_ASSERT_WO_LC_ESC
+ `undef OTP_FATAL_ERR_ASSERT
+ `undef ECC_REG_PATH
+ `undef BUF_PART_OTP_CMD_PATH
+ `undef LC_PART_OTP_CMD_PATH
+ `undef PRIM_GENERIC_OTP_PATH
+ `undef PRIM_GENERIC_OTP_CMD_I_PATH
+ `undef FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL
+endinterface
diff --git a/src/fuse_ctrl/data/otp_ctrl_img_dev.hjson b/src/fuse_ctrl/data/otp_ctrl_img_dev.hjson
new file mode 100644
index 0000000..f335116
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_img_dev.hjson
@@ -0,0 +1,75 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Use the gen-otp-img.py script to convert this configuration into
+// a MEM file for preloading the OTP in FPGA synthesis or simulation.
+//
+
+{
+ // 256 bit seed to be used for generation of partition randomized values.
+ // Can be overridden on the command line with the --seed switch.
+ // The default seed was generated using secrets.py module.
+ seed: 85452983286950371191603618368782861611109037138182535346147818831008789508651
+
+ // The partition and item names must correspond with the OTP memory map.
+ partitions: [
+ {
+ name: "SECRET0",
+ lock: "True",
+ items: [
+ {
+ name: "TEST_UNLOCK_TOKEN",
+ value: "",
+ }
+ {
+ name: "TEST_EXIT_TOKEN",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "SECRET1",
+ lock: "True",
+ items: [
+ {
+ name: "UDS_SEED",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "SECRET2",
+ lock: "True",
+ items: [
+ {
+ name: "FIELD_ENTROPY",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "SECRET3",
+ lock: "False",
+ items: [
+ {
+ name: "KEY_MANIFEST_PK_HASH",
+ value: "",
+ }
+ {
+ name: "RMA_TOKEN",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "LIFE_CYCLE",
+ // Can be one of the following strings:
+ // RAW, TEST_UNLOCKED0-3, TEST_LOCKED0-2, DEV, PROD, PROD_END, RMA, SCRAP
+ state: "DEV",
+ // Can range from 0 to 16.
+ // Note that a value of 0 is only permissible in RAW state.
+ count: "5"
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_img_non_secret_fuses.hjson b/src/fuse_ctrl/data/otp_ctrl_img_non_secret_fuses.hjson
new file mode 100644
index 0000000..cdc5e4c
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_img_non_secret_fuses.hjson
@@ -0,0 +1,55 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Use the gen-otp-img.py script to convert this configuration into
+// a MEM file for preloading the OTP in FPGA synthesis or simulation.
+//
+
+{
+ // The partition and item names must correspond with the OTP memory map.
+ partitions: [
+ {
+ name: "NON_SECRET_FUSES",
+ items: [
+ {
+ name: "FMC_KEY_MANIFEST_SVN",
+ value: "",
+ },
+ {
+ name: "RUNTIME_SVN",
+ value: "",
+ },
+ {
+ name: "LMS_VERIFY",
+ value: "",
+ },
+ {
+ name: "LMS_REVOCATION",
+ value: "",
+ },
+ {
+ name: "KEY_MANIFEST_PK_HASH_MASK",
+ value: "",
+ },
+ {
+ name: "OWNER_PK_HASH",
+ value: "",
+ },
+ {
+ name: "IDEVID_CERT_ATTR",
+ value: "",
+ },
+ {
+ name: "IDEVID_MANUF_HSM_ID",
+ value: "",
+ },
+ {
+ name: "SOC_STEPPING_ID",
+ value: "",
+ },
+
+ ],
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_img_rma.hjson b/src/fuse_ctrl/data/otp_ctrl_img_rma.hjson
new file mode 100644
index 0000000..f28e69c
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_img_rma.hjson
@@ -0,0 +1,77 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Use the gen-otp-img.py script to convert this configuration into
+// a MEM file for preloading the OTP in FPGA synthesis or simulation.
+//
+
+{
+ // Seed to be used for generation of partition randomized values.
+ // Can be overridden on the command line with the --seed switch.
+ // The default seed was generated using secrets.py module.
+ seed: 52408960416235844780753299194502148156786072650816676092165912261205302331741
+
+ // The partition and item names must correspond with the OTP memory map.
+ partitions: [
+ {
+ name: "SECRET0",
+ lock: "True",
+ items: [
+ {
+ name: "TEST_UNLOCK_TOKEN",
+ value: "",
+ }
+ {
+ name: "TEST_EXIT_TOKEN",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "SECRET1",
+ lock: "True",
+ items: [
+ {
+ name: "FLASH_ADDR_KEY_SEED",
+ value: "",
+ }
+ {
+ name: "FLASH_DATA_KEY_SEED",
+ value: "",
+ }
+ {
+ name: "SRAM_DATA_KEY_SEED",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "SECRET2",
+ lock: "False",
+ items: [
+ {
+ name: "RMA_TOKEN",
+ value: "",
+ }
+ {
+ name: "CREATOR_ROOT_KEY_SHARE0",
+ value: "",
+ }
+ {
+ name: "CREATOR_ROOT_KEY_SHARE1",
+ value: "",
+ }
+ ],
+ }
+ {
+ name: "LIFE_CYCLE",
+ // Can be one of the following strings:
+ // RAW, TEST_UNLOCKED0-3, TEST_LOCKED0-2, DEV, PROD, PROD_END, RMA, SCRAP
+ state: "RMA",
+ // Can range from 0 to 16.
+ // Note that a value of 0 is only permissible in RAW state.
+ count: "8"
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_mmap.hjson b/src/fuse_ctrl/data/otp_ctrl_mmap.hjson
new file mode 100755
index 0000000..16642ec
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_mmap.hjson
@@ -0,0 +1,310 @@
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Use the gen-otp-mmap.py script to update dependent files (like documentation
+// tables the comportable hjson and metadata SV package):
+//
+// $ ./util/design/gen-otp-mmap.py
+//
+// Make sure to regenerate the CSRs after converting the memory map:
+//
+// $ cd ${PROJ_ROOT}
+// $ make -C hw regs
+//
+
+{
+ // 256 bit seed to be used for generation of partition item default values.
+ // Can be overridden on the command line with the --seed switch.
+ seed: "36021179872380457113239299468132194022238108125576166239904535336103582949069"
+
+ otp: {
+ width: "2", // bytes
+ depth: "2048"
+ }
+
+ // Definition of scrambling and digest constants and keys.
+ scrambling: {
+ key_size: "16",
+ iv_size: "8",
+ cnst_size: "16",
+ keys: [
+ {
+ name: "Secret0Key",
+ value: "",
+ }
+ {
+ name: "Secret1Key",
+ value: "",
+ }
+ {
+ name: "Secret2Key",
+ value: "",
+ }
+ {
+ name: "Secret3Key",
+ value: "",
+ }
+ ]
+ digests: [
+ // This is the consistency digest used by all partitions.
+ {
+ name: "CnstyDigest",
+ iv_value: "",
+ cnst_value: "",
+ }
+ /*
+ // The other digest configurations below are used for
+ // key derivation and token hashing.
+ {
+ name: "FlashDataKey",
+ iv_value: "",
+ cnst_value: "",
+ }
+ {
+ name: "FlashAddrKey",
+ iv_value: "",
+ cnst_value: "",
+ }
+ {
+ name: "SramDataKey",
+ iv_value: "",
+ cnst_value: "",
+ }
+ */
+ ]
+ }
+
+ // The enumeration order below defines the address map of the OTP controller,
+ // if the offsets are not defined explicitly via the "offset" key.
+ // Note that the digest items are added automatically to the address map.
+ partitions: [
+ {
+ name: "VENDOR_TEST",
+ variant: "Unbuffered",
+ size: "64", // in bytes
+ secret: false,
+ sw_digest: true,
+ hw_digest: false,
+ write_lock: "Digest",
+ read_lock: "CSR",
+ key_sel: "NoKey",
+ integrity: false, // Do not use integrity (ECC) on this partition.
+ bkout_type: false, // Do not use generate a breakout type for this partition.
+ items: [
+ {
+ name: "SCRATCH",
+ size: "56"
+ }
+ ],
+ desc: '''Vendor test partition.
+ This is reserved for manufacturing smoke checks. The OTP wrapper
+ control logic inside prim_otp is allowed to read/write to this
+ region. ECC uncorrectable errors seen on the functional prim_otp
+ interface will not lead to an alert for this partition.
+ Instead, such errors will be reported as correctable ECC errors.
+ '''
+ }
+ {
+ name: "NON_SECRET_FUSES",
+ variant: "Unbuffered",
+ absorb: true,
+ secret: false,
+ sw_digest: true,
+ hw_digest: false,
+ write_lock: "Digest",
+ read_lock: "CSR",
+ key_sel: "NoKey",
+ integrity: true, // Use integrity (ECC) on this partition
+ bkout_type: false, // Do not generate a breakout type for this partition
+ items: [
+ {
+ name: "FMC_KEY_MANIFEST_SVN",
+ size: "4"
+ }
+ {
+ name: "RUNTIME_SVN",
+ size: "16"
+ }
+ {
+ name: "LMS_VERIFY",
+ size: "4"
+ }
+ {
+ name: "LMS_REVOCATION",
+ size: "4"
+ }
+ {
+ name: "KEY_MANIFEST_PK_HASH_MASK",
+ size: "4"
+ }
+ {
+ name: "OWNER_PK_HASH",
+ size: "48"
+ }
+ {
+ name: "IDEVID_CERT_ATTR",
+ size: "96",
+ // Default value to be output in case partition has not
+ // initialized or is in error state. If not specified,
+ // a value of '0 will be used.
+ inv_default: "",
+ }
+ {
+ name: "IDEVID_MANUF_HSM_ID",
+ size: "16"
+ }
+ {
+ name: "SOC_STEPPING_ID",
+ size: "4"
+ }
+ ],
+ desc: '''Non Secret Fuses partition.
+ This contains data such IDEVID, public key hash mask, owner
+ key hash, SoC Stepping ID etc.
+ '''
+ }
+ {
+ name: "SECRET0",
+ variant: "Buffered",
+ secret: true,
+ sw_digest: false,
+ hw_digest: true,
+ write_lock: "Digest",
+ read_lock: "Digest",
+ key_sel: "Secret0Key",
+ integrity: true,
+ bkout_type: false,
+ items: [
+ {
+ name: "TEST_UNLOCK_TOKEN",
+ // This will generate a random default to be output in
+ // case partition has not initialized or is in error state.
+ // If not specified, a value of '0 will be used.
+ inv_default: "",
+ size: "16"
+ }
+ {
+ name: "TEST_EXIT_TOKEN",
+ inv_default: "",
+ size: "16"
+ }
+ ],
+ desc: '''Secret partition 0.
+ This contains TEST lifecycle unlock tokens.
+ '''
+ }
+ {
+ name: "SECRET1",
+ variant: "Buffered",
+ secret: true,
+ sw_digest: false,
+ hw_digest: true,
+ write_lock: "Digest",
+ read_lock: "Digest",
+ key_sel: "Secret1Key",
+ integrity: true,
+ bkout_type: false,
+ items: [
+ {
+ name: "UDS_SEED",
+ size: "48"
+ }
+ ],
+ desc: '''Secret partition 1.
+ This contains Obfuscated UDS seed.
+ '''
+ }
+ {
+ name: "SECRET2",
+ variant: "Buffered",
+ secret: true,
+ sw_digest: false,
+ hw_digest: true,
+ write_lock: "Digest",
+ read_lock: "Digest",
+ key_sel: "Secret2Key",
+ integrity: true,
+ bkout_type: false,
+ items: [
+ {
+ name: "FIELD_ENTROPY",
+ size: "32"
+ }
+ ],
+ desc: '''Secret partition 2.
+ This contains obfuscated field entropy.
+ '''
+ }
+ {
+ name: "SECRET3",
+ variant: "Buffered",
+ secret: true,
+ sw_digest: false,
+ hw_digest: true,
+ write_lock: "Digest",
+ read_lock: "Digest",
+ key_sel: "Secret3Key",
+ integrity: true,
+ bkout_type: false,
+ items: [
+ {
+ name: "KEY_MANIFEST_PK_HASH",
+ size: "48"
+ }
+ {
+ name: "RMA_TOKEN",
+ inv_default: "",
+ size: "16"
+ }
+ ],
+ desc: '''Secret partition 3.
+ This contains public key hash and RMA unlock token.
+ '''
+ }
+ {
+ name: "LIFE_CYCLE",
+ variant: "LifeCycle",
+ secret: false,
+ sw_digest: false,
+ hw_digest: false,
+ write_lock: "None",
+ read_lock: "None",
+ key_sel: "NoKey",
+ integrity: true,
+ bkout_type: false,
+ items: [
+ // The life cycle transition count is specified
+ // first such that any programming attempt of the life cycle
+ // partition through the LCI will always write the transition
+ // counter words first when programming an updated state vector.
+ // This is an additional safeguard, to the sequencing in the
+ // life cycle controller to ensure that the counter is always written
+ // before any state update. I.e., the life cycle controller
+ // already splits the counter and state updates into two
+ // supsequent requests through the LCI, where the first request
+ // only contains the updated transition counter, and the second
+ // request the updated transition counter and state.
+ {
+ name: "LC_TRANSITION_CNT",
+ inv_default: "",
+ size: "48"
+ }
+ {
+ name: "LC_STATE",
+ inv_default: "",
+ size: "40"
+ }
+ ],
+ desc: '''Lifecycle partition.
+ This contains lifecycle transition count and state. This partition
+ cannot be locked since the life cycle state needs to advance to RMA
+ in-field. Note that while this partition is not marked secret, it
+ is not readable nor writeable via the DAI. Only the LC controller
+ can access this partition, and even via the LC controller it is not
+ possible to read the raw manufacturing life cycle state in encoded
+ form, since that encoding is considered a netlist secret. The LC
+ controller only exposes a decoded version of this state.
+ '''
+ }
+ ]
+}
\ No newline at end of file
diff --git a/src/fuse_ctrl/data/otp_ctrl_mod.hjson b/src/fuse_ctrl/data/otp_ctrl_mod.hjson
new file mode 100755
index 0000000..7654b03
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_mod.hjson
@@ -0,0 +1,2003 @@
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// HJSON with partition metadata.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+{
+ name: "caliptra_otp_ctrl",
+ human_name: " Caliptra One-Time Programmable Memory COntroller",
+ one_line_desc: "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ one_paragraph_desc: '''
+ One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.
+ On top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.
+ It features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.
+ '''
+ // Uique comportablre IP identifier defined under KNOWN_CIP_IDS in the regtool
+ // TODO: This section needs to be updated for Caliptra (copying OT settings for now, to mark as placeholders)
+ cip_id: "16",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otp_ctrl",
+ revisions: [
+ {
+ version: "0.1.0",
+ life_stage: "L1",
+ design_stage: "D2",
+ verification_stage: "V2",
+ dif_stage: "S1",
+ commit_id: "127b109e2fab9336e830158abe449a3922544ded",
+ notes: "",
+ }
+ {
+ version: "1.0.0",
+ life_stage: "L1",
+ design_stage: "D3",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ {
+ version: "2.0.0",
+ life_stage: "L1",
+ design_stage: "D2S",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ ]
+ clocking: [
+ {clock: "clk_i", reset: "rst_ni", primary: true},
+ {clock: "clk_edn_i", reset: "rst_edn_ni"}
+ ]
+ scan: "true", // Enable `scanmode_i` port
+ scan_reset: "true", // Enable `scan_rst_ni` port
+ scan_en: "true", // Enable `scan_en_i` port
+ bus_interfaces: [
+ { protocol: "tlul", direction: "device", name: "core" }
+ { protocol: "tlul", direction: "device", name: "prim", hier_path: "u_otp.gen_generic.u_impl_generic.u_reg_top" }
+ ],
+
+ available_output_list: [
+ { name: "test",
+ width: 8,
+ desc: "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+
+ ///////////////////////////
+ // Interrupts and Alerts //
+ ///////////////////////////
+
+ interrupt_list: [
+ { name: "otp_operation_done",
+ desc: "A direct access command or digest calculation operation has completed."
+ }
+ { name: "otp_error",
+ desc: "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+
+ alert_list: [
+ { name: "fatal_macro_error",
+ desc: "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array.",
+ }
+ { name: "fatal_check_error",
+ desc: "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers.",
+ }
+ { name: "fatal_bus_integ_error",
+ desc: "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ }
+ { name: "fatal_prim_otp_alert",
+ desc: "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ }
+ { name: "recov_prim_otp_alert",
+ desc: "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+
+ ////////////////
+ // Parameters //
+ ////////////////
+ param_list: [
+ // Init file
+ { name: "MemInitFile",
+ desc: "VMEM file to initialize the OTP macro.",
+ type: "",
+ default: '""',
+ expose: "true",
+ local: "false"
+ }
+ // Random netlist constants
+ { name: "RndCnstLfsrSeed",
+ desc: "Compile-time random bits for initial LFSR seed",
+ type: "otp_ctrl_pkg::lfsr_seed_t"
+ randcount: "40",
+ randtype: "data", // randomize randcount databits
+ }
+ { name: "RndCnstLfsrPerm",
+ desc: "Compile-time random permutation for LFSR output",
+ type: "otp_ctrl_pkg::lfsr_perm_t"
+ randcount: "40",
+ randtype: "perm", // random permutation for randcount elements
+ }
+ { name: "RndCnstScrmblKeyInit",
+ desc: "Compile-time random permutation for scrambling key/nonce register reset value",
+ type: "otp_ctrl_pkg::scrmbl_key_init_t"
+ randcount: "256",
+ randtype: "data", // random permutation for randcount elements
+ }
+ // Normal parameters
+ { name: "NumSramKeyReqSlots",
+ desc: "Number of key slots",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OtpByteAddrWidth",
+ desc: "Width of the OTP byte address.",
+ type: "int",
+ default: "12",
+ local: "true"
+ },
+ { name: "NumErrorEntries",
+ desc: "Number of error register entries.",
+ type: "int",
+ default: "9", // partitions + DAI/LCI
+ local: "true"
+ },
+ { name: "NumDaiWords",
+ desc: "Number of 32bit words in the DAI.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumDigestWords",
+ desc: "Size of the digest fields in 32bit words.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumSwCfgWindowWords",
+ desc: "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ type: "int",
+ default: "1024",
+ local: "true"
+ }
+
+ // Memory map Info
+ { name: "NumPart",
+ desc: "Number of partitions",
+ type: "int",
+ default: "7",
+ local: "true"
+ },
+ { name: "NumPartUnbuf",
+ desc: "Number of unbuffered partitions",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumPartBuf",
+ desc: "Number of buffered partitions (including 1 lifecycle partition)",
+ type: "int",
+ default: "5",
+ local: "true"
+ },
+ { name: "VendorTestOffset",
+ desc: "Offset of the VENDOR_TEST partition",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "VendorTestSize",
+ desc: "Size of the VENDOR_TEST partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "ScratchOffset",
+ desc: "Offset of SCRATCH",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "ScratchSize",
+ desc: "Size of SCRATCH",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestOffset",
+ desc: "Offset of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestSize",
+ desc: "Size of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "NonSecretFusesOffset",
+ desc: "Offset of the NON_SECRET_FUSES partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "NonSecretFusesSize",
+ desc: "Size of the NON_SECRET_FUSES partition",
+ type: "int",
+ default: "3736",
+ local: "true"
+ },
+ { name: "FmcKeyManifestSvnOffset",
+ desc: "Offset of FMC_KEY_MANIFEST_SVN",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "FmcKeyManifestSvnSize",
+ desc: "Size of FMC_KEY_MANIFEST_SVN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RuntimeSvnOffset",
+ desc: "Offset of RUNTIME_SVN",
+ type: "int",
+ default: "68",
+ local: "true"
+ },
+ { name: "RuntimeSvnSize",
+ desc: "Size of RUNTIME_SVN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "LmsVerifyOffset",
+ desc: "Offset of LMS_VERIFY",
+ type: "int",
+ default: "84",
+ local: "true"
+ },
+ { name: "LmsVerifySize",
+ desc: "Size of LMS_VERIFY",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "LmsRevocationOffset",
+ desc: "Offset of LMS_REVOCATION",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "LmsRevocationSize",
+ desc: "Size of LMS_REVOCATION",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashMaskOffset",
+ desc: "Offset of KEY_MANIFEST_PK_HASH_MASK",
+ type: "int",
+ default: "92",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashMaskSize",
+ desc: "Size of KEY_MANIFEST_PK_HASH_MASK",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerPkHashOffset",
+ desc: "Offset of OWNER_PK_HASH",
+ type: "int",
+ default: "96",
+ local: "true"
+ },
+ { name: "OwnerPkHashSize",
+ desc: "Size of OWNER_PK_HASH",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "IdevidCertAttrOffset",
+ desc: "Offset of IDEVID_CERT_ATTR",
+ type: "int",
+ default: "144",
+ local: "true"
+ },
+ { name: "IdevidCertAttrSize",
+ desc: "Size of IDEVID_CERT_ATTR",
+ type: "int",
+ default: "96",
+ local: "true"
+ },
+ { name: "IdevidManufHsmIdOffset",
+ desc: "Offset of IDEVID_MANUF_HSM_ID",
+ type: "int",
+ default: "240",
+ local: "true"
+ },
+ { name: "IdevidManufHsmIdSize",
+ desc: "Size of IDEVID_MANUF_HSM_ID",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "SocSteppingIdOffset",
+ desc: "Offset of SOC_STEPPING_ID",
+ type: "int",
+ default: "256",
+ local: "true"
+ },
+ { name: "SocSteppingIdSize",
+ desc: "Size of SOC_STEPPING_ID",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "NonSecretFusesDigestOffset",
+ desc: "Offset of NON_SECRET_FUSES_DIGEST",
+ type: "int",
+ default: "3792",
+ local: "true"
+ },
+ { name: "NonSecretFusesDigestSize",
+ desc: "Size of NON_SECRET_FUSES_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret0Offset",
+ desc: "Offset of the SECRET0 partition",
+ type: "int",
+ default: "3800",
+ local: "true"
+ },
+ { name: "Secret0Size",
+ desc: "Size of the SECRET0 partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "TestUnlockTokenOffset",
+ desc: "Offset of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "3800",
+ local: "true"
+ },
+ { name: "TestUnlockTokenSize",
+ desc: "Size of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "TestExitTokenOffset",
+ desc: "Offset of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "3816",
+ local: "true"
+ },
+ { name: "TestExitTokenSize",
+ desc: "Size of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret0DigestOffset",
+ desc: "Offset of SECRET0_DIGEST",
+ type: "int",
+ default: "3832",
+ local: "true"
+ },
+ { name: "Secret0DigestSize",
+ desc: "Size of SECRET0_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret1Offset",
+ desc: "Offset of the SECRET1 partition",
+ type: "int",
+ default: "3840",
+ local: "true"
+ },
+ { name: "Secret1Size",
+ desc: "Size of the SECRET1 partition",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "UdsSeedOffset",
+ desc: "Offset of UDS_SEED",
+ type: "int",
+ default: "3840",
+ local: "true"
+ },
+ { name: "UdsSeedSize",
+ desc: "Size of UDS_SEED",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "Secret1DigestOffset",
+ desc: "Offset of SECRET1_DIGEST",
+ type: "int",
+ default: "3888",
+ local: "true"
+ },
+ { name: "Secret1DigestSize",
+ desc: "Size of SECRET1_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret2Offset",
+ desc: "Offset of the SECRET2 partition",
+ type: "int",
+ default: "3896",
+ local: "true"
+ },
+ { name: "Secret2Size",
+ desc: "Size of the SECRET2 partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "FieldEntropyOffset",
+ desc: "Offset of FIELD_ENTROPY",
+ type: "int",
+ default: "3896",
+ local: "true"
+ },
+ { name: "FieldEntropySize",
+ desc: "Size of FIELD_ENTROPY",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "Secret2DigestOffset",
+ desc: "Offset of SECRET2_DIGEST",
+ type: "int",
+ default: "3928",
+ local: "true"
+ },
+ { name: "Secret2DigestSize",
+ desc: "Size of SECRET2_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret3Offset",
+ desc: "Offset of the SECRET3 partition",
+ type: "int",
+ default: "3936",
+ local: "true"
+ },
+ { name: "Secret3Size",
+ desc: "Size of the SECRET3 partition",
+ type: "int",
+ default: "72",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashOffset",
+ desc: "Offset of KEY_MANIFEST_PK_HASH",
+ type: "int",
+ default: "3936",
+ local: "true"
+ },
+ { name: "KeyManifestPkHashSize",
+ desc: "Size of KEY_MANIFEST_PK_HASH",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "RmaTokenOffset",
+ desc: "Offset of RMA_TOKEN",
+ type: "int",
+ default: "3984",
+ local: "true"
+ },
+ { name: "RmaTokenSize",
+ desc: "Size of RMA_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret3DigestOffset",
+ desc: "Offset of SECRET3_DIGEST",
+ type: "int",
+ default: "4000",
+ local: "true"
+ },
+ { name: "Secret3DigestSize",
+ desc: "Size of SECRET3_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "LifeCycleOffset",
+ desc: "Offset of the LIFE_CYCLE partition",
+ type: "int",
+ default: "4008",
+ local: "true"
+ },
+ { name: "LifeCycleSize",
+ desc: "Size of the LIFE_CYCLE partition",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "LcTransitionCntOffset",
+ desc: "Offset of LC_TRANSITION_CNT",
+ type: "int",
+ default: "4008",
+ local: "true"
+ },
+ { name: "LcTransitionCntSize",
+ desc: "Size of LC_TRANSITION_CNT",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "LcStateOffset",
+ desc: "Offset of LC_STATE",
+ type: "int",
+ default: "4056",
+ local: "true"
+ },
+ { name: "LcStateSize",
+ desc: "Size of LC_STATE",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ ]
+
+ /////////////////////////////
+ // Intermodule Connections //
+ /////////////////////////////
+
+ inter_signal_list: [
+ // OTP dedicated power connection from AST
+ { struct: ""
+ type: "io"
+ name: "otp_ext_voltage_h"
+ act: "none"
+ default: "'0"
+ package: "",
+ }
+ // Power sequencing signals to AST
+ { struct: "otp_ast_req"
+ type: "uni"
+ name: "otp_ast_pwr_seq"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals to AST (VDD domain)."
+ }
+ // Power sequencing signals from AST
+ { struct: "otp_ast_rsp"
+ type: "uni"
+ name: "otp_ast_pwr_seq_h"
+ act: "rcv"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals coming from AST (VCC domain)."
+ }
+ // EDN interface
+ { struct: "edn"
+ type: "req_rsp"
+ name: "edn"
+ act: "req"
+ package: "edn_pkg"
+ desc: "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ }
+ // Power manager init command
+ { struct: "pwr_otp"
+ type: "req_rsp"
+ name: "pwr_otp"
+ act: "rsp"
+ default: "'0"
+ package: "pwrmgr_pkg"
+ desc: "Initialization request/acknowledge from/to power manager."
+ }
+ // Macro-specific test signals to/from LC TAP
+ { struct: "lc_otp_vendor_test"
+ type: "req_rsp"
+ name: "lc_otp_vendor_test"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Vendor test control signals from/to the life cycle TAP."
+ }
+ // LC transition command
+ { struct: "lc_otp_program"
+ type: "req_rsp"
+ name: "lc_otp_program"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Life cycle state transition interface."
+ }
+ // Broadcast to LC
+ { struct: "otp_lc_data"
+ type: "uni"
+ name: "otp_lc_data"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: '''
+ Life cycle state output holding the current life cycle state,
+ the value of the transition counter and the tokens needed for life cycle transitions.
+ '''
+ }
+ // Broadcast from LC
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_escalate_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle escalation enable coming from life cycle controller.
+ This signal moves all FSMs within OTP into the error state.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_creator_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_owner_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the OWNER_SEED.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_seed_hw_rd_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Seed read enable coming from life cycle controller.
+ This signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_dft_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Test enable qualifier coming from life cycle controller.
+ This signals enables the TL-UL access port to the proprietary OTP IP.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_check_byp_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle partition check bypass signal.
+ This signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures.
+ '''
+ }
+ // Broadcast to Key Manager
+ { struct: "otp_keymgr_key"
+ type: "uni"
+ name: "otp_keymgr_key"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ }
+ // Broadcast to Flash Controller
+ { struct: "flash_otp_key"
+ type: "req_rsp"
+ name: "flash_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for FLASH scrambling."
+ }
+ // Key request from SRAM scramblers
+ { struct: "sram_otp_key"
+ // TODO: would be nice if this could accept parameters.
+ // Split this out into an issue.
+ width: "4"
+ type: "req_rsp"
+ name: "sram_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Array with key derivation interfaces for SRAM scrambling devices."
+ }
+ // Key request from OTBN RAM Scrambler
+ { struct: "otbn_otp_key"
+ type: "req_rsp"
+ name: "otbn_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for OTBN scrambling devices."
+ }
+ // Hardware config partition
+ { struct: "otp_broadcast"
+ type: "uni"
+ name: "otp_broadcast"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_part_pkg"
+ desc: "Output of the HW partitions with breakout data types."
+ }
+ // AST observability control
+ { struct: "ast_obs_ctrl",
+ type: "uni",
+ name: "obs_ctrl",
+ act: "rcv",
+ package: "ast_pkg"
+ desc: "AST observability control signals."
+ }
+ // prim otp observe bus
+ { struct: "logic",
+ type: "uni",
+ name: "otp_obs",
+ act: "req",
+ width: "8",
+ package: ""
+ desc: "AST observability bus."
+ }
+ ] // inter_signal_list
+
+ /////////////////////
+ // Countermeasures //
+ /////////////////////
+
+ countermeasures: [
+ { name: "BUS.INTEGRITY",
+ desc: "End-to-end bus integrity scheme."
+ }
+ { name: "SECRET.MEM.SCRAMBLE",
+ desc: "Secret partitions are scrambled with a full-round PRESENT cipher."
+ }
+ { name: "PART.MEM.DIGEST",
+ desc: "Integrity of buffered partitions is ensured via a 64bit digest."
+ }
+ { name: "DAI.FSM.SPARSE",
+ desc: "The direct access interface FSM is sparsely encoded."
+ }
+ { name: "KDI.FSM.SPARSE",
+ desc: "The key derivation interface FSM is sparsely encoded."
+ }
+ { name: "LCI.FSM.SPARSE",
+ desc: "The life cycle interface FSM is sparsely encoded."
+ }
+ { name: "PART.FSM.SPARSE",
+ desc: "The partition FSMs are sparsely encoded."
+ }
+ { name: "SCRMBL.FSM.SPARSE",
+ desc: "The scramble datapath FSM is sparsely encoded."
+ }
+ { name: "TIMER.FSM.SPARSE",
+ desc: "The background check timer FSM is sparsely encoded."
+ }
+ { name: "DAI.CTR.REDUN",
+ desc: "The direct access interface address counter employs a cross-counter implementation."
+ }
+ { name: "KDI_SEED.CTR.REDUN",
+ desc: "The key derivation interface counter employs a cross-counter implementation."
+ }
+ { name: "KDI_ENTROPY.CTR.REDUN",
+ desc: "The key derivation entropy counter employs a cross-counter implementation."
+ }
+ { name: "LCI.CTR.REDUN",
+ desc: "The life cycle interface address counter employs a cross-counter implementation."
+ }
+ { name: "PART.CTR.REDUN",
+ desc: "The address counter of buffered partitions employs a cross-counter implementation."
+ }
+ { name: "SCRMBL.CTR.REDUN",
+ desc: "The srambling datapath counter employs a cross-counter implementation."
+ }
+ { name: "TIMER_INTEG.CTR.REDUN",
+ desc: "The background integrity check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER_CNSTY.CTR.REDUN",
+ desc: "The background consistency check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER.LFSR.REDUN",
+ desc: "The background check LFSR is duplicated."
+ }
+ { name: "DAI.FSM.LOCAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "LCI.FSM.LOCAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "KDI.FSM.LOCAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "PART.FSM.LOCAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon local escalation."
+ }
+ { name: "SCRMBL.FSM.LOCAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "TIMER.FSM.LOCAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "DAI.FSM.GLOBAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "LCI.FSM.GLOBAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "KDI.FSM.GLOBAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.FSM.GLOBAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "SCRMBL.FSM.GLOBAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "TIMER.FSM.GLOBAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.DATA_REG.INTEGRITY",
+ desc: "All partition buffer registers are protected with ECC on 64bit blocks."
+ }
+ { name: "PART.DATA_REG.BKGN_CHK",
+ desc: "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ }
+ { name: "PART.MEM.REGREN"
+ desc: "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ }
+ { name: "PART.MEM.SW_UNREADABLE"
+ desc: "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ }
+ { name: "PART.MEM.SW_UNWRITABLE"
+ desc: "All partitions become unwritable by software once they are locked via the digest."
+ }
+ { name: "LC_PART.MEM.SW_NOACCESS"
+ desc: "The life cycle partition is not directly readable nor writable via software."
+ }
+ { name: "ACCESS.CTRL.MUBI",
+ desc: "The access control signals going from the partitions to the DAI are MUBI encoded."
+ }
+ { name: "TOKEN_VALID.CTRL.MUBI",
+ desc: "The token valid signals going to the life cycle controller are MUBI encoded."
+ }
+ { name: "LC_CTRL.INTERSIG.MUBI",
+ desc: "The life cycle control signals are multibit encoded."
+ }
+ { name: "TEST.BUS.LC_GATED",
+ desc: "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ }
+ { name: "TEST_TL_LC_GATE.FSM.SPARSE",
+ desc: "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ }
+ { name: "DIRECT_ACCESS.CONFIG.REGWEN",
+ desc: "The direct access CSRs are REGWEN protected."
+ }
+ { name: "CHECK_TRIGGER.CONFIG.REGWEN",
+ desc: "The check trigger CSR is REGWEN protected."
+ }
+ { name: "CHECK.CONFIG.REGWEN",
+ desc: "The check CSR is REGWEN protected."
+ }
+ { name: "MACRO.MEM.INTEGRITY",
+ desc: '''
+ The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.
+ The scheme is able to at least detect single bit errors.
+ '''
+ }
+ { name: "MACRO.MEM.CM",
+ desc: "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ]
+
+ features: [
+ {
+ name: "OTP_CTRL.PARTITION.VENDOR_TEST"
+ desc: '''Vendor test partition is used for OTP programming smoke check during manufacturing flow.
+ In this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.
+ Instead the error will be reported as correctable ECC error.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.CREATOR_SW_CFG"
+ desc: '''During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition.
+ '''
+ }
+ {
+ name: "OTP_CTRL.INIT"
+ desc: '''When power is up, OTP controller reads devices status.
+ After all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.
+ Once all integrity checks are complete, the controller marks outputs as valid.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PROGRAM"
+ desc: '''All other partitions except life cycle partition are programmed through DAI interface.
+ And once non-zero digest is programmed to these partition, no further write access is allowed.
+ Life cycle partition is programmed by LC_CTRL.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET0"
+ desc: "Obfuscated UDS Seed"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET1"
+ desc: "Obfuscated Field Entropy"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.LIFE_CYCLE"
+ desc: '''LC state, LC transition count.
+ This feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK"
+ desc: '''Following partitions can be read lockable by CSR.
+ - VENDOR_TEST
+ - CREATOR_SW_CFG
+ Following partitions can be read lockable by writing digest.
+ - SECRET0
+ - SECRET1
+ All read attempt to these partitions after read is locked will trigger AccessError (recoverable).
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK"
+ desc: "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.RECOVERABLE"
+ desc: "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.FATAL"
+ desc: "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT"
+ desc: "Timeout value for the integrity and consistency checks."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD"
+ desc: "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD"
+ desc: "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ]
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ regwidth: "32",
+ registers: {
+ core: [
+ ////////////////////////
+ // Ctrl / Status CSRs //
+ ////////////////////////
+
+ { name: "STATUS",
+ desc: "OTP status register.",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ resval: 0,
+ tags: [ // OTP internal HW can modify status register
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "0"
+ name: "VENDOR_TEST_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "1"
+ name: "NON_SECRET_FUSES_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "2"
+ name: "SECRET0_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "3"
+ name: "SECRET1_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "4"
+ name: "SECRET2_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "5"
+ name: "SECRET3_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "6"
+ name: "LIFE_CYCLE_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "7"
+ name: "DAI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the DAI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "8"
+ name: "LCI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the LCI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "9"
+ name: "TIMEOUT_ERROR"
+ desc: '''
+ Set to 1 if an integrity or consistency check times out.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "10"
+ name: "LFSR_FSM_ERROR"
+ desc: '''
+ Set to 1 if the LFSR timer FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "11"
+ name: "SCRAMBLING_FSM_ERROR"
+ desc: '''
+ Set to 1 if the scrambling datapath FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "12"
+ name: "KEY_DERIV_FSM_ERROR"
+ desc: '''
+ Set to 1 if the key derivation FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "13"
+ name: "BUS_INTEG_ERROR"
+ desc: '''
+ This bit is set to 1 if a fatal bus integrity fault is detected.
+ This error triggers a fatal_bus_integ_error alert.
+ '''
+ }
+ { bits: "14"
+ name: "DAI_IDLE"
+ desc: "Set to 1 if the DAI is idle and ready to accept commands."
+ }
+ { bits: "15"
+ name: "CHECK_PENDING"
+ desc: "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ }
+ { multireg: {
+ name: "ERR_CODE",
+ desc: '''
+ This register holds information about error conditions that occurred in the agents
+ interacting with the OTP macro via the internal bus. The error codes should be checked
+ if the partitions, DAI or LCI flag an error in the !!STATUS register, or when an
+ !!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error
+ interrupt, and in addition some errors may trigger either an fatal_macro_error or an
+ fatal_check_error alert.
+ ''',
+ count: "NumErrorEntries",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "AGENT",
+ compact: "false",
+ resval: 0,
+ tags: [ // OTP internal HW can modify the error code registers
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "2:0"
+ enum: [
+ { value: "0",
+ name: "NO_ERROR",
+ desc: '''
+ No error condition has occurred.
+ '''
+ },
+ { value: "1",
+ name: "MACRO_ERROR",
+ desc: '''
+ Returned if the OTP macro command was invalid or did not complete successfully
+ due to a macro malfunction.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "2",
+ name: "MACRO_ECC_CORR_ERROR",
+ desc: '''
+ A correctable ECC error has occured during an OTP read operation.
+ The corresponding controller automatically recovers from this error when
+ issuing a new command.
+ '''
+ },
+ { value: "3",
+ name: "MACRO_ECC_UNCORR_ERROR",
+ desc: '''
+ An uncorrectable ECC error has occurred during an OTP read operation.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present this may be a sign that the device is malfunctioning.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "4",
+ name: "MACRO_WRITE_BLANK_ERROR",
+ desc: '''
+ This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+
+ Note however that the affected OTP word may be left in an inconsistent state if this error occurs.
+ This can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).
+
+ It is important that SW ensures that each word is only written once, since this can render the device useless.
+ '''
+ },
+ { value: "5",
+ name: "ACCESS_ERROR",
+ desc: '''
+ This error indicates that a locked memory region has been accessed.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+ '''
+ },
+ { value: "6",
+ name: "CHECK_FAIL_ERROR",
+ desc: '''
+ An ECC, integrity or consistency mismatch has been detected in the buffer registers.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_check_error alert.
+ '''
+ },
+ { value: "7",
+ name: "FSM_STATE_ERROR",
+ desc: '''
+ The FSM of the corresponding controller has reached an invalid state, or the FSM has
+ been moved into a terminal error state due to an escalation action via lc_escalate_en_i.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present, this is a sign that the device has fallen victim to
+ an invasive attack. This error triggers an fatal_check_error alert.
+ '''
+ },
+ ]
+ }
+ ]
+ }
+ }
+ { name: "DIRECT_ACCESS_REGWEN",
+ desc: '''
+ Register write enable for all direct access interface registers.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hrw",
+ hwext: "true",
+ hwqe: "true",
+ tags: [ // OTP internal HW will set this enable register to 0 when OTP is not under IDLE
+ // state, so could not auto-predict its value
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "0",
+ name: "WR_EN"
+ desc: '''
+ This bit controls whether the DAI registers can be written.
+ Write 0 to it in order to clear the bit.
+
+ Note that the hardware also modulates this bit and sets it to 0 temporarily
+ during an OTP operation such that the corresponding address and data registers
+ cannot be modified while an operation is pending. The !!DAI_IDLE status bit
+ will also be set to 0 in such a case.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "DIRECT_ACCESS_CMD",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // Write to DIRECT_ACCESS_CMD randomly might cause OTP_ERRORs and illegal sequences
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD",
+ desc: '''
+ Initiates a readout sequence that reads the location specified
+ by !!DIRECT_ACCESS_ADDRESS. The command places the data read into
+ !!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions).
+ '''
+ }
+ { bits: "1",
+ name: "WR",
+ desc: '''
+ Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0
+ and !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ { bits: "2",
+ name: "DIGEST",
+ desc: '''
+ Initiates the digest calculation and locking sequence for the partition specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ ]
+ }
+ { name: "DIRECT_ACCESS_ADDRESS",
+ desc: "Address register for direct accesses.",
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The enable register "DIRECT_ACCESS_REGWEN" is HW controlled,
+ // so not able to predict this register value automatically
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ { bits: "OtpByteAddrWidth-1:0",
+ name: "ADDR"
+ desc: '''
+ This is the address for the OTP word to be read or written through
+ the direct access interface. Note that the address is aligned to the access size
+ internally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored
+ for 64bit accesses.
+
+ For the digest calculation command, set this register to the partition base offset.
+ '''
+ }
+ ]
+ }
+ { multireg: {
+ name: "DIRECT_ACCESS_WDATA",
+ desc: '''Write data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is being written to.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // The value of this register is written from "DIRECT_ACCESS_RDATA",
+ // so could not predict this register value automatically
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "WDATA"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "DIRECT_ACCESS_RDATA",
+ desc: '''Read data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is read from.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ fields: [
+ { bits: "31:0"
+ name: "RDATA"
+ }
+ ]
+ }
+ },
+
+ //////////////////////////////////////
+ // Integrity and Consistency Checks //
+ //////////////////////////////////////
+ { name: "CHECK_TRIGGER_REGWEN",
+ desc: '''
+ Register write enable for !!CHECK_TRIGGER.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ name: "WR_EN"
+ desc: '''
+ When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TRIGGER",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "CHECK_TRIGGER_REGWEN",
+ fields: [
+ { bits: "0",
+ name: "INTEGRITY",
+ desc: '''
+ Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts.
+ '''
+ }
+ { bits: "1",
+ name: "CONSISTENCY",
+ desc: '''
+ Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts.
+ '''
+ }
+ ]
+ },
+ { name: "CHECK_REGWEN",
+ desc: '''
+ Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ name: "WR_EN"
+ desc: '''
+ When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TIMEOUT",
+ desc: '''
+ Timeout value for the integrity and consistency checks.
+ ''',
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ tags: [ // Do not write to this automatically, as it may trigger fatal alert, and cause
+ // escalation.
+ "excl:CsrAllTests:CsrExclWrite"],
+ fields: [
+ { bits: "31:0",
+ name: "TIMEOUT"
+ desc: '''
+ Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency
+ check does not complete within the timeout window, an error will be flagged in the !!STATUS register,
+ an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should
+ be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the
+ number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to
+ roughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the
+ safe side. A value of zero disables the timeout mechanism (default).
+ '''
+ resval: 0,
+ },
+ ]
+ },
+ { name: "INTEGRITY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ Only applies to the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ name: "INTG_PERIOD"
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.INTEGRITY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+ { name: "CONSISTENCY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ This applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ name: "CONS_PERIOD"
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.CONSISTENCY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+
+ ////////////////////////////////////
+ // Dynamic Locks of SW Parititons //
+ ////////////////////////////////////
+ { name: "VENDOR_TEST_READ_LOCK",
+ desc: '''
+ Runtime read lock for the VENDOR_TEST partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD_LOCK"
+ desc: '''
+ When cleared to 0, read access to the VENDOR_TEST partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "NON_SECRET_FUSES_READ_LOCK",
+ desc: '''
+ Runtime read lock for the NON_SECRET_FUSES partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD_LOCK"
+ desc: '''
+ When cleared to 0, read access to the NON_SECRET_FUSES partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+
+ ///////////////////////
+ // Integrity Digests //
+ ///////////////////////
+ { multireg: {
+ name: "VENDOR_TEST_DIGEST",
+ desc: '''
+ Integrity digest for the VENDOR_TEST partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the VENDOR_TEST partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "NON_SECRET_FUSES_DIGEST",
+ desc: '''
+ Integrity digest for the NON_SECRET_FUSES partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the NON_SECRET_FUSES partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET0_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET0 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET1_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET1 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET2_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET2 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET3_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET3 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ name: "DIGEST"
+ }
+ ]
+ }
+ },
+
+ ////////////////////////////////
+ // Software Config Partitions //
+ ////////////////////////////////
+ { skipto: "0x1000" }
+
+ { window: {
+ name: "SW_CFG_WINDOW"
+ items: "NumSwCfgWindowWords"
+ swaccess: "ro",
+ desc: '''
+ Any read to this window directly maps to the corresponding offset in the creator and owner software
+ config partitions, and triggers an OTP readout of the bytes requested. Note that the transaction
+ will block until OTP readout has completed.
+ '''
+ }
+ }
+ ],
+
+ // OTP wrapper-specific registers
+ prim: [
+ { name: "CSR0",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "1",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "2",
+ name: "field2",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "26:16",
+ name: "field4",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR1",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "6:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "7:7",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "14:8",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "15:15",
+ name: "field3",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field4",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR2",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR3",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "2:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field1",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "16",
+ name: "field2",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "17",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "18",
+ name: "field4",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "19",
+ name: "field5",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "20",
+ name: "field6",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "21",
+ name: "field7",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "22",
+ name: "field8",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR4",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field1",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR5",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "7:6",
+ name: "field1",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "8",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "11:9",
+ name: "field3",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field4",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field5",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field6",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR6",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "11",
+ name: "field1",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field2",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR7",
+ desc: "",
+ swaccess: "ro",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "10:8",
+ name: "field1",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "15",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ ]
+ }
+}
+
+
+
+
+
+
+
+
+
diff --git a/src/fuse_ctrl/data/otp_ctrl_mod.json b/src/fuse_ctrl/data/otp_ctrl_mod.json
new file mode 100644
index 0000000..4cf2165
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_mod.json
@@ -0,0 +1,1943 @@
+{
+ "name": "caliptra_otp_ctrl",
+ "human_name": " Caliptra One-Time Programmable Memory COntroller",
+ "one_line_desc": "Interfaces integrated one0time programmable memory, supports scrambling, integrity and secure dai_wr_inprogress",
+ "one_paragraph_desc": "One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.\nOn top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.\nIt features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.",
+ "cip_id": "16",
+ "design_spec": "../doc",
+ "dv_doc": "../doc/dv",
+ "hw_checklist": "../doc/checklist",
+ "sw_checklist": "/sw/device/lib/dif/dif_otp_ctrl",
+ "revisions": [
+ {
+ "version": "0.1.0",
+ "life_stage": "L1",
+ "design_stage": "D2",
+ "verification_stage": "V2",
+ "dif_stage": "S1",
+ "commit_id": "127b109e2fab9336e830158abe449a3922544ded",
+ "notes": ""
+ },
+ {
+ "version": "1.0.0",
+ "life_stage": "L1",
+ "design_stage": "D3",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ },
+ {
+ "version": "2.0.0",
+ "life_stage": "L1",
+ "design_stage": "D2S",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ }
+ ],
+ "clocking": [
+ {
+ "clock": "clk_i",
+ "reset": "rst_ni",
+ "primary": true
+ },
+ {
+ "clock": "clk_edn_i",
+ "reset": "rst_edn_ni"
+ }
+ ],
+ "scan": "true",
+ "scan_reset": "true",
+ "scan_en": "true",
+ "bus_interfaces": [
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "core"
+ },
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "prim",
+ "hier_path": "u_otp.gen_generic.u_impl_generic.u_reg_top"
+ }
+ ],
+ "available_output_list": [
+ {
+ "name": "test",
+ "width": 8,
+ "desc": "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+ "interrupt_list": [
+ {
+ "name": "otp_operation_done",
+ "desc": "A direct access command or digest calculation operation has completed."
+ },
+ {
+ "name": "otp_error",
+ "desc": "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+ "alert_list": [
+ {
+ "name": "fatal_macro_error",
+ "desc": "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array."
+ },
+ {
+ "name": "fatal_check_error",
+ "desc": "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers."
+ },
+ {
+ "name": "fatal_bus_integ_error",
+ "desc": "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ },
+ {
+ "name": "fatal_prim_otp_alert",
+ "desc": "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ },
+ {
+ "name": "recov_prim_otp_alert",
+ "desc": "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+ "param_list": [
+ {
+ "name": "MemInitFile",
+ "desc": "VMEM file to initialize the OTP macro.",
+ "type": "",
+ "default": "\"\"",
+ "expose": "true",
+ "local": "false"
+ },
+ {
+ "name": "RndCnstLfsrSeed",
+ "desc": "Compile-time random bits for initial LFSR seed",
+ "type": "otp_ctrl_pkg::lfsr_seed_t",
+ "randcount": "40",
+ "randtype": "data"
+ },
+ {
+ "name": "RndCnstLfsrPerm",
+ "desc": "Compile-time random permutation for LFSR output",
+ "type": "otp_ctrl_pkg::lfsr_perm_t",
+ "randcount": "40",
+ "randtype": "perm"
+ },
+ {
+ "name": "RndCnstScrmblKeyInit",
+ "desc": "Compile-time random permutation for scrambling key/nonce register reset value",
+ "type": "otp_ctrl_pkg::scrmbl_key_init_t",
+ "randcount": "256",
+ "randtype": "data"
+ },
+ {
+ "name": "NumSramKeyReqSlots",
+ "desc": "Number of key slots",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OtpByteAddrWidth",
+ "desc": "Width of the OTP byte address.",
+ "type": "int",
+ "default": "12",
+ "local": "true"
+ },
+ {
+ "name": "NumErrorEntries",
+ "desc": "Number of error register entries.",
+ "type": "int",
+ "default": "9",
+ "local": "true"
+ },
+ {
+ "name": "NumDaiWords",
+ "desc": "Number of 32bit words in the DAI.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumDigestWords",
+ "desc": "Size of the digest fields in 32bit words.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumSwCfgWindowWords",
+ "desc": "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ "type": "int",
+ "default": "1024",
+ "local": "true"
+ },
+ {
+ "name": "NumPart",
+ "desc": "Number of partitions",
+ "type": "int",
+ "default": "7",
+ "local": "true"
+ },
+ {
+ "name": "NumPartUnbuf",
+ "desc": "Number of unbuffered partitions",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumPartBuf",
+ "desc": "Number of buffered partitions (including 1 lifecycle partition)",
+ "type": "int",
+ "default": "5",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestOffset",
+ "desc": "Offset of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestSize",
+ "desc": "Size of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "ScratchOffset",
+ "desc": "Offset of SCRATCH",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "ScratchSize",
+ "desc": "Size of SCRATCH",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestOffset",
+ "desc": "Offset of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestSize",
+ "desc": "Size of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesOffset",
+ "desc": "Offset of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesSize",
+ "desc": "Size of the NON_SECRET_FUSES partition",
+ "type": "int",
+ "default": "3736",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnOffset",
+ "desc": "Offset of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "FmcKeyManifestSvnSize",
+ "desc": "Size of FMC_KEY_MANIFEST_SVN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnOffset",
+ "desc": "Offset of RUNTIME_SVN",
+ "type": "int",
+ "default": "68",
+ "local": "true"
+ },
+ {
+ "name": "RuntimeSvnSize",
+ "desc": "Size of RUNTIME_SVN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifyOffset",
+ "desc": "Offset of LMS_VERIFY",
+ "type": "int",
+ "default": "84",
+ "local": "true"
+ },
+ {
+ "name": "LmsVerifySize",
+ "desc": "Size of LMS_VERIFY",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationOffset",
+ "desc": "Offset of LMS_REVOCATION",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LmsRevocationSize",
+ "desc": "Size of LMS_REVOCATION",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "92",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashMaskSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH_MASK",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashOffset",
+ "desc": "Offset of OWNER_PK_HASH",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "OwnerPkHashSize",
+ "desc": "Size of OWNER_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrOffset",
+ "desc": "Offset of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "144",
+ "local": "true"
+ },
+ {
+ "name": "IdevidCertAttrSize",
+ "desc": "Size of IDEVID_CERT_ATTR",
+ "type": "int",
+ "default": "96",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdOffset",
+ "desc": "Offset of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "240",
+ "local": "true"
+ },
+ {
+ "name": "IdevidManufHsmIdSize",
+ "desc": "Size of IDEVID_MANUF_HSM_ID",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdOffset",
+ "desc": "Offset of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "256",
+ "local": "true"
+ },
+ {
+ "name": "SocSteppingIdSize",
+ "desc": "Size of SOC_STEPPING_ID",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestOffset",
+ "desc": "Offset of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "3792",
+ "local": "true"
+ },
+ {
+ "name": "NonSecretFusesDigestSize",
+ "desc": "Size of NON_SECRET_FUSES_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Offset",
+ "desc": "Offset of the SECRET0 partition",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Size",
+ "desc": "Size of the SECRET0 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenOffset",
+ "desc": "Offset of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "3800",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenSize",
+ "desc": "Size of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenOffset",
+ "desc": "Offset of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "3816",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenSize",
+ "desc": "Size of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestOffset",
+ "desc": "Offset of SECRET0_DIGEST",
+ "type": "int",
+ "default": "3832",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestSize",
+ "desc": "Size of SECRET0_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Offset",
+ "desc": "Offset of the SECRET1 partition",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Size",
+ "desc": "Size of the SECRET1 partition",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedOffset",
+ "desc": "Offset of UDS_SEED",
+ "type": "int",
+ "default": "3840",
+ "local": "true"
+ },
+ {
+ "name": "UdsSeedSize",
+ "desc": "Size of UDS_SEED",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestOffset",
+ "desc": "Offset of SECRET1_DIGEST",
+ "type": "int",
+ "default": "3888",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestSize",
+ "desc": "Size of SECRET1_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Offset",
+ "desc": "Offset of the SECRET2 partition",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Size",
+ "desc": "Size of the SECRET2 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropyOffset",
+ "desc": "Offset of FIELD_ENTROPY",
+ "type": "int",
+ "default": "3896",
+ "local": "true"
+ },
+ {
+ "name": "FieldEntropySize",
+ "desc": "Size of FIELD_ENTROPY",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestOffset",
+ "desc": "Offset of SECRET2_DIGEST",
+ "type": "int",
+ "default": "3928",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestSize",
+ "desc": "Size of SECRET2_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Offset",
+ "desc": "Offset of the SECRET3 partition",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "Secret3Size",
+ "desc": "Size of the SECRET3 partition",
+ "type": "int",
+ "default": "72",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashOffset",
+ "desc": "Offset of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "3936",
+ "local": "true"
+ },
+ {
+ "name": "KeyManifestPkHashSize",
+ "desc": "Size of KEY_MANIFEST_PK_HASH",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenOffset",
+ "desc": "Offset of RMA_TOKEN",
+ "type": "int",
+ "default": "3984",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenSize",
+ "desc": "Size of RMA_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestOffset",
+ "desc": "Offset of SECRET3_DIGEST",
+ "type": "int",
+ "default": "4000",
+ "local": "true"
+ },
+ {
+ "name": "Secret3DigestSize",
+ "desc": "Size of SECRET3_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleOffset",
+ "desc": "Offset of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleSize",
+ "desc": "Size of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntOffset",
+ "desc": "Offset of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "4008",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntSize",
+ "desc": "Size of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "LcStateOffset",
+ "desc": "Offset of LC_STATE",
+ "type": "int",
+ "default": "4056",
+ "local": "true"
+ },
+ {
+ "name": "LcStateSize",
+ "desc": "Size of LC_STATE",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ }
+ ],
+ "inter_signal_list": [
+ {
+ "struct": "",
+ "type": "io",
+ "name": "otp_ext_voltage_h",
+ "act": "none",
+ "default": "'0",
+ "package": ""
+ },
+ {
+ "struct": "otp_ast_req",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals to AST (VDD domain)."
+ },
+ {
+ "struct": "otp_ast_rsp",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq_h",
+ "act": "rcv",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals coming from AST (VCC domain)."
+ },
+ {
+ "struct": "edn",
+ "type": "req_rsp",
+ "name": "edn",
+ "act": "req",
+ "package": "edn_pkg",
+ "desc": "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ },
+ {
+ "struct": "pwr_otp",
+ "type": "req_rsp",
+ "name": "pwr_otp",
+ "act": "rsp",
+ "default": "'0",
+ "package": "pwrmgr_pkg",
+ "desc": "Initialization request/acknowledge from/to power manager."
+ },
+ {
+ "struct": "lc_otp_vendor_test",
+ "type": "req_rsp",
+ "name": "lc_otp_vendor_test",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Vendor test control signals from/to the life cycle TAP."
+ },
+ {
+ "struct": "lc_otp_program",
+ "type": "req_rsp",
+ "name": "lc_otp_program",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state transition interface."
+ },
+ {
+ "struct": "otp_lc_data",
+ "type": "uni",
+ "name": "otp_lc_data",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state output holding the current life cycle state,\nthe value of the transition counter and the tokens needed for life cycle transitions."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_escalate_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle escalation enable coming from life cycle controller.\nThis signal moves all FSMs within OTP into the error state."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_creator_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_owner_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the OWNER_SEED."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_seed_hw_rd_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Seed read enable coming from life cycle controller.\nThis signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_dft_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Test enable qualifier coming from life cycle controller.\nThis signals enables the TL-UL access port to the proprietary OTP IP."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_check_byp_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle partition check bypass signal.\nThis signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures."
+ },
+ {
+ "struct": "otp_keymgr_key",
+ "type": "uni",
+ "name": "otp_keymgr_key",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "flash_otp_key",
+ "type": "req_rsp",
+ "name": "flash_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for FLASH scrambling."
+ },
+ {
+ "struct": "sram_otp_key",
+ "width": "4",
+ "type": "req_rsp",
+ "name": "sram_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Array with key derivation interfaces for SRAM scrambling devices."
+ },
+ {
+ "struct": "otbn_otp_key",
+ "type": "req_rsp",
+ "name": "otbn_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for OTBN scrambling devices."
+ },
+ {
+ "struct": "otp_broadcast",
+ "type": "uni",
+ "name": "otp_broadcast",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_part_pkg",
+ "desc": "Output of the HW partitions with breakout data types."
+ },
+ {
+ "struct": "ast_obs_ctrl",
+ "type": "uni",
+ "name": "obs_ctrl",
+ "act": "rcv",
+ "package": "ast_pkg",
+ "desc": "AST observability control signals."
+ },
+ {
+ "struct": "logic",
+ "type": "uni",
+ "name": "otp_obs",
+ "act": "req",
+ "width": "8",
+ "package": "",
+ "desc": "AST observability bus."
+ }
+ ],
+ "countermeasures": [
+ {
+ "name": "BUS.INTEGRITY",
+ "desc": "End-to-end bus integrity scheme."
+ },
+ {
+ "name": "SECRET.MEM.SCRAMBLE",
+ "desc": "Secret partitions are scrambled with a full-round PRESENT cipher."
+ },
+ {
+ "name": "PART.MEM.DIGEST",
+ "desc": "Integrity of buffered partitions is ensured via a 64bit digest."
+ },
+ {
+ "name": "DAI.FSM.SPARSE",
+ "desc": "The direct access interface FSM is sparsely encoded."
+ },
+ {
+ "name": "KDI.FSM.SPARSE",
+ "desc": "The key derivation interface FSM is sparsely encoded."
+ },
+ {
+ "name": "LCI.FSM.SPARSE",
+ "desc": "The life cycle interface FSM is sparsely encoded."
+ },
+ {
+ "name": "PART.FSM.SPARSE",
+ "desc": "The partition FSMs are sparsely encoded."
+ },
+ {
+ "name": "SCRMBL.FSM.SPARSE",
+ "desc": "The scramble datapath FSM is sparsely encoded."
+ },
+ {
+ "name": "TIMER.FSM.SPARSE",
+ "desc": "The background check timer FSM is sparsely encoded."
+ },
+ {
+ "name": "DAI.CTR.REDUN",
+ "desc": "The direct access interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_SEED.CTR.REDUN",
+ "desc": "The key derivation interface counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_ENTROPY.CTR.REDUN",
+ "desc": "The key derivation entropy counter employs a cross-counter implementation."
+ },
+ {
+ "name": "LCI.CTR.REDUN",
+ "desc": "The life cycle interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "PART.CTR.REDUN",
+ "desc": "The address counter of buffered partitions employs a cross-counter implementation."
+ },
+ {
+ "name": "SCRMBL.CTR.REDUN",
+ "desc": "The srambling datapath counter employs a cross-counter implementation."
+ },
+ {
+ "name": "TIMER_INTEG.CTR.REDUN",
+ "desc": "The background integrity check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER_CNSTY.CTR.REDUN",
+ "desc": "The background consistency check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER.LFSR.REDUN",
+ "desc": "The background check LFSR is duplicated."
+ },
+ {
+ "name": "DAI.FSM.LOCAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "LCI.FSM.LOCAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "KDI.FSM.LOCAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "PART.FSM.LOCAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "SCRMBL.FSM.LOCAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "TIMER.FSM.LOCAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "DAI.FSM.GLOBAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "LCI.FSM.GLOBAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "KDI.FSM.GLOBAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.FSM.GLOBAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "SCRMBL.FSM.GLOBAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "TIMER.FSM.GLOBAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.DATA_REG.INTEGRITY",
+ "desc": "All partition buffer registers are protected with ECC on 64bit blocks."
+ },
+ {
+ "name": "PART.DATA_REG.BKGN_CHK",
+ "desc": "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ },
+ {
+ "name": "PART.MEM.REGREN",
+ "desc": "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ },
+ {
+ "name": "PART.MEM.SW_UNREADABLE",
+ "desc": "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ },
+ {
+ "name": "PART.MEM.SW_UNWRITABLE",
+ "desc": "All partitions become unwritable by software once they are locked via the digest."
+ },
+ {
+ "name": "LC_PART.MEM.SW_NOACCESS",
+ "desc": "The life cycle partition is not directly readable nor writable via software."
+ },
+ {
+ "name": "ACCESS.CTRL.MUBI",
+ "desc": "The access control signals going from the partitions to the DAI are MUBI encoded."
+ },
+ {
+ "name": "TOKEN_VALID.CTRL.MUBI",
+ "desc": "The token valid signals going to the life cycle controller are MUBI encoded."
+ },
+ {
+ "name": "LC_CTRL.INTERSIG.MUBI",
+ "desc": "The life cycle control signals are multibit encoded."
+ },
+ {
+ "name": "TEST.BUS.LC_GATED",
+ "desc": "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ },
+ {
+ "name": "TEST_TL_LC_GATE.FSM.SPARSE",
+ "desc": "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ },
+ {
+ "name": "DIRECT_ACCESS.CONFIG.REGWEN",
+ "desc": "The direct access CSRs are REGWEN protected."
+ },
+ {
+ "name": "CHECK_TRIGGER.CONFIG.REGWEN",
+ "desc": "The check trigger CSR is REGWEN protected."
+ },
+ {
+ "name": "CHECK.CONFIG.REGWEN",
+ "desc": "The check CSR is REGWEN protected."
+ },
+ {
+ "name": "MACRO.MEM.INTEGRITY",
+ "desc": " The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.\n The scheme is able to at least detect single bit errors.\n "
+ },
+ {
+ "name": "MACRO.MEM.CM",
+ "desc": "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ],
+ "features": [
+ {
+ "name": "OTP_CTRL.PARTITION.VENDOR_TEST",
+ "desc": "Vendor test partition is used for OTP programming smoke check during manufacturing flow.\nIn this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.\nInstead the error will be reported as correctable ECC error."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.CREATOR_SW_CFG",
+ "desc": "During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition."
+ },
+ {
+ "name": "OTP_CTRL.INIT",
+ "desc": "When power is up, OTP controller reads devices status.\nAfter all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.\nOnce all integrity checks are complete, the controller marks outputs as valid."
+ },
+ {
+ "name": "OTP_CTRL.PROGRAM",
+ "desc": "All other partitions except life cycle partition are programmed through DAI interface.\nAnd once non-zero digest is programmed to these partition, no further write access is allowed.\nLife cycle partition is programmed by LC_CTRL."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET0",
+ "desc": "Obfuscated UDS Seed"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET1",
+ "desc": "Obfuscated Field Entropy"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.LIFE_CYCLE",
+ "desc": "LC state, LC transition count.\nThis feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK",
+ "desc": "Following partitions can be read lockable by CSR.\n - VENDOR_TEST\n - CREATOR_SW_CFG\n Following partitions can be read lockable by writing digest.\n - SECRET0\n - SECRET1\nAll read attempt to these partitions after read is locked will trigger AccessError (recoverable)."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK",
+ "desc": "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.RECOVERABLE",
+ "desc": "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.FATAL",
+ "desc": "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD",
+ "desc": "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD",
+ "desc": "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ],
+ "regwidth": "32",
+ "registers": {
+ "core": [
+ {
+ "name": "STATUS",
+ "desc": "OTP status register.",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "VENDOR_TEST_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "1",
+ "name": "NON_SECRET_FUSES_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "2",
+ "name": "SECRET0_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "3",
+ "name": "SECRET1_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "4",
+ "name": "SECRET2_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "5",
+ "name": "SECRET3_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "6",
+ "name": "LIFE_CYCLE_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "7",
+ "name": "DAI_ERROR",
+ "desc": "Set to 1 if an error occurred in the DAI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "8",
+ "name": "LCI_ERROR",
+ "desc": "Set to 1 if an error occurred in the LCI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "9",
+ "name": "TIMEOUT_ERROR",
+ "desc": "Set to 1 if an integrity or consistency check times out.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "10",
+ "name": "LFSR_FSM_ERROR",
+ "desc": "Set to 1 if the LFSR timer FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "11",
+ "name": "SCRAMBLING_FSM_ERROR",
+ "desc": "Set to 1 if the scrambling datapath FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "12",
+ "name": "KEY_DERIV_FSM_ERROR",
+ "desc": "Set to 1 if the key derivation FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "13",
+ "name": "BUS_INTEG_ERROR",
+ "desc": "This bit is set to 1 if a fatal bus integrity fault is detected.\nThis error triggers a fatal_bus_integ_error alert."
+ },
+ {
+ "bits": "14",
+ "name": "DAI_IDLE",
+ "desc": "Set to 1 if the DAI is idle and ready to accept commands."
+ },
+ {
+ "bits": "15",
+ "name": "CHECK_PENDING",
+ "desc": "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "ERR_CODE",
+ "desc": "This register holds information about error conditions that occurred in the agents\ninteracting with the OTP macro via the internal bus. The error codes should be checked\nif the partitions, DAI or LCI flag an error in the !!STATUS register, or when an\n!!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error\ninterrupt, and in addition some errors may trigger either an fatal_macro_error or an\nfatal_check_error alert.",
+ "count": "NumErrorEntries",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "AGENT",
+ "compact": "false",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "2:0",
+ "enum": [
+ {
+ "value": "0",
+ "name": "NO_ERROR",
+ "desc": "No error condition has occurred."
+ },
+ {
+ "value": "1",
+ "name": "MACRO_ERROR",
+ "desc": "Returned if the OTP macro command was invalid or did not complete successfully\ndue to a macro malfunction.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "2",
+ "name": "MACRO_ECC_CORR_ERROR",
+ "desc": "A correctable ECC error has occured during an OTP read operation.\nThe corresponding controller automatically recovers from this error when\nissuing a new command."
+ },
+ {
+ "value": "3",
+ "name": "MACRO_ECC_UNCORR_ERROR",
+ "desc": "An uncorrectable ECC error has occurred during an OTP read operation.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present this may be a sign that the device is malfunctioning.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "4",
+ "name": "MACRO_WRITE_BLANK_ERROR",
+ "desc": "This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.\nThe corresponding controller automatically recovers from this error when issuing a new command.\n\nNote however that the affected OTP word may be left in an inconsistent state if this error occurs.\nThis can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).\n\nIt is important that SW ensures that each word is only written once, since this can render the device useless."
+ },
+ {
+ "value": "5",
+ "name": "ACCESS_ERROR",
+ "desc": "This error indicates that a locked memory region has been accessed.\nThe corresponding controller automatically recovers from this error when issuing a new command."
+ },
+ {
+ "value": "6",
+ "name": "CHECK_FAIL_ERROR",
+ "desc": "An ECC, integrity or consistency mismatch has been detected in the buffer registers.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_check_error alert."
+ },
+ {
+ "value": "7",
+ "name": "FSM_STATE_ERROR",
+ "desc": "The FSM of the corresponding controller has reached an invalid state, or the FSM has\nbeen moved into a terminal error state due to an escalation action via lc_escalate_en_i.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present, this is a sign that the device has fallen victim to\nan invasive attack. This error triggers an fatal_check_error alert."
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "DIRECT_ACCESS_REGWEN",
+ "desc": "Register write enable for all direct access interface registers.",
+ "swaccess": "rw0c",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "WR_EN",
+ "desc": "This bit controls whether the DAI registers can be written.\nWrite 0 to it in order to clear the bit.\n\nNote that the hardware also modulates this bit and sets it to 0 temporarily\nduring an OTP operation such that the corresponding address and data registers\ncannot be modified while an operation is pending. The !!DAI_IDLE status bit\nwill also be set to 0 in such a case.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_CMD",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD",
+ "desc": "Initiates a readout sequence that reads the location specified\nby !!DIRECT_ACCESS_ADDRESS. The command places the data read into\n!!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions)."
+ },
+ {
+ "bits": "1",
+ "name": "WR",
+ "desc": "Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0\nand !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by\n!!DIRECT_ACCESS_ADDRESS."
+ },
+ {
+ "bits": "2",
+ "name": "DIGEST",
+ "desc": "Initiates the digest calculation and locking sequence for the partition specified by\n!!DIRECT_ACCESS_ADDRESS."
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_ADDRESS",
+ "desc": "Address register for direct accesses.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "OtpByteAddrWidth-1:0",
+ "name": "ADDR",
+ "desc": "This is the address for the OTP word to be read or written through\nthe direct access interface. Note that the address is aligned to the access size\ninternally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored\nfor 64bit accesses.\n\nFor the digest calculation command, set this register to the partition base offset."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_WDATA",
+ "desc": "Write data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is being written to.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "WDATA"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_RDATA",
+ "desc": "Read data for direct accesses.\n Hardware automatically determines the access granule (32bit or 64bit) based on which\n partition is read from.\n ",
+ "count": "NumDaiWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "RDATA"
+ }
+ ]
+ }
+ },
+ {
+ "name": "CHECK_TRIGGER_REGWEN",
+ "desc": "Register write enable for !!CHECK_TRIGGER.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "WR_EN",
+ "desc": "When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TRIGGER",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "CHECK_TRIGGER_REGWEN",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "INTEGRITY",
+ "desc": "Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts."
+ },
+ {
+ "bits": "1",
+ "name": "CONSISTENCY",
+ "desc": "Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts."
+ }
+ ]
+ },
+ {
+ "name": "CHECK_REGWEN",
+ "desc": "Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "WR_EN",
+ "desc": "When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "TIMEOUT",
+ "desc": "Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency\ncheck does not complete within the timeout window, an error will be flagged in the !!STATUS register,\nan otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should\nbe set to a large value to stay on the safe side. The maximum check time can be upper bounded by the\nnumber of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to\nroughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the\nsafe side. A value of zero disables the timeout mechanism (default).",
+ "resval": 0
+ }
+ ]
+ },
+ {
+ "name": "INTEGRITY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nOnly applies to the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "INTG_PERIOD",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.INTEGRITY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "CONSISTENCY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nThis applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "CONS_PERIOD",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.CONSISTENCY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "VENDOR_TEST_READ_LOCK",
+ "desc": "Runtime read lock for the VENDOR_TEST partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD_LOCK",
+ "desc": "When cleared to 0, read access to the VENDOR_TEST partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "NON_SECRET_FUSES_READ_LOCK",
+ "desc": "Runtime read lock for the NON_SECRET_FUSES partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD_LOCK",
+ "desc": "When cleared to 0, read access to the NON_SECRET_FUSES partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "VENDOR_TEST_DIGEST",
+ "desc": " Integrity digest for the VENDOR_TEST partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the VENDOR_TEST partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "NON_SECRET_FUSES_DIGEST",
+ "desc": " Integrity digest for the NON_SECRET_FUSES partition.\n The integrity digest is 0 by default. Software must write this\n digest value via the direct access interface in order to lock the partition.\n After a reset, write access to the NON_SECRET_FUSES partition is locked and\n the digest becomes visible in this CSR.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET0_DIGEST",
+ "desc": " Integrity digest for the SECRET0 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET1_DIGEST",
+ "desc": " Integrity digest for the SECRET1 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET2_DIGEST",
+ "desc": " Integrity digest for the SECRET2 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET3_DIGEST",
+ "desc": " Integrity digest for the SECRET3 partition.\n The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\n After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.\n ",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "name": "DIGEST"
+ }
+ ]
+ }
+ },
+ {
+ "skipto": "0x1000"
+ },
+ {
+ "window": {
+ "name": "SW_CFG_WINDOW",
+ "items": "NumSwCfgWindowWords",
+ "swaccess": "ro",
+ "desc": "Any read to this window directly maps to the corresponding offset in the creator and owner software\nconfig partitions, and triggers an OTP readout of the bytes requested. Note that the transaction\nwill block until OTP readout has completed."
+ }
+ }
+ ],
+ "prim": [
+ {
+ "name": "CSR0",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "1",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "2",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "26:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR1",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "6:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:7",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14:8",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15:15",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR2",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR3",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "2:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "16",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "17",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "18",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "19",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "20",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "21",
+ "name": "field7",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "22",
+ "name": "field8",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR4",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR5",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:6",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "8",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11:9",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR6",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR7",
+ "desc": "",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "10:8",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_orig.hjson b/src/fuse_ctrl/data/otp_ctrl_orig.hjson
new file mode 100755
index 0000000..493f7e5
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_orig.hjson
@@ -0,0 +1,3210 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// HJSON with partition metadata.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+{
+ name: "otp_ctrl",
+ human_name: "One-Time Programmable Memory Controller",
+ one_line_desc: "Interfaces integrated one-time programmable memory, supports scrambling, integrity and secure wipe",
+ one_paragraph_desc: '''
+ One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.
+ On top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.
+ It features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.
+ '''
+ // Unique comportable IP identifier defined under KNOWN_CIP_IDS in the regtool.
+ cip_id: "16",
+ design_spec: "../doc",
+ dv_doc: "../doc/dv",
+ hw_checklist: "../doc/checklist",
+ sw_checklist: "/sw/device/lib/dif/dif_otp_ctrl",
+ revisions: [
+ {
+ version: "0.1.0",
+ life_stage: "L1",
+ design_stage: "D2",
+ verification_stage: "V2",
+ dif_stage: "S1",
+ commit_id: "127b109e2fab9336e830158abe449a3922544ded",
+ notes: "",
+ }
+ {
+ version: "1.0.0",
+ life_stage: "L1",
+ design_stage: "D3",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ {
+ version: "2.0.0",
+ life_stage: "L1",
+ design_stage: "D2S",
+ verification_stage: "V2S",
+ dif_stage: "S2",
+ notes: "",
+ }
+ ]
+ clocking: [
+ {clock: "clk_i", reset: "rst_ni", primary: true},
+ {clock: "clk_edn_i", reset: "rst_edn_ni"}
+ ]
+ scan: "true", // Enable `scanmode_i` port
+ scan_reset: "true", // Enable `scan_rst_ni` port
+ scan_en: "true", // Enable `scan_en_i` port
+ bus_interfaces: [
+ { protocol: "tlul", direction: "device", name: "core" }
+ { protocol: "tlul", direction: "device", name: "prim", hier_path: "u_otp.gen_generic.u_impl_generic.u_reg_top" }
+ ],
+
+ available_output_list: [
+ { name: "test",
+ width: 8,
+ desc: "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+
+ ///////////////////////////
+ // Interrupts and Alerts //
+ ///////////////////////////
+
+ interrupt_list: [
+ { name: "otp_operation_done",
+ desc: "A direct access command or digest calculation operation has completed."
+ }
+ { name: "otp_error",
+ desc: "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+
+ alert_list: [
+ { name: "fatal_macro_error",
+ desc: "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array.",
+ }
+ { name: "fatal_check_error",
+ desc: "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers.",
+ }
+ { name: "fatal_bus_integ_error",
+ desc: "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ }
+ { name: "fatal_prim_otp_alert",
+ desc: "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ }
+ { name: "recov_prim_otp_alert",
+ desc: "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+
+ ////////////////
+ // Parameters //
+ ////////////////
+ param_list: [
+ // Init file
+ { name: "MemInitFile",
+ desc: "VMEM file to initialize the OTP macro.",
+ type: "",
+ default: '""',
+ expose: "true",
+ local: "false"
+ }
+ // Random netlist constants
+ { name: "RndCnstLfsrSeed",
+ desc: "Compile-time random bits for initial LFSR seed",
+ type: "otp_ctrl_pkg::lfsr_seed_t"
+ randcount: "40",
+ randtype: "data", // randomize randcount databits
+ }
+ { name: "RndCnstLfsrPerm",
+ desc: "Compile-time random permutation for LFSR output",
+ type: "otp_ctrl_pkg::lfsr_perm_t"
+ randcount: "40",
+ randtype: "perm", // random permutation for randcount elements
+ }
+ { name: "RndCnstScrmblKeyInit",
+ desc: "Compile-time random permutation for scrambling key/nonce register reset value",
+ type: "otp_ctrl_pkg::scrmbl_key_init_t"
+ randcount: "256",
+ randtype: "data", // random permutation for randcount elements
+ }
+ // Normal parameters
+ { name: "NumSramKeyReqSlots",
+ desc: "Number of key slots",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OtpByteAddrWidth",
+ desc: "Width of the OTP byte address.",
+ type: "int",
+ default: "11",
+ local: "true"
+ },
+ { name: "NumErrorEntries",
+ desc: "Number of error register entries.",
+ type: "int",
+ default: "13", // partitions + DAI/LCI
+ local: "true"
+ },
+ { name: "NumDaiWords",
+ desc: "Number of 32bit words in the DAI.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumDigestWords",
+ desc: "Size of the digest fields in 32bit words.",
+ type: "int",
+ default: "2",
+ local: "true"
+ },
+ { name: "NumSwCfgWindowWords",
+ desc: "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ type: "int",
+ default: "512",
+ local: "true"
+ }
+
+ // Memory map Info
+ { name: "NumPart",
+ desc: "Number of partitions",
+ type: "int",
+ default: "11",
+ local: "true"
+ },
+ { name: "NumPartUnbuf",
+ desc: "Number of unbuffered partitions",
+ type: "int",
+ default: "5",
+ local: "true"
+ },
+ { name: "NumPartBuf",
+ desc: "Number of buffered partitions (including 1 lifecycle partition)",
+ type: "int",
+ default: "6",
+ local: "true"
+ },
+ { name: "VendorTestOffset",
+ desc: "Offset of the VENDOR_TEST partition",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "VendorTestSize",
+ desc: "Size of the VENDOR_TEST partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "ScratchOffset",
+ desc: "Offset of SCRATCH",
+ type: "int",
+ default: "0",
+ local: "true"
+ },
+ { name: "ScratchSize",
+ desc: "Size of SCRATCH",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestOffset",
+ desc: "Offset of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "56",
+ local: "true"
+ },
+ { name: "VendorTestDigestSize",
+ desc: "Size of VENDOR_TEST_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "CreatorSwCfgOffset",
+ desc: "Offset of the CREATOR_SW_CFG partition",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSize",
+ desc: "Size of the CREATOR_SW_CFG partition",
+ type: "int",
+ default: "424",
+ local: "true"
+ },
+ { name: "CreatorSwCfgAstCfgOffset",
+ desc: "Offset of CREATOR_SW_CFG_AST_CFG",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "CreatorSwCfgAstCfgSize",
+ desc: "Size of CREATOR_SW_CFG_AST_CFG",
+ type: "int",
+ default: "156",
+ local: "true"
+ },
+ { name: "CreatorSwCfgAstInitEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_AST_INIT_EN",
+ type: "int",
+ default: "220",
+ local: "true"
+ },
+ { name: "CreatorSwCfgAstInitEnSize",
+ desc: "Size of CREATOR_SW_CFG_AST_INIT_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRomExtSkuOffset",
+ desc: "Offset of CREATOR_SW_CFG_ROM_EXT_SKU",
+ type: "int",
+ default: "224",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRomExtSkuSize",
+ desc: "Size of CREATOR_SW_CFG_ROM_EXT_SKU",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifyRsaModExpIbexEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_SIGVERIFY_RSA_MOD_EXP_IBEX_EN",
+ type: "int",
+ default: "228",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifyRsaModExpIbexEnSize",
+ desc: "Size of CREATOR_SW_CFG_SIGVERIFY_RSA_MOD_EXP_IBEX_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifyRsaKeyEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_SIGVERIFY_RSA_KEY_EN",
+ type: "int",
+ default: "232",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifyRsaKeyEnSize",
+ desc: "Size of CREATOR_SW_CFG_SIGVERIFY_RSA_KEY_EN",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifySpxEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_SIGVERIFY_SPX_EN",
+ type: "int",
+ default: "240",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifySpxEnSize",
+ desc: "Size of CREATOR_SW_CFG_SIGVERIFY_SPX_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifySpxKeyEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_SIGVERIFY_SPX_KEY_EN",
+ type: "int",
+ default: "244",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSigverifySpxKeyEnSize",
+ desc: "Size of CREATOR_SW_CFG_SIGVERIFY_SPX_KEY_EN",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashDataDefaultCfgOffset",
+ desc: "Offset of CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG",
+ type: "int",
+ default: "252",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashDataDefaultCfgSize",
+ desc: "Size of CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashInfoBootDataCfgOffset",
+ desc: "Offset of CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG",
+ type: "int",
+ default: "256",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashInfoBootDataCfgSize",
+ desc: "Size of CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashHwInfoCfgOverrideOffset",
+ desc: "Offset of CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE",
+ type: "int",
+ default: "260",
+ local: "true"
+ },
+ { name: "CreatorSwCfgFlashHwInfoCfgOverrideSize",
+ desc: "Size of CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_EN",
+ type: "int",
+ default: "264",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngEnSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgJitterEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_JITTER_EN",
+ type: "int",
+ default: "268",
+ local: "true"
+ },
+ { name: "CreatorSwCfgJitterEnSize",
+ desc: "Size of CREATOR_SW_CFG_JITTER_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRetRamResetMaskOffset",
+ desc: "Offset of CREATOR_SW_CFG_RET_RAM_RESET_MASK",
+ type: "int",
+ default: "272",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRetRamResetMaskSize",
+ desc: "Size of CREATOR_SW_CFG_RET_RAM_RESET_MASK",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgManufStateOffset",
+ desc: "Offset of CREATOR_SW_CFG_MANUF_STATE",
+ type: "int",
+ default: "276",
+ local: "true"
+ },
+ { name: "CreatorSwCfgManufStateSize",
+ desc: "Size of CREATOR_SW_CFG_MANUF_STATE",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRomExecEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_ROM_EXEC_EN",
+ type: "int",
+ default: "280",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRomExecEnSize",
+ desc: "Size of CREATOR_SW_CFG_ROM_EXEC_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgCpuctrlOffset",
+ desc: "Offset of CREATOR_SW_CFG_CPUCTRL",
+ type: "int",
+ default: "284",
+ local: "true"
+ },
+ { name: "CreatorSwCfgCpuctrlSize",
+ desc: "Size of CREATOR_SW_CFG_CPUCTRL",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgMinSecVerRomExtOffset",
+ desc: "Offset of CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT",
+ type: "int",
+ default: "288",
+ local: "true"
+ },
+ { name: "CreatorSwCfgMinSecVerRomExtSize",
+ desc: "Size of CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgMinSecVerBl0Offset",
+ desc: "Offset of CREATOR_SW_CFG_MIN_SEC_VER_BL0",
+ type: "int",
+ default: "292",
+ local: "true"
+ },
+ { name: "CreatorSwCfgMinSecVerBl0Size",
+ desc: "Size of CREATOR_SW_CFG_MIN_SEC_VER_BL0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgDefaultBootDataInProdEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN",
+ type: "int",
+ default: "296",
+ local: "true"
+ },
+ { name: "CreatorSwCfgDefaultBootDataInProdEnSize",
+ desc: "Size of CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRmaSpinEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_RMA_SPIN_EN",
+ type: "int",
+ default: "300",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRmaSpinEnSize",
+ desc: "Size of CREATOR_SW_CFG_RMA_SPIN_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRmaSpinCyclesOffset",
+ desc: "Offset of CREATOR_SW_CFG_RMA_SPIN_CYCLES",
+ type: "int",
+ default: "304",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRmaSpinCyclesSize",
+ desc: "Size of CREATOR_SW_CFG_RMA_SPIN_CYCLES",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngRepcntThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS",
+ type: "int",
+ default: "308",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngRepcntThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngRepcntsThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS",
+ type: "int",
+ default: "312",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngRepcntsThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAdaptpHiThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS",
+ type: "int",
+ default: "316",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAdaptpHiThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAdaptpLoThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS",
+ type: "int",
+ default: "320",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAdaptpLoThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngBucketThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS",
+ type: "int",
+ default: "324",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngBucketThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngMarkovHiThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS",
+ type: "int",
+ default: "328",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngMarkovHiThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngMarkovLoThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS",
+ type: "int",
+ default: "332",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngMarkovLoThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngExthtHiThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS",
+ type: "int",
+ default: "336",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngExthtHiThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngExthtLoThresholdsOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS",
+ type: "int",
+ default: "340",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngExthtLoThresholdsSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAlertThresholdOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_ALERT_THRESHOLD",
+ type: "int",
+ default: "344",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngAlertThresholdSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_ALERT_THRESHOLD",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngHealthConfigDigestOffset",
+ desc: "Offset of CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST",
+ type: "int",
+ default: "348",
+ local: "true"
+ },
+ { name: "CreatorSwCfgRngHealthConfigDigestSize",
+ desc: "Size of CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSramKeyRenewEnOffset",
+ desc: "Offset of CREATOR_SW_CFG_SRAM_KEY_RENEW_EN",
+ type: "int",
+ default: "352",
+ local: "true"
+ },
+ { name: "CreatorSwCfgSramKeyRenewEnSize",
+ desc: "Size of CREATOR_SW_CFG_SRAM_KEY_RENEW_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "CreatorSwCfgDigestOffset",
+ desc: "Offset of CREATOR_SW_CFG_DIGEST",
+ type: "int",
+ default: "480",
+ local: "true"
+ },
+ { name: "CreatorSwCfgDigestSize",
+ desc: "Size of CREATOR_SW_CFG_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "OwnerSwCfgOffset",
+ desc: "Offset of the OWNER_SW_CFG partition",
+ type: "int",
+ default: "488",
+ local: "true"
+ },
+ { name: "OwnerSwCfgSize",
+ desc: "Size of the OWNER_SW_CFG partition",
+ type: "int",
+ default: "656",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomErrorReportingOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ERROR_REPORTING",
+ type: "int",
+ default: "488",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomErrorReportingSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ERROR_REPORTING",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomBootstrapDisOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_BOOTSTRAP_DIS",
+ type: "int",
+ default: "492",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomBootstrapDisSize",
+ desc: "Size of OWNER_SW_CFG_ROM_BOOTSTRAP_DIS",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertClassEnOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_CLASS_EN",
+ type: "int",
+ default: "496",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertClassEnSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_CLASS_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertEscalationOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_ESCALATION",
+ type: "int",
+ default: "500",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertEscalationSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_ESCALATION",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertClassificationOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION",
+ type: "int",
+ default: "504",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertClassificationSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION",
+ type: "int",
+ default: "320",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomLocalAlertClassificationOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION",
+ type: "int",
+ default: "824",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomLocalAlertClassificationSize",
+ desc: "Size of OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertAccumThreshOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH",
+ type: "int",
+ default: "888",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertAccumThreshSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertTimeoutCyclesOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES",
+ type: "int",
+ default: "904",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertTimeoutCyclesSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertPhaseCyclesOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES",
+ type: "int",
+ default: "920",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertPhaseCyclesSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestProdOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD",
+ type: "int",
+ default: "984",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestProdSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestProdEndOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END",
+ type: "int",
+ default: "988",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestProdEndSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestDevOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV",
+ type: "int",
+ default: "992",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestDevSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestRmaOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA",
+ type: "int",
+ default: "996",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomAlertDigestRmaSize",
+ desc: "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomWatchdogBiteThresholdCyclesOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES",
+ type: "int",
+ default: "1000",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomWatchdogBiteThresholdCyclesSize",
+ desc: "Size of OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomKeymgrRomExtMeasEnOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_KEYMGR_ROM_EXT_MEAS_EN",
+ type: "int",
+ default: "1004",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomKeymgrRomExtMeasEnSize",
+ desc: "Size of OWNER_SW_CFG_ROM_KEYMGR_ROM_EXT_MEAS_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgManufStateOffset",
+ desc: "Offset of OWNER_SW_CFG_MANUF_STATE",
+ type: "int",
+ default: "1008",
+ local: "true"
+ },
+ { name: "OwnerSwCfgManufStateSize",
+ desc: "Size of OWNER_SW_CFG_MANUF_STATE",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomRstmgrInfoEnOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_RSTMGR_INFO_EN",
+ type: "int",
+ default: "1012",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomRstmgrInfoEnSize",
+ desc: "Size of OWNER_SW_CFG_ROM_RSTMGR_INFO_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomExtBootstrapEnOffset",
+ desc: "Offset of OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN",
+ type: "int",
+ default: "1016",
+ local: "true"
+ },
+ { name: "OwnerSwCfgRomExtBootstrapEnSize",
+ desc: "Size of OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "OwnerSwCfgDigestOffset",
+ desc: "Offset of OWNER_SW_CFG_DIGEST",
+ type: "int",
+ default: "1136",
+ local: "true"
+ },
+ { name: "OwnerSwCfgDigestSize",
+ desc: "Size of OWNER_SW_CFG_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignOffset",
+ desc: "Offset of the ROT_CREATOR_AUTH_CODESIGN partition",
+ type: "int",
+ default: "1144",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSize",
+ desc: "Size of the ROT_CREATOR_AUTH_CODESIGN partition",
+ type: "int",
+ default: "472",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0",
+ type: "int",
+ default: "1144",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType0Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0",
+ type: "int",
+ default: "1148",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey0Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1",
+ type: "int",
+ default: "1212",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType1Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1",
+ type: "int",
+ default: "1216",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey1Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2",
+ type: "int",
+ default: "1280",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType2Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2",
+ type: "int",
+ default: "1284",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey2Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3",
+ type: "int",
+ default: "1348",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKeyType3Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3",
+ type: "int",
+ default: "1352",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignEcdsaKey3Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3",
+ type: "int",
+ default: "64",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0",
+ type: "int",
+ default: "1416",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType0Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0",
+ type: "int",
+ default: "1420",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey0Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0",
+ type: "int",
+ default: "1452",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig0Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1",
+ type: "int",
+ default: "1456",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType1Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1",
+ type: "int",
+ default: "1460",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey1Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1",
+ type: "int",
+ default: "1492",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig1Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2",
+ type: "int",
+ default: "1496",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType2Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2",
+ type: "int",
+ default: "1500",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey2Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2",
+ type: "int",
+ default: "1532",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig2Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3",
+ type: "int",
+ default: "1536",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyType3Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3",
+ type: "int",
+ default: "1540",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKey3Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3",
+ type: "int",
+ default: "1572",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignSpxKeyConfig3Size",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignBlockSha2_256HashOffset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH",
+ type: "int",
+ default: "1576",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignBlockSha2_256HashSize",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignDigestOffset",
+ desc: "Offset of ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ type: "int",
+ default: "1608",
+ local: "true"
+ },
+ { name: "RotCreatorAuthCodesignDigestSize",
+ desc: "Size of ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateOffset",
+ desc: "Offset of the ROT_CREATOR_AUTH_STATE partition",
+ type: "int",
+ default: "1616",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSize",
+ desc: "Size of the ROT_CREATOR_AUTH_STATE partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY0",
+ type: "int",
+ default: "1616",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey0Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY1",
+ type: "int",
+ default: "1620",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey1Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY1",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY2",
+ type: "int",
+ default: "1624",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey2Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY2",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY3",
+ type: "int",
+ default: "1628",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateEcdsaKey3Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY3",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey0Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY0",
+ type: "int",
+ default: "1632",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey0Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY0",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey1Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY1",
+ type: "int",
+ default: "1636",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey1Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY1",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey2Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY2",
+ type: "int",
+ default: "1640",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey2Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY2",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey3Offset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY3",
+ type: "int",
+ default: "1644",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateSpxKey3Size",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY3",
+ type: "int",
+ default: "4",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateDigestOffset",
+ desc: "Offset of ROT_CREATOR_AUTH_STATE_DIGEST",
+ type: "int",
+ default: "1648",
+ local: "true"
+ },
+ { name: "RotCreatorAuthStateDigestSize",
+ desc: "Size of ROT_CREATOR_AUTH_STATE_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "HwCfg0Offset",
+ desc: "Offset of the HW_CFG0 partition",
+ type: "int",
+ default: "1656",
+ local: "true"
+ },
+ { name: "HwCfg0Size",
+ desc: "Size of the HW_CFG0 partition",
+ type: "int",
+ default: "72",
+ local: "true"
+ },
+ { name: "DeviceIdOffset",
+ desc: "Offset of DEVICE_ID",
+ type: "int",
+ default: "1656",
+ local: "true"
+ },
+ { name: "DeviceIdSize",
+ desc: "Size of DEVICE_ID",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "ManufStateOffset",
+ desc: "Offset of MANUF_STATE",
+ type: "int",
+ default: "1688",
+ local: "true"
+ },
+ { name: "ManufStateSize",
+ desc: "Size of MANUF_STATE",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "HwCfg0DigestOffset",
+ desc: "Offset of HW_CFG0_DIGEST",
+ type: "int",
+ default: "1720",
+ local: "true"
+ },
+ { name: "HwCfg0DigestSize",
+ desc: "Size of HW_CFG0_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "HwCfg1Offset",
+ desc: "Offset of the HW_CFG1 partition",
+ type: "int",
+ default: "1728",
+ local: "true"
+ },
+ { name: "HwCfg1Size",
+ desc: "Size of the HW_CFG1 partition",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "EnSramIfetchOffset",
+ desc: "Offset of EN_SRAM_IFETCH",
+ type: "int",
+ default: "1728",
+ local: "true"
+ },
+ { name: "EnSramIfetchSize",
+ desc: "Size of EN_SRAM_IFETCH",
+ type: "int",
+ default: "1",
+ local: "true"
+ },
+ { name: "EnCsrngSwAppReadOffset",
+ desc: "Offset of EN_CSRNG_SW_APP_READ",
+ type: "int",
+ default: "1729",
+ local: "true"
+ },
+ { name: "EnCsrngSwAppReadSize",
+ desc: "Size of EN_CSRNG_SW_APP_READ",
+ type: "int",
+ default: "1",
+ local: "true"
+ },
+ { name: "DisRvDmLateDebugOffset",
+ desc: "Offset of DIS_RV_DM_LATE_DEBUG",
+ type: "int",
+ default: "1730",
+ local: "true"
+ },
+ { name: "DisRvDmLateDebugSize",
+ desc: "Size of DIS_RV_DM_LATE_DEBUG",
+ type: "int",
+ default: "1",
+ local: "true"
+ },
+ { name: "HwCfg1DigestOffset",
+ desc: "Offset of HW_CFG1_DIGEST",
+ type: "int",
+ default: "1736",
+ local: "true"
+ },
+ { name: "HwCfg1DigestSize",
+ desc: "Size of HW_CFG1_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret0Offset",
+ desc: "Offset of the SECRET0 partition",
+ type: "int",
+ default: "1744",
+ local: "true"
+ },
+ { name: "Secret0Size",
+ desc: "Size of the SECRET0 partition",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ { name: "TestUnlockTokenOffset",
+ desc: "Offset of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "1744",
+ local: "true"
+ },
+ { name: "TestUnlockTokenSize",
+ desc: "Size of TEST_UNLOCK_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "TestExitTokenOffset",
+ desc: "Offset of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "1760",
+ local: "true"
+ },
+ { name: "TestExitTokenSize",
+ desc: "Size of TEST_EXIT_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret0DigestOffset",
+ desc: "Offset of SECRET0_DIGEST",
+ type: "int",
+ default: "1776",
+ local: "true"
+ },
+ { name: "Secret0DigestSize",
+ desc: "Size of SECRET0_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret1Offset",
+ desc: "Offset of the SECRET1 partition",
+ type: "int",
+ default: "1784",
+ local: "true"
+ },
+ { name: "Secret1Size",
+ desc: "Size of the SECRET1 partition",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "FlashAddrKeySeedOffset",
+ desc: "Offset of FLASH_ADDR_KEY_SEED",
+ type: "int",
+ default: "1784",
+ local: "true"
+ },
+ { name: "FlashAddrKeySeedSize",
+ desc: "Size of FLASH_ADDR_KEY_SEED",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "FlashDataKeySeedOffset",
+ desc: "Offset of FLASH_DATA_KEY_SEED",
+ type: "int",
+ default: "1816",
+ local: "true"
+ },
+ { name: "FlashDataKeySeedSize",
+ desc: "Size of FLASH_DATA_KEY_SEED",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "SramDataKeySeedOffset",
+ desc: "Offset of SRAM_DATA_KEY_SEED",
+ type: "int",
+ default: "1848",
+ local: "true"
+ },
+ { name: "SramDataKeySeedSize",
+ desc: "Size of SRAM_DATA_KEY_SEED",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "Secret1DigestOffset",
+ desc: "Offset of SECRET1_DIGEST",
+ type: "int",
+ default: "1864",
+ local: "true"
+ },
+ { name: "Secret1DigestSize",
+ desc: "Size of SECRET1_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "Secret2Offset",
+ desc: "Offset of the SECRET2 partition",
+ type: "int",
+ default: "1872",
+ local: "true"
+ },
+ { name: "Secret2Size",
+ desc: "Size of the SECRET2 partition",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "RmaTokenOffset",
+ desc: "Offset of RMA_TOKEN",
+ type: "int",
+ default: "1872",
+ local: "true"
+ },
+ { name: "RmaTokenSize",
+ desc: "Size of RMA_TOKEN",
+ type: "int",
+ default: "16",
+ local: "true"
+ },
+ { name: "CreatorRootKeyShare0Offset",
+ desc: "Offset of CREATOR_ROOT_KEY_SHARE0",
+ type: "int",
+ default: "1888",
+ local: "true"
+ },
+ { name: "CreatorRootKeyShare0Size",
+ desc: "Size of CREATOR_ROOT_KEY_SHARE0",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "CreatorRootKeyShare1Offset",
+ desc: "Offset of CREATOR_ROOT_KEY_SHARE1",
+ type: "int",
+ default: "1920",
+ local: "true"
+ },
+ { name: "CreatorRootKeyShare1Size",
+ desc: "Size of CREATOR_ROOT_KEY_SHARE1",
+ type: "int",
+ default: "32",
+ local: "true"
+ },
+ { name: "Secret2DigestOffset",
+ desc: "Offset of SECRET2_DIGEST",
+ type: "int",
+ default: "1952",
+ local: "true"
+ },
+ { name: "Secret2DigestSize",
+ desc: "Size of SECRET2_DIGEST",
+ type: "int",
+ default: "8",
+ local: "true"
+ },
+ { name: "LifeCycleOffset",
+ desc: "Offset of the LIFE_CYCLE partition",
+ type: "int",
+ default: "1960",
+ local: "true"
+ },
+ { name: "LifeCycleSize",
+ desc: "Size of the LIFE_CYCLE partition",
+ type: "int",
+ default: "88",
+ local: "true"
+ },
+ { name: "LcTransitionCntOffset",
+ desc: "Offset of LC_TRANSITION_CNT",
+ type: "int",
+ default: "1960",
+ local: "true"
+ },
+ { name: "LcTransitionCntSize",
+ desc: "Size of LC_TRANSITION_CNT",
+ type: "int",
+ default: "48",
+ local: "true"
+ },
+ { name: "LcStateOffset",
+ desc: "Offset of LC_STATE",
+ type: "int",
+ default: "2008",
+ local: "true"
+ },
+ { name: "LcStateSize",
+ desc: "Size of LC_STATE",
+ type: "int",
+ default: "40",
+ local: "true"
+ },
+ ]
+
+ /////////////////////////////
+ // Intermodule Connections //
+ /////////////////////////////
+
+ inter_signal_list: [
+ // OTP dedicated power connection from AST
+ { struct: ""
+ type: "io"
+ name: "otp_ext_voltage_h"
+ act: "none"
+ default: "'0"
+ package: "",
+ }
+ // Power sequencing signals to AST
+ { struct: "otp_ast_req"
+ type: "uni"
+ name: "otp_ast_pwr_seq"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals to AST (VDD domain)."
+ }
+ // Power sequencing signals from AST
+ { struct: "otp_ast_rsp"
+ type: "uni"
+ name: "otp_ast_pwr_seq_h"
+ act: "rcv"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Power sequencing signals coming from AST (VCC domain)."
+ }
+ // EDN interface
+ { struct: "edn"
+ type: "req_rsp"
+ name: "edn"
+ act: "req"
+ package: "edn_pkg"
+ desc: "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ }
+ // Power manager init command
+ { struct: "pwr_otp"
+ type: "req_rsp"
+ name: "pwr_otp"
+ act: "rsp"
+ default: "'0"
+ package: "pwrmgr_pkg"
+ desc: "Initialization request/acknowledge from/to power manager."
+ }
+ // Macro-specific test signals to/from LC TAP
+ { struct: "lc_otp_vendor_test"
+ type: "req_rsp"
+ name: "lc_otp_vendor_test"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Vendor test control signals from/to the life cycle TAP."
+ }
+ // LC transition command
+ { struct: "lc_otp_program"
+ type: "req_rsp"
+ name: "lc_otp_program"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Life cycle state transition interface."
+ }
+ // Broadcast to LC
+ { struct: "otp_lc_data"
+ type: "uni"
+ name: "otp_lc_data"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: '''
+ Life cycle state output holding the current life cycle state,
+ the value of the transition counter and the tokens needed for life cycle transitions.
+ '''
+ }
+ // Broadcast from LC
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_escalate_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle escalation enable coming from life cycle controller.
+ This signal moves all FSMs within OTP into the error state.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_creator_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_owner_seed_sw_rw_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Provision enable qualifier coming from life cycle controller.
+ This signal enables SW read / write access to the OWNER_SEED.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_seed_hw_rd_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Seed read enable coming from life cycle controller.
+ This signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_dft_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Test enable qualifier coming from life cycle controller.
+ This signals enables the TL-UL access port to the proprietary OTP IP.
+ '''
+ }
+ { struct: "lc_tx"
+ type: "uni"
+ name: "lc_check_byp_en"
+ act: "rcv"
+ default: "lc_ctrl_pkg::Off"
+ package: "lc_ctrl_pkg"
+ desc: '''
+ Life cycle partition check bypass signal.
+ This signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures.
+ '''
+ }
+ // Broadcast to Key Manager
+ { struct: "otp_keymgr_key"
+ type: "uni"
+ name: "otp_keymgr_key"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ }
+ // Broadcast to Flash Controller
+ { struct: "flash_otp_key"
+ type: "req_rsp"
+ name: "flash_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for FLASH scrambling."
+ }
+ // Key request from SRAM scramblers
+ { struct: "sram_otp_key"
+ // TODO: would be nice if this could accept parameters.
+ // Split this out into an issue.
+ width: "4"
+ type: "req_rsp"
+ name: "sram_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Array with key derivation interfaces for SRAM scrambling devices."
+ }
+ // Key request from OTBN RAM Scrambler
+ { struct: "otbn_otp_key"
+ type: "req_rsp"
+ name: "otbn_otp_key"
+ act: "rsp"
+ default: "'0"
+ package: "otp_ctrl_pkg"
+ desc: "Key derivation interface for OTBN scrambling devices."
+ }
+ // Hardware config partition
+ { struct: "otp_broadcast"
+ type: "uni"
+ name: "otp_broadcast"
+ act: "req"
+ default: "'0"
+ package: "otp_ctrl_part_pkg"
+ desc: "Output of the HW partitions with breakout data types."
+ }
+ // AST observability control
+ { struct: "ast_obs_ctrl",
+ type: "uni",
+ name: "obs_ctrl",
+ act: "rcv",
+ package: "ast_pkg"
+ desc: "AST observability control signals."
+ }
+ // prim otp observe bus
+ { struct: "logic",
+ type: "uni",
+ name: "otp_obs",
+ act: "req",
+ width: "8",
+ package: ""
+ desc: "AST observability bus."
+ }
+ ] // inter_signal_list
+
+ /////////////////////
+ // Countermeasures //
+ /////////////////////
+
+ countermeasures: [
+ { name: "BUS.INTEGRITY",
+ desc: "End-to-end bus integrity scheme."
+ }
+ { name: "SECRET.MEM.SCRAMBLE",
+ desc: "Secret partitions are scrambled with a full-round PRESENT cipher."
+ }
+ { name: "PART.MEM.DIGEST",
+ desc: "Integrity of buffered partitions is ensured via a 64bit digest."
+ }
+ { name: "DAI.FSM.SPARSE",
+ desc: "The direct access interface FSM is sparsely encoded."
+ }
+ { name: "KDI.FSM.SPARSE",
+ desc: "The key derivation interface FSM is sparsely encoded."
+ }
+ { name: "LCI.FSM.SPARSE",
+ desc: "The life cycle interface FSM is sparsely encoded."
+ }
+ { name: "PART.FSM.SPARSE",
+ desc: "The partition FSMs are sparsely encoded."
+ }
+ { name: "SCRMBL.FSM.SPARSE",
+ desc: "The scramble datapath FSM is sparsely encoded."
+ }
+ { name: "TIMER.FSM.SPARSE",
+ desc: "The background check timer FSM is sparsely encoded."
+ }
+ { name: "DAI.CTR.REDUN",
+ desc: "The direct access interface address counter employs a cross-counter implementation."
+ }
+ { name: "KDI_SEED.CTR.REDUN",
+ desc: "The key derivation interface counter employs a cross-counter implementation."
+ }
+ { name: "KDI_ENTROPY.CTR.REDUN",
+ desc: "The key derivation entropy counter employs a cross-counter implementation."
+ }
+ { name: "LCI.CTR.REDUN",
+ desc: "The life cycle interface address counter employs a cross-counter implementation."
+ }
+ { name: "PART.CTR.REDUN",
+ desc: "The address counter of buffered partitions employs a cross-counter implementation."
+ }
+ { name: "SCRMBL.CTR.REDUN",
+ desc: "The srambling datapath counter employs a cross-counter implementation."
+ }
+ { name: "TIMER_INTEG.CTR.REDUN",
+ desc: "The background integrity check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER_CNSTY.CTR.REDUN",
+ desc: "The background consistency check timer employs a duplicated counter implementation."
+ }
+ { name: "TIMER.LFSR.REDUN",
+ desc: "The background check LFSR is duplicated."
+ }
+ { name: "DAI.FSM.LOCAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "LCI.FSM.LOCAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "KDI.FSM.LOCAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "PART.FSM.LOCAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon local escalation."
+ }
+ { name: "SCRMBL.FSM.LOCAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "TIMER.FSM.LOCAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon local escalation."
+ }
+ { name: "DAI.FSM.GLOBAL_ESC",
+ desc: "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "LCI.FSM.GLOBAL_ESC",
+ desc: "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "KDI.FSM.GLOBAL_ESC",
+ desc: "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.FSM.GLOBAL_ESC",
+ desc: "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "SCRMBL.FSM.GLOBAL_ESC",
+ desc: "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "TIMER.FSM.GLOBAL_ESC",
+ desc: "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ }
+ { name: "PART.DATA_REG.INTEGRITY",
+ desc: "All partition buffer registers are protected with ECC on 64bit blocks."
+ }
+ { name: "PART.DATA_REG.BKGN_CHK",
+ desc: "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ }
+ { name: "PART.MEM.REGREN"
+ desc: "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ }
+ { name: "PART.MEM.SW_UNREADABLE"
+ desc: "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ }
+ { name: "PART.MEM.SW_UNWRITABLE"
+ desc: "All partitions become unwritable by software once they are locked via the digest."
+ }
+ { name: "LC_PART.MEM.SW_NOACCESS"
+ desc: "The life cycle partition is not directly readable nor writable via software."
+ }
+ { name: "ACCESS.CTRL.MUBI",
+ desc: "The access control signals going from the partitions to the DAI are MUBI encoded."
+ }
+ { name: "TOKEN_VALID.CTRL.MUBI",
+ desc: "The token valid signals going to the life cycle controller are MUBI encoded."
+ }
+ { name: "LC_CTRL.INTERSIG.MUBI",
+ desc: "The life cycle control signals are multibit encoded."
+ }
+ { name: "TEST.BUS.LC_GATED",
+ desc: "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ }
+ { name: "TEST_TL_LC_GATE.FSM.SPARSE",
+ desc: "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ }
+ { name: "DIRECT_ACCESS.CONFIG.REGWEN",
+ desc: "The direct access CSRs are REGWEN protected."
+ }
+ { name: "CHECK_TRIGGER.CONFIG.REGWEN",
+ desc: "The check trigger CSR is REGWEN protected."
+ }
+ { name: "CHECK.CONFIG.REGWEN",
+ desc: "The check CSR is REGWEN protected."
+ }
+ { name: "MACRO.MEM.INTEGRITY",
+ desc: '''
+ The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.
+ The scheme is able to at least detect single bit errors.
+ '''
+ }
+ { name: "MACRO.MEM.CM",
+ desc: "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ]
+
+ features: [
+ {
+ name: "OTP_CTRL.PARTITION.VENDOR_TEST"
+ desc: '''Vendor test partition is used for OTP programming smoke check during manufacturing flow.
+ In this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.
+ Instead the error will be reported as correctable ECC error.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.CREATOR_SW_CFG"
+ desc: '''During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.OWNER_SW_CFG"
+ desc: "Define attriutes for rom code execution"
+ }
+ {
+ name: "OTP_CTRL.INIT"
+ desc: '''When power is up, OTP controller reads devices status.
+ After all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.
+ Once all integrity checks are complete, the controller marks outputs as valid.
+ '''
+ }
+ {
+ name: "OTP_CTRL.ENTROPY_READ"
+ desc: '''Firmware can read entropy from ENTROPY_SRC block by configuring following field of HW_CFG* partition.
+ - EN_CSRNG_SW_APP_READ
+ '''
+ }
+ {
+ name: "OTP_CTRL.KEY_DERIVATION"
+ desc: "OTP controller participate key derivation process by providing scramble key seed to SRAM_CTRL and FLASH_CTRL."
+ }
+ {
+ name: "OTP_CTRL.PROGRAM"
+ desc: '''All other partitions except life cycle partition are programmed through DAI interface.
+ And once non-zero digest is programmed to these partition, no further write access is allowed.
+ Life cycle partition is programmed by LC_CTRL.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET0"
+ desc: "Test unlock tokens, Test exit token"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET1"
+ desc: "SRAM and FLASH scrambling key"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.SECRET2"
+ desc: "RMA unlock token and creator root key"
+ }
+ {
+ name: "OTP_CTRL.PARTITION.LIFE_CYCLE"
+ desc: '''LC state, LC transition count.
+ This feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface.
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK"
+ desc: '''Following partitions can be read lockable by CSR.
+ - VENDOR_TEST
+ - CREATOR_SW_CFG
+ - OWNER_SW_CFG
+ Following partitions can be read lockable by writing digest.
+ - SECRET0
+ - SECRET1
+ - RECRET2
+ All read attempt to these partitions after read is locked will trigger AccessError (recoverable).
+ '''
+ }
+ {
+ name: "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK"
+ desc: "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.RECOVERABLE"
+ desc: "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ }
+ {
+ name: "OTP_CTRL.ERROR_HANDLING.FATAL"
+ desc: "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT"
+ desc: "Timeout value for the integrity and consistency checks."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD"
+ desc: "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ }
+ {
+ name: "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD"
+ desc: "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ]
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ regwidth: "32",
+ registers: {
+ core: [
+ ////////////////////////
+ // Ctrl / Status CSRs //
+ ////////////////////////
+
+ { name: "STATUS",
+ desc: "OTP status register.",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ resval: 0,
+ tags: [ // OTP internal HW can modify status register
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "0"
+ name: "VENDOR_TEST_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "1"
+ name: "CREATOR_SW_CFG_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "2"
+ name: "OWNER_SW_CFG_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "3"
+ name: "ROT_CREATOR_AUTH_CODESIGN_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "4"
+ name: "ROT_CREATOR_AUTH_STATE_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "5"
+ name: "HW_CFG0_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "6"
+ name: "HW_CFG1_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "7"
+ name: "SECRET0_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "8"
+ name: "SECRET1_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "9"
+ name: "SECRET2_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "10"
+ name: "LIFE_CYCLE_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in this partition.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "11"
+ name: "DAI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the DAI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "12"
+ name: "LCI_ERROR"
+ desc: '''
+ Set to 1 if an error occurred in the LCI.
+ If set to 1, SW should check the !!ERR_CODE register at the corresponding index.
+ '''
+ }
+ { bits: "13"
+ name: "TIMEOUT_ERROR"
+ desc: '''
+ Set to 1 if an integrity or consistency check times out.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "14"
+ name: "LFSR_FSM_ERROR"
+ desc: '''
+ Set to 1 if the LFSR timer FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "15"
+ name: "SCRAMBLING_FSM_ERROR"
+ desc: '''
+ Set to 1 if the scrambling datapath FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "16"
+ name: "KEY_DERIV_FSM_ERROR"
+ desc: '''
+ Set to 1 if the key derivation FSM has reached an invalid state.
+ This raises an fatal_check_error alert and is an unrecoverable error condition.
+ '''
+ }
+ { bits: "17"
+ name: "BUS_INTEG_ERROR"
+ desc: '''
+ This bit is set to 1 if a fatal bus integrity fault is detected.
+ This error triggers a fatal_bus_integ_error alert.
+ '''
+ }
+ { bits: "18"
+ name: "DAI_IDLE"
+ desc: "Set to 1 if the DAI is idle and ready to accept commands."
+ }
+ { bits: "19"
+ name: "CHECK_PENDING"
+ desc: "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ }
+ { multireg: {
+ name: "ERR_CODE",
+ desc: '''
+ This register holds information about error conditions that occurred in the agents
+ interacting with the OTP macro via the internal bus. The error codes should be checked
+ if the partitions, DAI or LCI flag an error in the !!STATUS register, or when an
+ !!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error
+ interrupt, and in addition some errors may trigger either an fatal_macro_error or an
+ fatal_check_error alert.
+ ''',
+ count: "NumErrorEntries",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "AGENT",
+ compact: "false",
+ resval: 0,
+ tags: [ // OTP internal HW can modify the error code registers
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "2:0"
+ enum: [
+ { value: "0",
+ name: "NO_ERROR",
+ desc: '''
+ No error condition has occurred.
+ '''
+ },
+ { value: "1",
+ name: "MACRO_ERROR",
+ desc: '''
+ Returned if the OTP macro command was invalid or did not complete successfully
+ due to a macro malfunction.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "2",
+ name: "MACRO_ECC_CORR_ERROR",
+ desc: '''
+ A correctable ECC error has occured during an OTP read operation.
+ The corresponding controller automatically recovers from this error when
+ issuing a new command.
+ '''
+ },
+ { value: "3",
+ name: "MACRO_ECC_UNCORR_ERROR",
+ desc: '''
+ An uncorrectable ECC error has occurred during an OTP read operation.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present this may be a sign that the device is malfunctioning.
+ This error triggers an fatal_macro_error alert.
+ '''
+ },
+ { value: "4",
+ name: "MACRO_WRITE_BLANK_ERROR",
+ desc: '''
+ This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+
+ Note however that the affected OTP word may be left in an inconsistent state if this error occurs.
+ This can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).
+
+ It is important that SW ensures that each word is only written once, since this can render the device useless.
+ '''
+ },
+ { value: "5",
+ name: "ACCESS_ERROR",
+ desc: '''
+ This error indicates that a locked memory region has been accessed.
+ The corresponding controller automatically recovers from this error when issuing a new command.
+ '''
+ },
+ { value: "6",
+ name: "CHECK_FAIL_ERROR",
+ desc: '''
+ An ECC, integrity or consistency mismatch has been detected in the buffer registers.
+ This error should never occur during normal operation and is not recoverable.
+ This error triggers an fatal_check_error alert.
+ '''
+ },
+ { value: "7",
+ name: "FSM_STATE_ERROR",
+ desc: '''
+ The FSM of the corresponding controller has reached an invalid state, or the FSM has
+ been moved into a terminal error state due to an escalation action via lc_escalate_en_i.
+ This error should never occur during normal operation and is not recoverable.
+ If this error is present, this is a sign that the device has fallen victim to
+ an invasive attack. This error triggers an fatal_check_error alert.
+ '''
+ },
+ ]
+ }
+ ]
+ }
+ }
+ { name: "DIRECT_ACCESS_REGWEN",
+ desc: '''
+ Register write enable for all direct access interface registers.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hrw",
+ hwext: "true",
+ hwqe: "true",
+ tags: [ // OTP internal HW will set this enable register to 0 when OTP is not under IDLE
+ // state, so could not auto-predict its value
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ {
+ bits: "0",
+ desc: '''
+ This bit controls whether the DAI registers can be written.
+ Write 0 to it in order to clear the bit.
+
+ Note that the hardware also modulates this bit and sets it to 0 temporarily
+ during an OTP operation such that the corresponding address and data registers
+ cannot be modified while an operation is pending. The !!DAI_IDLE status bit
+ will also be set to 0 in such a case.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "DIRECT_ACCESS_CMD",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // Write to DIRECT_ACCESS_CMD randomly might cause OTP_ERRORs and illegal sequences
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ name: "RD",
+ desc: '''
+ Initiates a readout sequence that reads the location specified
+ by !!DIRECT_ACCESS_ADDRESS. The command places the data read into
+ !!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions).
+ '''
+ }
+ { bits: "1",
+ name: "WR",
+ desc: '''
+ Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0
+ and !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ { bits: "2",
+ name: "DIGEST",
+ desc: '''
+ Initiates the digest calculation and locking sequence for the partition specified by
+ !!DIRECT_ACCESS_ADDRESS.
+ '''
+ }
+ ]
+ }
+ { name: "DIRECT_ACCESS_ADDRESS",
+ desc: "Address register for direct accesses.",
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ resval: 0,
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The enable register "DIRECT_ACCESS_REGWEN" is HW controlled,
+ // so not able to predict this register value automatically
+ "excl:CsrNonInitTests:CsrExclCheck"],
+ fields: [
+ { bits: "OtpByteAddrWidth-1:0",
+ desc: '''
+ This is the address for the OTP word to be read or written through
+ the direct access interface. Note that the address is aligned to the access size
+ internally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored
+ for 64bit accesses.
+
+ For the digest calculation command, set this register to the partition base offset.
+ '''
+ }
+ ]
+ }
+ { multireg: {
+ name: "DIRECT_ACCESS_WDATA",
+ desc: '''Write data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is being written to.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwqe: "false",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // The value of this register is written from "DIRECT_ACCESS_RDATA",
+ // so could not predict this register value automatically
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "DIRECT_ACCESS_RDATA",
+ desc: '''Read data for direct accesses.
+ Hardware automatically determines the access granule (32bit or 64bit) based on which
+ partition is read from.
+ ''',
+ count: "NumDaiWords", // 2 x 32bit = 64bit
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+
+ //////////////////////////////////////
+ // Integrity and Consistency Checks //
+ //////////////////////////////////////
+ { name: "CHECK_TRIGGER_REGWEN",
+ desc: '''
+ Register write enable for !!CHECK_TRIGGER.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TRIGGER",
+ desc: "Command register for direct accesses.",
+ swaccess: "r0w1c",
+ hwaccess: "hro",
+ hwqe: "true",
+ hwext: "true",
+ resval: 0,
+ regwen: "CHECK_TRIGGER_REGWEN",
+ fields: [
+ { bits: "0",
+ name: "INTEGRITY",
+ desc: '''
+ Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts.
+ '''
+ }
+ { bits: "1",
+ name: "CONSISTENCY",
+ desc: '''
+ Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING
+ and wait until the check has been completed. If there are any errors, those will be flagged
+ in the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts.
+ '''
+ }
+ ]
+ },
+ { name: "CHECK_REGWEN",
+ desc: '''
+ Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "none",
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CHECK_TIMEOUT",
+ desc: '''
+ Timeout value for the integrity and consistency checks.
+ ''',
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ tags: [ // Do not write to this automatically, as it may trigger fatal alert, and cause
+ // escalation.
+ "excl:CsrAllTests:CsrExclWrite"],
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency
+ check does not complete within the timeout window, an error will be flagged in the !!STATUS register,
+ an otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should
+ be set to a large value to stay on the safe side. The maximum check time can be upper bounded by the
+ number of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to
+ roughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the
+ safe side. A value of zero disables the timeout mechanism (default).
+ '''
+ resval: 0,
+ },
+ ]
+ },
+ { name: "INTEGRITY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ Only applies to the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.INTEGRITY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+ { name: "CONSISTENCY_CHECK_PERIOD",
+ desc: '''
+ This value specifies the maximum period that can be generated pseudo-randomly.
+ This applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.
+ '''
+ swaccess: "rw",
+ hwaccess: "hro",
+ regwen: "CHECK_REGWEN",
+ fields: [
+ { bits: "31:0",
+ desc: '''
+ The pseudo-random period is generated using a 40bit LFSR internally, and this register defines
+ the bit mask to be applied to the LFSR output in order to limit its range. The value of this
+ register is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.
+ A recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.
+ A value of zero disables the timer (default). Note that a one-off check can always be triggered via
+ !!CHECK_TRIGGER.CONSISTENCY.
+ '''
+ resval: "0"
+ }
+ ]
+ }
+
+ ////////////////////////////////////
+ // Dynamic Locks of SW Parititons //
+ ////////////////////////////////////
+ { name: "VENDOR_TEST_READ_LOCK",
+ desc: '''
+ Runtime read lock for the VENDOR_TEST partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the VENDOR_TEST partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "CREATOR_SW_CFG_READ_LOCK",
+ desc: '''
+ Runtime read lock for the CREATOR_SW_CFG partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the CREATOR_SW_CFG partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "OWNER_SW_CFG_READ_LOCK",
+ desc: '''
+ Runtime read lock for the OWNER_SW_CFG partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the OWNER_SW_CFG partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "ROT_CREATOR_AUTH_CODESIGN_READ_LOCK",
+ desc: '''
+ Runtime read lock for the ROT_CREATOR_AUTH_CODESIGN partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the ROT_CREATOR_AUTH_CODESIGN partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+ { name: "ROT_CREATOR_AUTH_STATE_READ_LOCK",
+ desc: '''
+ Runtime read lock for the ROT_CREATOR_AUTH_STATE partition.
+ ''',
+ swaccess: "rw0c",
+ hwaccess: "hro",
+ regwen: "DIRECT_ACCESS_REGWEN",
+ tags: [ // The value of this register can affect the read access of the this
+ // partition's memory window. Excluding this register from writing can ensure
+ // memories have read and write access.
+ "excl:CsrNonInitTests:CsrExclWrite"],
+ fields: [
+ { bits: "0",
+ desc: '''
+ When cleared to 0, read access to the ROT_CREATOR_AUTH_STATE partition is locked.
+ Write 0 to clear this bit.
+ '''
+ resval: 1,
+ },
+ ]
+ },
+
+ ///////////////////////
+ // Integrity Digests //
+ ///////////////////////
+ { multireg: {
+ name: "VENDOR_TEST_DIGEST",
+ desc: '''
+ Integrity digest for the VENDOR_TEST partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the VENDOR_TEST partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "CREATOR_SW_CFG_DIGEST",
+ desc: '''
+ Integrity digest for the CREATOR_SW_CFG partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the CREATOR_SW_CFG partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "OWNER_SW_CFG_DIGEST",
+ desc: '''
+ Integrity digest for the OWNER_SW_CFG partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the OWNER_SW_CFG partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ desc: '''
+ Integrity digest for the ROT_CREATOR_AUTH_CODESIGN partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the ROT_CREATOR_AUTH_CODESIGN partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "ROT_CREATOR_AUTH_STATE_DIGEST",
+ desc: '''
+ Integrity digest for the ROT_CREATOR_AUTH_STATE partition.
+ The integrity digest is 0 by default. Software must write this
+ digest value via the direct access interface in order to lock the partition.
+ After a reset, write access to the ROT_CREATOR_AUTH_STATE partition is locked and
+ the digest becomes visible in this CSR.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "HW_CFG0_DIGEST",
+ desc: '''
+ Integrity digest for the HW_CFG0 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "HW_CFG1_DIGEST",
+ desc: '''
+ Integrity digest for the HW_CFG1 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET0_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET0 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET1_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET1 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+ { multireg: {
+ name: "SECRET2_DIGEST",
+ desc: '''
+ Integrity digest for the SECRET2 partition.
+ The integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.
+ After a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.
+ ''',
+ count: "NumDigestWords",
+ swaccess: "ro",
+ hwaccess: "hwo",
+ hwext: "true",
+ cname: "WORD",
+ resval: 0,
+ tags: [ // OTP internal HW will update status so can not auto-predict its value.
+ "excl:CsrAllTests:CsrExclCheck"],
+ fields: [
+ { bits: "31:0"
+ }
+ ]
+ }
+ },
+
+ ////////////////////////////////
+ // Software Config Partitions //
+ ////////////////////////////////
+ { skipto: "0x800" }
+
+ { window: {
+ name: "SW_CFG_WINDOW"
+ items: "NumSwCfgWindowWords"
+ swaccess: "ro",
+ desc: '''
+ Any read to this window directly maps to the corresponding offset in the creator and owner software
+ config partitions, and triggers an OTP readout of the bytes requested. Note that the transaction
+ will block until OTP readout has completed.
+ '''
+ }
+ }
+ ],
+
+ // OTP wrapper-specific registers
+ prim: [
+ { name: "CSR0",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "1",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "2",
+ name: "field2",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "26:16",
+ name: "field4",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR1",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "6:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "7:7",
+ name: "field1",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "14:8",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "15:15",
+ name: "field3",
+ desc: "",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field4",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR2",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "0",
+ name: "field0",
+ desc: "",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR3",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "2:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "13:4",
+ name: "field1",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "16",
+ name: "field2",
+ desc: "",
+ swaccess: "rw1c",
+ resval: "0x0",
+ }
+ { bits: "17",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "18",
+ name: "field4",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "19",
+ name: "field5",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "20",
+ name: "field6",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "21",
+ name: "field7",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "22",
+ name: "field8",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR4",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field1",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field2",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR5",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "7:6",
+ name: "field1",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "8",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "11:9",
+ name: "field3",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field4",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "13",
+ name: "field5",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field6",
+ desc: ""
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR6",
+ desc: ""
+ swaccess: "rw",
+ hwaccess: "hro",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "9:0",
+ name: "field0",
+ desc: ""
+ resval: "0x0",
+ }
+ { bits: "11",
+ name: "field1",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "12",
+ name: "field2",
+ desc: "",
+ swaccess: "rw",
+ resval: "0x0",
+ }
+ { bits: "31:16",
+ name: "field3",
+ desc: ""
+ resval: "0x0",
+ }
+ ]
+ },
+ { name: "CSR7",
+ desc: "",
+ swaccess: "ro",
+ hwaccess: "hrw",
+ hwext: "false",
+ hwqe: "false",
+ fields: [
+ { bits: "5:0",
+ name: "field0",
+ desc: ""
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "10:8",
+ name: "field1",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "14",
+ name: "field2",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ { bits: "15",
+ name: "field3",
+ desc: "",
+ swaccess: "ro",
+ resval: "0x0",
+ }
+ ]
+ },
+ ]
+ }
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_orig.json b/src/fuse_ctrl/data/otp_ctrl_orig.json
new file mode 100644
index 0000000..71fc987
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_orig.json
@@ -0,0 +1,3297 @@
+{
+ "name": "otp_ctrl",
+ "human_name": "One-Time Programmable Memory Controller",
+ "one_line_desc": "Interfaces integrated one-time programmable memory, supports scrambling, integrity and secure wipe",
+ "one_paragraph_desc": "One-Time Programmable (OTP) Memory Controller provides an open source abstraction interface for software and other hardware components such as Life Cycle Controller and Key Manager to interact with an integrated, closed source, proprietary OTP memory.\nOn top of defensive features provided by the proprietary OTP memory to deter side-channel analysis (SCA), fault injection (FI) attacks, and visual and electrical probing, the open source OTP controller features high-level logical security protection such as integrity checks and scrambling, as well as software isolation for when OTP contents are readable and programmable.\nIt features multiple individually-lockable logical partitions, periodic / persistent checking of OTP values, and a separate partition and interface for Life Cycle Controller.",
+ "cip_id": "16",
+ "design_spec": "../doc",
+ "dv_doc": "../doc/dv",
+ "hw_checklist": "../doc/checklist",
+ "sw_checklist": "/sw/device/lib/dif/dif_otp_ctrl",
+ "revisions": [
+ {
+ "version": "0.1.0",
+ "life_stage": "L1",
+ "design_stage": "D2",
+ "verification_stage": "V2",
+ "dif_stage": "S1",
+ "commit_id": "127b109e2fab9336e830158abe449a3922544ded",
+ "notes": ""
+ },
+ {
+ "version": "1.0.0",
+ "life_stage": "L1",
+ "design_stage": "D3",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ },
+ {
+ "version": "2.0.0",
+ "life_stage": "L1",
+ "design_stage": "D2S",
+ "verification_stage": "V2S",
+ "dif_stage": "S2",
+ "notes": ""
+ }
+ ],
+ "clocking": [
+ {
+ "clock": "clk_i",
+ "reset": "rst_ni",
+ "primary": true
+ },
+ {
+ "clock": "clk_edn_i",
+ "reset": "rst_edn_ni"
+ }
+ ],
+ "scan": "true",
+ "scan_reset": "true",
+ "scan_en": "true",
+ "bus_interfaces": [
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "core"
+ },
+ {
+ "protocol": "tlul",
+ "direction": "device",
+ "name": "prim",
+ "hier_path": "u_otp.gen_generic.u_impl_generic.u_reg_top"
+ }
+ ],
+ "available_output_list": [
+ {
+ "name": "test",
+ "width": 8,
+ "desc": "Test-related GPIOs. Only active in DFT-enabled life cycle states."
+ }
+ ],
+ "interrupt_list": [
+ {
+ "name": "otp_operation_done",
+ "desc": "A direct access command or digest calculation operation has completed."
+ },
+ {
+ "name": "otp_error",
+ "desc": "An error has occurred in the OTP controller. Check the !!ERR_CODE register to get more information."
+ }
+ ],
+ "alert_list": [
+ {
+ "name": "fatal_macro_error",
+ "desc": "This alert triggers if hardware detects an uncorrectable error during an OTP transaction, for example an uncorrectable ECC error in the OTP array."
+ },
+ {
+ "name": "fatal_check_error",
+ "desc": "This alert triggers if any of the background checks fails. This includes the digest checks and concurrent ECC checks in the buffer registers."
+ },
+ {
+ "name": "fatal_bus_integ_error",
+ "desc": "This fatal alert is triggered when a fatal TL-UL bus integrity fault is detected."
+ },
+ {
+ "name": "fatal_prim_otp_alert",
+ "desc": "Fatal alert triggered inside the OTP primitive, including fatal TL-UL bus integrity faults of the test interface."
+ },
+ {
+ "name": "recov_prim_otp_alert",
+ "desc": "Recoverable alert triggered inside the OTP primitive."
+ }
+ ],
+ "param_list": [
+ {
+ "name": "MemInitFile",
+ "desc": "VMEM file to initialize the OTP macro.",
+ "type": "",
+ "default": "\"\"",
+ "expose": "true",
+ "local": "false"
+ },
+ {
+ "name": "RndCnstLfsrSeed",
+ "desc": "Compile-time random bits for initial LFSR seed",
+ "type": "otp_ctrl_pkg::lfsr_seed_t",
+ "randcount": "40",
+ "randtype": "data"
+ },
+ {
+ "name": "RndCnstLfsrPerm",
+ "desc": "Compile-time random permutation for LFSR output",
+ "type": "otp_ctrl_pkg::lfsr_perm_t",
+ "randcount": "40",
+ "randtype": "perm"
+ },
+ {
+ "name": "RndCnstScrmblKeyInit",
+ "desc": "Compile-time random permutation for scrambling key/nonce register reset value",
+ "type": "otp_ctrl_pkg::scrmbl_key_init_t",
+ "randcount": "256",
+ "randtype": "data"
+ },
+ {
+ "name": "NumSramKeyReqSlots",
+ "desc": "Number of key slots",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OtpByteAddrWidth",
+ "desc": "Width of the OTP byte address.",
+ "type": "int",
+ "default": "11",
+ "local": "true"
+ },
+ {
+ "name": "NumErrorEntries",
+ "desc": "Number of error register entries.",
+ "type": "int",
+ "default": "13",
+ "local": "true"
+ },
+ {
+ "name": "NumDaiWords",
+ "desc": "Number of 32bit words in the DAI.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumDigestWords",
+ "desc": "Size of the digest fields in 32bit words.",
+ "type": "int",
+ "default": "2",
+ "local": "true"
+ },
+ {
+ "name": "NumSwCfgWindowWords",
+ "desc": "Size of the TL-UL window in 32bit words. Note that the effective partition size is smaller than that.",
+ "type": "int",
+ "default": "512",
+ "local": "true"
+ },
+ {
+ "name": "NumPart",
+ "desc": "Number of partitions",
+ "type": "int",
+ "default": "11",
+ "local": "true"
+ },
+ {
+ "name": "NumPartUnbuf",
+ "desc": "Number of unbuffered partitions",
+ "type": "int",
+ "default": "5",
+ "local": "true"
+ },
+ {
+ "name": "NumPartBuf",
+ "desc": "Number of buffered partitions (including 1 lifecycle partition)",
+ "type": "int",
+ "default": "6",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestOffset",
+ "desc": "Offset of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestSize",
+ "desc": "Size of the VENDOR_TEST partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "ScratchOffset",
+ "desc": "Offset of SCRATCH",
+ "type": "int",
+ "default": "0",
+ "local": "true"
+ },
+ {
+ "name": "ScratchSize",
+ "desc": "Size of SCRATCH",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestOffset",
+ "desc": "Offset of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "56",
+ "local": "true"
+ },
+ {
+ "name": "VendorTestDigestSize",
+ "desc": "Size of VENDOR_TEST_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgOffset",
+ "desc": "Offset of the CREATOR_SW_CFG partition",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSize",
+ "desc": "Size of the CREATOR_SW_CFG partition",
+ "type": "int",
+ "default": "424",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgAstCfgOffset",
+ "desc": "Offset of CREATOR_SW_CFG_AST_CFG",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgAstCfgSize",
+ "desc": "Size of CREATOR_SW_CFG_AST_CFG",
+ "type": "int",
+ "default": "156",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgAstInitEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_AST_INIT_EN",
+ "type": "int",
+ "default": "220",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgAstInitEnSize",
+ "desc": "Size of CREATOR_SW_CFG_AST_INIT_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRomExtSkuOffset",
+ "desc": "Offset of CREATOR_SW_CFG_ROM_EXT_SKU",
+ "type": "int",
+ "default": "224",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRomExtSkuSize",
+ "desc": "Size of CREATOR_SW_CFG_ROM_EXT_SKU",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifyRsaModExpIbexEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_SIGVERIFY_RSA_MOD_EXP_IBEX_EN",
+ "type": "int",
+ "default": "228",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifyRsaModExpIbexEnSize",
+ "desc": "Size of CREATOR_SW_CFG_SIGVERIFY_RSA_MOD_EXP_IBEX_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifyRsaKeyEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_SIGVERIFY_RSA_KEY_EN",
+ "type": "int",
+ "default": "232",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifyRsaKeyEnSize",
+ "desc": "Size of CREATOR_SW_CFG_SIGVERIFY_RSA_KEY_EN",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifySpxEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_SIGVERIFY_SPX_EN",
+ "type": "int",
+ "default": "240",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifySpxEnSize",
+ "desc": "Size of CREATOR_SW_CFG_SIGVERIFY_SPX_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifySpxKeyEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_SIGVERIFY_SPX_KEY_EN",
+ "type": "int",
+ "default": "244",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSigverifySpxKeyEnSize",
+ "desc": "Size of CREATOR_SW_CFG_SIGVERIFY_SPX_KEY_EN",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashDataDefaultCfgOffset",
+ "desc": "Offset of CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG",
+ "type": "int",
+ "default": "252",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashDataDefaultCfgSize",
+ "desc": "Size of CREATOR_SW_CFG_FLASH_DATA_DEFAULT_CFG",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashInfoBootDataCfgOffset",
+ "desc": "Offset of CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG",
+ "type": "int",
+ "default": "256",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashInfoBootDataCfgSize",
+ "desc": "Size of CREATOR_SW_CFG_FLASH_INFO_BOOT_DATA_CFG",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashHwInfoCfgOverrideOffset",
+ "desc": "Offset of CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE",
+ "type": "int",
+ "default": "260",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgFlashHwInfoCfgOverrideSize",
+ "desc": "Size of CREATOR_SW_CFG_FLASH_HW_INFO_CFG_OVERRIDE",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_EN",
+ "type": "int",
+ "default": "264",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngEnSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgJitterEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_JITTER_EN",
+ "type": "int",
+ "default": "268",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgJitterEnSize",
+ "desc": "Size of CREATOR_SW_CFG_JITTER_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRetRamResetMaskOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RET_RAM_RESET_MASK",
+ "type": "int",
+ "default": "272",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRetRamResetMaskSize",
+ "desc": "Size of CREATOR_SW_CFG_RET_RAM_RESET_MASK",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgManufStateOffset",
+ "desc": "Offset of CREATOR_SW_CFG_MANUF_STATE",
+ "type": "int",
+ "default": "276",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgManufStateSize",
+ "desc": "Size of CREATOR_SW_CFG_MANUF_STATE",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRomExecEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_ROM_EXEC_EN",
+ "type": "int",
+ "default": "280",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRomExecEnSize",
+ "desc": "Size of CREATOR_SW_CFG_ROM_EXEC_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgCpuctrlOffset",
+ "desc": "Offset of CREATOR_SW_CFG_CPUCTRL",
+ "type": "int",
+ "default": "284",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgCpuctrlSize",
+ "desc": "Size of CREATOR_SW_CFG_CPUCTRL",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgMinSecVerRomExtOffset",
+ "desc": "Offset of CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT",
+ "type": "int",
+ "default": "288",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgMinSecVerRomExtSize",
+ "desc": "Size of CREATOR_SW_CFG_MIN_SEC_VER_ROM_EXT",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgMinSecVerBl0Offset",
+ "desc": "Offset of CREATOR_SW_CFG_MIN_SEC_VER_BL0",
+ "type": "int",
+ "default": "292",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgMinSecVerBl0Size",
+ "desc": "Size of CREATOR_SW_CFG_MIN_SEC_VER_BL0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgDefaultBootDataInProdEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN",
+ "type": "int",
+ "default": "296",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgDefaultBootDataInProdEnSize",
+ "desc": "Size of CREATOR_SW_CFG_DEFAULT_BOOT_DATA_IN_PROD_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRmaSpinEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RMA_SPIN_EN",
+ "type": "int",
+ "default": "300",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRmaSpinEnSize",
+ "desc": "Size of CREATOR_SW_CFG_RMA_SPIN_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRmaSpinCyclesOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RMA_SPIN_CYCLES",
+ "type": "int",
+ "default": "304",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRmaSpinCyclesSize",
+ "desc": "Size of CREATOR_SW_CFG_RMA_SPIN_CYCLES",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngRepcntThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS",
+ "type": "int",
+ "default": "308",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngRepcntThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_REPCNT_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngRepcntsThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS",
+ "type": "int",
+ "default": "312",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngRepcntsThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_REPCNTS_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAdaptpHiThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS",
+ "type": "int",
+ "default": "316",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAdaptpHiThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_ADAPTP_HI_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAdaptpLoThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS",
+ "type": "int",
+ "default": "320",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAdaptpLoThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_ADAPTP_LO_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngBucketThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS",
+ "type": "int",
+ "default": "324",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngBucketThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_BUCKET_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngMarkovHiThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS",
+ "type": "int",
+ "default": "328",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngMarkovHiThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_MARKOV_HI_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngMarkovLoThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS",
+ "type": "int",
+ "default": "332",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngMarkovLoThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_MARKOV_LO_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngExthtHiThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS",
+ "type": "int",
+ "default": "336",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngExthtHiThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_EXTHT_HI_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngExthtLoThresholdsOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS",
+ "type": "int",
+ "default": "340",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngExthtLoThresholdsSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_EXTHT_LO_THRESHOLDS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAlertThresholdOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_ALERT_THRESHOLD",
+ "type": "int",
+ "default": "344",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngAlertThresholdSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_ALERT_THRESHOLD",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngHealthConfigDigestOffset",
+ "desc": "Offset of CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST",
+ "type": "int",
+ "default": "348",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgRngHealthConfigDigestSize",
+ "desc": "Size of CREATOR_SW_CFG_RNG_HEALTH_CONFIG_DIGEST",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSramKeyRenewEnOffset",
+ "desc": "Offset of CREATOR_SW_CFG_SRAM_KEY_RENEW_EN",
+ "type": "int",
+ "default": "352",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgSramKeyRenewEnSize",
+ "desc": "Size of CREATOR_SW_CFG_SRAM_KEY_RENEW_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgDigestOffset",
+ "desc": "Offset of CREATOR_SW_CFG_DIGEST",
+ "type": "int",
+ "default": "480",
+ "local": "true"
+ },
+ {
+ "name": "CreatorSwCfgDigestSize",
+ "desc": "Size of CREATOR_SW_CFG_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgOffset",
+ "desc": "Offset of the OWNER_SW_CFG partition",
+ "type": "int",
+ "default": "488",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgSize",
+ "desc": "Size of the OWNER_SW_CFG partition",
+ "type": "int",
+ "default": "656",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomErrorReportingOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ERROR_REPORTING",
+ "type": "int",
+ "default": "488",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomErrorReportingSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ERROR_REPORTING",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomBootstrapDisOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_BOOTSTRAP_DIS",
+ "type": "int",
+ "default": "492",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomBootstrapDisSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_BOOTSTRAP_DIS",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertClassEnOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_CLASS_EN",
+ "type": "int",
+ "default": "496",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertClassEnSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_CLASS_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertEscalationOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_ESCALATION",
+ "type": "int",
+ "default": "500",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertEscalationSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_ESCALATION",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertClassificationOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION",
+ "type": "int",
+ "default": "504",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertClassificationSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_CLASSIFICATION",
+ "type": "int",
+ "default": "320",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomLocalAlertClassificationOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION",
+ "type": "int",
+ "default": "824",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomLocalAlertClassificationSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_LOCAL_ALERT_CLASSIFICATION",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertAccumThreshOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH",
+ "type": "int",
+ "default": "888",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertAccumThreshSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_ACCUM_THRESH",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertTimeoutCyclesOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES",
+ "type": "int",
+ "default": "904",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertTimeoutCyclesSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_TIMEOUT_CYCLES",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertPhaseCyclesOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES",
+ "type": "int",
+ "default": "920",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertPhaseCyclesSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_PHASE_CYCLES",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestProdOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD",
+ "type": "int",
+ "default": "984",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestProdSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestProdEndOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END",
+ "type": "int",
+ "default": "988",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestProdEndSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_PROD_END",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestDevOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV",
+ "type": "int",
+ "default": "992",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestDevSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_DEV",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestRmaOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA",
+ "type": "int",
+ "default": "996",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomAlertDigestRmaSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_ALERT_DIGEST_RMA",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomWatchdogBiteThresholdCyclesOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES",
+ "type": "int",
+ "default": "1000",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomWatchdogBiteThresholdCyclesSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_WATCHDOG_BITE_THRESHOLD_CYCLES",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomKeymgrRomExtMeasEnOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_KEYMGR_ROM_EXT_MEAS_EN",
+ "type": "int",
+ "default": "1004",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomKeymgrRomExtMeasEnSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_KEYMGR_ROM_EXT_MEAS_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgManufStateOffset",
+ "desc": "Offset of OWNER_SW_CFG_MANUF_STATE",
+ "type": "int",
+ "default": "1008",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgManufStateSize",
+ "desc": "Size of OWNER_SW_CFG_MANUF_STATE",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomRstmgrInfoEnOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_RSTMGR_INFO_EN",
+ "type": "int",
+ "default": "1012",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomRstmgrInfoEnSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_RSTMGR_INFO_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomExtBootstrapEnOffset",
+ "desc": "Offset of OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN",
+ "type": "int",
+ "default": "1016",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgRomExtBootstrapEnSize",
+ "desc": "Size of OWNER_SW_CFG_ROM_EXT_BOOTSTRAP_EN",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgDigestOffset",
+ "desc": "Offset of OWNER_SW_CFG_DIGEST",
+ "type": "int",
+ "default": "1136",
+ "local": "true"
+ },
+ {
+ "name": "OwnerSwCfgDigestSize",
+ "desc": "Size of OWNER_SW_CFG_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignOffset",
+ "desc": "Offset of the ROT_CREATOR_AUTH_CODESIGN partition",
+ "type": "int",
+ "default": "1144",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSize",
+ "desc": "Size of the ROT_CREATOR_AUTH_CODESIGN partition",
+ "type": "int",
+ "default": "472",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0",
+ "type": "int",
+ "default": "1144",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0",
+ "type": "int",
+ "default": "1148",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY0",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1",
+ "type": "int",
+ "default": "1212",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE1",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1",
+ "type": "int",
+ "default": "1216",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY1",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2",
+ "type": "int",
+ "default": "1280",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE2",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2",
+ "type": "int",
+ "default": "1284",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY2",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3",
+ "type": "int",
+ "default": "1348",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKeyType3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY_TYPE3",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3",
+ "type": "int",
+ "default": "1352",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignEcdsaKey3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_ECDSA_KEY3",
+ "type": "int",
+ "default": "64",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0",
+ "type": "int",
+ "default": "1416",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0",
+ "type": "int",
+ "default": "1420",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY0",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0",
+ "type": "int",
+ "default": "1452",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1",
+ "type": "int",
+ "default": "1456",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE1",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1",
+ "type": "int",
+ "default": "1460",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY1",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1",
+ "type": "int",
+ "default": "1492",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG1",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2",
+ "type": "int",
+ "default": "1496",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE2",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2",
+ "type": "int",
+ "default": "1500",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY2",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2",
+ "type": "int",
+ "default": "1532",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG2",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3",
+ "type": "int",
+ "default": "1536",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyType3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_TYPE3",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3",
+ "type": "int",
+ "default": "1540",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKey3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY3",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3",
+ "type": "int",
+ "default": "1572",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignSpxKeyConfig3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_SPX_KEY_CONFIG3",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignBlockSha2_256HashOffset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH",
+ "type": "int",
+ "default": "1576",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignBlockSha2_256HashSize",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_BLOCK_SHA2_256_HASH",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignDigestOffset",
+ "desc": "Offset of ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ "type": "int",
+ "default": "1608",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthCodesignDigestSize",
+ "desc": "Size of ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateOffset",
+ "desc": "Offset of the ROT_CREATOR_AUTH_STATE partition",
+ "type": "int",
+ "default": "1616",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSize",
+ "desc": "Size of the ROT_CREATOR_AUTH_STATE partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY0",
+ "type": "int",
+ "default": "1616",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY1",
+ "type": "int",
+ "default": "1620",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY1",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY2",
+ "type": "int",
+ "default": "1624",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY2",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_ECDSA_KEY3",
+ "type": "int",
+ "default": "1628",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateEcdsaKey3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_ECDSA_KEY3",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey0Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY0",
+ "type": "int",
+ "default": "1632",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey0Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY0",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey1Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY1",
+ "type": "int",
+ "default": "1636",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey1Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY1",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey2Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY2",
+ "type": "int",
+ "default": "1640",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey2Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY2",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey3Offset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_SPX_KEY3",
+ "type": "int",
+ "default": "1644",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateSpxKey3Size",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_SPX_KEY3",
+ "type": "int",
+ "default": "4",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateDigestOffset",
+ "desc": "Offset of ROT_CREATOR_AUTH_STATE_DIGEST",
+ "type": "int",
+ "default": "1648",
+ "local": "true"
+ },
+ {
+ "name": "RotCreatorAuthStateDigestSize",
+ "desc": "Size of ROT_CREATOR_AUTH_STATE_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg0Offset",
+ "desc": "Offset of the HW_CFG0 partition",
+ "type": "int",
+ "default": "1656",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg0Size",
+ "desc": "Size of the HW_CFG0 partition",
+ "type": "int",
+ "default": "72",
+ "local": "true"
+ },
+ {
+ "name": "DeviceIdOffset",
+ "desc": "Offset of DEVICE_ID",
+ "type": "int",
+ "default": "1656",
+ "local": "true"
+ },
+ {
+ "name": "DeviceIdSize",
+ "desc": "Size of DEVICE_ID",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "ManufStateOffset",
+ "desc": "Offset of MANUF_STATE",
+ "type": "int",
+ "default": "1688",
+ "local": "true"
+ },
+ {
+ "name": "ManufStateSize",
+ "desc": "Size of MANUF_STATE",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg0DigestOffset",
+ "desc": "Offset of HW_CFG0_DIGEST",
+ "type": "int",
+ "default": "1720",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg0DigestSize",
+ "desc": "Size of HW_CFG0_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg1Offset",
+ "desc": "Offset of the HW_CFG1 partition",
+ "type": "int",
+ "default": "1728",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg1Size",
+ "desc": "Size of the HW_CFG1 partition",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "EnSramIfetchOffset",
+ "desc": "Offset of EN_SRAM_IFETCH",
+ "type": "int",
+ "default": "1728",
+ "local": "true"
+ },
+ {
+ "name": "EnSramIfetchSize",
+ "desc": "Size of EN_SRAM_IFETCH",
+ "type": "int",
+ "default": "1",
+ "local": "true"
+ },
+ {
+ "name": "EnCsrngSwAppReadOffset",
+ "desc": "Offset of EN_CSRNG_SW_APP_READ",
+ "type": "int",
+ "default": "1729",
+ "local": "true"
+ },
+ {
+ "name": "EnCsrngSwAppReadSize",
+ "desc": "Size of EN_CSRNG_SW_APP_READ",
+ "type": "int",
+ "default": "1",
+ "local": "true"
+ },
+ {
+ "name": "DisRvDmLateDebugOffset",
+ "desc": "Offset of DIS_RV_DM_LATE_DEBUG",
+ "type": "int",
+ "default": "1730",
+ "local": "true"
+ },
+ {
+ "name": "DisRvDmLateDebugSize",
+ "desc": "Size of DIS_RV_DM_LATE_DEBUG",
+ "type": "int",
+ "default": "1",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg1DigestOffset",
+ "desc": "Offset of HW_CFG1_DIGEST",
+ "type": "int",
+ "default": "1736",
+ "local": "true"
+ },
+ {
+ "name": "HwCfg1DigestSize",
+ "desc": "Size of HW_CFG1_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Offset",
+ "desc": "Offset of the SECRET0 partition",
+ "type": "int",
+ "default": "1744",
+ "local": "true"
+ },
+ {
+ "name": "Secret0Size",
+ "desc": "Size of the SECRET0 partition",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenOffset",
+ "desc": "Offset of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "1744",
+ "local": "true"
+ },
+ {
+ "name": "TestUnlockTokenSize",
+ "desc": "Size of TEST_UNLOCK_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenOffset",
+ "desc": "Offset of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "1760",
+ "local": "true"
+ },
+ {
+ "name": "TestExitTokenSize",
+ "desc": "Size of TEST_EXIT_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestOffset",
+ "desc": "Offset of SECRET0_DIGEST",
+ "type": "int",
+ "default": "1776",
+ "local": "true"
+ },
+ {
+ "name": "Secret0DigestSize",
+ "desc": "Size of SECRET0_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Offset",
+ "desc": "Offset of the SECRET1 partition",
+ "type": "int",
+ "default": "1784",
+ "local": "true"
+ },
+ {
+ "name": "Secret1Size",
+ "desc": "Size of the SECRET1 partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "FlashAddrKeySeedOffset",
+ "desc": "Offset of FLASH_ADDR_KEY_SEED",
+ "type": "int",
+ "default": "1784",
+ "local": "true"
+ },
+ {
+ "name": "FlashAddrKeySeedSize",
+ "desc": "Size of FLASH_ADDR_KEY_SEED",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "FlashDataKeySeedOffset",
+ "desc": "Offset of FLASH_DATA_KEY_SEED",
+ "type": "int",
+ "default": "1816",
+ "local": "true"
+ },
+ {
+ "name": "FlashDataKeySeedSize",
+ "desc": "Size of FLASH_DATA_KEY_SEED",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "SramDataKeySeedOffset",
+ "desc": "Offset of SRAM_DATA_KEY_SEED",
+ "type": "int",
+ "default": "1848",
+ "local": "true"
+ },
+ {
+ "name": "SramDataKeySeedSize",
+ "desc": "Size of SRAM_DATA_KEY_SEED",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestOffset",
+ "desc": "Offset of SECRET1_DIGEST",
+ "type": "int",
+ "default": "1864",
+ "local": "true"
+ },
+ {
+ "name": "Secret1DigestSize",
+ "desc": "Size of SECRET1_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Offset",
+ "desc": "Offset of the SECRET2 partition",
+ "type": "int",
+ "default": "1872",
+ "local": "true"
+ },
+ {
+ "name": "Secret2Size",
+ "desc": "Size of the SECRET2 partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenOffset",
+ "desc": "Offset of RMA_TOKEN",
+ "type": "int",
+ "default": "1872",
+ "local": "true"
+ },
+ {
+ "name": "RmaTokenSize",
+ "desc": "Size of RMA_TOKEN",
+ "type": "int",
+ "default": "16",
+ "local": "true"
+ },
+ {
+ "name": "CreatorRootKeyShare0Offset",
+ "desc": "Offset of CREATOR_ROOT_KEY_SHARE0",
+ "type": "int",
+ "default": "1888",
+ "local": "true"
+ },
+ {
+ "name": "CreatorRootKeyShare0Size",
+ "desc": "Size of CREATOR_ROOT_KEY_SHARE0",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "CreatorRootKeyShare1Offset",
+ "desc": "Offset of CREATOR_ROOT_KEY_SHARE1",
+ "type": "int",
+ "default": "1920",
+ "local": "true"
+ },
+ {
+ "name": "CreatorRootKeyShare1Size",
+ "desc": "Size of CREATOR_ROOT_KEY_SHARE1",
+ "type": "int",
+ "default": "32",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestOffset",
+ "desc": "Offset of SECRET2_DIGEST",
+ "type": "int",
+ "default": "1952",
+ "local": "true"
+ },
+ {
+ "name": "Secret2DigestSize",
+ "desc": "Size of SECRET2_DIGEST",
+ "type": "int",
+ "default": "8",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleOffset",
+ "desc": "Offset of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "1960",
+ "local": "true"
+ },
+ {
+ "name": "LifeCycleSize",
+ "desc": "Size of the LIFE_CYCLE partition",
+ "type": "int",
+ "default": "88",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntOffset",
+ "desc": "Offset of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "1960",
+ "local": "true"
+ },
+ {
+ "name": "LcTransitionCntSize",
+ "desc": "Size of LC_TRANSITION_CNT",
+ "type": "int",
+ "default": "48",
+ "local": "true"
+ },
+ {
+ "name": "LcStateOffset",
+ "desc": "Offset of LC_STATE",
+ "type": "int",
+ "default": "2008",
+ "local": "true"
+ },
+ {
+ "name": "LcStateSize",
+ "desc": "Size of LC_STATE",
+ "type": "int",
+ "default": "40",
+ "local": "true"
+ }
+ ],
+ "inter_signal_list": [
+ {
+ "struct": "",
+ "type": "io",
+ "name": "otp_ext_voltage_h",
+ "act": "none",
+ "default": "'0",
+ "package": ""
+ },
+ {
+ "struct": "otp_ast_req",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals to AST (VDD domain)."
+ },
+ {
+ "struct": "otp_ast_rsp",
+ "type": "uni",
+ "name": "otp_ast_pwr_seq_h",
+ "act": "rcv",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Power sequencing signals coming from AST (VCC domain)."
+ },
+ {
+ "struct": "edn",
+ "type": "req_rsp",
+ "name": "edn",
+ "act": "req",
+ "package": "edn_pkg",
+ "desc": "Entropy request to the entropy distribution network for LFSR reseeding and ephemeral key derivation."
+ },
+ {
+ "struct": "pwr_otp",
+ "type": "req_rsp",
+ "name": "pwr_otp",
+ "act": "rsp",
+ "default": "'0",
+ "package": "pwrmgr_pkg",
+ "desc": "Initialization request/acknowledge from/to power manager."
+ },
+ {
+ "struct": "lc_otp_vendor_test",
+ "type": "req_rsp",
+ "name": "lc_otp_vendor_test",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Vendor test control signals from/to the life cycle TAP."
+ },
+ {
+ "struct": "lc_otp_program",
+ "type": "req_rsp",
+ "name": "lc_otp_program",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state transition interface."
+ },
+ {
+ "struct": "otp_lc_data",
+ "type": "uni",
+ "name": "otp_lc_data",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Life cycle state output holding the current life cycle state,\nthe value of the transition counter and the tokens needed for life cycle transitions."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_escalate_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle escalation enable coming from life cycle controller.\nThis signal moves all FSMs within OTP into the error state."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_creator_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the RMA_TOKEN and CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_owner_seed_sw_rw_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Provision enable qualifier coming from life cycle controller.\nThis signal enables SW read / write access to the OWNER_SEED."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_seed_hw_rd_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Seed read enable coming from life cycle controller.\nThis signal enables HW read access to the CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_dft_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Test enable qualifier coming from life cycle controller.\nThis signals enables the TL-UL access port to the proprietary OTP IP."
+ },
+ {
+ "struct": "lc_tx",
+ "type": "uni",
+ "name": "lc_check_byp_en",
+ "act": "rcv",
+ "default": "lc_ctrl_pkg::Off",
+ "package": "lc_ctrl_pkg",
+ "desc": "Life cycle partition check bypass signal.\nThis signal causes the life cycle partition to bypass consistency checks during life cycle state transitions in order to prevent spurious consistency check failures."
+ },
+ {
+ "struct": "otp_keymgr_key",
+ "type": "uni",
+ "name": "otp_keymgr_key",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key output to the key manager holding CREATOR_ROOT_KEY_SHARE0 and CREATOR_ROOT_KEY_SHARE1."
+ },
+ {
+ "struct": "flash_otp_key",
+ "type": "req_rsp",
+ "name": "flash_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for FLASH scrambling."
+ },
+ {
+ "struct": "sram_otp_key",
+ "width": "4",
+ "type": "req_rsp",
+ "name": "sram_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Array with key derivation interfaces for SRAM scrambling devices."
+ },
+ {
+ "struct": "otbn_otp_key",
+ "type": "req_rsp",
+ "name": "otbn_otp_key",
+ "act": "rsp",
+ "default": "'0",
+ "package": "otp_ctrl_pkg",
+ "desc": "Key derivation interface for OTBN scrambling devices."
+ },
+ {
+ "struct": "otp_broadcast",
+ "type": "uni",
+ "name": "otp_broadcast",
+ "act": "req",
+ "default": "'0",
+ "package": "otp_ctrl_part_pkg",
+ "desc": "Output of the HW partitions with breakout data types."
+ },
+ {
+ "struct": "ast_obs_ctrl",
+ "type": "uni",
+ "name": "obs_ctrl",
+ "act": "rcv",
+ "package": "ast_pkg",
+ "desc": "AST observability control signals."
+ },
+ {
+ "struct": "logic",
+ "type": "uni",
+ "name": "otp_obs",
+ "act": "req",
+ "width": "8",
+ "package": "",
+ "desc": "AST observability bus."
+ }
+ ],
+ "countermeasures": [
+ {
+ "name": "BUS.INTEGRITY",
+ "desc": "End-to-end bus integrity scheme."
+ },
+ {
+ "name": "SECRET.MEM.SCRAMBLE",
+ "desc": "Secret partitions are scrambled with a full-round PRESENT cipher."
+ },
+ {
+ "name": "PART.MEM.DIGEST",
+ "desc": "Integrity of buffered partitions is ensured via a 64bit digest."
+ },
+ {
+ "name": "DAI.FSM.SPARSE",
+ "desc": "The direct access interface FSM is sparsely encoded."
+ },
+ {
+ "name": "KDI.FSM.SPARSE",
+ "desc": "The key derivation interface FSM is sparsely encoded."
+ },
+ {
+ "name": "LCI.FSM.SPARSE",
+ "desc": "The life cycle interface FSM is sparsely encoded."
+ },
+ {
+ "name": "PART.FSM.SPARSE",
+ "desc": "The partition FSMs are sparsely encoded."
+ },
+ {
+ "name": "SCRMBL.FSM.SPARSE",
+ "desc": "The scramble datapath FSM is sparsely encoded."
+ },
+ {
+ "name": "TIMER.FSM.SPARSE",
+ "desc": "The background check timer FSM is sparsely encoded."
+ },
+ {
+ "name": "DAI.CTR.REDUN",
+ "desc": "The direct access interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_SEED.CTR.REDUN",
+ "desc": "The key derivation interface counter employs a cross-counter implementation."
+ },
+ {
+ "name": "KDI_ENTROPY.CTR.REDUN",
+ "desc": "The key derivation entropy counter employs a cross-counter implementation."
+ },
+ {
+ "name": "LCI.CTR.REDUN",
+ "desc": "The life cycle interface address counter employs a cross-counter implementation."
+ },
+ {
+ "name": "PART.CTR.REDUN",
+ "desc": "The address counter of buffered partitions employs a cross-counter implementation."
+ },
+ {
+ "name": "SCRMBL.CTR.REDUN",
+ "desc": "The srambling datapath counter employs a cross-counter implementation."
+ },
+ {
+ "name": "TIMER_INTEG.CTR.REDUN",
+ "desc": "The background integrity check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER_CNSTY.CTR.REDUN",
+ "desc": "The background consistency check timer employs a duplicated counter implementation."
+ },
+ {
+ "name": "TIMER.LFSR.REDUN",
+ "desc": "The background check LFSR is duplicated."
+ },
+ {
+ "name": "DAI.FSM.LOCAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "LCI.FSM.LOCAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "KDI.FSM.LOCAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "PART.FSM.LOCAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "SCRMBL.FSM.LOCAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "TIMER.FSM.LOCAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon local escalation."
+ },
+ {
+ "name": "DAI.FSM.GLOBAL_ESC",
+ "desc": "The direct access interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "LCI.FSM.GLOBAL_ESC",
+ "desc": "The life cycle interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "KDI.FSM.GLOBAL_ESC",
+ "desc": "The key derivation interface FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.FSM.GLOBAL_ESC",
+ "desc": "The partition FSMs are moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "SCRMBL.FSM.GLOBAL_ESC",
+ "desc": "The scramble datapath FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "TIMER.FSM.GLOBAL_ESC",
+ "desc": "The background check timer FSM is moved into an invalid state upon global escalation via life cycle."
+ },
+ {
+ "name": "PART.DATA_REG.INTEGRITY",
+ "desc": "All partition buffer registers are protected with ECC on 64bit blocks."
+ },
+ {
+ "name": "PART.DATA_REG.BKGN_CHK",
+ "desc": "The digest of buffered partitions is recomputed and checked at pseudorandom intervals in the background."
+ },
+ {
+ "name": "PART.MEM.REGREN",
+ "desc": "Unbuffered ('software') partitions can be read-locked via a CSR until the next system reset."
+ },
+ {
+ "name": "PART.MEM.SW_UNREADABLE",
+ "desc": "Secret buffered partitions become unreadable to software once they are locked via the digest."
+ },
+ {
+ "name": "PART.MEM.SW_UNWRITABLE",
+ "desc": "All partitions become unwritable by software once they are locked via the digest."
+ },
+ {
+ "name": "LC_PART.MEM.SW_NOACCESS",
+ "desc": "The life cycle partition is not directly readable nor writable via software."
+ },
+ {
+ "name": "ACCESS.CTRL.MUBI",
+ "desc": "The access control signals going from the partitions to the DAI are MUBI encoded."
+ },
+ {
+ "name": "TOKEN_VALID.CTRL.MUBI",
+ "desc": "The token valid signals going to the life cycle controller are MUBI encoded."
+ },
+ {
+ "name": "LC_CTRL.INTERSIG.MUBI",
+ "desc": "The life cycle control signals are multibit encoded."
+ },
+ {
+ "name": "TEST.BUS.LC_GATED",
+ "desc": "Prevent access to test signals and the OTP backdoor interface in non-test lifecycle states."
+ },
+ {
+ "name": "TEST_TL_LC_GATE.FSM.SPARSE",
+ "desc": "The control FSM inside the TL-UL gating primitive is sparsely encoded."
+ },
+ {
+ "name": "DIRECT_ACCESS.CONFIG.REGWEN",
+ "desc": "The direct access CSRs are REGWEN protected."
+ },
+ {
+ "name": "CHECK_TRIGGER.CONFIG.REGWEN",
+ "desc": "The check trigger CSR is REGWEN protected."
+ },
+ {
+ "name": "CHECK.CONFIG.REGWEN",
+ "desc": "The check CSR is REGWEN protected."
+ },
+ {
+ "name": "MACRO.MEM.INTEGRITY",
+ "desc": "The OTP macro employs a vendor-specific integrity scheme at the granularity of the native 16bit OTP words.\nThe scheme is able to at least detect single bit errors."
+ },
+ {
+ "name": "MACRO.MEM.CM",
+ "desc": "The OTP macro may contain additional vendor-specific countermeasures."
+ }
+ ],
+ "features": [
+ {
+ "name": "OTP_CTRL.PARTITION.VENDOR_TEST",
+ "desc": "Vendor test partition is used for OTP programming smoke check during manufacturing flow.\nIn this partition, ECC uncorrectable errors will not lead to fatal errors and alerts.\nInstead the error will be reported as correctable ECC error."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.CREATOR_SW_CFG",
+ "desc": "During calibration stage, various parameters (clock, voltage, and timing sources) are calibrated and recorded to CREATOR_SW_CFG partition."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.OWNER_SW_CFG",
+ "desc": "Define attriutes for rom code execution"
+ },
+ {
+ "name": "OTP_CTRL.INIT",
+ "desc": "When power is up, OTP controller reads devices status.\nAfter all reads complete, the controller performs integrity check on the HW_CFG* and SECRET partitions.\nOnce all integrity checks are complete, the controller marks outputs as valid."
+ },
+ {
+ "name": "OTP_CTRL.ENTROPY_READ",
+ "desc": "Firmware can read entropy from ENTROPY_SRC block by configuring following field of HW_CFG* partition.\n- EN_CSRNG_SW_APP_READ"
+ },
+ {
+ "name": "OTP_CTRL.KEY_DERIVATION",
+ "desc": "OTP controller participate key derivation process by providing scramble key seed to SRAM_CTRL and FLASH_CTRL."
+ },
+ {
+ "name": "OTP_CTRL.PROGRAM",
+ "desc": "All other partitions except life cycle partition are programmed through DAI interface.\nAnd once non-zero digest is programmed to these partition, no further write access is allowed.\nLife cycle partition is programmed by LC_CTRL."
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET0",
+ "desc": "Test unlock tokens, Test exit token"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET1",
+ "desc": "SRAM and FLASH scrambling key"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.SECRET2",
+ "desc": "RMA unlock token and creator root key"
+ },
+ {
+ "name": "OTP_CTRL.PARTITION.LIFE_CYCLE",
+ "desc": "LC state, LC transition count.\nThis feature is owned by the LC_CTRL and cannot be tested well through the OTP_CTRL CSR interface."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.READ_LOCK",
+ "desc": "Following partitions can be read lockable by CSR.\n - VENDOR_TEST\n - CREATOR_SW_CFG\n - OWNER_SW_CFG\n Following partitions can be read lockable by writing digest.\n - SECRET0\n - SECRET1\n - RECRET2\nAll read attempt to these partitions after read is locked will trigger AccessError (recoverable)."
+ },
+ {
+ "name": "OTP_CTRL.PARTITIONS_FEATURE.WRITE_LOCK",
+ "desc": "All partitions except LIFE_CYCLE can be write lockable by writing digest."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.RECOVERABLE",
+ "desc": "Recoverable error is created when unauthorized access atempt are detected via dai interface."
+ },
+ {
+ "name": "OTP_CTRL.ERROR_HANDLING.FATAL",
+ "desc": "Unrecoverable errors are created for uncorrectable ecc error, otp macro malfunction and unauthorized access via lc_ctrl."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.INTEGRITY_CHECK_PERIOD",
+ "desc": "The interval which the digest of the partition is recomputed to check integrity of locked partition."
+ },
+ {
+ "name": "OTP_CTRL.BACKGROUND_CHECK.CONSISTENCY_CHECK_PERIOD",
+ "desc": "Re-read period of the buffer registers to ensure data is matched with the associated OTP partition."
+ }
+ ],
+ "regwidth": "32",
+ "registers": {
+ "core": [
+ {
+ "name": "STATUS",
+ "desc": "OTP status register.",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "VENDOR_TEST_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "1",
+ "name": "CREATOR_SW_CFG_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "2",
+ "name": "OWNER_SW_CFG_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "3",
+ "name": "ROT_CREATOR_AUTH_CODESIGN_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "4",
+ "name": "ROT_CREATOR_AUTH_STATE_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "5",
+ "name": "HW_CFG0_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "6",
+ "name": "HW_CFG1_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "7",
+ "name": "SECRET0_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "8",
+ "name": "SECRET1_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "9",
+ "name": "SECRET2_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "10",
+ "name": "LIFE_CYCLE_ERROR",
+ "desc": "Set to 1 if an error occurred in this partition.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "11",
+ "name": "DAI_ERROR",
+ "desc": "Set to 1 if an error occurred in the DAI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "12",
+ "name": "LCI_ERROR",
+ "desc": "Set to 1 if an error occurred in the LCI.\nIf set to 1, SW should check the !!ERR_CODE register at the corresponding index."
+ },
+ {
+ "bits": "13",
+ "name": "TIMEOUT_ERROR",
+ "desc": "Set to 1 if an integrity or consistency check times out.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "14",
+ "name": "LFSR_FSM_ERROR",
+ "desc": "Set to 1 if the LFSR timer FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "15",
+ "name": "SCRAMBLING_FSM_ERROR",
+ "desc": "Set to 1 if the scrambling datapath FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "16",
+ "name": "KEY_DERIV_FSM_ERROR",
+ "desc": "Set to 1 if the key derivation FSM has reached an invalid state.\nThis raises an fatal_check_error alert and is an unrecoverable error condition."
+ },
+ {
+ "bits": "17",
+ "name": "BUS_INTEG_ERROR",
+ "desc": "This bit is set to 1 if a fatal bus integrity fault is detected.\nThis error triggers a fatal_bus_integ_error alert."
+ },
+ {
+ "bits": "18",
+ "name": "DAI_IDLE",
+ "desc": "Set to 1 if the DAI is idle and ready to accept commands."
+ },
+ {
+ "bits": "19",
+ "name": "CHECK_PENDING",
+ "desc": "Set to 1 if an integrity or consistency check triggered by the LFSR timer or via !!CHECK_TRIGGER is pending."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "ERR_CODE",
+ "desc": "This register holds information about error conditions that occurred in the agents\ninteracting with the OTP macro via the internal bus. The error codes should be checked\nif the partitions, DAI or LCI flag an error in the !!STATUS register, or when an\n!!INTR_STATE.otp_error has been triggered. Note that all errors trigger an otp_error\ninterrupt, and in addition some errors may trigger either an fatal_macro_error or an\nfatal_check_error alert.",
+ "count": "NumErrorEntries",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "AGENT",
+ "compact": "false",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "2:0",
+ "enum": [
+ {
+ "value": "0",
+ "name": "NO_ERROR",
+ "desc": "No error condition has occurred."
+ },
+ {
+ "value": "1",
+ "name": "MACRO_ERROR",
+ "desc": "Returned if the OTP macro command was invalid or did not complete successfully\ndue to a macro malfunction.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "2",
+ "name": "MACRO_ECC_CORR_ERROR",
+ "desc": "A correctable ECC error has occured during an OTP read operation.\nThe corresponding controller automatically recovers from this error when\nissuing a new command."
+ },
+ {
+ "value": "3",
+ "name": "MACRO_ECC_UNCORR_ERROR",
+ "desc": "An uncorrectable ECC error has occurred during an OTP read operation.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present this may be a sign that the device is malfunctioning.\nThis error triggers an fatal_macro_error alert."
+ },
+ {
+ "value": "4",
+ "name": "MACRO_WRITE_BLANK_ERROR",
+ "desc": "This error is returned if a programming operation attempted to clear a bit that has previously been programmed to 1.\nThe corresponding controller automatically recovers from this error when issuing a new command.\n\nNote however that the affected OTP word may be left in an inconsistent state if this error occurs.\nThis can cause several issues when the word is accessed again (either as part of a regular read operation, as part of the readout at boot, or as part of a background check).\n\nIt is important that SW ensures that each word is only written once, since this can render the device useless."
+ },
+ {
+ "value": "5",
+ "name": "ACCESS_ERROR",
+ "desc": "This error indicates that a locked memory region has been accessed.\nThe corresponding controller automatically recovers from this error when issuing a new command."
+ },
+ {
+ "value": "6",
+ "name": "CHECK_FAIL_ERROR",
+ "desc": "An ECC, integrity or consistency mismatch has been detected in the buffer registers.\nThis error should never occur during normal operation and is not recoverable.\nThis error triggers an fatal_check_error alert."
+ },
+ {
+ "value": "7",
+ "name": "FSM_STATE_ERROR",
+ "desc": "The FSM of the corresponding controller has reached an invalid state, or the FSM has\nbeen moved into a terminal error state due to an escalation action via lc_escalate_en_i.\nThis error should never occur during normal operation and is not recoverable.\nIf this error is present, this is a sign that the device has fallen victim to\nan invasive attack. This error triggers an fatal_check_error alert."
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "name": "DIRECT_ACCESS_REGWEN",
+ "desc": "Register write enable for all direct access interface registers.",
+ "swaccess": "rw0c",
+ "hwaccess": "hrw",
+ "hwext": "true",
+ "hwqe": "true",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "This bit controls whether the DAI registers can be written.\nWrite 0 to it in order to clear the bit.\n\nNote that the hardware also modulates this bit and sets it to 0 temporarily\nduring an OTP operation such that the corresponding address and data registers\ncannot be modified while an operation is pending. The !!DAI_IDLE status bit\nwill also be set to 0 in such a case.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_CMD",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "name": "RD",
+ "desc": "Initiates a readout sequence that reads the location specified\nby !!DIRECT_ACCESS_ADDRESS. The command places the data read into\n!!DIRECT_ACCESS_RDATA_0 and !!DIRECT_ACCESS_RDATA_1 (for 64bit partitions)."
+ },
+ {
+ "bits": "1",
+ "name": "WR",
+ "desc": "Initiates a programming sequence that writes the data in !!DIRECT_ACCESS_WDATA_0\nand !!DIRECT_ACCESS_WDATA_1 (for 64bit partitions) to the location specified by\n!!DIRECT_ACCESS_ADDRESS."
+ },
+ {
+ "bits": "2",
+ "name": "DIGEST",
+ "desc": "Initiates the digest calculation and locking sequence for the partition specified by\n!!DIRECT_ACCESS_ADDRESS."
+ }
+ ]
+ },
+ {
+ "name": "DIRECT_ACCESS_ADDRESS",
+ "desc": "Address register for direct accesses.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "resval": 0,
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "OtpByteAddrWidth-1:0",
+ "desc": "This is the address for the OTP word to be read or written through\nthe direct access interface. Note that the address is aligned to the access size\ninternally, hence bits 1:0 are ignored for 32bit accesses, and bits 2:0 are ignored\nfor 64bit accesses.\n\nFor the digest calculation command, set this register to the partition base offset."
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_WDATA",
+ "desc": "Write data for direct accesses.\nHardware automatically determines the access granule (32bit or 64bit) based on which\npartition is being written to.",
+ "count": "NumDaiWords",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwqe": "false",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "DIRECT_ACCESS_RDATA",
+ "desc": "Read data for direct accesses.\nHardware automatically determines the access granule (32bit or 64bit) based on which\npartition is read from.",
+ "count": "NumDaiWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "name": "CHECK_TRIGGER_REGWEN",
+ "desc": "Register write enable for !!CHECK_TRIGGER.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, the !!CHECK_TRIGGER register cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TRIGGER",
+ "desc": "Command register for direct accesses.",
+ "swaccess": "r0w1c",
+ "hwaccess": "hro",
+ "hwqe": "true",
+ "hwext": "true",
+ "resval": 0,
+ "regwen": "CHECK_TRIGGER_REGWEN",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "INTEGRITY",
+ "desc": "Writing 1 to this bit triggers an integrity check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via the interrupts and alerts."
+ },
+ {
+ "bits": "1",
+ "name": "CONSISTENCY",
+ "desc": "Writing 1 to this bit triggers a consistency check. SW should monitor !!STATUS.CHECK_PENDING\nand wait until the check has been completed. If there are any errors, those will be flagged\nin the !!STATUS and !!ERR_CODE registers, and via interrupts and alerts."
+ }
+ ]
+ },
+ {
+ "name": "CHECK_REGWEN",
+ "desc": "Register write enable for !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD.",
+ "swaccess": "rw0c",
+ "hwaccess": "none",
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, !!INTEGRITY_CHECK_PERIOD and !!CONSISTENCY_CHECK_PERIOD registers cannot be written anymore.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CHECK_TIMEOUT",
+ "desc": "Timeout value for the integrity and consistency checks.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "tags": [
+ "excl:CsrAllTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "Timeout value in cycles for the for the integrity and consistency checks. If an integrity or consistency\ncheck does not complete within the timeout window, an error will be flagged in the !!STATUS register,\nan otp_error interrupt will be raised, and an fatal_check_error alert will be sent out. The timeout should\nbe set to a large value to stay on the safe side. The maximum check time can be upper bounded by the\nnumber of cycles it takes to readout, scramble and digest the entire OTP array. Since this amounts to\nroughly 25k cycles, it is recommended to set this value to at least 100'000 cycles in order to stay on the\nsafe side. A value of zero disables the timeout mechanism (default).",
+ "resval": 0
+ }
+ ]
+ },
+ {
+ "name": "INTEGRITY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nOnly applies to the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3_FFFF, corresponding to a maximum period of ~2.8s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.INTEGRITY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "CONSISTENCY_CHECK_PERIOD",
+ "desc": "This value specifies the maximum period that can be generated pseudo-randomly.\nThis applies to the LIFE_CYCLE partition and the HW_CFG* and SECRET* partitions once they are locked.",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "regwen": "CHECK_REGWEN",
+ "fields": [
+ {
+ "bits": "31:0",
+ "desc": "The pseudo-random period is generated using a 40bit LFSR internally, and this register defines\nthe bit mask to be applied to the LFSR output in order to limit its range. The value of this\nregister is left shifted by 8bits and the lower bits are set to 8'hFF in order to form the 40bit mask.\nA recommended value is 0x3FF_FFFF, corresponding to a maximum period of ~716s at 24MHz.\nA value of zero disables the timer (default). Note that a one-off check can always be triggered via\n!!CHECK_TRIGGER.CONSISTENCY.",
+ "resval": "0"
+ }
+ ]
+ },
+ {
+ "name": "VENDOR_TEST_READ_LOCK",
+ "desc": "Runtime read lock for the VENDOR_TEST partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the VENDOR_TEST partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "CREATOR_SW_CFG_READ_LOCK",
+ "desc": "Runtime read lock for the CREATOR_SW_CFG partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the CREATOR_SW_CFG partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "OWNER_SW_CFG_READ_LOCK",
+ "desc": "Runtime read lock for the OWNER_SW_CFG partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the OWNER_SW_CFG partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "ROT_CREATOR_AUTH_CODESIGN_READ_LOCK",
+ "desc": "Runtime read lock for the ROT_CREATOR_AUTH_CODESIGN partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the ROT_CREATOR_AUTH_CODESIGN partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "name": "ROT_CREATOR_AUTH_STATE_READ_LOCK",
+ "desc": "Runtime read lock for the ROT_CREATOR_AUTH_STATE partition.",
+ "swaccess": "rw0c",
+ "hwaccess": "hro",
+ "regwen": "DIRECT_ACCESS_REGWEN",
+ "tags": [
+ "excl:CsrNonInitTests:CsrExclWrite"
+ ],
+ "fields": [
+ {
+ "bits": "0",
+ "desc": "When cleared to 0, read access to the ROT_CREATOR_AUTH_STATE partition is locked.\nWrite 0 to clear this bit.",
+ "resval": 1
+ }
+ ]
+ },
+ {
+ "multireg": {
+ "name": "VENDOR_TEST_DIGEST",
+ "desc": "Integrity digest for the VENDOR_TEST partition.\nThe integrity digest is 0 by default. Software must write this\ndigest value via the direct access interface in order to lock the partition.\nAfter a reset, write access to the VENDOR_TEST partition is locked and\nthe digest becomes visible in this CSR.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "CREATOR_SW_CFG_DIGEST",
+ "desc": "Integrity digest for the CREATOR_SW_CFG partition.\nThe integrity digest is 0 by default. Software must write this\ndigest value via the direct access interface in order to lock the partition.\nAfter a reset, write access to the CREATOR_SW_CFG partition is locked and\nthe digest becomes visible in this CSR.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "OWNER_SW_CFG_DIGEST",
+ "desc": "Integrity digest for the OWNER_SW_CFG partition.\nThe integrity digest is 0 by default. Software must write this\ndigest value via the direct access interface in order to lock the partition.\nAfter a reset, write access to the OWNER_SW_CFG partition is locked and\nthe digest becomes visible in this CSR.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "ROT_CREATOR_AUTH_CODESIGN_DIGEST",
+ "desc": "Integrity digest for the ROT_CREATOR_AUTH_CODESIGN partition.\nThe integrity digest is 0 by default. Software must write this\ndigest value via the direct access interface in order to lock the partition.\nAfter a reset, write access to the ROT_CREATOR_AUTH_CODESIGN partition is locked and\nthe digest becomes visible in this CSR.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "ROT_CREATOR_AUTH_STATE_DIGEST",
+ "desc": "Integrity digest for the ROT_CREATOR_AUTH_STATE partition.\nThe integrity digest is 0 by default. Software must write this\ndigest value via the direct access interface in order to lock the partition.\nAfter a reset, write access to the ROT_CREATOR_AUTH_STATE partition is locked and\nthe digest becomes visible in this CSR.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "HW_CFG0_DIGEST",
+ "desc": "Integrity digest for the HW_CFG0 partition.\nThe integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\nAfter a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "HW_CFG1_DIGEST",
+ "desc": "Integrity digest for the HW_CFG1 partition.\nThe integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\nAfter a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET0_DIGEST",
+ "desc": "Integrity digest for the SECRET0 partition.\nThe integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\nAfter a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET1_DIGEST",
+ "desc": "Integrity digest for the SECRET1 partition.\nThe integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\nAfter a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "multireg": {
+ "name": "SECRET2_DIGEST",
+ "desc": "Integrity digest for the SECRET2 partition.\nThe integrity digest is 0 by default. The digest calculation can be triggered via the !!DIRECT_ACCESS_CMD.\nAfter a reset, the digest then becomes visible in this CSR, and the corresponding partition becomes write-locked.",
+ "count": "NumDigestWords",
+ "swaccess": "ro",
+ "hwaccess": "hwo",
+ "hwext": "true",
+ "cname": "WORD",
+ "resval": 0,
+ "tags": [
+ "excl:CsrAllTests:CsrExclCheck"
+ ],
+ "fields": [
+ {
+ "bits": "31:0"
+ }
+ ]
+ }
+ },
+ {
+ "skipto": "0x800"
+ },
+ {
+ "window": {
+ "name": "SW_CFG_WINDOW",
+ "items": "NumSwCfgWindowWords",
+ "swaccess": "ro",
+ "desc": "Any read to this window directly maps to the corresponding offset in the creator and owner software\nconfig partitions, and triggers an OTP readout of the bytes requested. Note that the transaction\nwill block until OTP readout has completed."
+ }
+ }
+ ],
+ "prim": [
+ {
+ "name": "CSR0",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "1",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "2",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "26:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR1",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "6:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:7",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14:8",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15:15",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field4",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR2",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR3",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "2:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13:4",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "16",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw1c",
+ "resval": "0x0"
+ },
+ {
+ "bits": "17",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "18",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "19",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "20",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "21",
+ "name": "field7",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "22",
+ "name": "field8",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR4",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field1",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field2",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR5",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "7:6",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "8",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11:9",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field4",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "13",
+ "name": "field5",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field6",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR6",
+ "desc": "",
+ "swaccess": "rw",
+ "hwaccess": "hro",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "9:0",
+ "name": "field0",
+ "desc": "",
+ "resval": "0x0"
+ },
+ {
+ "bits": "11",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "12",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "rw",
+ "resval": "0x0"
+ },
+ {
+ "bits": "31:16",
+ "name": "field3",
+ "desc": "",
+ "resval": "0x0"
+ }
+ ]
+ },
+ {
+ "name": "CSR7",
+ "desc": "",
+ "swaccess": "ro",
+ "hwaccess": "hrw",
+ "hwext": "false",
+ "hwqe": "false",
+ "fields": [
+ {
+ "bits": "5:0",
+ "name": "field0",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "10:8",
+ "name": "field1",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "14",
+ "name": "field2",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ },
+ {
+ "bits": "15",
+ "name": "field3",
+ "desc": "",
+ "swaccess": "ro",
+ "resval": "0x0"
+ }
+ ]
+ }
+ ]
+ }
+}
diff --git a/src/fuse_ctrl/data/otp_ctrl_part_pkg.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_part_pkg.sv.tpl
new file mode 100755
index 0000000..6c8e015
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_part_pkg.sv.tpl
@@ -0,0 +1,353 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Package partition metadata.
+//
+${gen_comment}
+<%
+from topgen.lib import Name
+%>\
+package otp_ctrl_part_pkg;
+
+ import prim_util_pkg::vbits;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_pkg::*;
+
+ ////////////////////////////////////
+ // Scrambling Constants and Types //
+ ////////////////////////////////////
+
+ parameter int NumScrmblKeys = ${len(otp_mmap.config["scrambling"]["keys"])};
+ parameter int NumDigestSets = ${len(otp_mmap.config["scrambling"]["digests"])};
+
+ parameter int ScrmblKeySelWidth = vbits(NumScrmblKeys);
+ parameter int DigestSetSelWidth = vbits(NumDigestSets);
+ parameter int ConstSelWidth = (ScrmblKeySelWidth > DigestSetSelWidth) ?
+ ScrmblKeySelWidth :
+ DigestSetSelWidth;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+ StandardMode,
+ ChainedMode
+ } digest_mode_e;
+
+ typedef logic [NumScrmblKeys-1:0][ScrmblKeyWidth-1:0] key_array_t;
+ typedef logic [NumDigestSets-1:0][ScrmblKeyWidth-1:0] digest_const_array_t;
+ typedef logic [NumDigestSets-1:0][ScrmblBlockWidth-1:0] digest_iv_array_t;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+% for key in otp_mmap.config["scrambling"]["keys"]:
+ ${key["name"]}${"" if loop.last else ","}
+% endfor
+ } key_sel_e;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+% for dig in otp_mmap.config["scrambling"]["digests"]:
+ ${dig["name"]}${"" if loop.last else ","}
+% endfor
+ } digest_sel_e;
+
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ parameter key_array_t RndCnstKey = {
+% for key in otp_mmap.config["scrambling"]["keys"][::-1]:
+ ${"{0:}'h{1:0X}".format(otp_mmap.config["scrambling"]["key_size"] * 8, key["value"])}${"" if loop.last else ","}
+% endfor
+ };
+
+ // SEC_CM: PART.MEM.DIGEST
+ // Note: digest set 0 is used for computing the partition digests. Constants at
+ // higher indices are used to compute the scrambling keys.
+ parameter digest_const_array_t RndCnstDigestConst = {
+% for dig in otp_mmap.config["scrambling"]["digests"][::-1]:
+ ${"{0:}'h{1:0X}".format(otp_mmap.config["scrambling"]["cnst_size"] * 8, dig["cnst_value"])}${"" if loop.last else ","}
+% endfor
+ };
+
+ parameter digest_iv_array_t RndCnstDigestIV = {
+% for dig in otp_mmap.config["scrambling"]["digests"][::-1]:
+ ${"{0:}'h{1:0X}".format(otp_mmap.config["scrambling"]["iv_size"] * 8, dig["iv_value"])}${"" if loop.last else ","}
+% endfor
+ };
+
+
+ /////////////////////////////////////
+ // Typedefs for Partition Metadata //
+ /////////////////////////////////////
+
+ typedef enum logic [1:0] {
+ Unbuffered,
+ Buffered,
+ LifeCycle
+ } part_variant_e;
+
+ typedef struct packed {
+ part_variant_e variant;
+ // Offset and size within the OTP array, in Bytes.
+ logic [OtpByteAddrWidth-1:0] offset;
+ logic [OtpByteAddrWidth-1:0] size;
+ // Key index to use for scrambling.
+ key_sel_e key_sel;
+ // Attributes
+ logic secret; // Whether the partition is secret (and hence scrambled)
+ logic sw_digest; // Whether the partition has a software digest
+ logic hw_digest; // Whether the partition has a hardware digest
+ logic write_lock; // Whether the partition is write lockable (via digest)
+ logic read_lock; // Whether the partition is read lockable (via digest)
+ logic integrity; // Whether the partition is integrity protected
+ logic iskeymgr_creator; // Whether the partition has any creator key material
+ logic iskeymgr_owner; // Whether the partition has any owner key material
+ } part_info_t;
+
+ parameter part_info_t PartInfoDefault = '{
+ variant: Unbuffered,
+ offset: '0,
+ size: OtpByteAddrWidth'('hFF),
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b0,
+ hw_digest: 1'b0,
+ write_lock: 1'b0,
+ read_lock: 1'b0,
+ integrity: 1'b0,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ };
+
+ ////////////////////////
+ // Partition Metadata //
+ ////////////////////////
+
+ localparam part_info_t PartInfo [NumPart] = '{
+% for part in otp_mmap.config["partitions"]:
+ // ${part["name"]}
+ '{
+ variant: ${part["variant"]},
+ offset: ${otp_mmap.config["otp"]["byte_addr_width"]}'d${part["offset"]},
+ size: ${part["size"]},
+ key_sel: ${part["key_sel"] if part["key_sel"] != "NoKey" else "key_sel_e'('0)"},
+ secret: 1'b${"1" if part["secret"] else "0"},
+ sw_digest: 1'b${"1" if part["sw_digest"] else "0"},
+ hw_digest: 1'b${"1" if part["hw_digest"] else "0"},
+ write_lock: 1'b${"1" if part["write_lock"].lower() == "digest" else "0"},
+ read_lock: 1'b${"1" if part["read_lock"].lower() == "digest" else "0"},
+ integrity: 1'b${"1" if part["integrity"] else "0"},
+ iskeymgr_creator: 1'b${"1" if part["iskeymgr_creator"] else "0"},
+ iskeymgr_owner: 1'b${"1" if part["iskeymgr_owner"] else "0"}
+ }${"" if loop.last else ","}
+% endfor
+ };
+
+ typedef enum {
+% for part in otp_mmap.config["partitions"]:
+ ${Name.from_snake_case(part["name"]).as_camel_case()}Idx,
+% endfor
+ // These are not "real partitions", but in terms of implementation it is convenient to
+ // add these at the end of certain arrays.
+ DaiIdx,
+ LciIdx,
+ KdiIdx,
+ // Number of agents is the last idx+1.
+ NumAgentsIdx
+ } part_idx_e;
+
+ parameter int NumAgents = int'(NumAgentsIdx);
+
+ // Breakout types for easier access of individual items.
+% for part in otp_mmap.config["partitions"]:
+ % if part["bkout_type"]:
+ typedef struct packed {<% offset = part['offset'] + part['size'] %>
+ % for item in part["items"][::-1]:
+ % if offset != item['offset'] + item['size']:
+ logic [${(offset - item['size'] - item['offset']) * 8 - 1}:0] unallocated;<% offset = item['offset'] + item['size'] %>
+ % endif
+<%
+ if item['ismubi']:
+ item_type = 'prim_mubi_pkg::mubi' + str(item["size"]*8) + '_t'
+ else:
+ item_type = 'logic [' + str(int(item["size"])*8-1) + ':0]'
+%>\
+ ${item_type} ${item["name"].lower()};<% offset -= item['size'] %>
+ % endfor
+ } otp_${part["name"].lower()}_data_t;
+
+ // default value used for intermodule
+ parameter otp_${part["name"].lower()}_data_t OTP_${part["name"].upper()}_DATA_DEFAULT = '{<% offset = part['offset'] + part['size'] %>
+ % for k, item in enumerate(part["items"][::-1]):
+ % if offset != item['offset'] + item['size']:
+ unallocated: ${"{}'h{:0X}".format((offset - item['size'] - item['offset']) * 8, 0)}<% offset = item['offset'] + item['size'] %>,
+ % endif
+<%
+ if item['ismubi']:
+ item_cast_pre = "prim_mubi_pkg::mubi" + str(item["size"]*8) + "_t'("
+ item_cast_post = ")"
+ else:
+ item_cast_pre = ""
+ item_cast_post = ""
+%>\
+ ${item["name"].lower()}: ${item_cast_pre}${"{}'h{:0X}".format(item["size"] * 8, item["inv_default"])}${item_cast_post}${"," if k < len(part["items"])-1 else ""}<% offset -= item['size'] %>
+ % endfor
+ };
+ % endif
+% endfor
+ typedef struct packed {
+ // This reuses the same encoding as the life cycle signals for indicating valid status.
+ lc_ctrl_pkg::lc_tx_t valid;
+% for part in otp_mmap.config["partitions"][::-1]:
+ % if part["bkout_type"]:
+ otp_${part["name"].lower()}_data_t ${part["name"].lower()}_data;
+ % endif
+% endfor
+ } otp_broadcast_t;
+
+ // default value for intermodule
+<%
+ k = 0
+ num_bkout = 0
+ for part in otp_mmap.config["partitions"]:
+ if part["bkout_type"]:
+ num_bkout += 1
+%>\
+ parameter otp_broadcast_t OTP_BROADCAST_DEFAULT = '{
+ valid: lc_ctrl_pkg::Off,
+% for part in otp_mmap.config["partitions"][::-1]:
+ % if part["bkout_type"]:
+ ${part["name"].lower()}_data: OTP_${part["name"].upper()}_DATA_DEFAULT${"" if k == num_bkout-1 else ","}
+<% k+=1 %>\
+ % endif
+% endfor
+ };
+
+<% offset = int(otp_mmap.config["partitions"][-1]["offset"]) + int(otp_mmap.config["partitions"][-1]["size"]) %>
+ // OTP invalid partition default for buffered partitions.
+ parameter logic [${offset * 8 - 1}:0] PartInvDefault = ${offset * 8}'({
+ % for k, part in enumerate(otp_mmap.config["partitions"][::-1]):
+ ${int(part["size"])*8}'({
+ % for item in part["items"][::-1]:
+ % if offset != item['offset'] + item['size']:
+ ${"{}'h{:0X}".format((offset - item['size'] - item['offset']) * 8, 0)}, // unallocated space<% offset = item['offset'] + item['size'] %>
+ % endif
+ ${"{}'h{:0X}".format(item["size"] * 8, item["inv_default"])}${("\n })," if k < len(otp_mmap.config["partitions"])-1 else "\n })});") if loop.last else ","}<% offset -= item['size'] %>
+ % endfor
+ % endfor
+
+ ///////////////////////////////////////////////
+ // Parameterized Assignment Helper Functions //
+ ///////////////////////////////////////////////
+
+ function automatic otp_ctrl_core_hw2reg_t named_reg_assign(
+ logic [NumPart-1:0][ScrmblBlockWidth-1:0] part_digest);
+ otp_ctrl_core_hw2reg_t hw2reg;
+ logic unused_sigs;
+ unused_sigs = ^part_digest;
+ hw2reg = '0;
+% for k, part in enumerate(otp_mmap.config["partitions"]):
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ % if part["sw_digest"] or part["hw_digest"]:
+ hw2reg.${part["name"].lower()}_digest = part_digest[${part_name_camel}Idx];
+ % endif
+% endfor
+ return hw2reg;
+ endfunction : named_reg_assign
+
+ function automatic part_access_t [NumPart-1:0] named_part_access_pre(
+ otp_ctrl_core_reg2hw_t reg2hw);
+ part_access_t [NumPart-1:0] part_access_pre;
+ logic unused_sigs;
+ unused_sigs = ^reg2hw;
+ // Default (this will be overridden by partition-internal settings).
+ part_access_pre = {{32'(2*NumPart)}{prim_mubi_pkg::MuBi8False}};
+ // Note: these could be made a MuBi CSRs in the future.
+ // The main thing that is missing right now is proper support for W0C.
+% for k, part in enumerate(otp_mmap.config["partitions"]):
+ % if part["read_lock"] == "CSR":
+ // ${part["name"]}
+ if (!reg2hw.${part["name"].lower()}_read_lock) begin
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ part_access_pre[${part_name.as_camel_case()}Idx].read_lock = prim_mubi_pkg::MuBi8True;
+ end
+ % endif
+% endfor
+ return part_access_pre;
+ endfunction : named_part_access_pre
+
+ function automatic otp_broadcast_t named_broadcast_assign(
+ logic [NumPart-1:0] part_init_done,
+ logic [$bits(PartInvDefault)/8-1:0][7:0] part_buf_data);
+ otp_broadcast_t otp_broadcast;
+ logic valid, unused;
+ unused = 1'b0;
+ valid = 1'b1;
+% for part in otp_mmap.config["partitions"]:
+ // ${part["name"]}
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ % if part["bkout_type"]:
+ valid &= part_init_done[${part_name_camel}Idx];
+ otp_broadcast.${part["name"].lower()}_data = otp_${part["name"].lower()}_data_t'(part_buf_data[${part_name_camel}Offset +: ${part_name_camel}Size]);
+ % else:
+ unused ^= ^{part_init_done[${part_name_camel}Idx],
+ part_buf_data[${part_name_camel}Offset +: ${part_name_camel}Size]};
+ % endif
+% endfor
+ otp_broadcast.valid = lc_ctrl_pkg::lc_tx_bool_to_lc_tx(valid);
+ return otp_broadcast;
+ endfunction : named_broadcast_assign
+
+ function automatic otp_keymgr_key_t named_keymgr_key_assign(
+ logic [NumPart-1:0][ScrmblBlockWidth-1:0] part_digest,
+ logic [$bits(PartInvDefault)/8-1:0][7:0] part_buf_data,
+ lc_ctrl_pkg::lc_tx_t lc_seed_hw_rd_en);
+ otp_keymgr_key_t otp_keymgr_key;
+ logic valid, unused;
+ unused = 1'b0;
+ // For now we use a fixed struct type here so that the
+ // interface to the keymgr remains stable. The type contains
+ // a superset of all options, so we have to initialize it to '0 here.
+ otp_keymgr_key = '0;
+% for part in otp_mmap.config["partitions"]:
+ // ${part["name"]}
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ % if part["iskeymgr_creator"] or part["iskeymgr_owner"]:
+ valid = (part_digest[${part_name_camel}Idx] != 0);
+ % for item in part["items"]:
+<%
+ item_name = Name.from_snake_case(item["name"])
+ item_name_camel = item_name.as_camel_case()
+%>\
+ % if item["iskeymgr_creator"] or item["iskeymgr_owner"]:
+ otp_keymgr_key.${item["name"].lower()}_valid = valid;
+ if (lc_ctrl_pkg::lc_tx_test_true_strict(lc_seed_hw_rd_en)) begin
+ otp_keymgr_key.${item["name"].lower()} =
+ part_buf_data[${item_name_camel}Offset +: ${item_name_camel}Size];
+ end else begin
+ otp_keymgr_key.${item["name"].lower()} =
+ PartInvDefault[${item_name_camel}Offset*8 +: ${item_name_camel}Size*8];
+ end
+ % else:
+ % if not item["isdigest"]:
+ unused ^= ^part_buf_data[${item_name_camel}Offset +: ${item_name_camel}Size];
+ % endif
+ % endif
+ % endfor
+ // This is not used since we consume the
+ // ungated digest values from the part_digest array.
+ unused ^= ^part_buf_data[${part_name_camel}DigestOffset +: ${part_name_camel}DigestSize];
+ % else:
+ unused ^= ^{part_digest[${part_name_camel}Idx],
+ part_buf_data[${part_name_camel}Offset +: ${part_name_camel}Size]};
+ % endif
+% endfor
+ unused ^= valid;
+ return otp_keymgr_key;
+ endfunction : named_keymgr_key_assign
+
+endpackage : otp_ctrl_part_pkg
diff --git a/src/fuse_ctrl/data/otp_ctrl_scoreboard.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_scoreboard.sv.tpl
new file mode 100755
index 0000000..9e50e3f
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_scoreboard.sv.tpl
@@ -0,0 +1,1473 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+
+read_locked_csr_parts = [part for part in otp_mmap.config["partitions"] if
+ part["read_lock"] == "CSR"]
+write_locked_digest_parts = [part for part in otp_mmap.config["partitions"] if
+ part["write_lock"] == "Digest"]
+buf_parts_without_lc = [part for part in otp_mmap.config["partitions"] if
+ part["variant"] == "Buffered"]
+secret_parts = [part for part in otp_mmap.config["partitions"] if
+ part["secret"]]
+## Partitions + LCI + DAI
+num_err_code = len(otp_mmap.config["partitions"]) + 2
+%>\
+class otp_ctrl_scoreboard #(type CFG_T = otp_ctrl_env_cfg)
+ extends cip_base_scoreboard #(
+ .CFG_T(CFG_T),
+ .RAL_T(otp_ctrl_core_reg_block),
+ .COV_T(otp_ctrl_env_cov)
+ );
+ `uvm_component_param_utils(otp_ctrl_scoreboard #(CFG_T))
+
+ // local variables
+ bit [TL_DW-1:0] otp_a [OTP_ARRAY_SIZE];
+
+ // lc_state and lc_cnt that stored in OTP
+ bit [LC_PROG_DATA_SIZE-1:0] otp_lc_data;
+ bit [EDN_BUS_WIDTH-1:0] edn_data_q[$];
+
+ // This flag is used when reset is issued during otp dai write access.
+ bit dai_wr_ip;
+ int dai_digest_ip = LifeCycleIdx; // Default to LC as it does not have digest.
+ bit ignore_digest_chk = 0;
+
+ // This bit is used for DAI interface to mark if the read access is valid.
+ bit dai_read_valid;
+
+ // This captures the regwen state as configured by the SW side (i.e. without HW modulation
+ // with the idle signal overlaid).
+ bit direct_access_regwen_state = 1;
+
+ // ICEBOX(#17798): currently scb will skip checking the readout value if the ECC error is
+ // uncorrectable. Because if the error is uncorrectable, current scb does not track all the
+ // backdoor injected values.
+ // This issue proposes to track the otp_memory_array in mem_bkdr_if and once backdoor inject any
+ // value, mem_bkdr_if will update its otp_memory_array.
+ bit check_dai_rd_data = 1;
+
+ // Status related variables
+ bit under_chk, under_dai_access;
+ bit [TL_DW-1:0] exp_status, status_mask;
+
+ otp_alert_e exp_alert = OtpNoAlert;
+
+ // TLM agent fifos
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(SRAM_DATA_SIZE)))
+ sram_fifos[NumSramKeyReqSlots];
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(OTBN_DATA_SIZE))) otbn_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE))) flash_addr_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE))) flash_data_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)))
+ lc_prog_fifo;
+
+ // local queues to hold incoming packets pending comparison
+
+ `uvm_component_new
+
+ function void build_phase(uvm_phase phase);
+ super.build_phase(phase);
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ sram_fifos[i] = new($sformatf("sram_fifos[%0d]", i), this);
+ end
+ otbn_fifo = new("otbn_fifo", this);
+ flash_addr_fifo = new("flash_addr_fifo", this);
+ flash_data_fifo = new("flash_data_fifo", this);
+ lc_prog_fifo = new("lc_prog_fifo", this);
+ endfunction
+
+ function void connect_phase(uvm_phase phase);
+ super.connect_phase(phase);
+ endfunction
+
+ task run_phase(uvm_phase phase);
+ super.run_phase(phase);
+ fork
+ process_wipe_mem();
+ process_otp_power_up();
+ process_lc_esc();
+ process_lc_prog_req();
+ process_edn_req();
+ check_otbn_rsp();
+ check_flash_rsps();
+ check_sram_rsps();
+ recover_lc_prog_req();
+ join_none
+ endtask
+
+ // Once sequence uses backdoor method to clear memory, this task resets internal otp_a and
+ // resets `cfg.backdoor_clear_mem` to 0.
+ virtual task process_wipe_mem();
+ forever begin
+ @(posedge cfg.backdoor_clear_mem) begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] data;
+ otp_a = '{default:0};
+ otp_lc_data = '{default:0};
+% for part in secret_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ // secret partitions have been scrambled before writing to OTP.
+ // here calculate the pre-srambled raw data when clearing internal OTP to all 0s.
+ data = descramble_data(0, ${part_name_camel}Idx);
+ for (int i = ${part_name_camel}Offset / TL_SIZE;
+ i <= ${part_name_camel}DigestOffset / TL_SIZE - 1;
+ i++) begin
+ otp_a[i] = ((i - ${part_name_camel}Offset / TL_SIZE) % 2) ?
+ data[SCRAMBLE_DATA_SIZE-1:TL_DW] : data[TL_DW-1:0];
+ end
+% endfor
+ `uvm_info(`gfn, "clear internal memory and digest", UVM_HIGH)
+ cfg.backdoor_clear_mem = 0;
+ dai_wr_ip = 0;
+ dai_digest_ip = LifeCycleIdx;
+ end
+ end
+ endtask
+
+ // This task process the following logic in during otp_power_up:
+ // 1. After reset deasserted, otp access is locked until pwr_otp_done_o is set
+ // 2. After reset deasserted, if power otp_init request is on, and if testbench uses backdoor to
+ // clear OTP memory to all zeros, clear all digests and re-calculate secret partitions
+ virtual task process_otp_power_up();
+ forever begin
+ wait (cfg.en_scb);
+ @(posedge cfg.otp_ctrl_vif.pwr_otp_done_o || cfg.under_reset ||
+ cfg.otp_ctrl_vif.alert_reqs) begin
+ if (!cfg.under_reset && !cfg.otp_ctrl_vif.alert_reqs && cfg.en_scb) begin
+ otp_ctrl_part_pkg::otp_hw_cfg0_data_t exp_hw_cfg0_data;
+ otp_ctrl_part_pkg::otp_hw_cfg1_data_t exp_hw_cfg1_data;
+ otp_ctrl_pkg::otp_keymgr_key_t exp_keymgr_data;
+ otp_ctrl_pkg::otp_lc_data_t exp_lc_data;
+ bit [otp_ctrl_pkg::KeyMgrKeyWidth-1:0] exp_keymgr_key0, exp_keymgr_key1;
+
+ if (PartInfo[dai_digest_ip].sw_digest || PartInfo[dai_digest_ip].hw_digest) begin
+ bit [TL_DW-1:0] otp_addr = PART_OTP_DIGEST_ADDRS[dai_digest_ip];
+ otp_a[otp_addr] = cfg.mem_bkdr_util_h.read32(otp_addr << 2);
+ otp_a[otp_addr+1] = cfg.mem_bkdr_util_h.read32((otp_addr << 2) + 4);
+ dai_digest_ip = LifeCycleIdx;
+ end
+ predict_digest_csrs();
+
+ if (cfg.otp_ctrl_vif.under_error_states() == 0) begin
+ // Dai access is unlocked because the power init is done
+ void'(ral.direct_access_regwen.predict(direct_access_regwen_state));
+
+ // Dai idle is set because the otp init is done
+ exp_status[OtpDaiIdleIdx] = 1;
+ end
+
+ // Hwcfg_o gets data from OTP HW cfg partition
+ exp_hw_cfg0_data = cfg.otp_ctrl_vif.under_error_states() ?
+ otp_ctrl_part_pkg::PartInvDefault[HwCfg0Offset*8 +: HwCfg0Size*8] :
+ otp_hw_cfg0_data_t'({<<32 {otp_a[HwCfg0Offset/4 +: HwCfg0Size/4]}});
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.valid, lc_ctrl_pkg::On)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.hw_cfg0_data, exp_hw_cfg0_data)
+
+ // Hwcfg_o gets data from OTP HW cfg partition
+ exp_hw_cfg1_data = cfg.otp_ctrl_vif.under_error_states() ?
+ otp_ctrl_part_pkg::PartInvDefault[HwCfg1Offset*8 +: HwCfg1Size*8] :
+ otp_hw_cfg1_data_t'({<<32 {otp_a[HwCfg1Offset/4 +: HwCfg1Size/4]}});
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.valid, lc_ctrl_pkg::On)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.hw_cfg1_data, exp_hw_cfg1_data)
+
+ if (!cfg.otp_ctrl_vif.under_error_states()) begin
+ // ---------------------- Check lc_data_o output -----------------------------------
+ // Because initialization was succesful, the valid should be set and error should be
+ // reset.
+ exp_lc_data.valid = 1;
+ exp_lc_data.error = 0;
+
+ // Secrets and tokens valid signals are depend on whether secret partitions are
+ // locked.
+ exp_lc_data.secrets_valid = get_otp_digest_val(Secret2Idx) ? On : Off;
+ exp_lc_data.test_tokens_valid = get_otp_digest_val(Secret0Idx) ? On : Off;
+ exp_lc_data.rma_token_valid = get_otp_digest_val(Secret2Idx) ? On : Off;
+
+ // LC output is depend on LC partitions value.
+ exp_lc_data.count = otp_lc_data[0 +: LcCountWidth];
+ exp_lc_data.state = otp_lc_data[LcCountWidth +: LcStateWidth];
+
+ // Token values are depend on secret partitions value.
+ exp_lc_data.test_unlock_token =
+ {<<32 {otp_a[TestUnlockTokenOffset/4 +: TestUnlockTokenSize/4]}};
+ exp_lc_data.test_exit_token =
+ {<<32 {otp_a[TestExitTokenOffset/4 +: TestExitTokenSize/4]}};
+ exp_lc_data.rma_token = {<<32 {otp_a[RmaTokenOffset/4 +: RmaTokenSize/4]}};
+
+ // Check otp_lc_data_t struct by item is easier to debug.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.valid, exp_lc_data.valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.error, exp_lc_data.error)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.state, exp_lc_data.state)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.count, exp_lc_data.count)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.secrets_valid, exp_lc_data.secrets_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_tokens_valid,
+ exp_lc_data.test_tokens_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_unlock_token,
+ exp_lc_data.test_unlock_token)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_exit_token, exp_lc_data.test_exit_token)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.rma_token_valid, exp_lc_data.rma_token_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.rma_token, exp_lc_data.rma_token)
+
+ // Check otp_lc_data_t all together in case there is any missed item.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o, exp_lc_data)
+
+ // ---------------------- Check keymgr_key_o output ---------------------------------
+ // Otp_keymgr outputs creator and owner keys from secret partitions.
+ // Depends on lc_seed_hw_rd_en_i, it will output the real keys or a constant
+ exp_keymgr_data = '0;
+% for part in otp_mmap.config["partitions"]:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ % if part["iskeymgr_creator"] or part["iskeymgr_owner"]:
+ % for item in part["items"]:
+<%
+ item_name = Name.from_snake_case(item["name"])
+ item_name_camel = item_name.as_camel_case()
+%>\
+ % if item["iskeymgr_creator"] or item["iskeymgr_owner"]:
+ exp_keymgr_data.${item["name"].lower()}_valid = get_otp_digest_val(${part_name_camel}Idx) != 0;
+ if (cfg.otp_ctrl_vif.lc_seed_hw_rd_en_i == lc_ctrl_pkg::On) begin
+ exp_keymgr_data.${item["name"].lower()} =
+ {<<32 {otp_a[${item_name_camel}Offset/4 +: ${item_name_camel}Size/4]}};
+ end else begin
+ exp_keymgr_data.${item["name"].lower()} =
+ PartInvDefault[${item_name_camel}Offset*8 +: ${item_name_camel}Size*8];
+ end
+ // Check otp_keymgr_key_t struct by item is easier to debug.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.keymgr_key_o.${item["name"].lower()}_valid,
+ exp_keymgr_data.${item["name"].lower()}_valid)
+ % endif
+ % endfor
+ % endif
+% endfor
+
+ // Check otp_keymgr_key_t struct all together in case there is any missed item.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.keymgr_key_o, exp_keymgr_data)
+
+ if (cfg.en_cov) begin
+ cov.keymgr_o_cg.sample(cfg.otp_ctrl_vif.lc_seed_hw_rd_en_i == lc_ctrl_pkg::On,
+ exp_keymgr_data.creator_root_key_share0_valid);
+ end
+ end
+ end else if (cfg.otp_ctrl_vif.alert_reqs) begin
+ // Ignore digest CSR check when otp_ctrl initialization is interrupted by fatal errors.
+ // SCB cannot predict how many partitions already finished initialization and updated
+ // the digest value to CSRs.
+ ignore_digest_chk = 1;
+ end
+ if (cfg.en_cov) begin
+ bit [NumPart-2:0] parts_locked;
+ foreach (parts_locked[i]) parts_locked[i] = (get_otp_digest_val(i) != 0);
+ cov.power_on_cg.sample(cfg.otp_ctrl_vif.lc_esc_on, parts_locked);
+ end
+ end
+ end
+ endtask
+
+ // This task monitors internal escalation triggered by two methods:
+ // 1. Externally lc_escalation_en is set to lc_ctrl_pkg::On.
+ // 2. Internal fatal alert triggered and all partitions are driven to error states.
+ virtual task process_lc_esc();
+ forever begin
+ wait(cfg.otp_ctrl_vif.alert_reqs == 1 && cfg.en_scb);
+
+ if (cfg.otp_ctrl_vif.lc_esc_on == 0) `DV_CHECK_NE(exp_alert, OtpNoAlert)
+
+ if (exp_alert != OtpCheckAlert) set_exp_alert("fatal_check_error", 1, 5);
+
+ // If the lc_escalation is triggered by internal fatal alert, wait 2 negedge until status is
+ // updated internally
+ if (cfg.otp_ctrl_vif.lc_esc_on == 0) begin
+ cfg.clk_rst_vif.wait_n_clks(2);
+ exp_status[OtpCheckPendingIdx] = 0;
+ exp_status[OtpDaiIdleIdx] = 0;
+ end else begin
+ exp_status = '0;
+ // Only lc_esc_on will set these bits to 1.
+ exp_status[OtpDerivKeyFsmErrIdx:OtpLfsrFsmErrIdx] = '1;
+ end
+
+ // Update status bits.
+ foreach (FATAL_EXP_STATUS[i]) begin
+ if (FATAL_EXP_STATUS[i]) begin
+ predict_err(.status_err_idx(otp_status_e'(i)), .err_code(OtpFsmStateError),
+ .update_esc_err(1));
+ end
+ end
+
+ // Update digest values and direct_access_regwen.
+ predict_rdata(1, 0, 0);
+ void'(ral.direct_access_regwen.predict(.value(0), .kind(UVM_PREDICT_READ)));
+
+ // DAI access is locked until reset, so no need to backdoor read otp write value until reset.
+
+ wait(cfg.otp_ctrl_vif.alert_reqs == 0);
+ end
+ endtask
+
+ // This task monitors if lc_program req is interrupted by reset.
+ // If it happens, scb cannot predict how many bits have been written to OTP_CTRL.
+ // So here we will backdoor read back OTP lc partitions bits.
+ virtual task recover_lc_prog_req();
+ forever begin
+ wait(cfg.otp_ctrl_vif.lc_prog_req == 1);
+ wait(cfg.otp_ctrl_vif.lc_prog_req == 0);
+ // Wait one 1ps to avoid race condition.
+ #1ps;
+ if (cfg.otp_ctrl_vif.rst_ni == 0) begin
+ for (int i = 0; i < LC_PROG_DATA_SIZE/32; i++) begin
+ otp_lc_data[i*32+:32] = cfg.mem_bkdr_util_h.read32(LifeCycleOffset + i * 4);
+ end
+ end
+ end
+ endtask
+
+ virtual task process_lc_prog_req();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)) rcv_item;
+ bit exp_err_bit;
+ bit [15:0] rcv_words [LC_PROG_DATA_SIZE/16];
+
+ lc_prog_fifo.get(rcv_item);
+
+ // LCI is updated by OTP word.
+ rcv_words = {<< 16{rcv_item.h_data}};
+ foreach (rcv_words[i]) begin
+ bit [15:0] curr_word = otp_lc_data[i*16 +: 16];
+ if ((curr_word & rcv_words[i]) == curr_word) otp_lc_data[i*16 +: 16] = rcv_words[i];
+ else exp_err_bit = 1;
+ end
+
+ if (exp_err_bit) predict_err(OtpLciErrIdx, OtpMacroWriteBlankError);
+ else predict_no_err(OtpLciErrIdx);
+
+ // LC program request data is valid means no OTP macro error.
+ `DV_CHECK_EQ(rcv_item.d_data, exp_err_bit)
+
+ if (cfg.en_cov) cov.lc_prog_cg.sample(exp_err_bit);
+ end
+ endtask
+
+ virtual task process_edn_req();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(EDN_DATA_WIDTH)) edn_item;
+ edn_fifos[0].get(edn_item);
+ edn_data_q.push_back(edn_item.d_data[EDN_BUS_WIDTH-1:0]);
+ end
+ endtask
+
+ virtual task check_otbn_rsp();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(OTBN_DATA_SIZE)) rcv_item;
+ bit [SCRAMBLE_KEY_SIZE-1:0] edn_key2, edn_key1;
+ bit [SCRAMBLE_KEY_SIZE-1:0] sram_key;
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+ bit [OtbnKeyWidth-1:0] key, exp_key;
+ bit [OtbnNonceWidth-1:0] nonce, exp_nonce;
+ bit seed_valid;
+ bit part_locked;
+
+ otbn_fifo.get(rcv_item);
+ seed_valid = rcv_item.d_data[0];
+ nonce = rcv_item.d_data[1+:OtbnNonceWidth];
+ key = rcv_item.d_data[OtbnNonceWidth+1+:OtbnKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+
+ // seed is valid as long as secret1 is locked
+ `DV_CHECK_EQ(seed_valid, part_locked, "otbn seed_valid mismatch")
+
+ // If edn_data_q matches the OTBN requested size, check OTBN outputs
+ if (edn_data_q.size() == NUM_OTBN_EDN_REQ) begin
+ {exp_nonce, edn_key2, edn_key1} = {<<32{edn_data_q}};
+
+ // check nonce value
+ `DV_CHECK_EQ(nonce, exp_nonce, "otbn nonce mismatch")
+
+ // calculate key
+ sram_key = get_key_from_otp(part_locked, SramDataKeySeedOffset / 4);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key1),
+ .num_round(2));
+
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key2),
+ .num_round(2));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, "otbn key mismatch")
+
+ if (cfg.en_cov) cov.otbn_req_cg.sample(part_locked);
+
+ // If during OTBN key request, the LFSR timer expired and trigger an EDN request to acquire
+ // two EDN keys, then ignore the OTBN output checking, because scb did not know which EDN
+ // keys are used for LFSR.
+ // Thus any edn_data_q size equal to (16+2*N) is exempted from checking.
+ end else if ((edn_data_q.size() - NUM_OTBN_EDN_REQ) % 2 != 0) begin
+ `uvm_error(`gfn, $sformatf("Unexpected edn_data_q size (%0d) during OTBN request",
+ edn_data_q.size()))
+ end
+ edn_data_q.delete();
+ end
+ endtask
+
+ virtual task check_flash_rsps();
+ for (int i = FlashDataKey; i <= FlashAddrKey; i++) begin
+ automatic digest_sel_e sel_flash = digest_sel_e'(i);
+ fork
+ forever begin
+ push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE)) rcv_item;
+ bit [SCRAMBLE_KEY_SIZE-1:0] flash_key;
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+ bit [FlashKeyWidth-1:0] key, exp_key;
+ bit seed_valid, part_locked;
+ int flash_key_index;
+
+ if (sel_flash == FlashAddrKey) begin
+ flash_addr_fifo.get(rcv_item);
+ flash_key_index = FlashAddrKeySeedOffset / 4;
+ end else begin
+ flash_data_fifo.get(rcv_item);
+ flash_key_index = FlashDataKeySeedOffset / 4;
+ end
+ seed_valid = rcv_item.d_data[0];
+ key = rcv_item.d_data[1+:FlashKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+ `DV_CHECK_EQ(seed_valid, part_locked,
+ $sformatf("flash %0s seed_valid mismatch", sel_flash.name()))
+
+ // calculate key
+ flash_key = get_key_from_otp(part_locked, flash_key_index);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[sel_flash]),
+ .key(flash_key),
+ .final_const(RndCnstDigestConst[sel_flash]));
+
+ flash_key = get_key_from_otp(part_locked, flash_key_index + 4);
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[sel_flash]),
+ .key(flash_key),
+ .final_const(RndCnstDigestConst[sel_flash]));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, $sformatf("flash %s key mismatch", sel_flash.name()))
+
+ if (cfg.en_cov) cov.flash_req_cg.sample(sel_flash, part_locked);
+ end
+ join_none;
+ end
+ endtask
+
+ virtual task check_sram_rsps();
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ automatic int index = i;
+ fork
+ forever begin
+ push_pull_item#(.DeviceDataWidth(SRAM_DATA_SIZE)) rcv_item;
+ sram_key_t key, exp_key;
+ sram_nonce_t nonce, exp_nonce;
+ bit seed_valid, part_locked;
+ bit [SCRAMBLE_KEY_SIZE-1:0] edn_key2, edn_key1;
+ bit [SCRAMBLE_KEY_SIZE-1:0] sram_key; // key used as input to present algo
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+
+ sram_fifos[index].get(rcv_item);
+ seed_valid = rcv_item.d_data[0];
+ nonce = rcv_item.d_data[1+:SramNonceWidth];
+ key = rcv_item.d_data[SramNonceWidth+1+:SramKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+
+ // seed is valid as long as secret1 is locked
+ `DV_CHECK_EQ(seed_valid, part_locked, $sformatf("sram_%0d seed_valid mismatch", index))
+
+ // If edn_data_q matches the OTBN requested size, check OTBN outputs
+ if (edn_data_q.size() == NUM_SRAM_EDN_REQ) begin
+ {exp_nonce, edn_key2, edn_key1} = {<<32{edn_data_q}};
+
+ // check nonce value
+ `DV_CHECK_EQ(nonce, exp_nonce, $sformatf("sram_%0d nonce mismatch", index))
+
+ // calculate key
+ sram_key = get_key_from_otp(part_locked, SramDataKeySeedOffset / 4);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key1),
+ .num_round(2));
+
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key2),
+ .num_round(2));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, $sformatf("sram_%0d key mismatch", index))
+ if (cfg.en_cov) cov.sram_req_cg.sample(index, part_locked);
+
+ end else if ((edn_data_q.size() - NUM_SRAM_EDN_REQ) % 2 != 0) begin
+ `uvm_error(`gfn, $sformatf("Unexpected edn_data_q size (%0d) during SRAM request",
+ edn_data_q.size()))
+ end
+ edn_data_q.delete();
+ end
+ join_none
+ end
+ endtask
+
+ virtual task process_tl_access(tl_seq_item item, tl_channels_e channel, string ral_name);
+ bit write = item.is_write();
+ uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ bit [TL_AW-1:0] addr_mask = ral.get_addr_mask();
+
+ bit addr_phase_read = (!write && channel == AddrChannel);
+ bit addr_phase_write = (write && channel == AddrChannel);
+ bit data_phase_read = (!write && channel == DataChannel);
+ bit data_phase_write = (write && channel == DataChannel);
+
+ if (ral_name != "otp_ctrl_prim_reg_block") begin
+ process_core_tl_access(item, csr_addr, ral_name, addr_mask,
+ addr_phase_read, addr_phase_write, data_phase_read, data_phase_write);
+ end else begin
+ process_prim_tl_access(item, csr_addr, ral_name, addr_phase_write, data_phase_read);
+ end
+ endtask
+
+ virtual function void process_prim_tl_access(tl_seq_item item, uvm_reg_addr_t csr_addr,
+ string ral_name, bit addr_phase_write, bit data_phase_read);
+
+ uvm_reg csr;
+ dv_base_reg dv_reg;
+ csr = cfg.ral_models[ral_name].default_map.get_reg_by_offset(csr_addr);
+ `DV_CHECK_NE_FATAL(csr, null)
+ `downcast(dv_reg, csr)
+
+ if (addr_phase_write) begin
+ void'(csr.predict(.value(item.a_data), .kind(UVM_PREDICT_WRITE), .be(item.a_mask)));
+ end else if (data_phase_read) begin
+ `DV_CHECK_EQ((csr.get_mirrored_value() | status_mask), (item.d_data | status_mask),
+ $sformatf("reg name: status, compare_mask %0h", status_mask))
+ end
+ endfunction
+
+ virtual function void process_core_tl_access(tl_seq_item item, uvm_reg_addr_t csr_addr,
+ string ral_name, bit [TL_AW-1:0] addr_mask, bit addr_phase_read, bit addr_phase_write,
+ bit data_phase_read, bit data_phase_write);
+
+ bit do_read_check = 1;
+ uvm_reg csr;
+ dv_base_reg dv_reg;
+ string csr_name;
+
+ `uvm_info(`gfn, $sformatf("sw state %d, reg state %d", direct_access_regwen_state,
+ `gmv(ral.direct_access_regwen)), UVM_LOW);
+
+ // if access was to a valid csr, get the csr handle
+ if (csr_addr inside {cfg.ral_models[ral_name].csr_addrs}) begin
+ csr = cfg.ral_models[ral_name].default_map.get_reg_by_offset(csr_addr);
+ `DV_CHECK_NE_FATAL(csr, null)
+ `downcast(dv_reg, csr)
+ // SW CFG window
+ end else if ((csr_addr & addr_mask) inside
+ {[SW_WINDOW_BASE_ADDR : SW_WINDOW_BASE_ADDR + SW_WINDOW_SIZE]}) begin
+ if (data_phase_read) begin
+ bit [TL_AW-1:0] dai_addr = (csr_addr & addr_mask - SW_WINDOW_BASE_ADDR);
+ bit [TL_AW-1:0] otp_addr = dai_addr >> 2;
+ int part_idx = get_part_index(dai_addr);
+ bit [TL_DW-1:0] read_out;
+ int ecc_err = OtpNoEccErr;
+
+ // We can't get an ECC error if the partition does not have integrity.
+ if (part_has_integrity(part_idx)) begin
+ ecc_err = read_a_word_with_ecc(dai_addr, read_out);
+ end else begin
+ ecc_err = read_a_word_with_ecc_raw(dai_addr, read_out);
+ end
+
+ if (part_has_digest(part_idx) && cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[part_idx].sample(.read_lock(0),
+ .write_lock(get_digest_reg_val(part_idx) != 0), .is_write(0));
+ end
+
+ // Any alert that indicates the OTP block is in the final error state should not enter the
+ // logic here, but gated at `is_tl_mem_access_allowed` function.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.alert_reqs, 0)
+
+ // ECC uncorrectable errors are gated by `is_tl_mem_access_allowed` function.
+ if (ecc_err != OtpNoEccErr && part_has_integrity(part_idx)) begin
+
+ predict_err(otp_status_e'(part_idx), OtpMacroEccCorrError);
+ if (ecc_err == OtpEccCorrErr) begin
+ `DV_CHECK_EQ(item.d_data, otp_a[otp_addr],
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ end else begin
+ // Only check the first 16 bits because if ECC readout detects uncorrectable error, it
+ // won't continue read the remaining 16 bits.
+ `DV_CHECK_EQ(item.d_data & 16'hffff, read_out & 16'hffff,
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ end
+ // If there is an injected error, but the partition cannot detect it, we have to compare
+ // to the value read via the backdoor instead of otp_a[otp_addr] since otherwise the
+ // perturbed value does not get modelled correctly.
+ end else if (ecc_err != OtpNoEccErr && !part_has_integrity(part_idx)) begin
+ `DV_CHECK_EQ(item.d_data, read_out,
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ predict_no_err(otp_status_e'(part_idx));
+ end else if (ecc_err == OtpNoEccErr) begin
+ `DV_CHECK_EQ(item.d_data, otp_a[otp_addr],
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ predict_no_err(otp_status_e'(part_idx));
+ end
+ end
+ return;
+ end else begin
+ `uvm_fatal(`gfn, $sformatf("Access unexpected addr 0x%0h", csr_addr))
+ end
+
+ csr_name = csr.get_name();
+
+ if (addr_phase_write) begin
+ if (cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs && csr_name == "direct_access_cmd") begin
+ cov.req_dai_access_after_alert_cg.sample(item.a_data);
+ end
+
+ // Skip predict if the register is locked by `direct_access_regwen`.
+ // An exception is the direct_access_regwen which may always be written.
+ if (ral.direct_access_regwen.locks_reg_or_fld(dv_reg) &&
+ `gmv(ral.direct_access_regwen) == 0 &&
+ csr_name != "direct_access_regwen") return;
+
+ void'(csr.predict(.value(item.a_data), .kind(UVM_PREDICT_WRITE), .be(item.a_mask)));
+ end
+
+ // process the csr req
+ // for write, update local variable and fifo at address phase
+ // for read, update predication at address phase and compare at data phase
+ case (csr_name)
+ // add individual case item for each csr
+ "intr_state": begin
+ if (data_phase_read) begin
+ // Disable intr_state checking when lc_program is in progress, because scb cannot
+ // accurately predict when program_error will be triggered.
+ // We will check the intr_state after lc_program request is done, and the error bit will
+ // be checked in the `process_lc_prog_req` task.
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check) do_read_check = 0;
+ if (do_read_check) begin
+ bit [TL_DW-1:0] intr_en = `gmv(ral.intr_enable);
+ bit [NumOtpCtrlIntr-1:0] intr_exp = `gmv(ral.intr_state);
+
+ foreach (intr_exp[i]) begin
+ otp_intr_e intr = otp_intr_e'(i);
+ `DV_CHECK_CASE_EQ(cfg.intr_vif.pins[i], (intr_en[i] & intr_exp[i]),
+ $sformatf("Interrupt_pin: %0s", intr.name));
+ if (cfg.en_cov) begin
+ cov.intr_cg.sample(i, intr_en[i], item.d_data[i]);
+ cov.intr_pins_cg.sample(i, cfg.intr_vif.pins[i]);
+ end
+ end
+ end
+ end
+ end
+ "intr_test": begin
+ if (addr_phase_write) begin
+ bit [TL_DW-1:0] intr_en = `gmv(ral.intr_enable);
+ bit [NumOtpCtrlIntr-1:0] intr_exp = `gmv(ral.intr_state) | item.a_data;
+
+ void'(ral.intr_state.predict(.value(intr_exp)));
+ if (cfg.en_cov) begin
+ foreach (intr_exp[i]) begin
+ cov.intr_test_cg.sample(i, item.a_data[i], intr_en[i], intr_exp[i]);
+ end
+ end
+ end
+ end
+ "direct_access_cmd": begin
+ if (addr_phase_write && !cfg.otp_ctrl_vif.under_error_states()) begin
+ // here only normalize to 2 lsb, if is secret, will be reduced further
+ bit [TL_AW-1:0] dai_addr = normalize_dai_addr(`gmv(ral.direct_access_address));
+ int part_idx = get_part_index(dai_addr);
+ bit sw_read_lock = 0;
+ void'(ral.direct_access_regwen.predict(0));
+ under_dai_access = 1;
+
+ // Check if it is sw partition read lock - this can be used in `DaiRead` branch and also
+ // coverage collection.
+% for part in read_locked_csr_parts:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ % if loop.first:
+ if (part_idx == ${part_name.as_camel_case()}Idx) begin
+ % else:
+ end else if (part_idx == ${part_name.as_camel_case()}Idx) begin
+ % endif
+ sw_read_lock = `gmv(ral.${part_name.as_snake_case()}_read_lock) == 0;
+ % if loop.last:
+ end
+ %endif
+% endfor
+
+ // LC partition cannot be access via DAI
+ if (part_idx == LifeCycleIdx) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ if (item.a_data == DaiRead) predict_rdata(is_secret(dai_addr), 0, 0);
+ end else begin
+ // Collect coverage.
+ if (cfg.en_cov) begin
+ if (part_idx == Secret2Idx) begin
+ cov.dai_access_secret2_cg.sample(
+ !(cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On),
+ dai_cmd_e'(item.a_data));
+ end else if (is_sw_part_idx(part_idx) && part_has_digest(part_idx) &&
+ item.a_data inside {DaiRead, DaiWrite}) begin
+ cov.unbuf_access_lock_cg_wrap[part_idx].sample(.read_lock(sw_read_lock),
+ .write_lock(get_digest_reg_val(part_idx) != 0),
+ .is_write(item.a_data == DaiWrite));
+
+ end
+ end
+
+ case (item.a_data)
+ DaiDigest: cal_digest_val(part_idx);
+ DaiRead: begin
+ // Check if it is sw partition read lock
+ check_dai_rd_data = 1;
+
+ // SW partitions write read_lock_csr can lock read access.
+ if (sw_read_lock ||
+ // Secret partitions cal digest can also lock read access.
+ // However, digest is always readable except SW partitions (Issue #5752).
+ (is_secret(dai_addr) && get_digest_reg_val(part_idx) != 0 &&
+ !is_digest(dai_addr)) ||
+ // If the partition has creator key material and lc_creator_seed_sw_rw is
+ // disable, then return access error.
+ (PartInfo[part_idx].iskeymgr_creator && !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr), 0, 0);
+ end else if (sw_read_lock ||
+ // Secret partitions cal digest can also lock read access.
+ // However, digest is always readable except SW partitions (Issue #5752).
+ (is_secret(dai_addr) && get_digest_reg_val(part_idx) != 0 &&
+ !is_digest(dai_addr)) ||
+ // If the partition has owner key material and lc_owner_seed_sw_rw is disable,
+ // then return access error.
+ (PartInfo[part_idx].iskeymgr_owner && !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr), 0, 0);
+
+ end else begin
+ bit [TL_DW-1:0] read_out0, read_out1;
+ bit [TL_AW-1:0] otp_addr = get_scb_otp_addr();
+ int ecc_err = 0;
+
+ // Backdoor read to check if there is any ECC error.
+ if (part_has_integrity(part_idx)) begin
+ ecc_err = read_a_word_with_ecc(dai_addr, read_out0);
+ if (is_secret(dai_addr) || is_digest(dai_addr)) begin
+ ecc_err = max2(read_a_word_with_ecc(dai_addr + 4, read_out1), ecc_err);
+ end
+ end else begin
+ ecc_err = read_a_word_with_ecc_raw(dai_addr, read_out0);
+ if (is_secret(dai_addr) || is_digest(dai_addr)) begin
+ ecc_err = max2(read_a_word_with_ecc_raw(dai_addr + 4, read_out1), ecc_err);
+ end
+ end
+
+ if (ecc_err == OtpEccCorrErr && part_has_integrity(part_idx)) begin
+ predict_err(OtpDaiErrIdx, OtpMacroEccCorrError);
+ backdoor_update_otp_array(dai_addr);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ otp_a[otp_addr], otp_a[otp_addr+1]);
+ end else if (ecc_err == OtpEccUncorrErr && part_has_integrity(part_idx)) begin
+ predict_err(OtpDaiErrIdx, OtpMacroEccUncorrError);
+ // Max wait 20 clock cycles because scb did not know when exactly OTP will
+ // finish reading and reporting the uncorrectable error.
+ set_exp_alert("fatal_macro_error", 1, 20);
+ predict_rdata(1, 0, 0);
+ // Some partitions do not interpret/report ECC errors. In those cases
+ // we still need to model the read data correctly if it has been perturbed.
+ end else if (ecc_err inside {OtpEccCorrErr, OtpEccUncorrErr} &&
+ !part_has_integrity(part_idx)) begin
+ predict_no_err(OtpDaiErrIdx);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ read_out0, read_out1);
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ otp_a[otp_addr], otp_a[otp_addr+1]);
+ end
+ end
+ end
+ DaiWrite: begin
+ bit[TL_AW-1:0] otp_addr = get_scb_otp_addr();
+ bit is_write_locked;
+ // check if write locked
+ if (part_has_digest(part_idx)) begin
+ is_write_locked = get_digest_reg_val(part_idx) != 0;
+ end else begin
+ is_write_locked = 0;
+ end
+
+ if (is_write_locked || (PartInfo[part_idx].iskeymgr_creator &&
+ !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ end else if (is_write_locked || (PartInfo[part_idx].iskeymgr_owner &&
+ !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ // write digest
+ if (is_sw_digest(dai_addr)) begin
+ bit [TL_DW*2-1:0] curr_digest, prev_digest;
+ curr_digest = {`gmv(ral.direct_access_wdata[1]),
+ `gmv(ral.direct_access_wdata[0])};
+ prev_digest = {otp_a[otp_addr+1], otp_a[otp_addr]};
+ dai_wr_ip = 1;
+ // allow bit write
+ if ((prev_digest & curr_digest) == prev_digest) begin
+ update_digest_to_otp(part_idx, curr_digest);
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end else if (is_digest(dai_addr)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ // write OTP memory
+ end else begin
+ dai_wr_ip = 1;
+ if (!is_secret(dai_addr)) begin
+ bit [TL_DW-1:0] wr_data = `gmv(ral.direct_access_wdata[0]);
+ // allow bit write
+ if ((otp_a[otp_addr] & wr_data) == otp_a[otp_addr]) begin
+ otp_a[otp_addr] = wr_data;
+ check_otp_idle(.val(0), .wait_clks(3));
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end else begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] secret_data = {otp_a[otp_addr + 1],
+ otp_a[otp_addr]};
+ bit [SCRAMBLE_DATA_SIZE-1:0] wr_data = {`gmv(ral.direct_access_wdata[1]),
+ `gmv(ral.direct_access_wdata[0])};
+ wr_data = scramble_data(wr_data, part_idx);
+ secret_data = scramble_data(secret_data, part_idx);
+ if ((secret_data & wr_data) == secret_data) begin
+ otp_a[otp_addr] = `gmv(ral.direct_access_wdata[0]);
+ otp_a[otp_addr + 1] = `gmv(ral.direct_access_wdata[1]);
+ // wait until secret scrambling is done
+ check_otp_idle(.val(0), .wait_clks(34));
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end
+ end
+ end
+ end
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid cmd: %0d", item.a_data))
+ end
+ endcase
+ // regwen is set to 0 only if the dai operation is successfully
+ if (`gmv(ral.intr_state.otp_error) == 0) void'(ral.direct_access_regwen.predict(0));
+ end
+ end
+ end
+ "status": begin
+ if (addr_phase_read) begin
+ void'(ral.status.predict(.value(exp_status), .kind(UVM_PREDICT_READ)));
+
+ // update status mask
+ status_mask = 0;
+ // Mask out check_pending field - we do not know how long it takes to process checks.
+ // Check failure can trigger all kinds of errors.
+ if (under_chk) status_mask = '1;
+
+ // Mask out otp_dai access related field - we do not know how long it takes to finish
+ // DAI access.
+ if (under_dai_access) begin
+ status_mask[OtpDaiIdleIdx] = 1;
+ status_mask[OtpDaiErrIdx] = 1;
+ end
+
+ // Mask out LCI error bit if lc_req is set.
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check) status_mask[OtpLciErrIdx] = 1;
+
+ end else if (data_phase_read) begin
+ if (cfg.en_cov) begin
+ cov.collect_status_cov(item.d_data);
+ if (cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.csr_rd_after_alert_cg_wrap.sample(csr.get_offset());
+ end
+ end
+
+ if (item.d_data[OtpDaiIdleIdx]) begin
+ check_otp_idle(1);
+ dai_wr_ip = 0;
+ dai_digest_ip = LifeCycleIdx;
+ end
+
+ // STATUS register check with mask
+ if (do_read_check) begin
+ `DV_CHECK_EQ((csr.get_mirrored_value() | status_mask), (item.d_data | status_mask),
+ $sformatf("reg name: status, compare_mask %0h", status_mask))
+ end
+
+ // Check if OtpCheckPending is set correctly, then ignore checking until check is done
+ if (under_chk) begin
+ if (item.d_data[OtpCheckPendingIdx] == 0) begin
+ exp_status[OtpCheckPendingIdx] = 0;
+ under_chk = 0;
+ end
+ end
+
+ if (under_dai_access && !cfg.otp_ctrl_vif.under_error_states()) begin
+ if (item.d_data[OtpDaiIdleIdx]) begin
+ under_dai_access = 0;
+ void'(ral.direct_access_regwen.predict(direct_access_regwen_state));
+ void'(ral.intr_state.otp_operation_done.predict(1));
+ end
+ end
+ end
+ // checked in this block above
+ do_read_check = 0;
+ end
+ "check_trigger": begin
+ if (addr_phase_write && cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.issue_checks_after_alert_cg.sample(item.a_data);
+ end
+
+ if (addr_phase_write && `gmv(ral.check_trigger_regwen) && item.a_data inside {[1:3]}) begin
+ bit [TL_DW-1:0] check_timeout = `gmv(ral.check_timeout) == 0 ? '1 :
+ `gmv(ral.check_timeout);
+ exp_status[OtpCheckPendingIdx] = 1;
+ under_chk = 1;
+ if (check_timeout <= CHK_TIMEOUT_CYC) begin
+ set_exp_alert("fatal_check_error", 1, `gmv(ral.check_timeout));
+ predict_err(OtpTimeoutErrIdx);
+ end else begin
+ if (get_field_val(ral.check_trigger.consistency, item.a_data)) begin
+ foreach (cfg.ecc_chk_err[i]) begin
+ if (cfg.ecc_chk_err[i] == OtpEccCorrErr && part_has_integrity(i)) begin
+ predict_err(otp_status_e'(i), OtpMacroEccCorrError);
+ end else if (cfg.ecc_chk_err[i] == OtpEccUncorrErr &&
+ part_has_integrity(i)) begin
+ set_exp_alert("fatal_macro_error", 1, 40_000);
+ predict_err(otp_status_e'(i), OtpMacroEccUncorrError);
+ end
+ end
+ end
+ end
+ end
+ end
+ "direct_access_regwen": begin
+ if (addr_phase_write) begin
+ // This locks the DAI until the next reset.
+ if (!item.a_data[0]) begin
+ direct_access_regwen_state = 0;
+ void'(ral.direct_access_regwen.predict(0));
+ end
+ end
+ end
+ // For error codes, if lc_prog in progress, err_code might update anytime in DUT. Ignore
+ // checking until req is acknowledged.
+
+% for k in range(num_err_code):
+<%
+ # This code should depend on whether the error code is compact. This
+ # assumes it is not compact.
+%>\
+ "err_code_${k}": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(${k}, item.d_data, access_part_idx);
+ end
+ end
+% endfor
+% for part in write_locked_digest_parts:
+<% part_name_snake = Name.from_snake_case(part["name"]).as_snake_case() %>\
+ "${part_name_snake}_digest_0", "${part_name_snake}_digest_1"${": begin" if loop.last else ","}
+% endfor
+ if (ignore_digest_chk) do_read_check = 0;
+ end
+% for part in read_locked_csr_parts:
+<% part_name_snake = Name.from_snake_case(part["name"]).as_snake_case() %>\
+ "${part_name_snake}_read_lock",
+% endfor
+ "direct_access_wdata_0",
+ "direct_access_wdata_1",
+ "direct_access_address",
+ "check_regwen",
+ "check_trigger_regwen",
+ "check_trigger",
+ "check_timeout",
+ "intr_enable",
+ "integrity_check_period",
+ "consistency_check_period",
+ "alert_test": begin
+ // Do nothing
+ end
+ // DAI read data
+ "direct_access_rdata_0", "direct_access_rdata_1": do_read_check = check_dai_rd_data;
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid csr: %0s", csr.get_full_name()))
+ end
+ endcase
+
+ // On reads, if do_read_check, is set, then check mirrored_value against item.d_data
+ if (data_phase_read) begin
+ if (do_read_check) begin
+ `DV_CHECK_EQ(csr.get_mirrored_value(), item.d_data,
+ $sformatf("reg name: %0s", csr.get_full_name()))
+ if (cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.csr_rd_after_alert_cg_wrap.sample(csr.get_offset());
+ end
+ end
+ void'(csr.predict(.value(item.d_data), .kind(UVM_PREDICT_READ)));
+ end
+ endfunction
+
+ // If reset or lc_escalate_en is issued during otp program, this function will backdoor update
+ // otp memory write value because scb did not know how many cells haven been written.
+ // We won't update csr `direct_access_address` after fatal alert happened, so in this function
+ // we can directly call method `get_scb_otp_addr` to get the interrupted dai address.
+ virtual function void recover_interrupted_op();
+ if (dai_wr_ip) begin
+ bit [TL_DW-1:0] otp_addr = get_scb_otp_addr();
+ bit [TL_DW-1:0] dai_addr = otp_addr << 2;
+ backdoor_update_otp_array(dai_addr);
+ dai_wr_ip = 0;
+ end
+ endfunction
+
+ virtual function void backdoor_update_otp_array(bit [TL_DW-1:0] dai_addr);
+ bit [TL_DW-1:0] otp_addr = dai_addr >> 2;
+ bit [TL_DW-1:0] readout_word, readout_word1;
+ int part_idx = get_part_index(dai_addr);
+ if (part_has_integrity(part_idx)) begin
+ void'(read_a_word_with_ecc(dai_addr, readout_word));
+ void'(read_a_word_with_ecc(dai_addr + 4, readout_word1));
+ end else begin
+ void'(read_a_word_with_ecc_raw(dai_addr, readout_word));
+ void'(read_a_word_with_ecc_raw(dai_addr + 4, readout_word1));
+ end
+
+ otp_a[otp_addr] = readout_word;
+
+ if (is_digest(dai_addr)) begin
+ otp_a[otp_addr+1] = readout_word1;
+ end else if (is_secret(dai_addr)) begin
+ bit [TL_DW*2-1:0] mem_rd_val, descrambled_val;
+ mem_rd_val = {readout_word1 ,readout_word};
+ descrambled_val = descramble_data(mem_rd_val, part_idx);
+ otp_a[otp_addr+1] = descrambled_val[TL_DW*2-1:TL_DW];
+ otp_a[otp_addr] = descrambled_val[TL_DW-1:0];
+ end
+ endfunction
+
+ virtual function bit [1:0] read_a_word_with_ecc(bit [TL_DW-1:0] dai_addr,
+ ref bit [TL_DW-1:0] readout_word);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data0 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data1 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr + 2);
+ readout_word[15:0] = ecc_rd_data0.data;
+ readout_word[31:16] = ecc_rd_data1.data;
+ return max2(ecc_rd_data0.err, ecc_rd_data1.err);
+ endfunction
+
+ // Returns the ECC error but does not correct the data bits (i.e. returns the raw data).
+ virtual function bit [1:0] read_a_word_with_ecc_raw(bit [TL_DW-1:0] dai_addr,
+ ref bit [TL_DW-1:0] readout_word);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data0 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data1 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr + 2);
+ readout_word[15:0] = 16'hFFFF & cfg.mem_bkdr_util_h.read(dai_addr);
+ readout_word[31:16] = 16'hFFFF & cfg.mem_bkdr_util_h.read(dai_addr + 2);
+ return max2(ecc_rd_data0.err, ecc_rd_data1.err);
+ endfunction
+
+
+ virtual function void reset(string kind = "HARD");
+ recover_interrupted_op();
+ super.reset(kind);
+ // flush fifos
+ otbn_fifo.flush();
+ flash_addr_fifo.flush();
+ flash_data_fifo.flush();
+ lc_prog_fifo.flush();
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ sram_fifos[i].flush();
+ end
+
+ direct_access_regwen_state = 1;
+ under_chk = 0;
+ under_dai_access = 0;
+ ignore_digest_chk = 0;
+ exp_status = `gmv(ral.status);
+ exp_alert = OtpNoAlert;
+
+ edn_data_q.delete();
+
+ // Out of reset: lock dai access until power init is done
+ if (cfg.en_scb) void'(ral.direct_access_regwen.predict(0));
+ endfunction
+
+ virtual function void check_otp_idle(bit val, int wait_clks = 0);
+ fork
+ begin
+ fork
+ begin
+ // use negedge to avoid race condition
+ cfg.clk_rst_vif.wait_n_clks(wait_clks + 1);
+ `uvm_error(`gfn,
+ $sformatf("pwr_otp_idle output is %0b while expect %0b within %0d cycles",
+ cfg.otp_ctrl_vif.pwr_otp_idle_o, val, wait_clks))
+ end
+ begin
+ wait(cfg.under_reset || cfg.otp_ctrl_vif.pwr_otp_idle_o == val ||
+ // Due to OTP access arbitration, any KDI request during DAI access might block
+ // write secret until KDI request is completed. Since the KDI process time could
+ // vary depends on the push-pull-agent, we are going to ignore the checking if
+ // this scenario happens.
+ cfg.m_otbn_pull_agent_cfg.vif.req ||
+ cfg.m_flash_data_pull_agent_cfg.vif.req ||
+ cfg.m_flash_addr_pull_agent_cfg.vif.req ||
+ cfg.m_sram_pull_agent_cfg[0].vif.req ||
+ cfg.m_sram_pull_agent_cfg[1].vif.req ||
+ cfg.m_sram_pull_agent_cfg[2].vif.req ||
+ cfg.m_sram_pull_agent_cfg[3].vif.req ||
+ cfg.m_lc_prog_pull_agent_cfg.vif.req ||
+ // When lc_escalation is on, the DAI interface goes to ErrorSt, so ignore
+ // otp_idle checking.
+ cfg.otp_ctrl_vif.alert_reqs ||
+ // Check timeout will keep doing background check, issue #5616
+ exp_status[OtpTimeoutErrIdx]);
+ end
+ join_any
+ disable fork;
+ end
+ join_none
+ endfunction
+
+ // predict digest registers
+ virtual function void predict_digest_csrs();
+% for part in write_locked_digest_parts:
+<% part_name = Name.from_snake_case(part["name"]) %>\
+ void'(ral.${part_name.as_snake_case()}_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[${part_name.as_camel_case()}Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.${part_name.as_snake_case()}_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[${part_name.as_camel_case()}Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+ % if not loop.last:
+
+ %endif
+% endfor
+ endfunction
+
+ function void update_digest_to_otp(int part_idx, bit [TL_DW*2-1:0] digest);
+ otp_a[PART_OTP_DIGEST_ADDRS[part_idx]] = digest[31:0];
+ otp_a[PART_OTP_DIGEST_ADDRS[part_idx] + 1] = digest[63:32];
+ endfunction
+
+ function void check_phase(uvm_phase phase);
+ super.check_phase(phase);
+ // post test checks - ensure that all local fifos and queues are empty
+ endfunction
+
+ // Calculate digest value for each partition
+ // According to the design spec, the calculation is based on 64-rounds of PRESENT cipher
+ // The 64-bit data_in state is initialized with a silicon creator constant, and each 128 bit
+ // chunk of partition data are fed in as keys
+ // The last 64-round PRESENT calculation will use a global digest constant as key input
+ function void cal_digest_val(int part_idx);
+ bit [TL_DW-1:0] mem_q[$];
+ int array_size;
+ bit [SCRAMBLE_DATA_SIZE-1:0] digest;
+
+ if (cfg.otp_ctrl_vif.under_error_states()) return;
+
+ if (!part_has_hw_digest(part_idx) || get_digest_reg_val(part_idx) != 0) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else if (PartInfo[part_idx].iskeymgr_creator &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else if (PartInfo[part_idx].iskeymgr_owner &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ dai_digest_ip = part_idx;
+ end
+ case (part_idx)
+% for part in buf_parts_without_lc:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ ${part_name_camel}Idx: mem_q = otp_a[${part_name_camel}Offset / TL_SIZE : ${part_name_camel}DigestOffset / TL_SIZE - 1];
+% endfor
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("Access unexpected partition %0d", part_idx))
+ end
+ endcase
+
+ array_size = mem_q.size();
+
+ // for secret partitions, need to use otp scrambled value as data input
+ if (PartInfo[part_idx].secret) begin
+ bit [TL_DW-1:0] scrambled_mem_q[$];
+ for (int i = 0; i < array_size/2; i++) begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] scrambled_data;
+ scrambled_data = scramble_data({mem_q[i*2+1], mem_q[i*2]}, part_idx);
+ scrambled_mem_q.push_back(scrambled_data[TL_DW-1:0]);
+ scrambled_mem_q.push_back(scrambled_data[SCRAMBLE_DATA_SIZE-1:TL_DW]);
+ end
+ mem_q = scrambled_mem_q;
+ end
+
+ digest = otp_scrambler_pkg::cal_digest(part_idx, mem_q);
+ update_digest_to_otp(part_idx, digest);
+ endfunction
+
+
+ // this function go through present encode algo two or three iterations:
+ // first iteration with input key,
+ // second iteration with second_key, this iteration only happens if num_round is 2
+ // third iteration with a final constant as key
+ // this is mainly used for unlock token hashing, key derivation
+ virtual function bit [SCRAMBLE_DATA_SIZE-1:0] present_encode_with_final_const(
+ bit [SCRAMBLE_DATA_SIZE-1:0] data,
+ bit [SCRAMBLE_KEY_SIZE-1:0] key,
+ bit [SCRAMBLE_KEY_SIZE-1:0] final_const,
+ bit [SCRAMBLE_KEY_SIZE-1:0] second_key = '0,
+ int num_round = 1);
+ bit [SCRAMBLE_DATA_SIZE-1:0] enc_data;
+ bit [SCRAMBLE_DATA_SIZE-1:0] intermediate_state;
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(data, key,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ // XOR the previous state into the digest result according to the Davies-Meyer scheme.
+ intermediate_state = data ^ enc_data;
+
+ if (num_round == 2) begin
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(intermediate_state, second_key,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ intermediate_state = intermediate_state ^ enc_data;
+ end else if (num_round > 2) begin
+ `uvm_fatal(`gfn, $sformatf("does not support num_round: %0d > 2", num_round))
+ end
+
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(intermediate_state, final_const,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ // XOR the previous state into the digest result according to the Davies-Meyer scheme.
+ present_encode_with_final_const = intermediate_state ^ enc_data;
+ endfunction
+
+ // Get address for scoreboard's otp_a array from the `direct_access_address` CSR
+ function bit [TL_DW-1:0] get_scb_otp_addr();
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address);
+ get_scb_otp_addr = normalize_dai_addr(dai_addr) >> 2;
+ endfunction
+
+ // This function predict OTP error related registers: intr_state, status, and err_code
+ virtual function void predict_err(otp_status_e status_err_idx,
+ otp_err_code_e err_code = OtpNoError,
+ bit update_esc_err = 0);
+ if (cfg.otp_ctrl_vif.under_error_states() && !update_esc_err) return;
+
+ // Update intr_state
+ void'(ral.intr_state.otp_error.predict(.value(1), .kind(UVM_PREDICT_READ)));
+ // Update status
+ exp_status[status_err_idx] = 1;
+
+ // Only first status errors up to the LCI have corresponding err_code
+ if (status_err_idx <= OtpLciErrIdx) begin
+ dv_base_reg_field err_code_flds[$];
+ if (err_code == OtpNoError) begin
+ `uvm_error(`gfn, $sformatf("please set status error: %0s error code", status_err_idx.name))
+ end
+ ral.err_code[status_err_idx].get_dv_base_reg_fields(err_code_flds);
+
+ if (`gmv(err_code_flds[0]) inside {OTP_TERMINAL_ERRS}) begin
+ `uvm_info(`gfn, "terminal error cannot be updated", UVM_HIGH)
+ end else if (status_err_idx == OtpLciErrIdx &&
+ `gmv(err_code_flds[0]) != OtpNoError) begin
+ `uvm_info(`gfn, "For LC partition, all errors are terminal error!", UVM_HIGH)
+ end else begin
+ void'(err_code_flds[0].predict(.value(err_code), .kind(UVM_PREDICT_READ)));
+ end
+ end
+
+ endfunction
+
+ virtual function void predict_no_err(otp_status_e status_err_idx);
+ if (cfg.otp_ctrl_vif.under_error_states()) return;
+
+ exp_status[status_err_idx] = 0;
+ if (status_err_idx == OtpDaiErrIdx) exp_status[OtpDaiIdleIdx] = 1;
+
+ if (status_err_idx <= OtpLciErrIdx) begin
+ dv_base_reg_field err_code_flds[$];
+ ral.err_code[status_err_idx].get_dv_base_reg_fields(err_code_flds);
+ void'(err_code_flds[0].predict(OtpNoError));
+ end
+ endfunction
+
+ virtual function void predict_rdata(bit is_64_bits, bit [TL_DW-1:0] rdata0,
+ bit [TL_DW-1:0] rdata1 = 0);
+ void'(ral.direct_access_rdata[0].predict(.value(rdata0), .kind(UVM_PREDICT_READ)));
+ if (is_64_bits) begin
+ void'(ral.direct_access_rdata[1].predict(.value(rdata1), .kind(UVM_PREDICT_READ)));
+ end
+ endfunction
+
+ // this function retrieves keys (128 bits) from scb's otp_array with a starting address
+ // if not locked, it will return 0
+ // this is mainly used for scrambling key algo
+ virtual function bit [SCRAMBLE_KEY_SIZE-1:0] get_key_from_otp(bit locked, int start_i);
+ bit [SCRAMBLE_KEY_SIZE-1:0] key;
+ if (!locked) return 0;
+ for (int i = 0; i < 4; i++) key |= otp_a[i + start_i] << (TL_DW * i);
+ return key;
+ endfunction
+
+ // The following two methods are all retrieving digest val.
+ // get_otp_digest_val: is the digest value from OTP memory
+ // get_digest_reg_val: is the digest value in register. This value is identical to OTP
+ // memory's digest value after a power cycle reset.
+ virtual function bit [TL_DW*2-1:0] get_otp_digest_val(int part_idx);
+ get_otp_digest_val[31:0] = otp_a[PART_OTP_DIGEST_ADDRS[part_idx]];
+ get_otp_digest_val[63:32] = otp_a[PART_OTP_DIGEST_ADDRS[part_idx] + 1];
+ endfunction
+
+ virtual function bit [TL_DW*2-1:0] get_digest_reg_val(int part_idx);
+ bit [TL_DW*2-1:0] digest;
+ case (part_idx)
+% for part in write_locked_digest_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_snake = part_name.as_snake_case()
+%>\
+ ${part_name.as_camel_case()}Idx: begin
+ digest = {`gmv(ral.${part_name_snake}_digest[1]),
+ `gmv(ral.${part_name_snake}_digest[0])};
+ end
+% endfor
+ default: `uvm_fatal(`gfn, $sformatf("Partition %0d does not have digest", part_idx))
+ endcase
+ return digest;
+ endfunction
+
+ virtual function bit is_tl_mem_access_allowed(input tl_seq_item item, input string ral_name,
+ output bit mem_byte_access_err,
+ output bit mem_wo_err,
+ output bit mem_ro_err,
+ output bit custom_err);
+
+ uvm_reg_addr_t addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ bit [TL_AW-1:0] addr_mask = ral.get_addr_mask();
+ bit [TL_AW-1:0] dai_addr = (csr_addr & addr_mask - SW_WINDOW_BASE_ADDR);
+
+ bit mem_access_allowed = super.is_tl_mem_access_allowed(item, ral_name, mem_byte_access_err,
+ mem_wo_err, mem_ro_err, custom_err);
+
+ if (ral_name == "otp_ctrl_prim_reg_block") return mem_access_allowed;
+
+ // Ensure the address is within the memory window range.
+ // Also will skip checking if memory access is not allowed due to TLUL bus error.
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr :
+ cfg.ral_models[ral_name].mem_ranges[0].end_addr]} &&
+ mem_access_allowed) begin
+
+ // If sw partition is read locked, then access policy changes from RO to no access
+% for part in read_locked_csr_parts:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (`gmv(ral.${part_name.as_snake_case()}_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + ${part_name_camel}Offset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + ${part_name_camel}Offset +
+ ${part_name_camel}Size - 1]}) begin
+ predict_err(Otp${part_name_camel}ErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ % if part["write_lock"] == "Digest":
+ cov.unbuf_access_lock_cg_wrap[${part_name_camel}Idx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(${part_name_camel}Idx) != 0), .is_write(0));
+ % else:
+ // TODO: we should probably create a different covergroup
+ // for unbuffered partitions without digest.
+ cov.unbuf_access_lock_cg_wrap[${part_name_camel}Idx].sample(.read_lock(1),
+ .write_lock(0), .is_write(0));
+ % endif
+ end
+ return 0;
+ end
+ end
+% endfor
+
+ // Check ECC uncorrectable fatal error.
+ if (dai_addr < LifeCycleOffset) begin
+ int part_idx = get_part_index(dai_addr);
+ bit [TL_DW-1:0] read_out;
+ int ecc_err = read_a_word_with_ecc(dai_addr, read_out);
+ if (ecc_err == OtpEccUncorrErr && part_has_integrity(part_idx)) begin
+ predict_err(otp_status_e'(part_idx), OtpMacroEccUncorrError);
+ set_exp_alert("fatal_macro_error", 1, 20);
+ custom_err = 1;
+ return 0;
+ end
+ end
+ end
+
+ return mem_access_allowed;
+ endfunction
+
+ virtual function bit predict_tl_err(tl_seq_item item, tl_channels_e channel, string ral_name);
+ if (ral_name == "otp_ctrl_prim_reg_block" &&
+ cfg.otp_ctrl_vif.lc_dft_en_i != lc_ctrl_pkg::On) begin
+ if (channel == DataChannel) begin
+ `DV_CHECK_EQ(item.d_error, 1,
+ $sformatf({"On interface %0s, TL item: %0s, access gated by lc_dft_en_i"},
+ ral_name, item.sprint(uvm_default_line_printer)))
+
+ // In data read phase, check d_data when d_error = 1.
+ if (item.d_error && (item.d_opcode == tlul_pkg::AccessAckData)) begin
+ check_tl_read_value_after_error(item, ral_name);
+ end
+ end
+ return 1;
+ end
+ return super.predict_tl_err(item, channel, ral_name);
+ endfunction
+
+ virtual function void set_exp_alert(string alert_name, bit is_fatal = 0, int max_delay = 0);
+ exp_alert = alert_name == "fatal_check_error" ? OtpCheckAlert : OtpMacroAlert;
+ super.set_exp_alert(alert_name, is_fatal, max_delay);
+ endfunction
+
+endclass
diff --git a/src/fuse_ctrl/data/otp_ctrl_smoke_vseq.sv.tpl b/src/fuse_ctrl/data/otp_ctrl_smoke_vseq.sv.tpl
new file mode 100755
index 0000000..904ff45
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_smoke_vseq.sv.tpl
@@ -0,0 +1,255 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+${gen_comment}
+<%
+from topgen.lib import Name
+%>\
+// smoke test vseq to walk through DAI states and request keys
+`define PART_CONTENT_RANGE(i) ${"\\"}
+ {[PartInfo[``i``].offset : (PartInfo[``i``].offset + PartInfo[``i``].size - DIGEST_SIZE - 1)]}
+
+class otp_ctrl_smoke_vseq extends otp_ctrl_base_vseq;
+ `uvm_object_utils(otp_ctrl_smoke_vseq)
+
+ `uvm_object_new
+
+ rand bit do_req_keys, do_lc_trans;
+ rand bit access_locked_parts;
+ rand bit rand_wr, rand_rd, rd_sw_tlul_rd;
+ rand bit [TL_DW-1:0] dai_addr;
+ rand bit [TL_DW-1:0] wdata0, wdata1;
+ rand int num_dai_op;
+ rand otp_ctrl_part_pkg::part_idx_e part_idx;
+ rand bit check_regwen_val, check_trigger_regwen_val;
+ rand bit [TL_DW-1:0] check_timeout_val;
+ rand bit [1:0] check_trigger_val;
+ rand otp_ecc_err_e ecc_otp_err, ecc_chk_err;
+
+ constraint no_access_err_c {access_locked_parts == 0;}
+
+ // LC partition does not allow DAI access (the LC partition is always the last one)
+ constraint partition_index_c {part_idx inside {[0:LifeCycleIdx-1]};}
+
+ constraint dai_wr_legal_addr_c {
+% for part in otp_mmap.config["partitions"]:
+<%
+ part_name = Name.from_snake_case(part["name"])
+ part_name_camel = part_name.as_camel_case()
+%>\
+ if (part_idx == ${part_name_camel}Idx)
+ dai_addr inside `PART_CONTENT_RANGE(${part_name_camel}Idx);
+% endfor
+ solve part_idx before dai_addr;
+ }
+
+ constraint dai_wr_blank_addr_c {
+ dai_addr % 4 == 0;
+ if (PartInfo[part_idx].secret) dai_addr % 8 == 0;
+ }
+
+ constraint num_trans_c {
+ if (cfg.smoke_test) {
+ num_trans == 1;
+ num_dai_op inside {[1:2]};
+ } else {
+ num_trans inside {[1:2]};
+ num_dai_op inside {[1:50]};
+ }
+ }
+
+ constraint regwens_c {
+ check_regwen_val dist {0 :/ 1, 1 :/ 9};
+ check_trigger_regwen_val dist {0 :/ 1, 1 :/ 9};
+ }
+
+ constraint check_timeout_val_c {
+ check_timeout_val inside {0, [100_000:'1]};
+ }
+
+ constraint ecc_otp_err_c {ecc_otp_err == OtpNoEccErr;}
+
+ constraint ecc_chk_err_c {ecc_chk_err == OtpNoEccErr;}
+
+ constraint apply_reset_during_pwr_init_cycles_c {
+ apply_reset_during_pwr_init_cycles dist {
+ [1:5] :/ 4,
+ [6:2000] :/ 4,
+ [2001:4000] :/ 2};
+ }
+
+ virtual task dut_init(string reset_kind = "HARD");
+ if (do_apply_reset) begin
+ lc_prog_blocking = 1;
+ super.dut_init(reset_kind);
+ csr_wr(ral.intr_enable, en_intr);
+ end
+ endtask
+
+ virtual task pre_start();
+ super.pre_start();
+ num_dai_op.rand_mode(0);
+ check_lc_err();
+ endtask
+
+ virtual task check_lc_err();
+ fork
+ forever begin
+ wait(cfg.otp_ctrl_vif.lc_prog_err == 1);
+ lc_prog_blocking = 0;
+ wait(lc_prog_blocking == 1);
+ end
+ join_none;
+ endtask
+
+ task body();
+ for (int i = 1; i <= num_trans; i++) begin
+ bit [TL_DW-1:0] tlul_val;
+ if (cfg.stop_transaction_generators()) break;
+ `uvm_info(`gfn, $sformatf("starting seq %0d/%0d", i, num_trans), UVM_LOW)
+
+ // to avoid access locked OTP partions, issue reset and clear the OTP memory to all 0.
+ if (access_locked_parts == 0) begin
+ do_otp_ctrl_init = 1;
+ if (i > 1 && do_dut_init) dut_init();
+ // after otp-init done, check status
+ cfg.clk_rst_vif.wait_clks(1);
+ if (!cfg.otp_ctrl_vif.lc_esc_on) begin
+ csr_rd_check(.ptr(ral.status.dai_idle), .compare_value(1));
+ end
+ end
+ do_otp_ctrl_init = 0;
+
+ `DV_CHECK_RANDOMIZE_FATAL(this)
+ // set consistency and integrity checks
+ csr_wr(ral.check_regwen, check_regwen_val);
+ csr_wr(ral.check_trigger_regwen, check_trigger_regwen_val);
+ csr_wr(ral.check_timeout, check_timeout_val);
+ trigger_checks(.val(check_trigger_val), .wait_done(1), .ecc_err(ecc_chk_err));
+
+ if (!$urandom_range(0, 9) && access_locked_parts) write_sw_rd_locks();
+
+ // Backdoor write mubi to values that are not true or false.
+ force_mubi_part_access();
+
+ if (do_req_keys && !cfg.otp_ctrl_vif.alert_reqs) begin
+ req_otbn_key();
+ req_flash_addr_key();
+ req_flash_data_key();
+ req_all_sram_keys();
+ end
+ if (do_lc_trans && !cfg.otp_ctrl_vif.alert_reqs) begin
+ req_lc_transition(do_lc_trans, lc_prog_blocking);
+ if (cfg.otp_ctrl_vif.lc_prog_req == 0) begin
+ for (int k = 0; k <= LciIdx; k++) begin
+ csr_rd(.ptr(ral.err_code[k]), .value(tlul_val));
+ end
+ end
+ end
+
+ for (int i = 0; i < num_dai_op; i++) begin
+ bit [TL_DW-1:0] rdata0, rdata1, backdoor_rd_val;
+ if (cfg.stop_transaction_generators()) break;
+
+ `DV_CHECK_RANDOMIZE_FATAL(this)
+ // recalculate part_idx in case some test turn off constraint dai_wr_legal_addr_c
+ part_idx = part_idx_e'(get_part_index(dai_addr));
+ `uvm_info(`gfn, $sformatf("starting dai access seq %0d/%0d with addr %0h in partition %0d",
+ i, num_dai_op, dai_addr, part_idx), UVM_HIGH)
+
+ // OTP write via DAI
+ if (rand_wr && !digest_calculated[part_idx]) begin
+ dai_wr(dai_addr, wdata0, wdata1);
+ if (cfg.otp_ctrl_vif.lc_prog_req == 0) begin
+ for (int k = 0; k <= LciIdx; k++) begin
+ csr_rd(.ptr(ral.err_code[k]), .value(tlul_val));
+ end
+ end
+ end
+
+ // Inject ECC error.
+ if (ecc_otp_err != OtpNoEccErr && dai_addr < LifeCycleOffset) begin
+ `uvm_info(`gfn, $sformatf("Injecting ecc error %0d at 0x%x", ecc_otp_err, dai_addr),
+ UVM_HIGH)
+ backdoor_rd_val = backdoor_inject_ecc_err(dai_addr, ecc_otp_err);
+ end
+
+ if (rand_rd) begin
+ // OTP read via DAI, check data in scb
+ dai_rd(dai_addr, rdata0, rdata1);
+ end
+
+ // if write sw partitions, check tlul window
+ if (is_sw_part(dai_addr) && rd_sw_tlul_rd) begin
+ uvm_reg_addr_t tlul_addr = cfg.ral.get_addr_from_offset(get_sw_window_offset(dai_addr));
+ // tlul error rsp is checked in scoreboard
+ do_otp_rd = 1;
+ tl_access(.addr(tlul_addr), .write(0), .data(tlul_val), .blocking(1), .check_rsp(0));
+ end
+
+ // Backdoor restore injected ECC error, but should not affect fatal alerts.
+ if (ecc_otp_err != OtpNoEccErr && dai_addr < LifeCycleOffset) begin
+ `uvm_info(`gfn, $sformatf("Injecting ecc error %0d at 0x%x", ecc_otp_err, dai_addr),
+ UVM_HIGH)
+ cfg.mem_bkdr_util_h.write32({dai_addr[TL_DW-3:2], 2'b00}, backdoor_rd_val);
+ // Wait for two lock cycles to make sure the local escalation error propagates to other
+ // patitions and err_code reg.
+ cfg.clk_rst_vif.wait_clks(2);
+ end
+
+ // Random lock sw partitions
+ if (!$urandom_range(0, 9) && access_locked_parts) write_sw_rd_locks();
+ if (!$urandom_range(0, 9) && access_locked_parts) write_sw_digests();
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.direct_access_regwen), .value(tlul_val));
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.status), .value(tlul_val));
+ if (cfg.otp_ctrl_vif.lc_prog_req == 0) begin
+ for (int k = 0; k <= LciIdx; k++) begin
+ csr_rd(.ptr(ral.err_code[k]), .value(tlul_val));
+ end
+ end
+ end
+
+ // Read/write test access memory
+ otp_test_access();
+
+ // lock digests
+ `uvm_info(`gfn, "Trigger HW digest calculation", UVM_HIGH)
+ cal_hw_digests();
+ if ($urandom_range(0, 1)) csr_rd(.ptr(ral.status), .value(tlul_val));
+
+ if (cfg.otp_ctrl_vif.lc_prog_req == 0) begin
+ for (int k = 0; k <= LciIdx; k++) begin
+ csr_rd(.ptr(ral.err_code[k]), .value(tlul_val));
+ end
+ end
+
+ if ($urandom_range(0, 1)) rd_digests();
+ if (do_dut_init) dut_init();
+
+ // read and check digest in scb
+ rd_digests();
+
+ // send request to the interfaces again after partitions are locked
+ if (do_lc_trans && !cfg.otp_ctrl_vif.alert_reqs) begin
+ req_lc_transition(do_lc_trans, lc_prog_blocking);
+ if (cfg.otp_ctrl_vif.lc_prog_req == 0) begin
+ for (int k = 0; k <= LciIdx; k++) begin
+ csr_rd(.ptr(ral.err_code[k]), .value(tlul_val));
+ end
+ end
+ end
+
+ if (do_req_keys && !cfg.otp_ctrl_vif.alert_reqs && !cfg.smoke_test) begin
+ req_otbn_key();
+ req_flash_addr_key();
+ req_flash_data_key();
+ req_all_sram_keys();
+ end
+
+ end
+
+ endtask : body
+
+endclass : otp_ctrl_smoke_vseq
+
+`undef PART_CONTENT_RANGE
diff --git a/src/fuse_ctrl/data/otp_ctrl_testplan.hjson b/src/fuse_ctrl/data/otp_ctrl_testplan.hjson
new file mode 100644
index 0000000..95b6081
--- /dev/null
+++ b/src/fuse_ctrl/data/otp_ctrl_testplan.hjson
@@ -0,0 +1,404 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+{
+ name: "otp_ctrl"
+ import_testplans: ["hw/dv/tools/dvsim/testplans/csr_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/mem_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/intr_test_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/alert_test_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/tl_device_access_types_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/sec_cm_count_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/sec_cm_fsm_testplan.hjson",
+ "hw/dv/tools/dvsim/testplans/stress_all_with_reset_testplan.hjson",
+ "otp_ctrl_sec_cm_testplan.hjson"]
+ testpoints: [
+ {
+ name: wake_up
+ desc: '''
+ Wake_up test walks through otp_ctrl's power-on initialization, read, program, and
+ digest functionalities.
+
+ - drive pwrmgr's request pin to trigger OTP initialization after reset, check status
+ after OTP initialization
+ - write all-ones to a random address within OTP partition 0, wait until this operation
+ completes
+ - read out the random selected write address, check if the readout value is all-ones
+ - trigger a digest calculation for a Software partition, check if the OtpError
+ interrupt is set
+ - trigger a digest calculation for a non-software partition, expect operation completes
+ without the OtpError interrupt
+ - read out secrets through the hardware interfaces
+ '''
+ stage: V1
+ tests: ["otp_ctrl_wake_up"]
+ }
+ {
+ name: smoke
+ desc: '''
+ OTP_CTRL smoke test provisions and locks partitions.
+
+ - drive pwrmgr's request pin to trigger OTP initialization after reset, check status
+ after OTP initialization
+ - randomly read out keys pertaining to `key_manager`, `flash`, `sram`, `otbn`
+ - randomly issue LC program request
+ - write random values to random addresses within each OTP partition
+ - read out the random selected write addresses, check if the readout values are expected
+ - during read and write operations, check if direct_access_regwen is correctly set by HW
+ - perform a system-level reset and check corresponding CSRs are set correctly
+ - lock all partitions except life_cycle by triggering digest calculations
+ - read back and verify the digest
+ - perform a system-level reset to verify the corresponding CSRs exposing the digests
+ have been populated
+
+ **Checks**:
+ - Assertion checks to ensure vendor specific I/Os: `otp_vendor_test_status_o`,
+ `otp_vendor_test_ctrl_i`, `cio_test_o`, and `cio_test_en_o` are connected currently
+ with `lc_dft_en_i` On and Off.
+ '''
+ stage: V1
+ tests: ["otp_ctrl_smoke"]
+ }
+ {
+ name: dai_access_partition_walk
+ desc: '''
+ Similar to UVM's memory walk test, this test ensures every address in each partition
+ can be accessed successfully via DAI and TLUL interfacs according to its access policy.
+ '''
+ stage: V2
+ tests: ["otp_ctrl_partition_walk"]
+ }
+ {
+ name: init_fail
+ desc: '''
+ Based on OTP_CTRL smoke test, this test creates OTP_CTRL's initialization failure:
+ - write and read OTP memory via DAI interface
+ - randomly issue DAI digest command to lock HW partitions
+ - keep writing to OTP memory via DAI interface without asserting reset
+ - if digests are not locked, backdoor inject ECC correctable or uncorrectable errors
+ - issue reset and power initialization
+ - if the injected errors are all correctable errors, disable the `lc_bypass_chk_en`
+ after LC program request to create an LC partition check failure
+
+ If fatal error is triggered, this test will check:
+ - OTP initialization failure triggers fatal alert
+ - `status`, `intr_state`, `err_code` CSRs reflect correct fatal error
+
+ If OTP initialization finished without any fatal error, this test will check:
+ - OTP initialization finishes with power init output goes to 1
+ - `status`, `intr_state`, `err_code` CSRs reflect ECC correctable error
+ '''
+ stage: V2
+ tests: ["otp_ctrl_init_fail"]
+ }
+ {
+ name: partition_check
+ desc: '''
+ Randomly program the partition check related CSRs including:
+ - `check_timeout`
+ - `integrity_check_period`
+ - `consistency_check_period`
+ - `check_trigger`
+
+ Create a failure scenario by randomly picking one of these three methods:
+ - inject ECC errors into the OTP macro via backdoor
+ - set the `check_timeout` CSR with a very small value
+ - write to a random OTP partition after digest is issued but before reset is asserted
+
+ **Checks**:
+ - the corresponding alerts are triggered
+ - the error_code register is set correctly
+ Note that due to limited simulation time, for background checks, this test only write
+ random value that is less than 20 to the check period.
+ '''
+ stage: V2
+ tests: ["otp_ctrl_check_fail", "otp_ctrl_background_chks"]
+ }
+ {
+ name: regwen_during_otp_init
+ desc: '''
+ The `direct_access_regwen` is a RO register which controls the write-enable of other
+ reigsters. It is not verified by the common CSR tests. HW sets it to 0 when the DAI
+ interface is busy.
+
+ Stimulus and checks:
+ - randomly read `direct_access_regwen` and verify that it returns 0 during OTP
+ initialization
+ - verify that the writes to the registers controlled by it do not go through during OTP
+ initialization
+ '''
+ stage: V2
+ tests: ["otp_ctrl_regwen"]
+ }
+ {
+ name: partition_lock
+ desc: '''
+ This test will cover two methods of locking read and write: digest calculation and CSR
+ write. After locking the partitions, issue read or program sequences and check if the
+ operations are locked correctly, and check if the `AccessError` is set.
+ '''
+ stage: V2
+ tests: ["otp_ctrl_dai_lock"]
+ }
+ {
+ name: interface_key_check
+ desc: '''
+ OTP_CTRL will generate keys to `flash`, `sram`, and `otbn` upon their requests.
+ Based on the DAI access sequence, this test will run key requests sequence in
+ parallel, and check if correct keys are generated.
+ '''
+ stage: V2
+ tests: ["otp_ctrl_parallel_key_req"]
+ }
+ {
+ name: lc_interactions
+ desc: '''
+ Verify the procotols between OTP_CTRL and LC_CTRL. Based on the DAI access sequence,
+ run the following sequences in parallel:
+
+ - request a LC state transition via the programming interface
+ - enable the `lc_escalation_en` signal
+
+ **Checks**:
+ - if the LC program request has `AccessError`, check the LC program response sets
+ the `error` bit to 1
+ - if `lc_escalation_en` is enabled, verify that alert is triggered and OTP_CTRL entered
+ terminal state
+ '''
+ stage: V2
+ tests: ["otp_ctrl_parallel_lc_req", "otp_ctrl_parallel_lc_esc"]
+ }
+ { name: otp_dai_errors
+ desc: '''
+ Based on the otp_dai_lock test, this test will randomly run the following OTP errors:
+ - DAI interface writes non-blank OTP address
+ - DAI interface accesses LC partition
+ - DAI interface writes HW digests
+ - DAI interface writes non-empty memory
+
+ **Checks**:
+ - `err_code` and `status` CSRs
+ - `otp_error` interrupt
+ '''
+ stage: V2
+ tests: ["otp_ctrl_dai_errs"]
+ }
+ { name: otp_macro_errors
+ desc: '''
+ Randomly run the following OTP errors:
+ - MacroError
+ - MacroEccCorrError
+ - MacroEccUncorrError
+
+ **Checks**:
+ - `err_code` and `status` CSRs
+ - `otp_error` interrupt
+ - if the error is unrecoverable, verify that alert is triggered and OTP_CTRL entered
+ terminal state
+ '''
+ stage: V2
+ tests: ["otp_ctrl_macro_errs"]
+ }
+ {
+ name: test_access
+ desc: '''
+ This test checks if the test access to OTP macro is connected correctly.
+
+ **Stimulus and Checks**:
+ - Write and check read results from the prim_tl_i/o.
+ - Ensure no error or alert occurs from DUT.
+ '''
+ stage: V2
+ tests: ["otp_ctrl_test_access"]
+ }
+ {
+ name: stress_all
+ desc: '''
+ - combine above sequences in one test to run sequentially, except csr sequence
+ - randomly add reset between each sequence
+ '''
+ stage: V2
+ tests: ["{name}_stress_all"]
+ }
+ {
+ name: sec_cm_additional_check
+ desc: '''
+ Verify the outcome of injecting faults to security countermeasures.
+
+ Stimulus:
+ As mentioned in `prim_count_check`, `prim_fsm_check` and `prim_double_lfsr_check`.
+
+ Checks:
+ - Check the value of status register according to where the fault is injected.
+ - Check OTP_CTRL is locked after the fatal fault injection by trying to access OTP_CTRL
+ via dai, kdi, and lci interfaces.
+ '''
+ stage: V2S
+ tests: ["otp_ctrl_sec_cm"]
+ }
+ {
+ name: otp_ctrl_low_freq_read
+ desc: '''
+ This test checks if OTP's read operation can operate successfully in a low clock
+ frequency before the clock is calibrated.
+
+ **Stimulus and Checks**:
+ - Configure OTP_CTRL's clock to 6MHz low frequency.
+ - Backdoor write OTP memory.
+ - Use DAI access to read each memory address and compare if the value is correct.
+ - If DAI address is in a SW partition, read and check again via TLUL interface.
+ '''
+ stage: V3
+ tests: ["otp_ctrl_low_freq_read"]
+ }
+ ]
+
+ covergroups: [
+ {
+ name: power_on_cg
+ desc: '''Covers the following conditions when OTP_CTRL finishes power-on initialization:
+ - whether `lc_escalation_en` is On
+ - whether any partition (except life cycle partition) is locked
+ '''
+ }
+ {
+ name: flash_req_cg
+ desc: '''Covers whether secret1 partition is locked during `flash` data or address
+ request.'''
+ }
+ {
+ name: sram_req_cg
+ desc: '''Covers whether secret1 partition is locked during all `srams` key request.'''
+ }
+ {
+ name: otbn_req_cg
+ desc: '''Covers whether secret1 partition is locked during `otbn` key request.'''
+ }
+ {
+ name: lc_prog_cg
+ desc: '''Covers whether the error bit is set during LC program request.'''
+ }
+ {
+ name: keymgr_o_cg
+ desc: '''Covers the following conditions when scoreboard checks `keymgr_o` value:
+ - whether secret2 partition is locked
+ - whether `lc_seed_hw_rd_en_i` is On
+ '''
+ }
+ {
+ name: req_dai_access_after_alert_cg
+ desc: '''Covers if sequence issued various DAI requests after any fatal alert is
+ triggered.'''
+ }
+ {
+ name: issue_checks_after_alert_cg
+ desc: '''Covers if sequence issued various OTP_CTRL's background checks after any fatal alert
+ is triggered.'''
+ }
+ {
+ name: csr_rd_after_alert_cg
+ desc: '''Covers if the following CSRs are being read and the value is checked in scoreboard
+ after any fatal alert is triggered:
+ - unbuffered partitions' digest CSRs
+ - HW partition's digest CSRs
+ - secrets partitions' digest CSRs
+ - direct_access read data CSRs
+ - status CSR
+ - error_code CSR
+ '''
+ }
+ {
+ name: dai_err_code_cg
+ desc: '''Covers all applicable error codes in DAI, and cross each error code with all
+ 7 partitions.'''
+ }
+ {
+ name: lci_err_code_cg
+ desc: '''Covers all applicable error codes in LCI.'''
+ }
+ {
+ name: unbuf_err_code_cg
+ desc: '''This is an array of covergroups to cover all applicable error codes in three
+ unbuffered partitions.'''
+ }
+ {
+ name: buf_err_code_cg
+ desc: '''This is an array of covergroups to cover all applicable error codes in five
+ buffered partitions.'''
+ }
+ {
+ name: unbuf_access_lock_cg_wrap_cg
+ desc: '''This is an array of covergroups to cover lock conditions below in three
+ unbuffered partitions:
+ - the partition is write-locked
+ - the partition is read-locked
+ - the current operation type
+ Then cross the three coverpoints.'''
+ }
+ {
+ name: dai_access_secret2_cg
+ desc: '''Covers whether `lc_creator_seed_sw_rw_en` is On during any DAI accesses.'''
+ }
+ {
+ name: status_csr_cg
+ desc: '''Covers the value of every bit in `status` CSR.'''
+ }
+ // The following covergroups are implemented in `otp_ctrl_cov_if.sv`.
+ {
+ name: lc_esc_en_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether LC program reqeust is in progress
+ - whether DAI interface is busy
+ '''
+ }
+ {
+ name: flash_data_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ {
+ name: flash_addr_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ {
+ name: sram_0_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ {
+ name: sram_1_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ {
+ name: otbn_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ {
+ name: lc_prog_req_condition_cg
+ desc: '''Covers the following conditions when `lc_escalation_en` is On:
+ - whether any key requests is in progress
+ - whether DAI interface is busy
+ - whether lc_esc_en is On
+ '''
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/data/output.txt b/src/fuse_ctrl/data/output.txt
new file mode 100644
index 0000000..49e060d
--- /dev/null
+++ b/src/fuse_ctrl/data/output.txt
@@ -0,0 +1,215 @@
+otp_ctrl.json
+{'MemInitFile': '""', 'NumSramKeyReqSlots': '4', 'OtpByteAddrWidth': '12', 'NumErrorEntries': '9', 'NumDaiWords': '2', 'NumDigestWords': '2', 'NumSwCfgWindowWords': '1024', 'NumPart': '7', 'NumPartUnbuf': '2', 'NumPartBuf': '5', 'VendorTestOffset': '0', 'VendorTestSize': '64', 'ScratchOffset': '0', 'ScratchSize': '56', 'VendorTestDigestOffset': '56', 'VendorTestDigestSize': '8', 'NonSecretFusesOffset': '64', 'NonSecretFusesSize': '3736', 'FmcKeyManifestSvnOffset': '64', 'FmcKeyManifestSvnSize': '4', 'RuntimeSvnOffset': '68', 'RuntimeSvnSize': '16', 'LmsVerifyOffset': '84', 'LmsVerifySize': '4', 'LmsRevocationOffset': '88', 'LmsRevocationSize': '4', 'KeyManifestPkHashMaskOffset': '92', 'KeyManifestPkHashMaskSize': '4', 'OwnerPkHashOffset': '96', 'OwnerPkHashSize': '48', 'IdevidCertAttrOffset': '144', 'IdevidCertAttrSize': '96', 'IdevidManufHsmIdOffset': '240', 'IdevidManufHsmIdSize': '16', 'SocSteppingIdOffset': '256', 'SocSteppingIdSize': '4', 'NonSecretFusesDigestOffset': '3792', 'NonSecretFusesDigestSize': '8', 'Secret0Offset': '3800', 'Secret0Size': '40', 'TestUnlockTokenOffset': '3800', 'TestUnlockTokenSize': '16', 'TestExitTokenOffset': '3816', 'TestExitTokenSize': '16', 'Secret0DigestOffset': '3832', 'Secret0DigestSize': '8', 'Secret1Offset': '3840', 'Secret1Size': '56', 'UdsSeedOffset': '3840', 'UdsSeedSize': '48', 'Secret1DigestOffset': '3888', 'Secret1DigestSize': '8', 'Secret2Offset': '3896', 'Secret2Size': '40', 'FieldEntropyOffset': '3896', 'FieldEntropySize': '32', 'Secret2DigestOffset': '3928', 'Secret2DigestSize': '8', 'Secret3Offset': '3936', 'Secret3Size': '72', 'KeyManifestPkHashOffset': '3936', 'KeyManifestPkHashSize': '48', 'RmaTokenOffset': '3984', 'RmaTokenSize': '16', 'Secret3DigestOffset': '4000', 'Secret3DigestSize': '8', 'LifeCycleOffset': '4008', 'LifeCycleSize': '88', 'LcTransitionCntOffset': '4008', 'LcTransitionCntSize': '48', 'LcStateOffset': '4056', 'LcStateSize': '40'}
+Register: INTERRUPT_STATE Address: 0x0
+Next Address coming up: 0x4
+Register: INTERRUPT_ENABLE Address: 0x4
+Next Address coming up: 0x8
+Register: INTERRUPT_TEST Address: 0x8
+Next Address coming up: 0xC
+Register: ALERT_TEST Address: 0xC
+Next Address coming up: 0x10
+Number of registers is 21
+core
+Register: STATUS Address: 0x10
+Reg Name: STATUS Address: 0x10
+Next Address coming up: 0x14
+In decode_addrmap, calling decode_multireg. Addr = 0x14
+DEBUG: MULTIREG
+Address offset = 14
+Register: ERR_CODE_0 Address: 0x14
+Reg Name: ERR_CODE_0 Address: 0x14
+Register: ERR_CODE_1 Address: 0x18
+Reg Name: ERR_CODE_1 Address: 0x18
+Register: ERR_CODE_2 Address: 0x1C
+Reg Name: ERR_CODE_2 Address: 0x1C
+Register: ERR_CODE_3 Address: 0x20
+Reg Name: ERR_CODE_3 Address: 0x20
+Register: ERR_CODE_4 Address: 0x24
+Reg Name: ERR_CODE_4 Address: 0x24
+Register: ERR_CODE_5 Address: 0x28
+Reg Name: ERR_CODE_5 Address: 0x28
+Register: ERR_CODE_6 Address: 0x2C
+Reg Name: ERR_CODE_6 Address: 0x2C
+Register: ERR_CODE_7 Address: 0x30
+Reg Name: ERR_CODE_7 Address: 0x30
+Register: ERR_CODE_8 Address: 0x34
+Reg Name: ERR_CODE_8 Address: 0x34
+Instance name: ERR_CODE
+Array Stride: None
+Addr Offset: 0x14
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x38
+Register: DIRECT_ACCESS_REGWEN Address: 0x38
+Reg Name: DIRECT_ACCESS_REGWEN Address: 0x38
+Next Address coming up: 0x3C
+Register: DIRECT_ACCESS_CMD Address: 0x3C
+Reg Name: DIRECT_ACCESS_CMD Address: 0x3C
+Next Address coming up: 0x40
+Register: DIRECT_ACCESS_ADDRESS Address: 0x40
+Reg Name: DIRECT_ACCESS_ADDRESS Address: 0x40
+Next Address coming up: 0x44
+In decode_addrmap, calling decode_multireg. Addr = 0x44
+DEBUG: MULTIREG
+Address offset = 44
+Register: DIRECT_ACCESS_WDATA_0 Address: 0x44
+Reg Name: DIRECT_ACCESS_WDATA_0 Address: 0x44
+Register: DIRECT_ACCESS_WDATA_1 Address: 0x48
+Reg Name: DIRECT_ACCESS_WDATA_1 Address: 0x48
+Instance name: DIRECT_ACCESS_WDATA
+Array Stride: None
+Addr Offset: 0x44
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x4C
+In decode_addrmap, calling decode_multireg. Addr = 0x4C
+DEBUG: MULTIREG
+Address offset = 4C
+Register: DIRECT_ACCESS_RDATA_0 Address: 0x4C
+Reg Name: DIRECT_ACCESS_RDATA_0 Address: 0x4C
+Register: DIRECT_ACCESS_RDATA_1 Address: 0x50
+Reg Name: DIRECT_ACCESS_RDATA_1 Address: 0x50
+Instance name: DIRECT_ACCESS_RDATA
+Array Stride: None
+Addr Offset: 0x4C
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x54
+Register: CHECK_TRIGGER_REGWEN Address: 0x54
+Reg Name: CHECK_TRIGGER_REGWEN Address: 0x54
+Next Address coming up: 0x58
+Register: CHECK_TRIGGER Address: 0x58
+Reg Name: CHECK_TRIGGER Address: 0x58
+Next Address coming up: 0x5C
+Register: CHECK_REGWEN Address: 0x5C
+Reg Name: CHECK_REGWEN Address: 0x5C
+Next Address coming up: 0x60
+Register: CHECK_TIMEOUT Address: 0x60
+Reg Name: CHECK_TIMEOUT Address: 0x60
+Next Address coming up: 0x64
+Register: INTEGRITY_CHECK_PERIOD Address: 0x64
+Reg Name: INTEGRITY_CHECK_PERIOD Address: 0x64
+Next Address coming up: 0x68
+Register: CONSISTENCY_CHECK_PERIOD Address: 0x68
+Reg Name: CONSISTENCY_CHECK_PERIOD Address: 0x68
+Next Address coming up: 0x6C
+Register: VENDOR_TEST_READ_LOCK Address: 0x6C
+Reg Name: VENDOR_TEST_READ_LOCK Address: 0x6C
+Next Address coming up: 0x70
+Register: NON_SECRET_FUSES_READ_LOCK Address: 0x70
+Reg Name: NON_SECRET_FUSES_READ_LOCK Address: 0x70
+Next Address coming up: 0x74
+In decode_addrmap, calling decode_multireg. Addr = 0x74
+DEBUG: MULTIREG
+Address offset = 74
+Register: VENDOR_TEST_DIGEST_0 Address: 0x74
+Reg Name: VENDOR_TEST_DIGEST_0 Address: 0x74
+Register: VENDOR_TEST_DIGEST_1 Address: 0x78
+Reg Name: VENDOR_TEST_DIGEST_1 Address: 0x78
+Instance name: VENDOR_TEST_DIGEST
+Array Stride: None
+Addr Offset: 0x74
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x7C
+In decode_addrmap, calling decode_multireg. Addr = 0x7C
+DEBUG: MULTIREG
+Address offset = 7C
+Register: NON_SECRET_FUSES_DIGEST_0 Address: 0x7C
+Reg Name: NON_SECRET_FUSES_DIGEST_0 Address: 0x7C
+Register: NON_SECRET_FUSES_DIGEST_1 Address: 0x80
+Reg Name: NON_SECRET_FUSES_DIGEST_1 Address: 0x80
+Instance name: NON_SECRET_FUSES_DIGEST
+Array Stride: None
+Addr Offset: 0x7C
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x84
+In decode_addrmap, calling decode_multireg. Addr = 0x84
+DEBUG: MULTIREG
+Address offset = 84
+Register: SECRET0_DIGEST_0 Address: 0x84
+Reg Name: SECRET0_DIGEST_0 Address: 0x84
+Register: SECRET0_DIGEST_1 Address: 0x88
+Reg Name: SECRET0_DIGEST_1 Address: 0x88
+Instance name: SECRET0_DIGEST
+Array Stride: None
+Addr Offset: 0x84
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x8C
+In decode_addrmap, calling decode_multireg. Addr = 0x8C
+DEBUG: MULTIREG
+Address offset = 8C
+Register: SECRET1_DIGEST_0 Address: 0x8C
+Reg Name: SECRET1_DIGEST_0 Address: 0x8C
+Register: SECRET1_DIGEST_1 Address: 0x90
+Reg Name: SECRET1_DIGEST_1 Address: 0x90
+Instance name: SECRET1_DIGEST
+Array Stride: None
+Addr Offset: 0x8C
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x94
+In decode_addrmap, calling decode_multireg. Addr = 0x94
+DEBUG: MULTIREG
+Address offset = 94
+Register: SECRET2_DIGEST_0 Address: 0x94
+Reg Name: SECRET2_DIGEST_0 Address: 0x94
+Register: SECRET2_DIGEST_1 Address: 0x98
+Reg Name: SECRET2_DIGEST_1 Address: 0x98
+Instance name: SECRET2_DIGEST
+Array Stride: None
+Addr Offset: 0x94
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0x9C
+In decode_addrmap, calling decode_multireg. Addr = 0x9C
+DEBUG: MULTIREG
+Address offset = 9C
+Register: SECRET3_DIGEST_0 Address: 0x9C
+Reg Name: SECRET3_DIGEST_0 Address: 0x9C
+Register: SECRET3_DIGEST_1 Address: 0xA0
+Reg Name: SECRET3_DIGEST_1 Address: 0xA0
+Instance name: SECRET3_DIGEST
+Array Stride: None
+Addr Offset: 0x9C
+Is Array: False
+Num Array Elements: 1
+False
+Next Address coming up: 0xA4
+Number of registers is 8
+prim
+Register: CSR0 Address: 0xA4
+Reg Name: CSR0 Address: 0xA4
+Next Address coming up: 0xA8
+Register: CSR1 Address: 0xA8
+Reg Name: CSR1 Address: 0xA8
+Next Address coming up: 0xAC
+Register: CSR2 Address: 0xAC
+Reg Name: CSR2 Address: 0xAC
+Next Address coming up: 0xB0
+Register: CSR3 Address: 0xB0
+Reg Name: CSR3 Address: 0xB0
+Next Address coming up: 0xB4
+Register: CSR4 Address: 0xB4
+Reg Name: CSR4 Address: 0xB4
+Next Address coming up: 0xB8
+Register: CSR5 Address: 0xB8
+Reg Name: CSR5 Address: 0xB8
+Next Address coming up: 0xBC
+Register: CSR6 Address: 0xBC
+Reg Name: CSR6 Address: 0xBC
+Next Address coming up: 0xC0
+Register: CSR7 Address: 0xC0
+Reg Name: CSR7 Address: 0xC0
+Next Address coming up: 0xC4
+Compilation or elaboration error: Elaborate aborted due to previous errors
diff --git a/src/fuse_ctrl/doc/otp_ctrl_digests.md b/src/fuse_ctrl/doc/otp_ctrl_digests.md
new file mode 100755
index 0000000..3ba3ba8
--- /dev/null
+++ b/src/fuse_ctrl/doc/otp_ctrl_digests.md
@@ -0,0 +1,12 @@
+
+
+| Digest Name | Affected Partition | Calculated by HW |
+|:---------------------------------------------------------:|:---------------------:|:------------------:|
+| [VENDOR_TEST_DIGEST](#Reg_vendor_test_digest_0) | VENDOR_TEST | no |
+| [NON_SECRET_FUSES_DIGEST](#Reg_non_secret_fuses_digest_0) | NON_SECRET_FUSES | no |
+| [SECRET0_DIGEST](#Reg_secret0_digest_0) | SECRET0 | yes |
+| [SECRET1_DIGEST](#Reg_secret1_digest_0) | SECRET1 | yes |
+| [SECRET2_DIGEST](#Reg_secret2_digest_0) | SECRET2 | yes |
diff --git a/src/fuse_ctrl/doc/otp_ctrl_mmap.md b/src/fuse_ctrl/doc/otp_ctrl_mmap.md
new file mode 100755
index 0000000..6ec2c0f
--- /dev/null
+++ b/src/fuse_ctrl/doc/otp_ctrl_mmap.md
@@ -0,0 +1,27 @@
+
+
+| Index | Partition | Size [B] | Access Granule | Item | Byte Address | Size [B] |
+|:-------:|:----------------:|:----------:|:----------------:|:---------------------------------------------------------:|:--------------:|:----------:|
+| 0 | VENDOR_TEST | 64 | 32bit | SCRATCH | 0x000 | 56 |
+| | | | 64bit | [VENDOR_TEST_DIGEST](#Reg_vendor_test_digest_0) | 0x038 | 8 |
+| 1 | NON_SECRET_FUSES | 3792 | 32bit | FMC_KEY_MANIFEST_SVN | 0x040 | 4 |
+| | | | 32bit | RUNTIME_SVN | 0x044 | 16 |
+| | | | 32bit | LMS_VERIFY | 0x054 | 4 |
+| | | | 32bit | LMS_REVOCATION | 0x058 | 4 |
+| | | | 32bit | KEY_MANIFEST_PK_HASH_MASK | 0x05C | 4 |
+| | | | 32bit | OWNER_PK_HASH | 0x060 | 48 |
+| | | | 32bit | IDEVID_CERT_ATTR | 0x090 | 96 |
+| | | | 32bit | IDEVID_MANUF_HSM_ID | 0x0F0 | 16 |
+| | | | 32bit | SOC_STEPPING_ID | 0x100 | 4 |
+| | | | 64bit | [NON_SECRET_FUSES_DIGEST](#Reg_non_secret_fuses_digest_0) | 0xF08 | 8 |
+| 2 | SECRET0 | 56 | 64bit | UDS_SEED | 0xF10 | 48 |
+| | | | 64bit | [SECRET0_DIGEST](#Reg_secret0_digest_0) | 0xF40 | 8 |
+| 3 | SECRET1 | 40 | 64bit | FIELD_ENTROPY | 0xF48 | 32 |
+| | | | 64bit | [SECRET1_DIGEST](#Reg_secret1_digest_0) | 0xF68 | 8 |
+| 4 | SECRET2 | 56 | 64bit | KEY_MANIFEST_PK_HASH | 0xF70 | 48 |
+| | | | 64bit | [SECRET2_DIGEST](#Reg_secret2_digest_0) | 0xFA0 | 8 |
+| 5 | LIFE_CYCLE | 88 | 32bit | LC_TRANSITION_CNT | 0xFA8 | 48 |
+| | | | 32bit | LC_STATE | 0xFD8 | 40 |
diff --git a/src/fuse_ctrl/doc/otp_ctrl_partitions.md b/src/fuse_ctrl/doc/otp_ctrl_partitions.md
new file mode 100755
index 0000000..f869834
--- /dev/null
+++ b/src/fuse_ctrl/doc/otp_ctrl_partitions.md
@@ -0,0 +1,31 @@
+
+
+| Partition | Secret | Buffered | Integrity | WR Lockable | RD Lockable | Description |
+|:----------------:|:--------:|:----------:|:-----------:|:-------------:|:-------------:|:--------------------------------------------------------------------|
+| VENDOR_TEST | no | no | no | yes (Digest) | yes (CSR) | Vendor test partition. |
+| | | | | | | This is reserved for manufacturing smoke checks. The OTP wrapper |
+| | | | | | | control logic inside prim_otp is allowed to read/write to this |
+| | | | | | | region. ECC uncorrectable errors seen on the functional prim_otp |
+| | | | | | | interface will not lead to an alert for this partition. |
+| | | | | | | Instead, such errors will be reported as correctable ECC errors. |
+| NON_SECRET_FUSES | no | no | yes | yes (Digest) | yes (CSR) | Non Secret Fuses partition. |
+| | | | | | | This contains data such IDEVID, public key hash mask, owner |
+| | | | | | | key hash, SoC Stepping ID etc. |
+| SECRET0 | yes | yes | yes | yes (Digest) | yes (Digest) | Secret partition 0. |
+| | | | | | | This contains Obfuscated UDS seed. |
+| SECRET1 | yes | yes | yes | yes (Digest) | yes (Digest) | Secret partition 1. |
+| | | | | | | This contains obfuscated field entropy. |
+| SECRET2 | yes | yes | yes | yes (Digest) | yes (Digest) | Secret partition 2. |
+| | | | | | | This contains public key hash. |
+| LIFE_CYCLE | no | yes | yes | no | no | Lifecycle partition. |
+| | | | | | | This contains lifecycle transition count and state. This partition |
+| | | | | | | cannot be locked since the life cycle state needs to advance to RMA |
+| | | | | | | in-field. Note that while this partition is not marked secret, it |
+| | | | | | | is not readable nor writeable via the DAI. Only the LC controller |
+| | | | | | | can access this partition, and even via the LC controller it is not |
+| | | | | | | possible to read the raw manufacturing life cycle state in encoded |
+| | | | | | | form, since that encoding is considered a netlist secret. The LC |
+| | | | | | | controller only exposes a decoded version of this state. |
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cov.core b/src/fuse_ctrl/dv/cov/otp_ctrl_cov.core
new file mode 100755
index 0000000..361da46
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cov.core
@@ -0,0 +1,24 @@
+CAPI=2:
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+name: "lowrisc:dv:otp_ctrl_cov"
+description: "OTP_CTRL functional coverage and bind files"
+filesets:
+ files_rtl:
+ depend:
+ - lowrisc:ip:otp_ctrl
+
+ files_dv:
+ depend:
+ - lowrisc:dv:dv_utils
+ files:
+ - otp_ctrl_cov_if.sv
+ - otp_ctrl_cov_bind.sv
+ file_type: systemVerilogSource
+
+targets:
+ default:
+ filesets:
+ - files_rtl
+ - files_dv
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cov_bind.sv b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_bind.sv
new file mode 100755
index 0000000..fa69309
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_bind.sv
@@ -0,0 +1,81 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Binds OTP_CTRL functional coverage interaface to the top level OTP_CTRL module.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+`define PART_MUBI_COV(__part_name, __index) \
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) ``__part_name``_read_lock_mubi_cov_if ( \
+ .rst_ni (rst_ni), \
+ .mubi (part_access[``__index``].read_lock) \
+ ); \
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) ``__part_name``_write_lock_mubi_cov_if ( \
+ .rst_ni (rst_ni), \
+ .mubi (part_access[``__index``].write_lock) \
+ );
+
+`define DAI_MUBI_COV(__part_name, __index) \
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) dai_``__part_name``_read_lock_mubi_cov_if ( \
+ .rst_ni (rst_ni), \
+ .mubi (part_access_dai[``__index``].read_lock) \
+ ); \
+ bind otp_ctrl cip_mubi_cov_if #(.Width(8)) dai_``__part_name``_write_lock_mubi_cov_if ( \
+ .rst_ni (rst_ni), \
+ .mubi (part_access_dai[``__index``].write_lock) \
+ );
+
+module otp_ctrl_cov_bind;
+ import otp_ctrl_part_pkg::*;
+
+ bind otp_ctrl otp_ctrl_cov_if u_otp_ctrl_cov_if (
+ .pwr_otp_o (pwr_otp_o),
+ .lc_otp_program_i (lc_otp_program_i),
+ .lc_escalate_en_i (lc_escalate_en_i),
+ .flash_otp_key_i (flash_otp_key_i),
+ .sram_otp_key_i (sram_otp_key_i),
+ .otbn_otp_key_i (otbn_otp_key_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_creator_seed_sw_rw_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_creator_seed_sw_rw_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_seed_hw_rd_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_seed_hw_rd_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_dft_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_dft_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_escalate_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_escalate_en_i)
+ );
+
+ bind otp_ctrl cip_lc_tx_cov_if u_lc_check_byp_en_cov_if (
+ .rst_ni (rst_ni),
+ .val (lc_check_byp_en_i)
+ );
+
+ // Mubi internal coverage for buffered and unbuffered partitions.
+ `PART_MUBI_COV(vendor_test, otp_ctrl_part_pkg::VendorTestIdx)
+ `PART_MUBI_COV(non_secret_fuses, otp_ctrl_part_pkg::NonSecretFusesIdx)
+ `PART_MUBI_COV(secret0, otp_ctrl_part_pkg::Secret0Idx)
+ `PART_MUBI_COV(secret1, otp_ctrl_part_pkg::Secret1Idx)
+
+ // Mubi internal coverage for DAI interface access
+ `DAI_MUBI_COV(vendor_test, otp_ctrl_part_pkg::VendorTestIdx)
+ `DAI_MUBI_COV(non_secret_fuses, otp_ctrl_part_pkg::NonSecretFusesIdx)
+ `DAI_MUBI_COV(secret0, otp_ctrl_part_pkg::Secret0Idx)
+ `DAI_MUBI_COV(secret1, otp_ctrl_part_pkg::Secret1Idx)
+
+`undef PART_MUBI_COV
+`undef DAI_MUBI_COV
+endmodule
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cov_fsm_unr_excl.el b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_fsm_unr_excl.el
new file mode 100755
index 0000000..1c3412b
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_fsm_unr_excl.el
@@ -0,0 +1,199 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// The current UNR flow marks some transition to reset states as unreachable.
+// This file manually removed the reset transition states.
+//==================================================
+// This file contains the Excluded objects
+// Generated By User: chencindy
+// Format Version: 2
+// Date: Fri Jan 6 11:14:02 2023
+// ExclMode: default
+//==================================================
+CHECKSUM: "2063559012 2582220255"
+INSTANCE: tb.dut.gen_partitions[3].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+Transition IntegDigSt->IntegDigFinSt "1890->1765"
+Fsm state_q "441128463"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+State InitDescrWaitSt "2472"
+Fsm state_q "441128463"
+State IntegScrSt "3418"
+Fsm state_q "441128463"
+State IntegScrWaitSt "2207"
+Fsm state_q "441128463"
+State InitDescrSt "3204"
+Fsm error_q "2410907799"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2410907799"
+Transition CheckFailError->FsmStateError "6->7"
+CHECKSUM: "2063559012 2582220255"
+INSTANCE: tb.dut.gen_partitions[4].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm state_q "441128463"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+State IntegDigPadSt "855"
+Fsm error_q "2410907799"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2410907799"
+Transition CheckFailError->FsmStateError "6->7"
+CHECKSUM: "2063559012 2582220255"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm state_q "441128463"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+State IntegDigPadSt "855"
+Fsm error_q "2410907799"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2410907799"
+Transition CheckFailError->FsmStateError "6->7"
+CHECKSUM: "2063559012 2582220255"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm state_q "441128463"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+State IntegDigPadSt "855"
+Fsm error_q "2410907799"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+Transition CheckFailError->FsmStateError "6->7"
+CHECKSUM: "2063559012 2582220255"
+INSTANCE: tb.dut.gen_partitions[7].gen_lifecycle.u_part_buf
+Fsm state_q "441128463"
+Transition IdleSt->IntegDigClrSt "1357->2625"
+Fsm state_q "441128463"
+State InitDescrWaitSt "2472"
+Fsm state_q "441128463"
+State IntegDigFinSt "1765"
+Fsm state_q "441128463"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+State IntegDigSt "1890"
+Fsm state_q "441128463"
+State IntegDigWaitSt "2290"
+Fsm state_q "441128463"
+State IntegScrSt "3418"
+Fsm state_q "441128463"
+State IntegScrWaitSt "2207"
+Fsm state_q "441128463"
+State InitDescrSt "3204"
+Fsm error_q "2410907799"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2410907799"
+Transition CheckFailError->FsmStateError "6->7"
+CHECKSUM: "2940612991 27342893"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf
+Fsm error_q "2210720134"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+Transition MacroEccCorrError->AccessError "2->5"
+Fsm error_q "2210720134"
+Transition AccessError->CheckFailError "5->6"
+CHECKSUM: "2940612991 27342893"
+INSTANCE: tb.dut.gen_partitions[1].gen_unbuffered.u_part_unbuf
+Fsm error_q "2210720134"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+Transition MacroEccCorrError->AccessError "2->5"
+Fsm error_q "2210720134"
+Transition AccessError->CheckFailError "5->6"
+CHECKSUM: "2940612991 27342893"
+INSTANCE: tb.dut.gen_partitions[2].gen_unbuffered.u_part_unbuf
+Fsm error_q "2210720134"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+Transition MacroEccCorrError->AccessError "2->5"
+Fsm error_q "2210720134"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+Transition AccessError->CheckFailError "5->6"
+CHECKSUM: "4205406832 4258846959"
+INSTANCE: tb.dut.u_otp_ctrl_dai
+Fsm error_q "1085514286"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "1085514286"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "1085514286"
+Transition AccessError->MacroEccCorrError "5->2"
+CHECKSUM: "761735614 2379312231"
+INSTANCE: tb.dut.u_otp_ctrl_kdi
+Fsm state_q "2979668442"
+Transition DigWaitSt->FinishSt "913->760"
+Fsm state_q "2979668442"
+Transition DigWaitSt->DigLoadSt "913->183"
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cov_if.sv b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_if.sv
new file mode 100755
index 0000000..106178b
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_if.sv
@@ -0,0 +1,113 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Implements functional coverage for OTP_CTRL
+
+interface otp_ctrl_cov_if
+ import otp_ctrl_reg_pkg::*;
+ (
+ input pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o,
+ input otp_ctrl_pkg::lc_otp_program_req_t lc_otp_program_i,
+ input bit [3:0] lc_escalate_en_i,
+ input otp_ctrl_pkg::flash_otp_key_req_t flash_otp_key_i,
+ input otp_ctrl_pkg::sram_otp_key_req_t [NumSramKeyReqSlots-1:0] sram_otp_key_i,
+ input otp_ctrl_pkg::otbn_otp_key_req_t otbn_otp_key_i
+ );
+
+ import uvm_pkg::*;
+ import dv_utils_pkg::*;
+ `include "dv_fcov_macros.svh"
+
+ covergroup lc_esc_en_condition_cg @(lc_escalate_en_i == lc_ctrl_pkg::On);
+ lc_esc_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ lc_esc_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ lc_esc_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ lc_esc_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ lc_esc_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ lc_esc_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ lc_esc_during_lc_otp_prog_req: coverpoint lc_otp_program_i.req;
+ endgroup
+
+ covergroup flash_data_req_condition_cg @(flash_otp_key_i.data_req);
+ flash_data_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ flash_data_req_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ flash_data_req_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ flash_data_req_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ flash_data_req_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ flash_data_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ covergroup flash_addr_req_condition_cg @(flash_otp_key_i.addr_req);
+ flash_addr_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ flash_addr_req_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ flash_addr_req_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ flash_addr_req_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ flash_addr_req_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ flash_addr_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ covergroup sram_0_req_condition_cg @(sram_otp_key_i[0].req);
+ sram_0_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ sram_0_req_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ sram_0_req_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ sram_0_req_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ sram_0_req_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ sram_0_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ covergroup sram_1_req_condition_cg @(sram_otp_key_i[1].req);
+ sram_1_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ sram_1_req_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ sram_1_req_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ sram_1_req_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ sram_1_req_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ sram_1_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ covergroup otbn_req_condition_cg @(otbn_otp_key_i.req);
+ otbn_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ otbn_req_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ otbn_req_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ otbn_req_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ otbn_req_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ otbn_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ covergroup lc_prog_req_condition_cg @(lc_otp_program_i.req);
+ lc_prog_req_during_lc_esc: coverpoint lc_escalate_en_i {
+ bins lc_esc_on = {lc_ctrl_pkg::On};
+ bins lc_esc_off = {[0 : lc_ctrl_pkg::On-1], [lc_ctrl_pkg::On+1 : '1]};
+ }
+ lc_prog_req_during_flash_addr_req: coverpoint flash_otp_key_i.addr_req;
+ lc_prog_req_during_flash_data_req: coverpoint flash_otp_key_i.data_req;
+ lc_prog_req_during_sram_0_req: coverpoint sram_otp_key_i[0].req;
+ lc_prog_req_during_sram_1_req: coverpoint sram_otp_key_i[1].req;
+ lc_prog_req_during_otbn_req: coverpoint otbn_otp_key_i.req;
+ lc_prog_req_during_otp_idle: coverpoint pwr_otp_o.otp_idle;
+ endgroup
+
+ `DV_FCOV_INSTANTIATE_CG(lc_esc_en_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(flash_data_req_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(flash_addr_req_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(sram_0_req_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(sram_1_req_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(otbn_req_condition_cg)
+ `DV_FCOV_INSTANTIATE_CG(lc_prog_req_condition_cg)
+
+endinterface
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cov_unr_excl.el b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_unr_excl.el
new file mode 100755
index 0000000..1119db5
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cov_unr_excl.el
@@ -0,0 +1,6102 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Generated UNR file from Synopsys UNR tool with security modules being black-boxed.
+//==================================================
+// This file contains the Excluded objects
+// Generated By User: miguelosorio
+// Format Version: 2
+// Date: Fri Feb 23 21:09:38 2024
+// ExclMode: default
+//==================================================
+CHECKSUM: "2868806991 3096942133"
+INSTANCE: tb.dut.gen_alert_tx[4].u_prim_alert_sender
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 alert_ack_o "logic alert_ack_o"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 alert_ack_o "logic alert_ack_o"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 alert_state_o "logic alert_state_o"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 alert_state_o "logic alert_state_o"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf.gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[1].gen_unbuffered.u_part_unbuf.gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[2].gen_unbuffered.u_part_unbuf.gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[3].gen_unbuffered.u_part_unbuf.gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[4].gen_unbuffered.u_part_unbuf.gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[4].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[2].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[3].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[5].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[6].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[7].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[8].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[2].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[3].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[4].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[2].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[3].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[4].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[5].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[6].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[7].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[8].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[9].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[10].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[2].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[3].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[4].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[5].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[6].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[7].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[8].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "698853052 3336016746"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1554177250" "state_q" (1) "state_q ResetSt ,1,0,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1554177250" "state_q" (8) "state_q IdleSt ,-,-,1,default,-,-,-,-,-,-,-,-"
+CHECKSUM: "189358556 1401458059"
+INSTANCE: tb.dut
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "1264131593" "tlul_req" (1) "tlul_req 1,0"
+CHECKSUM: "1746381268 3161287359"
+INSTANCE: tb.dut.u_reg_core.u_socket
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "3202860295" "(!rst_ni)" (2) "(!rst_ni) 0,1,0,-"
+CHECKSUM: "1817939962 2852341788"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_reqfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Block 12 "398307645" "wptr_o <= (wptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+ANNOTATION: "VC_COV_UNR"
+Block 21 "2517571270" "rptr_o <= (rptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+CHECKSUM: "1817939962 2852341788"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_sramreqfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Block 12 "398307645" "wptr_o <= (wptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+ANNOTATION: "VC_COV_UNR"
+Block 21 "2517571270" "rptr_o <= (rptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+CHECKSUM: "1817939962 2852341788"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_rspfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Block 12 "398307645" "wptr_o <= (wptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+ANNOTATION: "VC_COV_UNR"
+Block 21 "2517571270" "rptr_o <= (rptr_o + {{(Width - 1) {1'b0}}, 1'b1});"
+CHECKSUM: "698853052 1537087436"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic
+ANNOTATION: "VC_COV_UNR"
+Block 24 "3494210324" ";"
+CHECKSUM: "3727300757 3190968676"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 22 "662519215" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 23 "617613755" "state_d = InitDescrWaitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 25 "2942482414" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 26 "3475289755" "state_d = InitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 68 "746922678" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 69 "369318088" "state_d = IntegScrWaitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 71 "1545788457" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 72 "2540127236" "state_d = IntegDigSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 78 "4176855572" "state_d = IntegDigPadSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 86 "1288945484" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 87 "984470440" "state_d = IntegDigFinSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3727300757 328877407"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 22 "662519215" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 23 "617613755" "state_d = InitDescrWaitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 25 "2942482414" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 26 "3475289755" "state_d = InitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 68 "746922678" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 69 "369318088" "state_d = IntegScrWaitSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 71 "1545788457" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 72 "2540127236" "state_d = IntegDigSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 77 "3141955456" "scrmbl_cmd_o = Digest;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3727300757 4034042967"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 78 "4176855572" "state_d = IntegDigPadSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 86 "1288945484" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 87 "984470440" "state_d = IntegDigFinSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3727300757 2385925532"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 78 "4176855572" "state_d = IntegDigPadSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 86 "1288945484" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 87 "984470440" "state_d = IntegDigFinSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3727300757 2380508828"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 78 "4176855572" "state_d = IntegDigPadSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 86 "1288945484" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 87 "984470440" "state_d = IntegDigFinSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3727300757 3973220603"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Block 22 "662519215" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 25 "2942482414" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 68 "746922678" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 71 "1545788457" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 74 "736744825" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 86 "1288945484" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 89 "967932616" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 92 "3253244488" "scrmbl_mtx_req_o = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 105 "1192338528" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 106 "2515805717" "error_d = CheckFailError;"
+CHECKSUM: "3882079776 1965827338"
+INSTANCE: tb.dut.u_otp_ctrl_scrmbl
+ANNOTATION: "VC_COV_UNR"
+Block 28 "3494210324" ";"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field3
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field4
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field5
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field6
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field7
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field8
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field2
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field3
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field4
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field5
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field0
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field1
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field2
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "4255502330 223073768"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field3
+ANNOTATION: "VC_COV_UNR"
+Block 4 "1824183207" "q <= wr_data;"
+CHECKSUM: "3162909804 919553166"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Block 17 "814628507" "error_d = MacroEccCorrError;"
+ANNOTATION: "VC_COV_UNR"
+Block 19 "2376363309" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 32 "3415759745" "error_d = MacroEccCorrError;"
+ANNOTATION: "VC_COV_UNR"
+Block 34 "3854455635" "state_d = ErrorSt;"
+CHECKSUM: "1335069400 3084451679"
+INSTANCE: tb.dut.u_tlul_adapter_sram
+ANNOTATION: "VC_COV_UNR"
+Block 20 "3478134645" "d_valid = 1'b1;"
+CHECKSUM: "189358556 478664514"
+INSTANCE: tb.dut
+ANNOTATION: "VC_COV_UNR"
+Block 15 "1636116421" "tlul_oob_err_d = 1'b1;"
+ANNOTATION: "VC_COV_UNR"
+Block 32 "3434355351" "part_access_pre[k] = {2 {MuBi8True}};"
+CHECKSUM: "903559179 545489449"
+INSTANCE: tb.dut.u_otp_ctrl_dai
+ANNOTATION: "VC_COV_UNR"
+Block 16 "175586303" "state_d = ErrorSt;"
+ANNOTATION: "VC_COV_UNR"
+Block 68 "1681789786" "state_d = ErrorSt;"
+CHECKSUM: "1158524476 3747170265"
+INSTANCE: tb.dut.u_otp_ctrl_kdi
+ANNOTATION: "VC_COV_UNR"
+Block 88 "3038555774" "state_d = DigLoadSt;"
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrSt "3204"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrWaitSt "2472"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrSt "3418"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrWaitSt "2207"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrSt "3204"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrWaitSt "2472"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrSt "3418"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrWaitSt "2207"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigSt->IntegDigFinSt "1890->1765"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[9].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[10].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[1].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[2].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[3].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[4].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[5].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[6].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[7].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[8].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[9].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "1436819047 249500095"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf.u_otp_ctrl_ecc_reg.gen_ecc_dec[10].u_prim_secded_inv_72_64_dec
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [0] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [1] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [2] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [3] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [4] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [5] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [6] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 syndrome_o [7] "logic syndrome_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [0] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 err_o [1] "logic err_o[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 err_o [1] "logic err_o[1:0]"
+CHECKSUM: "189358556 549301488"
+INSTANCE: tb.dut
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_ast_pwr_seq_o.pwr_seq [0] "logic otp_ast_pwr_seq_o.pwr_seq[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_ast_pwr_seq_o.pwr_seq [0] "logic otp_ast_pwr_seq_o.pwr_seq[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_ast_pwr_seq_o.pwr_seq [1] "logic otp_ast_pwr_seq_o.pwr_seq[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_ast_pwr_seq_o.pwr_seq [1] "logic otp_ast_pwr_seq_o.pwr_seq[1:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [0] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [0] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [1] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [1] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [2] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [2] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [3] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [3] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [4] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [4] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [5] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [5] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [6] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [6] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [7] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [7] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [8] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [8] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [9] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [9] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [10] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [10] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [11] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [11] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [12] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [12] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [13] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [13] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [14] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [14] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [15] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [15] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [16] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [16] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [17] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [17] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [18] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [18] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [19] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [19] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [20] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [20] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [21] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [21] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [22] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [22] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [23] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [23] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [24] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [24] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [25] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [25] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [26] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [26] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [27] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [27] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [28] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [28] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [29] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [29] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [30] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [30] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 lc_otp_vendor_test_o.status [31] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 lc_otp_vendor_test_o.status [31] "logic lc_otp_vendor_test_o.status[31:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed_valid "logic otp_keymgr_key_o.owner_seed_valid"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed_valid "logic otp_keymgr_key_o.owner_seed_valid"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [0] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [0] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [1] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [1] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [2] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [2] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [3] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [3] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [4] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [4] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [5] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [5] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [6] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [6] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [7] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [7] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [8] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [8] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [9] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [9] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [10] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [10] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [11] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [11] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [12] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [12] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [13] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [13] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [14] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [14] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [15] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [15] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [16] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [16] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [17] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [17] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [18] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [18] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [19] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [19] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [20] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [20] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [21] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [21] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [22] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [22] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [23] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [23] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [24] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [24] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [25] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [25] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [26] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [26] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [27] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [27] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [28] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [28] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [29] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [29] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [30] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [30] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [31] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [31] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [32] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [32] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [33] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [33] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [34] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [34] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [35] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [35] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [36] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [36] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [37] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [37] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [38] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [38] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [39] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [39] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [40] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [40] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [41] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [41] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [42] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [42] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [43] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [43] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [44] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [44] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [45] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [45] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [46] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [46] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [47] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [47] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [48] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [48] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [49] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [49] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [50] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [50] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [51] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [51] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [52] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [52] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [53] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [53] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [54] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [54] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [55] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [55] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [56] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [56] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [57] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [57] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [58] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [58] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [59] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [59] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [60] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [60] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [61] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [61] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [62] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [62] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [63] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [63] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [64] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [64] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [65] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [65] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [66] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [66] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [67] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [67] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [68] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [68] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [69] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [69] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [70] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [70] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [71] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [71] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [72] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [72] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [73] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [73] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [74] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [74] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [75] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [75] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [76] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [76] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [77] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [77] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [78] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [78] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [79] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [79] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [80] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [80] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [81] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [81] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [82] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [82] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [83] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [83] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [84] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [84] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [85] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [85] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [86] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [86] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [87] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [87] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [88] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [88] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [89] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [89] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [90] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [90] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [91] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [91] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [92] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [92] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [93] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [93] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [94] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [94] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [95] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [95] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [96] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [96] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [97] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [97] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [98] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [98] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [99] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [99] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [100] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [100] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [101] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [101] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [102] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [102] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [103] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [103] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [104] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [104] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [105] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [105] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [106] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [106] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [107] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [107] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [108] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [108] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [109] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [109] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [110] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [110] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [111] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [111] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [112] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [112] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [113] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [113] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [114] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [114] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [115] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [115] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [116] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [116] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [117] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [117] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [118] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [118] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [119] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [119] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [120] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [120] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [121] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [121] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [122] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [122] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [123] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [123] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [124] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [124] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [125] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [125] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [126] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [126] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [127] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [127] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [128] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [128] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [129] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [129] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [130] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [130] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [131] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [131] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [132] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [132] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [133] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [133] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [134] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [134] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [135] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [135] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [136] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [136] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [137] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [137] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [138] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [138] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [139] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [139] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [140] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [140] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [141] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [141] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [142] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [142] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [143] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [143] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [144] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [144] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [145] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [145] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [146] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [146] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [147] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [147] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [148] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [148] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [149] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [149] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [150] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [150] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [151] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [151] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [152] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [152] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [153] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [153] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [154] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [154] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [155] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [155] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [156] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [156] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [157] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [157] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [158] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [158] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [159] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [159] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [160] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [160] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [161] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [161] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [162] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [162] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [163] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [163] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [164] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [164] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [165] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [165] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [166] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [166] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [167] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [167] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [168] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [168] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [169] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [169] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [170] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [170] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [171] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [171] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [172] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [172] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [173] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [173] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [174] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [174] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [175] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [175] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [176] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [176] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [177] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [177] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [178] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [178] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [179] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [179] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [180] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [180] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [181] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [181] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [182] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [182] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [183] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [183] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [184] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [184] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [185] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [185] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [186] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [186] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [187] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [187] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [188] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [188] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [189] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [189] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [190] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [190] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [191] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [191] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [192] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [192] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [193] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [193] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [194] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [194] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [195] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [195] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [196] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [196] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [197] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [197] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [198] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [198] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [199] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [199] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [200] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [200] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [201] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [201] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [202] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [202] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [203] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [203] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [204] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [204] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [205] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [205] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [206] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [206] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [207] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [207] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [208] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [208] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [209] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [209] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [210] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [210] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [211] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [211] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [212] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [212] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [213] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [213] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [214] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [214] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [215] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [215] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [216] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [216] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [217] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [217] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [218] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [218] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [219] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [219] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [220] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [220] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [221] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [221] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [222] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [222] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [223] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [223] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [224] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [224] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [225] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [225] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [226] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [226] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [227] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [227] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [228] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [228] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [229] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [229] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [230] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [230] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [231] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [231] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [232] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [232] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [233] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [233] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [234] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [234] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [235] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [235] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [236] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [236] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [237] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [237] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [238] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [238] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [239] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [239] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [240] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [240] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [241] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [241] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [242] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [242] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [243] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [243] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [244] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [244] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [245] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [245] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [246] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [246] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [247] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [247] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [248] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [248] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [249] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [249] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [250] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [250] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [251] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [251] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [252] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [252] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [253] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [253] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [254] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [254] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.owner_seed [255] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.owner_seed [255] "logic otp_keymgr_key_o.owner_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed_valid "logic otp_keymgr_key_o.creator_seed_valid"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed_valid "logic otp_keymgr_key_o.creator_seed_valid"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [0] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [0] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [1] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [1] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [2] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [2] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [3] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [3] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [4] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [4] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [5] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [5] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [6] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [6] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [7] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [7] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [8] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [8] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [9] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [9] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [10] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [10] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [11] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [11] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [12] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [12] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [13] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [13] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [14] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [14] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [15] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [15] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [16] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [16] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [17] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [17] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [18] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [18] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [19] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [19] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [20] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [20] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [21] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [21] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [22] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [22] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [23] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [23] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [24] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [24] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [25] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [25] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [26] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [26] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [27] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [27] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [28] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [28] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [29] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [29] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [30] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [30] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [31] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [31] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [32] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [32] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [33] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [33] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [34] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [34] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [35] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [35] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [36] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [36] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [37] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [37] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [38] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [38] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [39] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [39] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [40] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [40] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [41] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [41] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [42] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [42] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [43] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [43] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [44] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [44] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [45] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [45] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [46] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [46] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [47] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [47] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [48] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [48] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [49] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [49] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [50] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [50] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [51] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [51] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [52] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [52] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [53] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [53] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [54] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [54] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [55] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [55] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [56] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [56] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [57] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [57] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [58] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [58] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [59] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [59] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [60] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [60] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [61] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [61] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [62] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [62] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [63] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [63] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [64] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [64] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [65] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [65] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [66] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [66] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [67] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [67] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [68] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [68] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [69] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [69] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [70] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [70] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [71] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [71] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [72] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [72] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [73] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [73] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [74] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [74] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [75] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [75] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [76] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [76] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [77] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [77] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [78] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [78] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [79] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [79] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [80] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [80] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [81] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [81] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [82] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [82] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [83] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [83] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [84] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [84] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [85] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [85] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [86] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [86] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [87] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [87] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [88] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [88] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [89] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [89] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [90] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [90] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [91] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [91] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [92] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [92] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [93] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [93] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [94] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [94] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [95] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [95] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [96] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [96] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [97] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [97] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [98] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [98] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [99] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [99] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [100] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [100] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [101] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [101] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [102] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [102] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [103] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [103] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [104] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [104] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [105] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [105] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [106] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [106] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [107] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [107] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [108] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [108] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [109] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [109] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [110] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [110] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [111] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [111] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [112] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [112] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [113] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [113] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [114] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [114] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [115] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [115] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [116] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [116] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [117] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [117] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [118] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [118] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [119] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [119] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [120] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [120] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [121] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [121] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [122] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [122] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [123] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [123] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [124] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [124] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [125] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [125] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [126] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [126] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [127] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [127] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [128] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [128] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [129] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [129] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [130] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [130] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [131] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [131] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [132] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [132] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [133] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [133] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [134] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [134] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [135] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [135] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [136] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [136] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [137] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [137] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [138] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [138] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [139] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [139] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [140] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [140] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [141] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [141] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [142] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [142] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [143] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [143] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [144] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [144] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [145] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [145] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [146] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [146] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [147] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [147] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [148] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [148] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [149] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [149] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [150] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [150] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [151] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [151] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [152] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [152] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [153] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [153] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [154] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [154] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [155] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [155] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [156] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [156] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [157] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [157] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [158] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [158] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [159] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [159] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [160] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [160] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [161] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [161] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [162] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [162] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [163] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [163] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [164] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [164] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [165] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [165] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [166] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [166] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [167] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [167] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [168] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [168] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [169] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [169] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [170] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [170] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [171] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [171] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [172] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [172] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [173] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [173] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [174] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [174] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [175] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [175] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [176] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [176] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [177] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [177] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [178] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [178] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [179] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [179] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [180] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [180] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [181] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [181] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [182] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [182] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [183] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [183] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [184] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [184] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [185] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [185] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [186] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [186] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [187] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [187] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [188] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [188] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [189] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [189] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [190] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [190] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [191] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [191] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [192] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [192] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [193] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [193] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [194] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [194] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [195] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [195] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [196] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [196] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [197] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [197] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [198] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [198] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [199] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [199] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [200] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [200] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [201] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [201] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [202] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [202] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [203] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [203] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [204] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [204] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [205] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [205] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [206] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [206] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [207] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [207] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [208] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [208] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [209] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [209] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [210] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [210] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [211] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [211] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [212] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [212] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [213] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [213] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [214] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [214] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [215] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [215] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [216] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [216] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [217] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [217] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [218] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [218] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [219] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [219] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [220] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [220] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [221] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [221] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [222] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [222] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [223] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [223] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [224] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [224] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [225] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [225] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [226] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [226] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [227] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [227] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [228] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [228] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [229] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [229] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [230] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [230] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [231] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [231] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [232] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [232] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [233] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [233] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [234] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [234] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [235] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [235] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [236] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [236] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [237] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [237] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [238] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [238] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [239] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [239] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [240] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [240] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [241] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [241] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [242] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [242] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [243] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [243] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [244] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [244] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [245] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [245] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [246] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [246] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [247] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [247] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [248] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [248] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [249] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [249] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [250] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [250] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [251] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [251] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [252] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [252] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [253] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [253] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [254] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [254] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 otp_keymgr_key_o.creator_seed [255] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 otp_keymgr_key_o.creator_seed [255] "logic otp_keymgr_key_o.creator_seed[255:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [0] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [0] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [1] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [1] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [2] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [2] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [3] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [3] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [4] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [4] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [5] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [5] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [6] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [6] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 0to1 cio_test_o [7] "logic cio_test_o[7:0]"
+ANNOTATION: "VC_COV_UNR"
+Toggle 1to0 cio_test_o [7] "logic cio_test_o[7:0]"
+CHECKSUM: "1611327958 113940473"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top
+ANNOTATION: "VC_COV_UNR"
+Condition 20 "3585319611" "(reg_we && ((!addrmiss))) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 22 "1026062099" "(addrmiss | wr_err | intg_err) 1 -1" (4 "100")
+CHECKSUM: "698853052 2882888745"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2104830463" "(cmd_i == Init) 1 -1" (1 "0")
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrSt "3204"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State InitDescrWaitSt "2472"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigFinSt "1765"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigSt "1890"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigWaitSt "2290"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrSt "3418"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegScrWaitSt "2207"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IdleSt->IntegDigClrSt "1357->2625"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "3162909804 3458814989"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf
+Fsm state_q "4141872371"
+ANNOTATION: "VC_COV_UNR"
+Transition ResetSt->IdleSt "694->745"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+State MacroEccCorrError "2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+CHECKSUM: "3162909804 3458814989"
+INSTANCE: tb.dut.gen_partitions[1].gen_unbuffered.u_part_unbuf
+Fsm state_q "4141872371"
+ANNOTATION: "VC_COV_UNR"
+Transition ResetSt->IdleSt "694->745"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->CheckFailError "5->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition MacroEccCorrError->AccessError "2->5"
+CHECKSUM: "3162909804 3458814989"
+INSTANCE: tb.dut.gen_partitions[2].gen_unbuffered.u_part_unbuf
+Fsm state_q "4141872371"
+ANNOTATION: "VC_COV_UNR"
+Transition ResetSt->IdleSt "694->745"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->CheckFailError "5->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition MacroEccCorrError->AccessError "2->5"
+CHECKSUM: "3162909804 3458814989"
+INSTANCE: tb.dut.gen_partitions[3].gen_unbuffered.u_part_unbuf
+Fsm state_q "4141872371"
+ANNOTATION: "VC_COV_UNR"
+Transition ResetSt->IdleSt "694->745"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->CheckFailError "5->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition MacroEccCorrError->AccessError "2->5"
+CHECKSUM: "3162909804 3458814989"
+INSTANCE: tb.dut.gen_partitions[4].gen_unbuffered.u_part_unbuf
+Fsm state_q "4141872371"
+ANNOTATION: "VC_COV_UNR"
+Transition ResetSt->IdleSt "694->745"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->CheckFailError "5->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->AccessError "6->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+Fsm error_q "2210720134"
+ANNOTATION: "VC_COV_UNR"
+Transition MacroEccCorrError->AccessError "2->5"
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "3727300757 2582220255"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+State IntegDigPadSt "855"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition CnstyReadWaitSt->CnstyReadSt "2684->107"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition InitWaitSt->InitSt "945->3367"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IdleSt "2625->1357"
+Fsm state_q "441128463"
+ANNOTATION: "VC_COV_UNR"
+Transition IntegDigClrSt->IntegDigSt "2625->1890"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->FsmStateError "6->7"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition CheckFailError->MacroEccCorrError "6->2"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->CheckFailError "7->6"
+Fsm error_q "2410907799"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "903559179 4258846959"
+INSTANCE: tb.dut.u_otp_ctrl_dai
+Fsm error_q "1085514286"
+ANNOTATION: "VC_COV_UNR"
+Transition AccessError->MacroEccCorrError "5->2"
+Fsm error_q "1085514286"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->AccessError "7->5"
+Fsm error_q "1085514286"
+ANNOTATION: "VC_COV_UNR"
+Transition FsmStateError->MacroEccCorrError "7->2"
+CHECKSUM: "1158524476 2379312231"
+INSTANCE: tb.dut.u_otp_ctrl_kdi
+Fsm state_q "2979668442"
+ANNOTATION: "VC_COV_UNR"
+Transition DigWaitSt->DigLoadSt "913->183"
+CHECKSUM: "165375753 304066633"
+INSTANCE: tb.dut.u_otp_ctrl_lfsr_timer
+ANNOTATION: "VC_COV_UNR"
+Condition 15 "1557524712" "(edn_req_o & edn_ack_i) 1 -1" (1 "01")
+CHECKSUM: "189358556 3907569978"
+INSTANCE: tb.dut
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "83486244" "(tlul_part_sel_oh != '0) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "1218027842" "(((|part_tlul_gnt)) | tlul_oob_err_q) 1 -1" (2 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "3291433605" "(((|part_tlul_rvalid)) | tlul_oob_err_q) 1 -1" (2 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "3779635843" "(fatal_bus_integ_error_q | ((|intg_error))) 1 -1" (3 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1876397257" "(part_error[k] == MacroError) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 10 "2334459673" "(otp_rvalid & otp_fifo_valid) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 13 "1319238213" "(reg2hw.direct_access_cmd.digest.qe | reg2hw.direct_access_cmd.wr.qe | reg2hw.direct_access_cmd.rd.qe) 1 -1" (2 "001")
+ANNOTATION: "VC_COV_UNR"
+Condition 13 "1319238213" "(reg2hw.direct_access_cmd.digest.qe | reg2hw.direct_access_cmd.wr.qe | reg2hw.direct_access_cmd.rd.qe) 1 -1" (3 "010")
+ANNOTATION: "VC_COV_UNR"
+Condition 13 "1319238213" "(reg2hw.direct_access_cmd.digest.qe | reg2hw.direct_access_cmd.wr.qe | reg2hw.direct_access_cmd.rd.qe) 1 -1" (4 "100")
+ANNOTATION: "VC_COV_UNR"
+Condition 24 "619555966" "(otp_arb_valid & otp_rsp_fifo_ready) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:k=10:vcs_gen_end:VC_COV_UNR"
+Condition 42 "1479216946" "(({tlul_addr, 2'b0} >= 11'b11110101000) & ({1'b0, {tlul_addr, 2'b0}} < gen_part_sel[10].PartEnd)) 1 -1" (2 "10")
+CHECKSUM: "1746381268 1271541636"
+INSTANCE: tb.dut.u_reg_core.u_socket
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "118253128" "(tl_t_o.a_valid & tl_t_i.a_ready) 1 -1" (1 "01")
+CHECKSUM: "74367784 3785313510"
+INSTANCE: tb.dut.u_reg_core.u_reg_if
+ANNOTATION: "VC_COV_UNR"
+Condition 18 "3340270436" "(addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error) 1 -1" (5 "01000")
+CHECKSUM: "74367784 3785313510"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_reg_if
+ANNOTATION: "VC_COV_UNR"
+Condition 18 "3340270436" "(addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error) 1 -1" (5 "01000")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field3
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field4
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field5
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field6
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field7
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field8
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field2
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field4
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field5
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field2
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3274445021"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field3
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "2397158838" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3858770513"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field3
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "1301967206" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3858770513"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field1
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "1301967206" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "4255502330 3201188367"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field0
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "1807203824" "(wr_en ? wr_data : qs) 1 -1" (2 "1")
+CHECKSUM: "2099741489 1445279304"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field0.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+CHECKSUM: "2099741489 1445279304"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field1.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+CHECKSUM: "2099741489 3636044484"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field2.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "2306794614" "((de ? d : q) & (we ? ((~wd)) : '1)) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "2306794614" "((de ? d : q) & (we ? ((~wd)) : '1)) 1 -1" (3 "11")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "2289961458" "(de ? d : q) 1 -1" (2 "1")
+CHECKSUM: "2099741489 1283100255"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field6.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+CHECKSUM: "2099741489 1077956591"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field0.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+CHECKSUM: "2099741489 4164822555"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field1.wr_en_data_arb
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "505266581" "(we | de) 1 -1" (2 "01")
+CHECKSUM: "1335069400 1628136802"
+INSTANCE: tb.dut.u_tlul_adapter_sram
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "3455933711" "(reqfifo_rdata.op == OpRead) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 7 "3253769203" "(intg_error | rsp_fifo_error | intg_error_q) 1 -1" (2 "001")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3469950311" "(wr_attr_error | wr_vld_error | rd_vld_error | instr_error | tlul_error | intg_error) 1 -1" (7 "100000")
+ANNOTATION: "VC_COV_UNR"
+Condition 19 "709191362" "(req_o & gnt_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 20 "3623514242" "(d_valid & reqfifo_rvalid & rspfifo_rvalid & (reqfifo_rdata.op == OpRead)) 1 -1" (1 "0111")
+ANNOTATION: "VC_COV_UNR"
+Condition 20 "3623514242" "(d_valid & reqfifo_rvalid & rspfifo_rvalid & (reqfifo_rdata.op == OpRead)) 1 -1" (2 "1011")
+ANNOTATION: "VC_COV_UNR"
+Condition 20 "3623514242" "(d_valid & reqfifo_rvalid & rspfifo_rvalid & (reqfifo_rdata.op == OpRead)) 1 -1" (4 "1110")
+ANNOTATION: "VC_COV_UNR"
+Condition 24 "2807788926" "((vld_rd_rsp && reqfifo_rdata.error) ? error_blanking_integ : (vld_rd_rsp ? rspfifo_rdata.data_intg : prim_secded_pkg::SecdedInv3932ZeroEcc)) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 25 "561780173" "(vld_rd_rsp && reqfifo_rdata.error) 1 -1" (3 "11")
+ANNOTATION: "VC_COV_UNR"
+Condition 32 "939039548" "(d_valid && d_error) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 33 "1798941048" "((gnt_i | error_internal) & reqfifo_wready & sramreqfifo_wready) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 35 "2770863641" "(tl_i_int.a_valid & reqfifo_wready & ((~error_internal))) 1 -1" (1 "011")
+ANNOTATION: "VC_COV_UNR"
+Condition 40 "2041272341" "(sram_ack & ((~we_o))) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 41 "721931741" "(rvalid_i & reqfifo_rvalid) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:i=0:vcs_gen_end:VC_COV_UNR"
+Condition 46 "3548937587" "(((|wmask_intg)) & ((|wdata_intg))) 1 -1" (1 "01")
+CHECKSUM: "2974379282 2951929728"
+INSTANCE: tb.dut.u_part_sel_idx
+ANNOTATION: "vcs_gen_start:level=0,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 1 "2750612666" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]) 1 -1" (1 "00")
+CHECKSUM: "2974379282 2951929728"
+INSTANCE: tb.dut.u_otp_ctrl_dai.u_part_sel_idx
+ANNOTATION: "vcs_gen_start:level=0,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 1 "2750612666" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[0].gen_level[0].C1]) 1 -1" (1 "00")
+CHECKSUM: "2032872600 2493710885"
+INSTANCE: tb.dut.u_edn_arb
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 10 "635964333" "(req_i[0] & gen_normal_case.prio_mask_q[0]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 11 "2124571033" "(req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ready_i) 1 -1" (1 "011")
+CHECKSUM: "2032872600 3869070406"
+INSTANCE: tb.dut.u_otp_arb
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 118 "3667925887" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 119 "2125455247" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 119 "2125455247" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 120 "2371949082" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C1]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 121 "4111290463" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 124 "2230658126" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel))) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 125 "1884579875" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 137 "1731868698" "(req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[0].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 142 "1060032545" "(req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 147 "1299459822" "(req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 152 "358663893" "(req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 157 "2252512415" "(req_i[4] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 162 "3730207908" "(req_i[5] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[5].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 167 "2886503019" "(req_i[6] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[6].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=7:vcs_gen_end:VC_COV_UNR"
+Condition 172 "4095238736" "(req_i[7] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[7].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=8:vcs_gen_end:VC_COV_UNR"
+Condition 177 "296455364" "(req_i[8] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[8].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=9:vcs_gen_end:VC_COV_UNR"
+Condition 182 "1237279999" "(req_i[9] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[9].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 187 "565898016" "(req_i[10] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[10].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=11:vcs_gen_end:VC_COV_UNR"
+Condition 192 "2218826282" "(req_i[11] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[11].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 197 "4217824807" "(req_i[12] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[12].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 201 "1343278836" "(req_i[13] & gen_normal_case.prio_mask_q[13]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 201 "1343278836" "(req_i[13] & gen_normal_case.prio_mask_q[13]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 202 "1587320621" "(req_i[13] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 202 "1587320621" "(req_i[13] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ready_i) 1 -1" (2 "101")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 202 "1587320621" "(req_i[13] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 202 "1587320621" "(req_i[13] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ready_i) 1 -1" (4 "111")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 204 "3359315662" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ((~ready_i)))) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 204 "3359315662" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 205 "87484194" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ((~ready_i))) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 205 "87484194" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ((~ready_i))) 1 -1" (3 "11")
+CHECKSUM: "2032872600 835765284"
+INSTANCE: tb.dut.u_scrmbl_mtx
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 10 "1993460578" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 10 "1993460578" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 11 "1567077924" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 12 "3158492049" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[1].gen_level[0].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 13 "96040801" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[1].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 14 "1193252123" "(gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[1].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 15 "445016888" "(gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[1].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 16 "1314162940" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 16 "1314162940" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 17 "2175331913" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] & gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 18 "2134997267" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[1].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[1].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 28 "2070917326" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 28 "2070917326" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 29 "3264610632" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 29 "3264610632" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 30 "1496330476" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C1]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 30 "1496330476" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[2].gen_level[0].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 31 "475390859" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 31 "475390859" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[2].gen_level[0].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 32 "3851361741" "(gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[2].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[2].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 33 "834897871" "(gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[2].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[2].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 34 "827710109" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 34 "827710109" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel))) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 34 "827710109" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 35 "1296065718" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 35 "1296065718" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] & gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 36 "2587069038" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=2,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 45 "1389557192" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[2].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[2].gen_level[1].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 64 "210767427" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 64 "210767427" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 65 "433071849" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 65 "433071849" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 66 "676485814" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C1]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 66 "676485814" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[0].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 67 "2859603461" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 67 "2859603461" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[0].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 68 "499725081" "(gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[0].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 69 "2136469291" "(gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[0].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[0].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 70 "3457930055" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 70 "3457930055" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel))) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 70 "3457930055" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 71 "1202012" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 71 "1202012" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 72 "3948011572" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 73 "2058222911" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 73 "2058222911" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 74 "3215638766" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 74 "3215638766" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 75 "3769836816" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C1]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 75 "3769836816" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[1].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 76 "2034837615" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 76 "2034837615" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 77 "2239186227" "(gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[1].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 78 "2004432906" "(gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[1].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 79 "1357880086" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 79 "1357880086" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel))) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 79 "1357880086" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 80 "3927989974" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 80 "3927989974" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 81 "598777746" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 81 "598777746" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 82 "3219580251" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[2].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 82 "3219580251" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[2].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 83 "26276459" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 84 "1842145640" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[2].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[2].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 85 "147158886" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[2].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 86 "2038251222" "(gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[2].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[2].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 87 "1520563742" "(gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[2].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[2].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 88 "2599996672" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 88 "2599996672" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 89 "193340754" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] & gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 90 "2932823018" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 90 "2932823018" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].C0]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 109 "535495451" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[5].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 109 "535495451" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[5].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 110 "3231051018" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 111 "2023010" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[5].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[5].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 112 "2223050582" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[5].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 113 "1661998521" "(gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[5].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[5].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 114 "328876404" "(gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[5].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[5].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 115 "1323463256" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[5].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 115 "1323463256" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[5].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 116 "2448561063" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[5].Pa] & gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 117 "3273483488" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[5].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[5].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 118 "3667925887" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1])) 1 -1" (1 "00")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 118 "3667925887" "(((~gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) | (((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1])) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 119 "2125455247" "(((~gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0])) & gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 120 "2371949082" "(gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C0] | gen_normal_case.req_tree[gen_normal_case.gen_tree[3].gen_level[6].C1]) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 121 "4111290463" "(gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C1] | gen_normal_case.prio_tree[gen_normal_case.gen_tree[3].gen_level[6].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 122 "2669309532" "(gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel ? gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[6].C1] : gen_normal_case.idx_tree[gen_normal_case.gen_tree[3].gen_level[6].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 123 "1044549472" "(gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel ? gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[6].C1] : gen_normal_case.data_tree[gen_normal_case.gen_tree[3].gen_level[6].C0]) 1 -1" (1 "0")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 124 "2230658126" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel))) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 124 "2230658126" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & ((~gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 125 "1884579875" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 126 "1315088536" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] | gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].C0]) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 136 "2430171309" "(req_i[0] & gen_normal_case.prio_mask_q[0]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 136 "2430171309" "(req_i[0] & gen_normal_case.prio_mask_q[0]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 136 "2430171309" "(req_i[0] & gen_normal_case.prio_mask_q[0]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 137 "1731868698" "(req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[0].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 139 "4029129651" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[0].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[0].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 140 "2870412309" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[0].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 141 "2424159075" "(req_i[1] & gen_normal_case.prio_mask_q[1]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 141 "2424159075" "(req_i[1] & gen_normal_case.prio_mask_q[1]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 141 "2424159075" "(req_i[1] & gen_normal_case.prio_mask_q[1]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 142 "1060032545" "(req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 144 "2044991706" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 144 "2044991706" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] & ((~ready_i)))) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 145 "3094700199" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[1].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 146 "2442198833" "(req_i[2] & gen_normal_case.prio_mask_q[2]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 146 "2442198833" "(req_i[2] & gen_normal_case.prio_mask_q[2]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 146 "2442198833" "(req_i[2] & gen_normal_case.prio_mask_q[2]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 147 "1299459822" "(req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 149 "303405805" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 149 "303405805" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] & ((~ready_i)))) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 150 "3088640414" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[2].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 151 "2436119807" "(req_i[3] & gen_normal_case.prio_mask_q[3]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 151 "2436119807" "(req_i[3] & gen_normal_case.prio_mask_q[3]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 151 "2436119807" "(req_i[3] & gen_normal_case.prio_mask_q[3]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 152 "358663893" "(req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 154 "2614501764" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 154 "2614501764" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] & ((~ready_i)))) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 155 "2876935468" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[3].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 156 "1150101804" "(req_i[4] & gen_normal_case.prio_mask_q[4]) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 156 "1150101804" "(req_i[4] & gen_normal_case.prio_mask_q[4]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 156 "1150101804" "(req_i[4] & gen_normal_case.prio_mask_q[4]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 157 "2252512415" "(req_i[4] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 159 "2077403342" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 159 "2077403342" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] & ((~ready_i)))) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 160 "362208751" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[4].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 164 "4061205415" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[5].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[5].Pa] & ((~ready_i)))) 1 -1" (3 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 186 "1702269588" "(req_i[10] & gen_normal_case.prio_mask_q[10]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 186 "1702269588" "(req_i[10] & gen_normal_case.prio_mask_q[10]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 187 "565898016" "(req_i[10] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[10].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 189 "2771416427" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[10].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[10].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=10:vcs_gen_end:VC_COV_UNR"
+Condition 190 "2876058957" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[10].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 196 "3119114945" "(req_i[12] & gen_normal_case.prio_mask_q[12]) 1 -1" (2 "10")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 196 "3119114945" "(req_i[12] & gen_normal_case.prio_mask_q[12]) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 197 "4217824807" "(req_i[12] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[12].Pa] & ready_i) 1 -1" (3 "110")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 199 "2102103111" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[12].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[12].Pa] & ((~ready_i)))) 1 -1" (2 "01")
+ANNOTATION: "vcs_gen_start:level=4,offset=12:vcs_gen_end:VC_COV_UNR"
+Condition 200 "3779810229" "(gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[12].Pa] & ((~ready_i))) 1 -1" (3 "11")
+ANNOTATION: "vcs_gen_start:level=4,offset=13:vcs_gen_end:VC_COV_UNR"
+Condition 204 "3359315662" "(gen_normal_case.mask_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] | (gen_normal_case.sel_tree[gen_normal_case.gen_tree[4].gen_level[13].Pa] & ((~ready_i)))) 1 -1" (1 "00")
+CHECKSUM: "2032872600 3109464092"
+INSTANCE: tb.dut.u_otp_ctrl_kdi.u_req_arb
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Condition 65 "2951635521" "(req_i[0] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[0].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Condition 70 "4160391802" "(req_i[1] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[1].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Condition 75 "2241885365" "(req_i[2] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[2].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=3:vcs_gen_end:VC_COV_UNR"
+Condition 80 "3719601294" "(req_i[3] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[3].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=4:vcs_gen_end:VC_COV_UNR"
+Condition 85 "1318504132" "(req_i[4] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[4].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Condition 90 "377630463" "(req_i[5] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[5].Pa] & ready_i) 1 -1" (1 "011")
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Condition 95 "1691930672" "(req_i[6] & gen_normal_case.sel_tree[gen_normal_case.gen_tree[3].gen_level[6].Pa] & ready_i) 1 -1" (1 "011")
+CHECKSUM: "4013022403 1458251632"
+INSTANCE: tb.dut.u_prim_edn_req.u_prim_packer_fifo
+ANNOTATION: "VC_COV_UNR"
+Condition 12 "2853235687" "((depth_q == FullDepth) && ((!clr_q))) 1 -1" (2 "10")
+CHECKSUM: "903559179 1533167362"
+INSTANCE: tb.dut.u_otp_ctrl_dai
+ANNOTATION: "VC_COV_UNR"
+Condition 6 "3686409107" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 8 "4163455672" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 9 "1539831361" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "vcs_gen_start:k=10:vcs_gen_end:VC_COV_UNR"
+Condition 33 "138415549" "((dai_addr_i >= 11'b11110101000) & ({1'b0, dai_addr_i} < gen_part_sel[10].PartEndInt[otp_ctrl_reg_pkg::OtpByteAddrWidth:0])) 1 -1" (2 "10")
+CHECKSUM: "1158524476 2909360515"
+INSTANCE: tb.dut.u_otp_ctrl_kdi
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "1539831361" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+CHECKSUM: "3162909804 4223786199"
+INSTANCE: tb.dut.gen_partitions[3].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Condition 14 "2502713177" "(({tlul_addr_q, 2'b0} >= 11'b10001111000) && ({1'b0, tlul_addr_q, 2'b0} < PartEnd)) 1 -1" (2 "10")
+CHECKSUM: "3162909804 475089886"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "1099175909" "(otp_err != NoError) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "2883220586" "(otp_err != NoError) 1 -1" (2 "1")
+CHECKSUM: "3162909804 1722272287"
+INSTANCE: tb.dut.gen_partitions[1].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Condition 14 "478960819" "(({tlul_addr_q, 2'b0} >= 11'b00001000000) && ({1'b0, tlul_addr_q, 2'b0} < PartEnd)) 1 -1" (2 "10")
+CHECKSUM: "3162909804 1789909357"
+INSTANCE: tb.dut.gen_partitions[2].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Condition 14 "1715010657" "(({tlul_addr_q, 2'b0} >= 11'b00111101000) && ({1'b0, tlul_addr_q, 2'b0} < PartEnd)) 1 -1" (2 "10")
+CHECKSUM: "3162909804 4078376581"
+INSTANCE: tb.dut.gen_partitions[4].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Condition 14 "677249997" "(({tlul_addr_q, 2'b0} >= 11'b11001010000) && ({1'b0, tlul_addr_q, 2'b0} < PartEnd)) 1 -1" (2 "10")
+CHECKSUM: "3727300757 720525075"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (3 "11")
+ANNOTATION: "VC_COV_UNR"
+Condition 10 "4291765346" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+CHECKSUM: "3727300757 384791011"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 9 "1580211052" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+CHECKSUM: "3727300757 599055118"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (3 "11")
+ANNOTATION: "VC_COV_UNR"
+Condition 10 "4291765346" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+CHECKSUM: "3727300757 698462587"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 9 "1580211052" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+CHECKSUM: "3727300757 2302263073"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 18 "624370688" "((base_sel == DigOffset) ? DigestOffset : 11'b11110101000) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 19 "4038180897" "(base_sel == DigOffset) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 20 "705391888" "((data_sel == ScrmblData) ? scrmbl_data_i : otp_rdata_i) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 21 "1499701630" "(data_sel == ScrmblData) 1 -1" (2 "1")
+CHECKSUM: "3727300757 691864715"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1999344180" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 9 "1580211052" "(scrmbl_mtx_gnt_i && scrmbl_ready_i) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 16 "3809681040" "(state_q != ErrorSt) 1 -1" (2 "1")
+CHECKSUM: "835220981 1653115005"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_sramreqfifo
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "4002946372" "((gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) ? ((1'(gen_normal_fifo.wptr_value) - 1'(gen_normal_fifo.rptr_value))) : (((1'(Depth) - 1'(gen_normal_fifo.rptr_value)) + 1'(gen_normal_fifo.wptr_value)))) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1926118060" "(gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "101")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (1 "011")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 7 "1709501387" "(((~gen_normal_fifo.empty)) & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "10")
+CHECKSUM: "835220981 1198270510"
+INSTANCE: tb.dut.u_otp_rsp_fifo
+ANNOTATION: "VC_COV_UNR"
+Condition 1 "644960181" "(gen_normal_fifo.full ? (2'(Depth)) : ((gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) ? ((2'(gen_normal_fifo.wptr_value) - 2'(gen_normal_fifo.rptr_value))) : (((2'(Depth) - 2'(gen_normal_fifo.rptr_value)) + 2'(gen_normal_fifo.wptr_value))))) 1 -1" (2 "1")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "101")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (1 "011")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 6 "342355206" "(((~gen_normal_fifo.full)) & ((~gen_normal_fifo.under_rst))) 1 -1" (1 "01")
+ANNOTATION: "VC_COV_UNR"
+Condition 7 "1709501387" "(((~gen_normal_fifo.empty)) & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 8 "2721421913" "(gen_normal_fifo.fifo_wptr == (gen_normal_fifo.fifo_rptr ^ {1'b1, {(gen_normal_fifo.PTR_WIDTH - 1) {1'b0}}})) 1 -1" (2 "1")
+CHECKSUM: "835220981 814234766"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_rspfifo
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "4002946372" "((gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) ? ((1'(gen_normal_fifo.wptr_value) - 1'(gen_normal_fifo.rptr_value))) : (((1'(Depth) - 1'(gen_normal_fifo.rptr_value)) + 1'(gen_normal_fifo.wptr_value)))) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1926118060" "(gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "101")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (1 "011")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 7 "1709501387" "(((~gen_normal_fifo.empty)) & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "10")
+ANNOTATION: "VC_COV_UNR"
+Condition 11 "4208363759" "(gen_normal_fifo.fifo_empty && wvalid_i) 1 -1" (1 "01")
+CHECKSUM: "835220981 2769699113"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_reqfifo
+ANNOTATION: "VC_COV_UNR"
+Condition 2 "4002946372" "((gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) ? ((1'(gen_normal_fifo.wptr_value) - 1'(gen_normal_fifo.rptr_value))) : (((1'(Depth) - 1'(gen_normal_fifo.rptr_value)) + 1'(gen_normal_fifo.wptr_value)))) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 3 "1926118060" "(gen_normal_fifo.wptr_msb == gen_normal_fifo.rptr_msb) 1 -1" (1 "0")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "101")
+ANNOTATION: "VC_COV_UNR"
+Condition 4 "786039886" "(wvalid_i & wready_o & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (1 "011")
+ANNOTATION: "VC_COV_UNR"
+Condition 5 "1324655787" "(rvalid_o & rready_i & ((~gen_normal_fifo.under_rst))) 1 -1" (3 "110")
+ANNOTATION: "VC_COV_UNR"
+Condition 7 "1709501387" "(((~gen_normal_fifo.empty)) & ((~gen_normal_fifo.under_rst))) 1 -1" (2 "10")
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field3
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field4
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field5
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field6
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field7
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr3_field8
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field2
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field3
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field4
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr5_field5
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field0
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field1
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field2
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "4255502330 3554514034"
+INSTANCE: tb.dut.u_otp.gen_generic.u_impl_generic.u_reg_top.u_csr7_field3
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "3759852512" "wr_en" (0) "wr_en 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "1017474648" "(!rst_ni)" (1) "(!rst_ni) 0,1"
+CHECKSUM: "1335069400 3286487832"
+INSTANCE: tb.dut.u_tlul_adapter_sram
+ANNOTATION: "VC_COV_UNR"
+Branch 2 "1058271942" "(vld_rd_rsp && reqfifo_rdata.error)" (0) "(vld_rd_rsp && reqfifo_rdata.error) 1,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "744749108" "reqfifo_rvalid" (2) "reqfifo_rvalid 1,0,0"
+CHECKSUM: "2032872600 3832429488"
+INSTANCE: tb.dut.u_scrmbl_mtx
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 2 "1747167515" "gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=1,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 3 "1747167515" "gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[1].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 6 "3123337246" "gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=2,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 7 "3123337246" "gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[2].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 14 "840384514" "gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=0:vcs_gen_end:VC_COV_UNR"
+Branch 15 "840384514" "gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[0].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Branch 16 "2813219087" "gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=1:vcs_gen_end:VC_COV_UNR"
+Branch 17 "2813219087" "gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[1].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Branch 18 "2452890474" "gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=2:vcs_gen_end:VC_COV_UNR"
+Branch 19 "2452890474" "gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[2].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Branch 24 "3811150440" "gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=5:vcs_gen_end:VC_COV_UNR"
+Branch 25 "3811150440" "gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[5].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Branch 26 "3602118669" "gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel 0"
+ANNOTATION: "vcs_gen_start:level=3,offset=6:vcs_gen_end:VC_COV_UNR"
+Branch 27 "3602118669" "gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel" (1) "gen_normal_case.gen_tree[3].gen_level[6].gen_nodes.sel 0"
+CHECKSUM: "4224194069 3219254590"
+INSTANCE: tb.dut.u_tlul_lc_gate
+ANNOTATION: "VC_COV_UNR"
+Branch 2 "1850090820" "state_q" (8) "state_q StFlush ,-,-,-,0,0,-,-"
+CHECKSUM: "3882079776 3692779052"
+INSTANCE: tb.dut.u_otp_ctrl_scrmbl
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "2137472258" "state_q" (8) "state_q IdleSt ,1,default,-,-,-,-,-"
+CHECKSUM: "903559179 3978479804"
+INSTANCE: tb.dut.u_otp_ctrl_dai
+ANNOTATION: "VC_COV_UNR"
+Branch 2 "2060689171" "state_q" (1) "state_q ResetSt ,1,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 2 "2060689171" "state_q" (3) "state_q InitOtpSt ,-,-,1,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 2 "2060689171" "state_q" (35) "state_q WriteWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+CHECKSUM: "1158524476 2213598664"
+INSTANCE: tb.dut.u_otp_ctrl_kdi
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "853326673" "state_q" (20) "state_q DigWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,1,-,-,-"
+CHECKSUM: "3162909804 3977884699"
+INSTANCE: tb.dut.gen_partitions[0].gen_unbuffered.u_part_unbuf
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "490981166" "state_q" (4) "state_q InitSt ,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "490981166" "state_q" (5) "state_q InitWaitSt ,-,-,-,1,1,1,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "490981166" "state_q" (7) "state_q InitWaitSt ,-,-,-,1,0,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "490981166" "state_q" (14) "state_q ReadWaitSt ,-,-,-,-,-,-,-,-,-,1,1,1,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "490981166" "state_q" (16) "state_q ReadWaitSt ,-,-,-,-,-,-,-,-,-,1,0,-,-,-,-"
+CHECKSUM: "3727300757 3964686460"
+INSTANCE: tb.dut.gen_partitions[7].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (20) "state_q CnstyReadSt ,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (35) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (47) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,-,0,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (49) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (50) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "3727300757 3964686460"
+INSTANCE: tb.dut.gen_partitions[8].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (20) "state_q CnstyReadSt ,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (35) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (47) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,-,0,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (49) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (50) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "3727300757 3964686460"
+INSTANCE: tb.dut.gen_partitions[9].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (20) "state_q CnstyReadSt ,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (35) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (47) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,-,0,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (49) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "3673468110" "state_q" (50) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 6 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "3727300757 2334161493"
+INSTANCE: tb.dut.gen_partitions[5].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (11) "state_q InitDescrSt ,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (12) "state_q InitDescrSt ,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (13) "state_q InitDescrWaitSt ,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (14) "state_q InitDescrWaitSt ,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (20) "state_q CnstyReadSt ,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (33) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (38) "state_q IntegScrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (39) "state_q IntegScrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (40) "state_q IntegScrWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (41) "state_q IntegScrWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (49) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (50) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "3727300757 2334161493"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (11) "state_q InitDescrSt ,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (12) "state_q InitDescrSt ,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (13) "state_q InitDescrWaitSt ,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (14) "state_q InitDescrWaitSt ,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (20) "state_q CnstyReadSt ,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (33) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (38) "state_q IntegScrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (39) "state_q IntegScrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (40) "state_q IntegScrWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (41) "state_q IntegScrWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (42) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,1,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "344890278" "state_q" (45) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 5 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "3727300757 2810977924"
+INSTANCE: tb.dut.gen_partitions[10].gen_lifecycle.u_part_buf
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "2541341865" "(base_sel == DigOffset)" (0) "(base_sel == DigOffset) 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "341865418" "(data_sel == ScrmblData)" (0) "(data_sel == ScrmblData) 1"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (12) "state_q InitDescrSt ,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (14) "state_q InitDescrWaitSt ,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (33) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,1,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (35) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (37) "state_q IntegDigClrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (39) "state_q IntegScrSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (41) "state_q IntegScrWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (45) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,0,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (47) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,1,0,-,-,0,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (48) "state_q IntegDigSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (50) "state_q IntegDigPadSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (52) "state_q IntegDigFinSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 3 "1949926999" "state_q" (56) "state_q IntegDigWaitSt ,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,0,-,-,-"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "375157548" "ecc_err" (0) "ecc_err 1,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 4 "375157548" "ecc_err" (1) "ecc_err 1,0"
+CHECKSUM: "835220981 2115631974"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_reqfifo
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "1862733684" "gen_normal_fifo.full" (2) "gen_normal_fifo.full 0,0"
+CHECKSUM: "835220981 2115631974"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_sramreqfifo
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "1862733684" "gen_normal_fifo.full" (2) "gen_normal_fifo.full 0,0"
+CHECKSUM: "835220981 3240364287"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_rspfifo
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "1862733684" "gen_normal_fifo.full" (2) "gen_normal_fifo.full 0,0"
+CHECKSUM: "835220981 3240364287"
+INSTANCE: tb.dut.u_otp_rsp_fifo
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "1862733684" "gen_normal_fifo.full" (0) "gen_normal_fifo.full 1,-"
+CHECKSUM: "3818998033 3877782530"
+INSTANCE: tb.dut.gen_partitions[6].gen_buffered.u_part_buf.u_otp_ctrl_ecc_reg
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "2154824802" "(32'(addr_i) < Depth)" (2) "(32'(addr_i) < Depth) 0,-"
+CHECKSUM: "1817939962 689627449"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_reqfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "353148737" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "3145009581" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
+CHECKSUM: "1817939962 689627449"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_sramreqfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "353148737" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "3145009581" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
+CHECKSUM: "1817939962 689627449"
+INSTANCE: tb.dut.u_tlul_adapter_sram.u_rspfifo.gen_normal_fifo.u_fifo_cnt
+ANNOTATION: "VC_COV_UNR"
+Branch 0 "353148737" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
+ANNOTATION: "VC_COV_UNR"
+Branch 1 "3145009581" "(!rst_ni)" (3) "(!rst_ni) 0,0,0,1"
diff --git a/src/fuse_ctrl/dv/cov/otp_ctrl_cover.cfg b/src/fuse_ctrl/dv/cov/otp_ctrl_cover.cfg
new file mode 100755
index 0000000..d69a193
--- /dev/null
+++ b/src/fuse_ctrl/dv/cov/otp_ctrl_cover.cfg
@@ -0,0 +1,14 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+
+// The modules below are preverified in FPV testbench.
+// There are many conditional coverage and hard to them all.
+-moduletree prim_secded_inv_72_64_dec
+-moduletree prim_secded_inv_72_64_enc
+
+begin tgl
+ +module prim_secded_inv_72_64_dec
+ +module prim_secded_inv_72_64_enc
+end
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv b/src/fuse_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv
new file mode 100644
index 0000000..4b723d7
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv
@@ -0,0 +1,35 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+//
+// Configuration values for DUT input signals
+//
+//
+// This class randomizes values for DUT signal inputs
+// and sets constraints on these values.
+//
+// This class will be instantiated inside otp_ctrl_env_cfg object, and will connect
+// to it's otp_ctrl_vif signals and drive them each reset event
+//
+// The constraints can be hardened and softened as needed in
+// closed-source environment.
+// In order to override these constraints, please inherit this class
+// and set a type override in the closed source environment
+
+class otp_ctrl_ast_inputs_cfg extends uvm_object;
+ `uvm_object_utils(otp_ctrl_ast_inputs_cfg);
+ `uvm_object_new
+
+ // Group: Variables
+ rand otp_ast_rsp_t otp_ast_pwr_seq_h;
+ rand logic [otp_ctrl_pkg::OtpTestCtrlWidth-1:0] otp_vendor_test_ctrl;
+ rand prim_mubi_pkg::mubi4_t scanmode;
+ rand logic scan_en, scan_rst_n;
+
+ // Group: Constraints
+ constraint dut_values_c {
+ otp_vendor_test_ctrl == 32'h0;
+ }
+
+endclass: otp_ctrl_ast_inputs_cfg
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_env.core b/src/fuse_ctrl/dv/env/otp_ctrl_env.core
new file mode 100644
index 0000000..4b35e4c
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_env.core
@@ -0,0 +1,59 @@
+CAPI=2:
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+name: "lowrisc:dv:otp_ctrl_env:0.1"
+description: "OTP_CTRL DV UVM environment"
+filesets:
+ files_dv:
+ depend:
+ - lowrisc:dv:ralgen
+ - lowrisc:dv:cip_lib
+ - lowrisc:dv:mem_bkdr_util
+ - lowrisc:dv:crypto_dpi_present
+ - lowrisc:dv:lc_ctrl_dv_utils
+ files:
+ - otp_ctrl_env_pkg.sv
+ - otp_ctrl_if.sv
+ - otp_ctrl_ast_inputs_cfg.sv: {is_include_file: true}
+ - otp_ctrl_env_cfg.sv: {is_include_file: true}
+ - otp_ctrl_env_cov.sv: {is_include_file: true}
+ - otp_ctrl_virtual_sequencer.sv: {is_include_file: true}
+ - otp_ctrl_scoreboard.sv: {is_include_file: true}
+ - otp_ctrl_env.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_vseq_list.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_callback_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_base_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_common_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_wake_up_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_smoke_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_partition_walk_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_low_freq_read_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_init_fail_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_dai_lock_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_dai_errs_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_macro_errs_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_background_chks_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_check_fail_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_parallel_base_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_regwen_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_parallel_key_req_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_parallel_lc_req_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_parallel_lc_esc_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_test_access_vseq.sv: {is_include_file: true}
+ - seq_lib/otp_ctrl_stress_all_vseq.sv: {is_include_file: true}
+ file_type: systemVerilogSource
+
+generate:
+ ral:
+ generator: ralgen
+ parameters:
+ name: otp_ctrl
+ ip_hjson: ../../data/otp_ctrl.hjson
+
+targets:
+ default:
+ filesets:
+ - files_dv
+ generate:
+ - ral
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_env.sv b/src/fuse_ctrl/dv/env/otp_ctrl_env.sv
new file mode 100644
index 0000000..454d14d
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_env.sv
@@ -0,0 +1,106 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+class otp_ctrl_env #(
+ type CFG_T = otp_ctrl_env_cfg,
+ type COV_T = otp_ctrl_env_cov,
+ type VIRTUAL_SEQUENCER_T = otp_ctrl_virtual_sequencer,
+ type SCOREBOARD_T = otp_ctrl_scoreboard
+ )
+ extends cip_base_env #(
+ .CFG_T (CFG_T),
+ .COV_T (COV_T),
+ .VIRTUAL_SEQUENCER_T(VIRTUAL_SEQUENCER_T),
+ .SCOREBOARD_T (SCOREBOARD_T)
+ );
+ `uvm_component_param_utils(otp_ctrl_env #(CFG_T, COV_T, VIRTUAL_SEQUENCER_T, SCOREBOARD_T))
+
+ `uvm_component_new
+
+ push_pull_agent#(.DeviceDataWidth(SRAM_DATA_SIZE)) m_sram_pull_agent[NumSramKeyReqSlots];
+ push_pull_agent#(.DeviceDataWidth(OTBN_DATA_SIZE)) m_otbn_pull_agent;
+ push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_addr_pull_agent;
+ push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_data_pull_agent;
+ push_pull_agent#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)) m_lc_prog_pull_agent;
+
+ function void build_phase(uvm_phase phase);
+ super.build_phase(phase);
+
+ // build sram-otp pull agent
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ string sram_agent_name = $sformatf("m_sram_pull_agent[%0d]", i);
+ m_sram_pull_agent[i] = push_pull_agent#(.DeviceDataWidth(SRAM_DATA_SIZE))::type_id::create(
+ sram_agent_name, this);
+ uvm_config_db#(push_pull_agent_cfg#(.DeviceDataWidth(SRAM_DATA_SIZE)))::set(this,
+ $sformatf("%0s*", sram_agent_name), "cfg", cfg.m_sram_pull_agent_cfg[i]);
+ end
+
+ // build otbn-otp pull agent
+ m_otbn_pull_agent = push_pull_agent#(.DeviceDataWidth(OTBN_DATA_SIZE))::type_id::create(
+ "m_otbn_pull_agent", this);
+ uvm_config_db#(push_pull_agent_cfg#(.DeviceDataWidth(OTBN_DATA_SIZE)))::set(
+ this, "m_otbn_pull_agent", "cfg", cfg.m_otbn_pull_agent_cfg);
+
+ // build flash-otp pull agent
+ m_flash_addr_pull_agent = push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE))::type_id::create(
+ "m_flash_addr_pull_agent", this);
+ uvm_config_db#(push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)))::set(
+ this, "m_flash_addr_pull_agent", "cfg", cfg.m_flash_addr_pull_agent_cfg);
+ m_flash_data_pull_agent = push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE))::type_id::create(
+ "m_flash_data_pull_agent", this);
+ uvm_config_db#(push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)))::set(
+ this, "m_flash_data_pull_agent", "cfg", cfg.m_flash_data_pull_agent_cfg);
+
+ // build lc-otp program pull agent
+ m_lc_prog_pull_agent = push_pull_agent#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1))
+ ::type_id::create("m_lc_prog_pull_agent", this);
+ uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1)))::
+ set(this, "m_lc_prog_pull_agent", "cfg", cfg.m_lc_prog_pull_agent_cfg);
+
+ // config mem virtual interface
+ if (!uvm_config_db#(mem_bkdr_util)::get(this, "", "mem_bkdr_util", cfg.mem_bkdr_util_h)) begin
+ `uvm_fatal(`gfn, "failed to get mem_bkdr_util from uvm_config_db")
+ end
+
+ // config otp_ctrl output data virtual interface
+ if (!uvm_config_db#(otp_ctrl_vif)::get(this, "", "otp_ctrl_vif", cfg.otp_ctrl_vif)) begin
+ `uvm_fatal(`gfn, "failed to get otp_ctrl_vif from uvm_config_db")
+ end
+
+ // Check if `NumPart` constant is assigned to the correct value.
+ `DV_CHECK(NumPart == (LifeCycleIdx + 1))
+
+ endfunction
+
+ function void connect_phase(uvm_phase phase);
+ super.connect_phase(phase);
+
+ // connect SRAM sequencer and analysis ports
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ virtual_sequencer.sram_pull_sequencer_h[i] = m_sram_pull_agent[i].sequencer;
+ if (cfg.en_scb) begin
+ m_sram_pull_agent[i].monitor.analysis_port.connect(
+ scoreboard.sram_fifos[i].analysis_export);
+ end
+ end
+
+ virtual_sequencer.otbn_pull_sequencer_h = m_otbn_pull_agent.sequencer;
+ virtual_sequencer.flash_addr_pull_sequencer_h = m_flash_addr_pull_agent.sequencer;
+ virtual_sequencer.flash_data_pull_sequencer_h = m_flash_data_pull_agent.sequencer;
+ virtual_sequencer.lc_prog_pull_sequencer_h = m_lc_prog_pull_agent.sequencer;
+
+ if (cfg.en_scb) begin
+ m_otbn_pull_agent.monitor.analysis_port.connect(scoreboard.otbn_fifo.analysis_export);
+ m_flash_addr_pull_agent.monitor.analysis_port.connect(
+ scoreboard.flash_addr_fifo.analysis_export);
+ m_flash_data_pull_agent.monitor.analysis_port.connect(
+ scoreboard.flash_data_fifo.analysis_export);
+ m_lc_prog_pull_agent.monitor.analysis_port.connect(scoreboard.lc_prog_fifo.analysis_export);
+ end
+
+ // connect the DUT cfg instance to the handle in the otp_ctrl_vif
+ this.cfg.otp_ctrl_vif.dut_cfg = this.cfg.dut_cfg;
+ endfunction
+
+endclass
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_env_cfg.sv b/src/fuse_ctrl/dv/env/otp_ctrl_env_cfg.sv
new file mode 100644
index 0000000..52c67e8
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_env_cfg.sv
@@ -0,0 +1,106 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+`define OTP_CLK_CONSTRAINT(FREQ_) \
+ FREQ_ dist { \
+ 6 :/ 2, \
+ [24:25] :/ 2, \
+ [26:47] :/ 1, \
+ [48:50] :/ 2, \
+ [51:95] :/ 1, \
+ 96 :/ 1, \
+ [97:99] :/ 1, \
+ 100 :/ 1 \
+ };
+
+class otp_ctrl_env_cfg extends cip_base_env_cfg #(.RAL_T(otp_ctrl_core_reg_block));
+
+ // ext component cfgs
+ rand push_pull_agent_cfg#(.DeviceDataWidth(SRAM_DATA_SIZE))
+ m_sram_pull_agent_cfg[NumSramKeyReqSlots];
+ rand push_pull_agent_cfg#(.DeviceDataWidth(OTBN_DATA_SIZE)) m_otbn_pull_agent_cfg;
+ rand push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_data_pull_agent_cfg;
+ rand push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_addr_pull_agent_cfg;
+ rand push_pull_agent_cfg#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE))
+ m_lc_prog_pull_agent_cfg;
+
+ // Memory backdoor util instance for OTP.
+ mem_bkdr_util mem_bkdr_util_h;
+
+ // ext interfaces
+ otp_ctrl_vif otp_ctrl_vif;
+ virtual clk_rst_if clk_rst_vif_otp_ctrl_prim_reg_block;
+
+ bit backdoor_clear_mem;
+
+ // Check ECC errors
+ otp_ecc_err_e ecc_chk_err [NumPart] = '{default:OtpNoEccErr};
+
+ // values for otp_ctrl_if signals connected to DUT
+ rand otp_ctrl_ast_inputs_cfg dut_cfg;
+
+ // Introduce this flag to avoid close source conflict.
+ bit create_prim_tl_agent = 1;
+
+ `uvm_object_utils_begin(otp_ctrl_env_cfg)
+ `uvm_object_utils_end
+
+ `uvm_object_new
+
+ constraint clk_freq_mhz_c {
+ `OTP_CLK_CONSTRAINT(clk_freq_mhz)
+ foreach (clk_freqs_mhz[i]) {
+ `OTP_CLK_CONSTRAINT(clk_freqs_mhz[i])
+ }
+ }
+
+ virtual function void initialize(bit [31:0] csr_base_addr = '1);
+ string prim_ral_name = "otp_ctrl_prim_reg_block";
+ ral_model_names.push_back(prim_ral_name);
+ clk_freqs_mhz[prim_ral_name] = clk_freq_mhz;
+
+ list_of_alerts = otp_ctrl_env_pkg::LIST_OF_ALERTS;
+ num_edn = 1;
+ tl_intg_alert_name = "fatal_bus_integ_error";
+ sec_cm_alert_name = "fatal_check_error";
+
+ super.initialize(csr_base_addr);
+
+ // create push_pull agent config obj
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ string cfg_name = $sformatf("sram_pull_agent_cfg[%0d]", i);
+ m_sram_pull_agent_cfg[i] = push_pull_agent_cfg#(.DeviceDataWidth(SRAM_DATA_SIZE))::type_id
+ ::create(cfg_name);
+ m_sram_pull_agent_cfg[i].agent_type = PullAgent;
+ end
+
+ m_otbn_pull_agent_cfg = push_pull_agent_cfg#(.DeviceDataWidth(OTBN_DATA_SIZE))::type_id
+ ::create("m_otbn_pull_agent_cfg");
+ m_otbn_pull_agent_cfg.agent_type = PullAgent;
+
+ m_flash_data_pull_agent_cfg = push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE))::type_id
+ ::create("m_flash_data_pull_agent_cfg");
+ m_flash_data_pull_agent_cfg.agent_type = PullAgent;
+ m_flash_addr_pull_agent_cfg = push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE))::type_id
+ ::create("m_flash_addr_pull_agent_cfg");
+ m_flash_addr_pull_agent_cfg.agent_type = PullAgent;
+
+ m_lc_prog_pull_agent_cfg = push_pull_agent_cfg#(.HostDataWidth(LC_PROG_DATA_SIZE),
+ .DeviceDataWidth(1))::type_id::create("m_lc_prog_pull_agent_cfg");
+ m_lc_prog_pull_agent_cfg.agent_type = PullAgent;
+
+ // set num_interrupts & num_alerts
+ num_interrupts = ral.intr_state.get_n_used_bits();
+
+ // only support 1 outstanding TL items in tlul_adapter
+ m_tl_agent_cfg.max_outstanding_req = 1;
+ m_tl_agent_cfgs["otp_ctrl_prim_reg_block"].max_outstanding_req = 1;
+
+ // create the inputs cfg instance
+ dut_cfg = otp_ctrl_ast_inputs_cfg::type_id::create("dut_cfg");
+ endfunction
+
+endclass
+
+`undef OTP_CLK_CONSTRAINT
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_env_cov.sv b/src/fuse_ctrl/dv/env/otp_ctrl_env_cov.sv
new file mode 100755
index 0000000..10e7d90
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_env_cov.sv
@@ -0,0 +1,389 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+/**
+ * Covergoups that are dependent on run-time parameters that may be available
+ * only in build_phase can be defined here
+ * Covergroups may also be wrapped inside helper classes if needed.
+ */
+class otp_ctrl_unbuf_err_code_cg_wrap;
+ // Unbuffered partition can use TLUL interface to read out but cannot write, thus error_code does
+ // not have write_blank_err.
+ covergroup unbuf_err_code_cg(string name) with function sample(bit [TL_DW-1:0] val);
+ option.per_instance = 1;
+ option.name = name;
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins access_err = {OtpAccessError};
+ bins check_fail = {OtpCheckFailError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ function new(string name);
+ unbuf_err_code_cg = new(name);
+ endfunction
+endclass
+
+class otp_ctrl_buf_err_code_cg_wrap;
+ // Buffered partition must use DAI interface to access partition, so it does not have access_err
+ // and write_blank err.
+ covergroup buf_err_code_cg(string name) with function sample(bit [TL_DW-1:0] val);
+ option.per_instance = 1;
+ option.name = name;
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins check_fail = {OtpCheckFailError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ function new(string name);
+ buf_err_code_cg = new(name);
+ endfunction
+endclass
+
+class otp_ctrl_csr_rd_after_alert_cg_wrap;
+ // This covergroup samples CSRs being checked (via CSR read) after fatal alert is issued.
+ covergroup csr_rd_after_alert_cg(otp_ctrl_core_reg_block ral) with function sample(bit[TL_DW-1:0]
+ csr_offset);
+ read_csr_after_alert_issued: coverpoint csr_offset {
+ bins unbuffered_digests = {
+ ral.vendor_test_digest[0].get_offset(),
+ ral.vendor_test_digest[1].get_offset(),
+ ral.creator_sw_cfg_digest[0].get_offset(),
+ ral.creator_sw_cfg_digest[1].get_offset(),
+ ral.owner_sw_cfg_digest[0].get_offset(),
+ ral.owner_sw_cfg_digest[1].get_offset(),
+ ral.rot_creator_auth_codesign_digest[0].get_offset(),
+ ral.rot_creator_auth_codesign_digest[1].get_offset(),
+ ral.rot_creator_auth_state_digest[0].get_offset(),
+ ral.rot_creator_auth_state_digest[1].get_offset()
+ };
+ bins hw_digests = {
+ ral.hw_cfg0_digest[0].get_offset(),
+ ral.hw_cfg0_digest[1].get_offset(),
+ ral.hw_cfg1_digest[0].get_offset(),
+ ral.hw_cfg1_digest[1].get_offset()
+ };
+ bins secret_digests = {
+ ral.secret0_digest[0].get_offset(),
+ ral.secret0_digest[1].get_offset(),
+ ral.secret1_digest[0].get_offset(),
+ ral.secret1_digest[1].get_offset(),
+ ral.secret2_digest[0].get_offset(),
+ ral.secret2_digest[1].get_offset()
+ };
+ bins direct_access_rdata = {
+ ral.direct_access_rdata[0].get_offset(),
+ ral.direct_access_rdata[1].get_offset()
+ };
+ bins status = {
+ ral.status.get_offset()
+ };
+ bins error_code = {
+ ral.err_code[0].get_offset(),
+ ral.err_code[1].get_offset(),
+ ral.err_code[2].get_offset(),
+ ral.err_code[3].get_offset(),
+ ral.err_code[4].get_offset(),
+ ral.err_code[5].get_offset(),
+ ral.err_code[6].get_offset(),
+ ral.err_code[7].get_offset(),
+ ral.err_code[8].get_offset(),
+ ral.err_code[9].get_offset(),
+ ral.err_code[10].get_offset(),
+ ral.err_code[11].get_offset(),
+ ral.err_code[12].get_offset()
+ };
+ }
+ endgroup
+
+ function new(otp_ctrl_core_reg_block ral);
+ csr_rd_after_alert_cg = new(ral);
+ endfunction
+
+ function void sample(bit[TL_DW-1:0] csr_offset);
+ csr_rd_after_alert_cg.sample(csr_offset);
+ endfunction
+endclass
+
+class otp_ctrl_unbuf_access_lock_cg_wrap;
+ covergroup unbuf_access_lock_cg(string name) with function sample(bit read_lock, bit write_lock,
+ bit is_write);
+ option.per_instance = 1;
+ option.name = name;
+ read_access_locked: coverpoint read_lock;
+ write_access_locked: coverpoint write_lock;
+ operation_type: coverpoint is_write {
+ bins write_op = {1};
+ bins read_op = {0};
+ }
+ unbuf_part_access_cross: cross read_access_locked, write_access_locked, operation_type;
+ endgroup
+
+ function new(string name);
+ unbuf_access_lock_cg = new(name);
+ endfunction
+
+ function void sample(bit read_lock, bit write_lock, bit is_write);
+ unbuf_access_lock_cg.sample(read_lock, write_lock, is_write);
+ endfunction
+endclass
+
+class otp_ctrl_env_cov extends cip_base_env_cov #(.CFG_T(otp_ctrl_env_cfg));
+ `uvm_component_utils(otp_ctrl_env_cov)
+
+ // the base class provides the following handles for use:
+ // otp_ctrl_env_cfg: cfg
+
+ otp_ctrl_unbuf_err_code_cg_wrap unbuf_err_code_cg_wrap[NumPartUnbuf];
+ otp_ctrl_buf_err_code_cg_wrap buf_err_code_cg_wrap[NumPartBuf];
+ otp_ctrl_csr_rd_after_alert_cg_wrap csr_rd_after_alert_cg_wrap;
+ otp_ctrl_unbuf_access_lock_cg_wrap unbuf_access_lock_cg_wrap[NumPartUnbuf];
+
+ bit_toggle_cg_wrap lc_prog_cg;
+ bit_toggle_cg_wrap otbn_req_cg;
+ bit_toggle_cg_wrap status_csr_cg[OtpStatusFieldSize];
+
+ // covergroups
+ // This covergroup collects different conditions when outputs (hwcfg_o, keymgr_key_o) are checked
+ // in scb:
+ // - If lc_esc_en is On
+ // - If each partition is locked (expect LC)
+ covergroup power_on_cg with function sample (bit lc_esc_en, bit[NumPart-2:0] parts_locked);
+ lc_esc: coverpoint lc_esc_en;
+ vendor_test_lock: coverpoint parts_locked[0];
+ creator_sw_cfg_lock: coverpoint parts_locked[1];
+ owner_sw_cfg_lock: coverpoint parts_locked[2];
+ rot_creator_auth_codesign_lock: coverpoint parts_locked[3];
+ rot_creator_auth_state_lock: coverpoint parts_locked[4];
+ hw_cfg0_lock: coverpoint parts_locked[5];
+ hw_cfg1_lock: coverpoint parts_locked[6];
+ secret0_lock: coverpoint parts_locked[7];
+ secret1_lock: coverpoint parts_locked[8];
+ secret2_lock: coverpoint parts_locked[9];
+ endgroup
+
+ // This covergroup is sampled only if flash request passed scb check.
+ covergroup flash_req_cg with function sample (int index, bit locked);
+ flash_index: coverpoint index {
+ bins flash_data_key = {FlashDataKey};
+ bins flash_addr_key = {FlashAddrKey};
+ illegal_bins il = default;
+ }
+ secret1_lock: coverpoint locked;
+ flash_req_lock_cross: cross flash_index, secret1_lock;
+ endgroup
+
+ // This covergroup is sampled only if sram request passed scb check.
+ covergroup sram_req_cg with function sample (int index, bit locked);
+ sram_index: coverpoint index {
+ bins sram_key[NumSramKeyReqSlots] = {[0:(NumSramKeyReqSlots-1)]};
+ illegal_bins il = default;
+ }
+ secret1_lock: coverpoint locked;
+ sram_req_lock_cross: cross sram_index, secret1_lock;
+ endgroup
+
+ // This covergroup is sampled only if keymgr output passed scb check.
+ covergroup keymgr_o_cg with function sample (bit lc_seed_hw_rd_en, bit locked);
+ keymgr_rd_en: coverpoint lc_seed_hw_rd_en;
+ // TODO: probably should add all partitions with keymgr material here.
+ secret2_lock: coverpoint locked;
+ keymgr_output_conditions: cross keymgr_rd_en, secret2_lock;
+ endgroup
+
+ // This covergroup samples dai request being issued after fatal alert is issued.
+ covergroup req_dai_access_after_alert_cg with function sample(bit [TL_DW-1:0] val);
+ req_dai_access_after_alert_issued: coverpoint val {
+ bins dai_write = {DaiWrite};
+ bins dai_read = {DaiRead};
+ bins dai_digest = {DaiDigest};
+ }
+ endgroup
+
+ // This covergroup samples background check being issued after fatal alert is issued.
+ covergroup issue_checks_after_alert_cg with function sample(bit [TL_DW-1:0] val);
+ issue_checks_after_alert_issued: coverpoint val {
+ bins integrity_check = {1};
+ bins consistency_check = {2};
+ }
+ endgroup
+
+ // This covergroup collects DAI err_code value.
+ // DAI access does not have checks, thus no check_fail error.
+ covergroup dai_err_code_cg with function sample(bit [TL_DW-1:0] val, int part_idx);
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins ecc_corr_err = {OtpMacroEccCorrError};
+ bins ecc_uncorr_err = {OtpMacroEccUncorrError};
+ bins write_blank_err = {OtpMacroWriteBlankError};
+ bins access_err = {OtpAccessError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ partition: coverpoint part_idx {
+ bins vendor_test = {VendorTestIdx};
+ bins creator_sw_cfg = {CreatorSwCfgIdx};
+ bins owner_sw_cfg = {OwnerSwCfgIdx};
+ bins rot_creator_auth_codesign = {RotCreatorAuthCodesignIdx};
+ bins rot_creator_auth_state = {RotCreatorAuthStateIdx};
+ bins hw_cfg0 = {HwCfg0Idx};
+ bins hw_cfg1 = {HwCfg1Idx};
+ bins secret0 = {Secret0Idx};
+ bins secret1 = {Secret1Idx};
+ bins secret2 = {Secret2Idx};
+ bins life_cycle = {LifeCycleIdx};
+ bins illegal_idx = default;
+ }
+ // LC partition has a separate LCI err_code to collect macro related errors.
+ dai_err_code_for_all_partitions: cross err_code_vals, partition {
+ // Illegal bin - vendor_test partition does not have EccUncorrectable error.
+ illegal_bins vendor_test_ecc_uncorrectable_err =
+ binsof (partition.vendor_test) && binsof (err_code_vals.ecc_uncorr_err);
+ ignore_bins life_cycle_ignore = binsof (partition.life_cycle) &&
+ binsof(err_code_vals) intersect {[OtpMacroError:OtpMacroWriteBlankError]};
+ }
+ endgroup
+
+ // This covergroup collects LCI err_code value.
+ // LCI access does not have digest, thus no access_err. Check_fail, ecc_errors are covered in lc
+ // buffered partition instead of LCI here.
+ covergroup lci_err_code_cg with function sample(bit [TL_DW-1:0] val);
+ err_code_vals: coverpoint val {
+ bins no_err = {OtpNoError};
+ bins macro_err = {OtpMacroError};
+ bins write_blank_err = {OtpMacroWriteBlankError};
+ bins fsm_err = {OtpFsmStateError};
+ illegal_bins illegal_err = default;
+ }
+ endgroup
+
+ covergroup dai_access_secret2_cg with function sample(bit lc_rw_en, dai_cmd_e dai_cmd);
+ lc_creator_seed_sw_rw_en: coverpoint lc_rw_en;
+ dai_access_cmd: coverpoint dai_cmd {
+ bins dai_rd = {DaiRead};
+ bins dai_wr = {DaiWrite};
+ bins dai_digest = {DaiDigest};
+ }
+ dai_access_secret2: cross lc_creator_seed_sw_rw_en, dai_access_cmd;
+ endgroup
+
+ function new(string name, uvm_component parent);
+ super.new(name, parent);
+ // Create coverage from local covergroups.
+ power_on_cg = new();
+ flash_req_cg = new();
+ sram_req_cg = new();
+ keymgr_o_cg = new();
+ req_dai_access_after_alert_cg = new();
+ issue_checks_after_alert_cg = new();
+ dai_err_code_cg = new();
+ lci_err_code_cg = new();
+ dai_access_secret2_cg = new();
+ endfunction : new
+
+ virtual function void build_phase(uvm_phase phase);
+ super.build_phase(phase);
+ // Create instances from bit_toggle_cg_wrapper.
+ lc_prog_cg = new("lc_prog_cg", "", 0);
+ otbn_req_cg = new("otbn_req_cg", "", 0);
+ foreach (status_csr_cg[i]) begin
+ otp_status_e index = otp_status_e'(i);
+ status_csr_cg[i]= new(index.name, "status_csr_cg", 0);
+ end
+
+ // Create instances from external wrapper classes.
+ csr_rd_after_alert_cg_wrap = new(cfg.ral);
+ foreach (unbuf_err_code_cg_wrap[i]) begin
+ otp_status_e index = otp_status_e'(i);
+ unbuf_err_code_cg_wrap[i] = new($sformatf("unbuf_err_code_cg_wrap[%0s]", index.name));
+ end
+ foreach (buf_err_code_cg_wrap[i]) begin
+ otp_status_e index = otp_status_e'(i + 2);
+ buf_err_code_cg_wrap[i] = new($sformatf("buf_err_code_cg_wrap[%0s]", index.name));
+ end
+ foreach (unbuf_access_lock_cg_wrap[i]) begin
+ part_idx_e index = part_idx_e'(i);
+ unbuf_access_lock_cg_wrap[i] = new($sformatf("buf_err_code_cg_wrap[%0s]", index.name));
+ end
+ endfunction
+
+ function void collect_status_cov(bit [TL_DW-1:0] val);
+ foreach (status_csr_cg[i]) begin
+ status_csr_cg[i].sample(val[i]);
+ end
+ endfunction
+
+ // Collect coverage for err_code when it is a compact multi-reg. For DAI error it uses the given
+ // access_part_idx as the target of the DAI access.
+ function void collect_compact_err_code_cov(bit [TL_DW-1:0] val, int access_part_idx = DaiIdx);
+ dv_base_reg_field err_code_flds[$];
+ cfg.ral.err_code[0].get_dv_base_reg_fields(err_code_flds);
+ foreach (err_code_flds[part]) begin
+ collect_err_code_cov(part, get_field_val(err_code_flds[part], val), access_part_idx);
+ end
+ endfunction
+
+ // Collect coverage for a given partition error_code. For DAI error it uses the given
+ // access_part_idx as the target of the DAI access.
+ function void collect_err_code_cov(int part_idx, bit [TL_DW-1:0] val,
+ int access_part_idx = DaiIdx);
+ case (part_idx)
+ OtpVendorTestErrIdx: begin
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ end
+ OtpCreatorSwCfgErrIdx: begin
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ end
+ OtpOwnerSwCfgErrIdx: begin
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ end
+ OtpRotCreatorAuthCodesignErrIdx: begin
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ end
+ OtpRotCreatorAuthStateErrIdx: begin
+ unbuf_err_code_cg_wrap[part_idx].unbuf_err_code_cg.sample(val);
+ end
+ OtpHwCfg0ErrIdx: begin
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ end
+ OtpHwCfg1ErrIdx: begin
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ end
+ OtpSecret0ErrIdx: begin
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ end
+ OtpSecret1ErrIdx: begin
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ end
+ OtpSecret2ErrIdx: begin
+ buf_err_code_cg_wrap[part_idx - NumPartUnbuf].buf_err_code_cg.sample(val);
+ end
+ OtpLifeCycleErrIdx: begin
+ end
+ OtpDaiErrIdx: begin
+ dai_err_code_cg.sample(val, access_part_idx);
+ end
+ OtpLciErrIdx: begin
+ lci_err_code_cg.sample(val);
+ end
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid err_code index %0d", part_idx))
+ end
+ endcase
+ endfunction
+endclass
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_env_pkg.sv b/src/fuse_ctrl/dv/env/otp_ctrl_env_pkg.sv
new file mode 100755
index 0000000..79026db
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_env_pkg.sv
@@ -0,0 +1,266 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+package otp_ctrl_env_pkg;
+ // dep packages
+ import uvm_pkg::*;
+ import top_pkg::*;
+ import dv_utils_pkg::*;
+ import dv_lib_pkg::*;
+ import dv_base_reg_pkg::*;
+ import tl_agent_pkg::*;
+ import cip_base_pkg::*;
+ import csr_utils_pkg::*;
+ import push_pull_agent_pkg::*;
+ import otp_ctrl_core_ral_pkg::*;
+ import otp_ctrl_prim_ral_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import lc_ctrl_pkg::*;
+ import lc_ctrl_state_pkg::*;
+ import lc_ctrl_dv_utils_pkg::*;
+ import mem_bkdr_util_pkg::*;
+ import otp_scrambler_pkg::*;
+ import sec_cm_pkg::*;
+
+ // macro includes
+ `include "uvm_macros.svh"
+ `include "dv_macros.svh"
+
+ // parameters
+ parameter string LIST_OF_ALERTS[] = {"fatal_macro_error",
+ "fatal_check_error",
+ "fatal_bus_integ_error",
+ "fatal_prim_otp_alert",
+ "recov_prim_otp_alert"};
+ parameter uint NUM_ALERTS = 5;
+ parameter uint NUM_EDN = 1;
+
+ parameter uint DIGEST_SIZE = 8;
+ parameter uint SW_WINDOW_BASE_ADDR = 'h800;
+ parameter uint SW_WINDOW_SIZE = NumSwCfgWindowWords * 4;
+
+ parameter uint TL_SIZE = (TL_DW / 8);
+ // LC has its own storage in scb
+ // we can use the LC offset here because it will always be the last partition.
+ parameter uint OTP_ARRAY_SIZE = LcTransitionCntOffset / TL_SIZE;
+
+ parameter int OTP_ADDR_WIDTH = OtpByteAddrWidth-2;
+
+ parameter uint NUM_PRIM_REG = 8;
+
+ // sram rsp data has 1 bit for seed_valid, the rest are for key and nonce
+ parameter uint SRAM_DATA_SIZE = 1 + SramKeyWidth + SramNonceWidth;
+ // otbn rsp data has 1 bit for seed_valid, the rest are for key and nonce
+ parameter uint OTBN_DATA_SIZE = 1 + OtbnKeyWidth + OtbnNonceWidth;
+ // flash rsp data has 1 bit for seed_valid, the rest are for key
+ parameter uint FLASH_DATA_SIZE = 1 + FlashKeyWidth;
+ // lc program data has lc_state data and lc_cnt data
+ parameter uint LC_PROG_DATA_SIZE = LcStateWidth + LcCountWidth;
+
+ parameter uint NUM_SRAM_EDN_REQ = 12;
+ parameter uint NUM_OTBN_EDN_REQ = 10;
+
+ parameter uint CHK_TIMEOUT_CYC = 40;
+
+ // When fatal alert triggered, all partitions and the DAI & LCI go to error state and status will
+ // be set to 1.
+ parameter bit [NumErrorEntries-1:0] FATAL_EXP_STATUS = '1;
+
+ // lc does not have dai access
+ parameter int PART_BASE_ADDRS [NumPart-1] = {
+ VendorTestOffset,
+ CreatorSwCfgOffset,
+ OwnerSwCfgOffset,
+ RotCreatorAuthCodesignOffset,
+ RotCreatorAuthStateOffset,
+ HwCfg0Offset,
+ HwCfg1Offset,
+ Secret0Offset,
+ Secret1Offset,
+ Secret2Offset
+ };
+
+ // lc does not have digest
+ parameter int PART_OTP_DIGEST_ADDRS [NumPart-1] = {
+ VendorTestDigestOffset >> 2,
+ CreatorSwCfgDigestOffset >> 2,
+ OwnerSwCfgDigestOffset >> 2,
+ RotCreatorAuthCodesignDigestOffset >> 2,
+ RotCreatorAuthStateDigestOffset >> 2,
+ HwCfg0DigestOffset >> 2,
+ HwCfg1DigestOffset >> 2,
+ Secret0DigestOffset >> 2,
+ Secret1DigestOffset >> 2,
+ Secret2DigestOffset >> 2
+ };
+
+ // types
+ typedef enum bit [1:0] {
+ OtpOperationDone,
+ OtpErr,
+ NumOtpCtrlIntr
+ } otp_intr_e;
+
+ typedef enum bit [5:0] {
+ OtpVendorTestErrIdx,
+ OtpCreatorSwCfgErrIdx,
+ OtpOwnerSwCfgErrIdx,
+ OtpRotCreatorAuthCodesignErrIdx,
+ OtpRotCreatorAuthStateErrIdx,
+ OtpHwCfg0ErrIdx,
+ OtpHwCfg1ErrIdx,
+ OtpSecret0ErrIdx,
+ OtpSecret1ErrIdx,
+ OtpSecret2ErrIdx,
+ OtpLifeCycleErrIdx,
+ OtpDaiErrIdx,
+ OtpLciErrIdx,
+ OtpTimeoutErrIdx,
+ OtpLfsrFsmErrIdx,
+ OtpScramblingFsmErrIdx,
+ OtpDerivKeyFsmErrIdx,
+ OtpBusIntegErrorIdx,
+ OtpDaiIdleIdx,
+ OtpCheckPendingIdx,
+ OtpStatusFieldSize
+ } otp_status_e;
+
+ typedef enum bit [2:0] {
+ OtpNoError,
+ OtpMacroError,
+ OtpMacroEccCorrError,
+ OtpMacroEccUncorrError,
+ OtpMacroWriteBlankError,
+ OtpAccessError,
+ OtpCheckFailError,
+ OtpFsmStateError
+ } otp_err_code_e;
+
+ typedef enum bit [1:0] {
+ OtpNoEccErr,
+ OtpEccCorrErr,
+ OtpEccUncorrErr
+ } otp_ecc_err_e;
+
+ typedef enum bit [1:0] {
+ OtpNoAlert,
+ OtpCheckAlert,
+ OtpMacroAlert
+ } otp_alert_e;
+
+ typedef struct packed {
+ bit read_lock;
+ bit write_lock;
+ } otp_part_access_lock_t;
+
+ // OTP conditions when driving specific port.
+ typedef enum bit [2:0] {
+ DuringOTPInit,
+ DuringOTPDaiBusy,
+ DuringOTPDaiDigest,
+ DuringOTPRead,
+ DriveRandomly
+ } port_drive_condition_e;
+
+ typedef virtual otp_ctrl_if otp_ctrl_vif;
+
+ parameter otp_err_code_e OTP_TERMINAL_ERRS[4] = {OtpMacroEccUncorrError,
+ OtpCheckFailError,
+ OtpFsmStateError,
+ OtpMacroError};
+
+ // functions
+ function automatic int get_part_index(bit [TL_DW-1:0] addr);
+ int index;
+ for (index = 0; index < NumPart; index++) begin
+ if (PartInfo[index].offset > addr) begin
+ index--;
+ break;
+ end
+ end
+ if (index == NumPart) index--;
+ return index;
+ endfunction
+
+ function automatic bit is_secret(bit [TL_DW-1:0] addr);
+ int part_index = get_part_index(addr);
+ return PartInfo[part_index].secret;
+ endfunction
+
+ function automatic bit part_has_digest(int part_idx);
+ return PartInfo[part_idx].hw_digest || PartInfo[part_idx].sw_digest;
+ endfunction
+
+ function automatic bit part_has_hw_digest(int part_idx);
+ return PartInfo[part_idx].hw_digest;
+ endfunction
+
+ function automatic bit is_sw_digest(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ if (PartInfo[part_idx].sw_digest) begin
+ // If the partition contains a digest, it will be located in the last 64bit of the partition.
+ return {addr[TL_DW-1:3], 3'b0} == ((PartInfo[part_idx].offset + PartInfo[part_idx].size) - 8);
+ end else begin
+ return 0;
+ end
+ endfunction
+
+ function automatic bit is_digest(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ if (PartInfo[part_idx].sw_digest || PartInfo[part_idx].hw_digest) begin
+ // If the partition contains a digest, it will be located in the last 64bit of the partition.
+ return {addr[TL_DW-1:3], 3'b0} == ((PartInfo[part_idx].offset + PartInfo[part_idx].size) - 8);
+ end else begin
+ return 0;
+ end
+ endfunction
+
+ function automatic bit is_sw_part(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ return is_sw_part_idx(part_idx);
+ endfunction
+
+ function automatic bit is_sw_part_idx(int part_idx);
+ return (PartInfo[part_idx].variant == Unbuffered);
+ endfunction
+
+ function automatic bit is_hw_part(bit [TL_DW-1:0] addr);
+ int part_idx = get_part_index(addr);
+ return is_hw_part_idx(part_idx);
+ endfunction
+
+ function automatic bit is_hw_part_idx(int part_idx);
+ return (PartInfo[part_idx].variant == Buffered);
+ endfunction
+
+ // Returns true if this partition supports ECC. Otherwise, no ECC errors are reported, and
+ // the single bit errors are not corrected.
+ function automatic bit part_has_integrity(int part_idx);
+ return PartInfo[part_idx].integrity;
+ endfunction
+
+ // Resolve an offset within the software window as an offset within the whole otp_ctrl block.
+ function automatic bit [TL_AW-1:0] get_sw_window_offset(bit [TL_AW-1:0] dai_addr);
+ return dai_addr + SW_WINDOW_BASE_ADDR;
+ endfunction
+
+ function automatic bit [TL_DW-1:0] normalize_dai_addr(bit [TL_DW-1:0] dai_addr);
+ normalize_dai_addr = (is_secret(dai_addr) || is_digest(dai_addr)) ? dai_addr >> 3 << 3 :
+ dai_addr >> 2 << 2;
+ endfunction
+
+ // package sources
+ `include "otp_ctrl_ast_inputs_cfg.sv"
+ `include "otp_ctrl_env_cfg.sv"
+ `include "otp_ctrl_env_cov.sv"
+ `include "otp_ctrl_virtual_sequencer.sv"
+ `include "otp_ctrl_scoreboard.sv"
+ `include "otp_ctrl_env.sv"
+ `include "otp_ctrl_vseq_list.sv"
+
+endpackage
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_if.sv b/src/fuse_ctrl/dv/env/otp_ctrl_if.sv
new file mode 100755
index 0000000..a2ae621
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_if.sv
@@ -0,0 +1,369 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+// This interface collect the broadcast output data from OTP,
+// and drive input requests coming into OTP.
+`define ECC_REG_PATH gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+
+// This only supports buffered partitions.
+`define BUF_PART_OTP_CMD_PATH(i) \
+ tb.dut.gen_partitions[``i``].gen_buffered.u_part_buf.otp_cmd_o
+
+`define LC_PART_OTP_CMD_PATH \
+ tb.dut.gen_partitions[LifeCycleIdx].gen_lifecycle.u_part_buf.otp_cmd_o
+
+`define FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(i) \
+ if (forced_part_access_sel[``i``].read_lock) begin \
+ force tb.dut.part_access[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ force tb.dut.part_access_dai[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ end \
+ if (forced_part_access_sel[``i``].write_lock) begin \
+ force tb.dut.part_access[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ force tb.dut.part_access_dai[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ end
+
+`ifndef PRIM_GENERIC_OTP_PATH
+ `define PRIM_GENERIC_OTP_PATH\
+ tb.dut.u_otp
+`endif
+
+`ifndef PRIM_GENERIC_OTP_CMD_I_PATH
+ `define PRIM_GENERIC_OTP_CMD_I_PATH \
+ `PRIM_GENERIC_OTP_PATH.gen_generic.u_impl_generic.cmd_i
+`endif
+
+interface otp_ctrl_if(input clk_i, input rst_ni);
+ import uvm_pkg::*;
+ import otp_ctrl_env_pkg::*;
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import cip_base_pkg::*;
+
+ // Output from DUT
+ otp_broadcast_t otp_broadcast_o;
+ otp_keymgr_key_t keymgr_key_o;
+ otp_lc_data_t lc_data_o;
+ logic pwr_otp_done_o, pwr_otp_idle_o;
+
+ // Inputs to DUT
+ logic pwr_otp_init_i, scan_en_i, scan_rst_ni, ext_voltage_h_io;
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i, lc_escalate_en_i, lc_check_byp_en_i,
+ lc_creator_seed_sw_rw_en_i, lc_owner_seed_sw_rw_en_i,
+ lc_seed_hw_rd_en_i;
+ prim_mubi_pkg::mubi4_t scanmode_i;
+ otp_ast_rsp_t otp_ast_pwr_seq_h_i;
+ ast_pkg::ast_obs_ctrl_t obs_ctrl_i;
+
+ // Unused in prim_generic_otp memory.
+ logic [OtpTestCtrlWidth-1:0] otp_vendor_test_ctrl_i;
+ logic [OtpTestStatusWidth-1:0] otp_vendor_test_status_o;
+ logic [OtpTestVectWidth-1:0] cio_test_o;
+ logic [OtpTestVectWidth-1:0] cio_test_en_o;
+
+ // Connect with lc_prog push_pull interface.
+ logic lc_prog_req, lc_prog_err;
+ logic lc_prog_err_dly1, lc_prog_no_sta_check;
+
+ // Connect push_pull interfaces ack signals for assertion checks.
+ logic otbn_ack, lc_prog_ack;
+ logic [1:0] flash_acks;
+ logic [NumSramKeyReqSlots-1:0] sram_acks;
+
+ // Variables for internal interface logic.
+ // `lc_escalate_en` is async, take two clock cycles to synchronize.
+ lc_ctrl_pkg::lc_tx_t lc_esc_dly1, lc_esc_dly2;
+
+ // Variable for scoreboard.
+ // For `lc_escalate_en`, any value that is not `Off` is a `On`.
+ bit lc_esc_on;
+
+ // Probe design signal for alert request.
+ logic alert_reqs;
+
+ // Usually the `lc_check_byp_en` will be automatically set to `On` when LC program request is
+ // issued, and stays `On` until reset is issued.
+ // Set this variable to 0 after a LC program request might cause otp checks to fail.
+ bit lc_check_byp_en = 1;
+
+ // Internal veriable to track which sw partitions have ECC reg error.
+ bit [NumPartUnbuf-1:0] force_sw_parts_ecc_reg;
+
+ // DUT configuration object
+ otp_ctrl_ast_inputs_cfg dut_cfg;
+
+ // for DV macros ID
+ string msg_id = "otp_ctrl_if";
+
+ // Lc_err could trigger during LC program, so check intr and status after lc_req is finished.
+ // Lc_err takes one clock cycle to propogate to intr signal. So avoid intr check if it happens
+ // during the transition.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ lc_prog_err_dly1 <= 0;
+ lc_esc_dly1 <= lc_ctrl_pkg::Off;
+ lc_esc_dly2 <= lc_ctrl_pkg::Off;
+ lc_check_byp_en_i <= get_rand_lc_tx_val();
+ lc_esc_on <= 0;
+ end else begin
+ lc_prog_err_dly1 <= lc_prog_err;
+ lc_esc_dly1 <= lc_escalate_en_i;
+ lc_esc_dly2 <= lc_esc_dly1;
+ if (lc_prog_req) begin
+ lc_check_byp_en_i <= lc_check_byp_en ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off;
+ end
+ if (lc_esc_dly2 != lc_ctrl_pkg::Off && !lc_esc_on) begin
+ lc_esc_on <= 1;
+ end
+ end
+ end
+
+ assign lc_prog_no_sta_check = lc_prog_err | lc_prog_err_dly1 | lc_prog_req | lc_esc_on;
+
+ function automatic void drive_pwr_otp_init(logic val);
+ pwr_otp_init_i = val;
+ endfunction
+
+ function automatic void drive_ext_voltage_h_io(logic val);
+ ext_voltage_h_io = val;
+ endfunction
+
+ function automatic void drive_lc_creator_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_creator_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_owner_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_owner_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_dft_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_dft_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_escalate_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_escalate_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_seed_hw_rd_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_seed_hw_rd_en_i = val;
+ endfunction
+
+ function automatic bit under_error_states();
+ return lc_esc_on | alert_reqs;
+ endfunction
+
+ // SW partitions do not have any internal checks.
+ // Here we force internal ECC check to fail.
+ task automatic force_sw_check_fail(
+ bit[NumPartUnbuf-1:0] fail_idx = $urandom_range(1, (1'b1 << NumPartUnbuf) - 1));
+ @(posedge clk_i);
+ if (fail_idx[VendorTestIdx]) begin
+ force tb.dut.gen_partitions[VendorTestIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[VendorTestIdx] = 1;
+ end
+ if (fail_idx[CreatorSwCfgIdx]) begin
+ force tb.dut.gen_partitions[CreatorSwCfgIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[CreatorSwCfgIdx] = 1;
+ end
+ if (fail_idx[OwnerSwCfgIdx]) begin
+ force tb.dut.gen_partitions[OwnerSwCfgIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[OwnerSwCfgIdx] = 1;
+ end
+ if (fail_idx[RotCreatorAuthCodesignIdx]) begin
+ force tb.dut.gen_partitions[RotCreatorAuthCodesignIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[RotCreatorAuthCodesignIdx] = 1;
+ end
+ if (fail_idx[RotCreatorAuthStateIdx]) begin
+ force tb.dut.gen_partitions[RotCreatorAuthStateIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[RotCreatorAuthStateIdx] = 1;
+ end
+ endtask
+
+ task automatic release_sw_check_fail();
+ @(posedge clk_i);
+ if (force_sw_parts_ecc_reg[VendorTestIdx]) begin
+ release tb.dut.gen_partitions[VendorTestIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[VendorTestIdx] = 0;
+ end
+ if (force_sw_parts_ecc_reg[CreatorSwCfgIdx]) begin
+ release tb.dut.gen_partitions[CreatorSwCfgIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[CreatorSwCfgIdx] = 0;
+ end
+ if (force_sw_parts_ecc_reg[OwnerSwCfgIdx]) begin
+ release tb.dut.gen_partitions[OwnerSwCfgIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[OwnerSwCfgIdx] = 0;
+ end
+ if (force_sw_parts_ecc_reg[RotCreatorAuthCodesignIdx]) begin
+ release tb.dut.gen_partitions[RotCreatorAuthCodesignIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[RotCreatorAuthCodesignIdx] = 0;
+ end
+ if (force_sw_parts_ecc_reg[RotCreatorAuthStateIdx]) begin
+ release tb.dut.gen_partitions[RotCreatorAuthStateIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[RotCreatorAuthStateIdx] = 0;
+ end
+ endtask
+
+ // Force prim_generic_otp input cmd_i to a invalid value.
+ task automatic force_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ force `PRIM_GENERIC_OTP_CMD_I_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ endtask
+
+ task automatic release_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ release `PRIM_GENERIC_OTP_CMD_I_PATH;
+ endtask
+
+ // Force part_buf partitions output otp_cmd_o to a invalid value.
+ task automatic force_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+ HwCfg0Idx: force `BUF_PART_OTP_CMD_PATH(HwCfg0Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ HwCfg1Idx: force `BUF_PART_OTP_CMD_PATH(HwCfg1Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ Secret0Idx: force `BUF_PART_OTP_CMD_PATH(Secret0Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ Secret1Idx: force `BUF_PART_OTP_CMD_PATH(Secret1Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ Secret2Idx: force `BUF_PART_OTP_CMD_PATH(Secret2Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ LifeCycleIdx: force `LC_PART_OTP_CMD_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("force invalid otp_cmd_o only supports buffered partitions: %0d", part_idx))
+ end
+ endcase
+ endtask
+
+ task automatic release_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+ HwCfg0Idx: release `BUF_PART_OTP_CMD_PATH(HwCfg0Idx);
+ HwCfg1Idx: release `BUF_PART_OTP_CMD_PATH(HwCfg1Idx);
+ Secret0Idx: release `BUF_PART_OTP_CMD_PATH(Secret0Idx);
+ Secret1Idx: release `BUF_PART_OTP_CMD_PATH(Secret1Idx);
+ Secret2Idx: release `BUF_PART_OTP_CMD_PATH(Secret2Idx);
+ LifeCycleIdx: release `LC_PART_OTP_CMD_PATH;
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("release invalid otp_cmd_o only supports buffered partitions: %0d",
+ part_idx))
+ end
+ endcase
+ endtask
+
+ // This task forces otp_ctrl's internal mubi signals to values that are not mubi::true or mubi::
+ // false. Then scb will check if design treats these values as locking the partition access.
+ task automatic force_part_access_mubi(otp_part_access_lock_t forced_part_access_sel[NumPart-1]);
+ @(posedge clk_i);
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(VendorTestIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(CreatorSwCfgIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(OwnerSwCfgIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(RotCreatorAuthCodesignIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(RotCreatorAuthStateIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(HwCfg0Idx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(HwCfg1Idx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(Secret0Idx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(Secret1Idx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(Secret2Idx)
+ endtask
+
+ task automatic release_part_access_mubi();
+ @(posedge clk_i);
+ release tb.dut.part_access;
+ release tb.dut.part_access_dai;
+ endtask
+
+ // Connectivity assertions for test related I/Os.
+ `ASSERT(LcOtpTestStatusO_A, otp_vendor_test_status_o == `PRIM_GENERIC_OTP_PATH.test_status_o)
+ `ASSERT(LcOtpTestCtrlI_A, otp_vendor_test_ctrl_i == `PRIM_GENERIC_OTP_PATH.test_ctrl_i)
+
+ `ASSERT(CioTestOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |->
+ ##[2:3] cio_test_o == `PRIM_GENERIC_OTP_PATH.test_vect_o)
+ `ASSERT(CioTestOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_o == 0)
+ `ASSERT(CioTestEnOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == '1)
+ `ASSERT(CioTestEnOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == 0)
+
+
+ `define OTP_ASSERT_WO_LC_ESC(NAME, SEQ) \
+ `ASSERT(NAME, SEQ, clk_i, !rst_ni || lc_esc_on || alert_reqs)
+
+ // If pwr_otp_idle is set only if pwr_otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpPwrDoneWhenIdle_A, pwr_otp_idle_o |-> pwr_otp_done_o)
+
+ // otp_broadcast_o is valid only when otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOn_A, pwr_otp_done_o |->
+ otp_broadcast_o.valid == lc_ctrl_pkg::On)
+ // If otp_broadcast is Off, then hw partition is not finished calculation,
+ // then otp init is not done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOff_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off |->
+ pwr_otp_done_o == 0)
+ // Once OTP init is done, otp_broadcast_o output value stays stable until next power cycle
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgStable_A, otp_broadcast_o.valid == lc_ctrl_pkg::On |=>
+ $stable(otp_broadcast_o))
+
+ // Otp_keymgr valid is related to part_digest, should not be changed after otp_pwr_init
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable0_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share0_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable1_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share1_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable2_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_seed_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable3_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.owner_seed_valid))
+
+ // During lc_prog_req, either otp_idle will be reset or lc_error is set
+ `OTP_ASSERT_WO_LC_ESC(LcProgReq_A, $rose(lc_prog_req) |=>
+ (pwr_otp_idle_o == 0 || $rose(lc_prog_err)) within lc_prog_req[*1:$])
+
+ // During fatal alert, check if otp outputs revert back to default value.
+ // Wait three clock cycles until error propogates to each FSM states and regs.
+ `define OTP_FATAL_ERR_ASSERT(NAME, SEQ) \
+ `ASSERT(FatalErr``NAME``, alert_reqs |-> ##3 SEQ)
+
+ `OTP_FATAL_ERR_ASSERT(LcDataValid_A, lc_data_o.valid == 0 && lc_data_o.error == 1)
+ `OTP_FATAL_ERR_ASSERT(LcDataState_A, lc_data_o.state ==
+ PartInvDefault[LcStateOffset*8+:LcStateSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataCount_A, lc_data_o.count ==
+ PartInvDefault[LcTransitionCntOffset*8+:LcTransitionCntSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestUnlockToken_A, lc_data_o.test_unlock_token ==
+ PartInvDefault[TestUnlockTokenOffset*8+:TestUnlockTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestExitToken_A, lc_data_o.test_exit_token ==
+ PartInvDefault[TestExitTokenOffset*8+:TestExitTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataRmaToken_A, lc_data_o.rma_token ==
+ PartInvDefault[RmaTokenOffset*8+:RmaTokenSize*8])
+
+ `OTP_FATAL_ERR_ASSERT(KeymgrKeyData_A, keymgr_key_o.creator_root_key_share0 ==
+ PartInvDefault[CreatorRootKeyShare0Offset*8+:CreatorRootKeyShare0Size*8] &&
+ keymgr_key_o.creator_root_key_share1 ==
+ PartInvDefault[CreatorRootKeyShare1Offset*8+:CreatorRootKeyShare1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(HwCfgOValid_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off)
+ `OTP_FATAL_ERR_ASSERT(HwCfg0OData_A, otp_broadcast_o.hw_cfg0_data ==
+ PartInvDefault[HwCfg0Offset*8+:HwCfg0Size*8])
+ `OTP_FATAL_ERR_ASSERT(HwCfg1OData_A, otp_broadcast_o.hw_cfg1_data ==
+ PartInvDefault[HwCfg1Offset*8+:HwCfg1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(LcProgAck_A, lc_prog_ack == 0)
+ `OTP_FATAL_ERR_ASSERT(FlashAcks_A, flash_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(SramAcks_A, sram_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(OtbnAck_A, otbn_ack == 0)
+
+ `undef OTP_ASSERT_WO_LC_ESC
+ `undef OTP_FATAL_ERR_ASSERT
+ `undef ECC_REG_PATH
+ `undef BUF_PART_OTP_CMD_PATH
+ `undef LC_PART_OTP_CMD_PATH
+ `undef PRIM_GENERIC_OTP_PATH
+ `undef PRIM_GENERIC_OTP_CMD_I_PATH
+ `undef FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL
+endinterface
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_scoreboard.sv b/src/fuse_ctrl/dv/env/otp_ctrl_scoreboard.sv
new file mode 100755
index 0000000..828a7e0
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_scoreboard.sv
@@ -0,0 +1,1696 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+class otp_ctrl_scoreboard #(type CFG_T = otp_ctrl_env_cfg)
+ extends cip_base_scoreboard #(
+ .CFG_T(CFG_T),
+ .RAL_T(otp_ctrl_core_reg_block),
+ .COV_T(otp_ctrl_env_cov)
+ );
+ `uvm_component_param_utils(otp_ctrl_scoreboard #(CFG_T))
+
+ // local variables
+ bit [TL_DW-1:0] otp_a [OTP_ARRAY_SIZE];
+
+ // lc_state and lc_cnt that stored in OTP
+ bit [LC_PROG_DATA_SIZE-1:0] otp_lc_data;
+ bit [EDN_BUS_WIDTH-1:0] edn_data_q[$];
+
+ // This flag is used when reset is issued during otp dai write access.
+ bit dai_wr_ip;
+ int dai_digest_ip = LifeCycleIdx; // Default to LC as it does not have digest.
+ bit ignore_digest_chk = 0;
+
+ // This bit is used for DAI interface to mark if the read access is valid.
+ bit dai_read_valid;
+
+ // This captures the regwen state as configured by the SW side (i.e. without HW modulation
+ // with the idle signal overlaid).
+ bit direct_access_regwen_state = 1;
+
+ // ICEBOX(#17798): currently scb will skip checking the readout value if the ECC error is
+ // uncorrectable. Because if the error is uncorrectable, current scb does not track all the
+ // backdoor injected values.
+ // This issue proposes to track the otp_memory_array in mem_bkdr_if and once backdoor inject any
+ // value, mem_bkdr_if will update its otp_memory_array.
+ bit check_dai_rd_data = 1;
+
+ // Status related variables
+ bit under_chk, under_dai_access;
+ bit [TL_DW-1:0] exp_status, status_mask;
+
+ otp_alert_e exp_alert = OtpNoAlert;
+
+ // TLM agent fifos
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(SRAM_DATA_SIZE)))
+ sram_fifos[NumSramKeyReqSlots];
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(OTBN_DATA_SIZE))) otbn_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE))) flash_addr_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE))) flash_data_fifo;
+ uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)))
+ lc_prog_fifo;
+
+ // local queues to hold incoming packets pending comparison
+
+ `uvm_component_new
+
+ function void build_phase(uvm_phase phase);
+ super.build_phase(phase);
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ sram_fifos[i] = new($sformatf("sram_fifos[%0d]", i), this);
+ end
+ otbn_fifo = new("otbn_fifo", this);
+ flash_addr_fifo = new("flash_addr_fifo", this);
+ flash_data_fifo = new("flash_data_fifo", this);
+ lc_prog_fifo = new("lc_prog_fifo", this);
+ endfunction
+
+ function void connect_phase(uvm_phase phase);
+ super.connect_phase(phase);
+ endfunction
+
+ task run_phase(uvm_phase phase);
+ super.run_phase(phase);
+ fork
+ process_wipe_mem();
+ process_otp_power_up();
+ process_lc_esc();
+ process_lc_prog_req();
+ process_edn_req();
+ check_otbn_rsp();
+ check_flash_rsps();
+ check_sram_rsps();
+ recover_lc_prog_req();
+ join_none
+ endtask
+
+ // Once sequence uses backdoor method to clear memory, this task resets internal otp_a and
+ // resets `cfg.backdoor_clear_mem` to 0.
+ virtual task process_wipe_mem();
+ forever begin
+ @(posedge cfg.backdoor_clear_mem) begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] data;
+ otp_a = '{default:0};
+ otp_lc_data = '{default:0};
+ // secret partitions have been scrambled before writing to OTP.
+ // here calculate the pre-srambled raw data when clearing internal OTP to all 0s.
+ data = descramble_data(0, Secret0Idx);
+ for (int i = Secret0Offset / TL_SIZE;
+ i <= Secret0DigestOffset / TL_SIZE - 1;
+ i++) begin
+ otp_a[i] = ((i - Secret0Offset / TL_SIZE) % 2) ?
+ data[SCRAMBLE_DATA_SIZE-1:TL_DW] : data[TL_DW-1:0];
+ end
+ // secret partitions have been scrambled before writing to OTP.
+ // here calculate the pre-srambled raw data when clearing internal OTP to all 0s.
+ data = descramble_data(0, Secret1Idx);
+ for (int i = Secret1Offset / TL_SIZE;
+ i <= Secret1DigestOffset / TL_SIZE - 1;
+ i++) begin
+ otp_a[i] = ((i - Secret1Offset / TL_SIZE) % 2) ?
+ data[SCRAMBLE_DATA_SIZE-1:TL_DW] : data[TL_DW-1:0];
+ end
+ // secret partitions have been scrambled before writing to OTP.
+ // here calculate the pre-srambled raw data when clearing internal OTP to all 0s.
+ data = descramble_data(0, Secret2Idx);
+ for (int i = Secret2Offset / TL_SIZE;
+ i <= Secret2DigestOffset / TL_SIZE - 1;
+ i++) begin
+ otp_a[i] = ((i - Secret2Offset / TL_SIZE) % 2) ?
+ data[SCRAMBLE_DATA_SIZE-1:TL_DW] : data[TL_DW-1:0];
+ end
+ `uvm_info(`gfn, "clear internal memory and digest", UVM_HIGH)
+ cfg.backdoor_clear_mem = 0;
+ dai_wr_ip = 0;
+ dai_digest_ip = LifeCycleIdx;
+ end
+ end
+ endtask
+
+ // This task process the following logic in during otp_power_up:
+ // 1. After reset deasserted, otp access is locked until pwr_otp_done_o is set
+ // 2. After reset deasserted, if power otp_init request is on, and if testbench uses backdoor to
+ // clear OTP memory to all zeros, clear all digests and re-calculate secret partitions
+ virtual task process_otp_power_up();
+ forever begin
+ wait (cfg.en_scb);
+ @(posedge cfg.otp_ctrl_vif.pwr_otp_done_o || cfg.under_reset ||
+ cfg.otp_ctrl_vif.alert_reqs) begin
+ if (!cfg.under_reset && !cfg.otp_ctrl_vif.alert_reqs && cfg.en_scb) begin
+ otp_ctrl_part_pkg::otp_hw_cfg0_data_t exp_hw_cfg0_data;
+ otp_ctrl_part_pkg::otp_hw_cfg1_data_t exp_hw_cfg1_data;
+ otp_ctrl_pkg::otp_keymgr_key_t exp_keymgr_data;
+ otp_ctrl_pkg::otp_lc_data_t exp_lc_data;
+ bit [otp_ctrl_pkg::KeyMgrKeyWidth-1:0] exp_keymgr_key0, exp_keymgr_key1;
+
+ if (PartInfo[dai_digest_ip].sw_digest || PartInfo[dai_digest_ip].hw_digest) begin
+ bit [TL_DW-1:0] otp_addr = PART_OTP_DIGEST_ADDRS[dai_digest_ip];
+ otp_a[otp_addr] = cfg.mem_bkdr_util_h.read32(otp_addr << 2);
+ otp_a[otp_addr+1] = cfg.mem_bkdr_util_h.read32((otp_addr << 2) + 4);
+ dai_digest_ip = LifeCycleIdx;
+ end
+ predict_digest_csrs();
+
+ if (cfg.otp_ctrl_vif.under_error_states() == 0) begin
+ // Dai access is unlocked because the power init is done
+ void'(ral.direct_access_regwen.predict(direct_access_regwen_state));
+
+ // Dai idle is set because the otp init is done
+ exp_status[OtpDaiIdleIdx] = 1;
+ end
+
+ // Hwcfg_o gets data from OTP HW cfg partition
+ exp_hw_cfg0_data = cfg.otp_ctrl_vif.under_error_states() ?
+ otp_ctrl_part_pkg::PartInvDefault[HwCfg0Offset*8 +: HwCfg0Size*8] :
+ otp_hw_cfg0_data_t'({<<32 {otp_a[HwCfg0Offset/4 +: HwCfg0Size/4]}});
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.valid, lc_ctrl_pkg::On)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.hw_cfg0_data, exp_hw_cfg0_data)
+
+ // Hwcfg_o gets data from OTP HW cfg partition
+ exp_hw_cfg1_data = cfg.otp_ctrl_vif.under_error_states() ?
+ otp_ctrl_part_pkg::PartInvDefault[HwCfg1Offset*8 +: HwCfg1Size*8] :
+ otp_hw_cfg1_data_t'({<<32 {otp_a[HwCfg1Offset/4 +: HwCfg1Size/4]}});
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.valid, lc_ctrl_pkg::On)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.otp_broadcast_o.hw_cfg1_data, exp_hw_cfg1_data)
+
+ if (!cfg.otp_ctrl_vif.under_error_states()) begin
+ // ---------------------- Check lc_data_o output -----------------------------------
+ // Because initialization was succesful, the valid should be set and error should be
+ // reset.
+ exp_lc_data.valid = 1;
+ exp_lc_data.error = 0;
+
+ // Secrets and tokens valid signals are depend on whether secret partitions are
+ // locked.
+ exp_lc_data.secrets_valid = get_otp_digest_val(Secret2Idx) ? On : Off;
+ exp_lc_data.test_tokens_valid = get_otp_digest_val(Secret0Idx) ? On : Off;
+ exp_lc_data.rma_token_valid = get_otp_digest_val(Secret2Idx) ? On : Off;
+
+ // LC output is depend on LC partitions value.
+ exp_lc_data.count = otp_lc_data[0 +: LcCountWidth];
+ exp_lc_data.state = otp_lc_data[LcCountWidth +: LcStateWidth];
+
+ // Token values are depend on secret partitions value.
+ exp_lc_data.test_unlock_token =
+ {<<32 {otp_a[TestUnlockTokenOffset/4 +: TestUnlockTokenSize/4]}};
+ exp_lc_data.test_exit_token =
+ {<<32 {otp_a[TestExitTokenOffset/4 +: TestExitTokenSize/4]}};
+ exp_lc_data.rma_token = {<<32 {otp_a[RmaTokenOffset/4 +: RmaTokenSize/4]}};
+
+ // Check otp_lc_data_t struct by item is easier to debug.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.valid, exp_lc_data.valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.error, exp_lc_data.error)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.state, exp_lc_data.state)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.count, exp_lc_data.count)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.secrets_valid, exp_lc_data.secrets_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_tokens_valid,
+ exp_lc_data.test_tokens_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_unlock_token,
+ exp_lc_data.test_unlock_token)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.test_exit_token, exp_lc_data.test_exit_token)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.rma_token_valid, exp_lc_data.rma_token_valid)
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o.rma_token, exp_lc_data.rma_token)
+
+ // Check otp_lc_data_t all together in case there is any missed item.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.lc_data_o, exp_lc_data)
+
+ // ---------------------- Check keymgr_key_o output ---------------------------------
+ // Otp_keymgr outputs creator and owner keys from secret partitions.
+ // Depends on lc_seed_hw_rd_en_i, it will output the real keys or a constant
+ exp_keymgr_data = '0;
+ exp_keymgr_data.creator_root_key_share0_valid = get_otp_digest_val(Secret2Idx) != 0;
+ if (cfg.otp_ctrl_vif.lc_seed_hw_rd_en_i == lc_ctrl_pkg::On) begin
+ exp_keymgr_data.creator_root_key_share0 =
+ {<<32 {otp_a[CreatorRootKeyShare0Offset/4 +: CreatorRootKeyShare0Size/4]}};
+ end else begin
+ exp_keymgr_data.creator_root_key_share0 =
+ PartInvDefault[CreatorRootKeyShare0Offset*8 +: CreatorRootKeyShare0Size*8];
+ end
+ // Check otp_keymgr_key_t struct by item is easier to debug.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.keymgr_key_o.creator_root_key_share0_valid,
+ exp_keymgr_data.creator_root_key_share0_valid)
+ exp_keymgr_data.creator_root_key_share1_valid = get_otp_digest_val(Secret2Idx) != 0;
+ if (cfg.otp_ctrl_vif.lc_seed_hw_rd_en_i == lc_ctrl_pkg::On) begin
+ exp_keymgr_data.creator_root_key_share1 =
+ {<<32 {otp_a[CreatorRootKeyShare1Offset/4 +: CreatorRootKeyShare1Size/4]}};
+ end else begin
+ exp_keymgr_data.creator_root_key_share1 =
+ PartInvDefault[CreatorRootKeyShare1Offset*8 +: CreatorRootKeyShare1Size*8];
+ end
+ // Check otp_keymgr_key_t struct by item is easier to debug.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.keymgr_key_o.creator_root_key_share1_valid,
+ exp_keymgr_data.creator_root_key_share1_valid)
+
+ // Check otp_keymgr_key_t struct all together in case there is any missed item.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.keymgr_key_o, exp_keymgr_data)
+
+ if (cfg.en_cov) begin
+ cov.keymgr_o_cg.sample(cfg.otp_ctrl_vif.lc_seed_hw_rd_en_i == lc_ctrl_pkg::On,
+ exp_keymgr_data.creator_root_key_share0_valid);
+ end
+ end
+ end else if (cfg.otp_ctrl_vif.alert_reqs) begin
+ // Ignore digest CSR check when otp_ctrl initialization is interrupted by fatal errors.
+ // SCB cannot predict how many partitions already finished initialization and updated
+ // the digest value to CSRs.
+ ignore_digest_chk = 1;
+ end
+ if (cfg.en_cov) begin
+ bit [NumPart-2:0] parts_locked;
+ foreach (parts_locked[i]) parts_locked[i] = (get_otp_digest_val(i) != 0);
+ cov.power_on_cg.sample(cfg.otp_ctrl_vif.lc_esc_on, parts_locked);
+ end
+ end
+ end
+ endtask
+
+ // This task monitors internal escalation triggered by two methods:
+ // 1. Externally lc_escalation_en is set to lc_ctrl_pkg::On.
+ // 2. Internal fatal alert triggered and all partitions are driven to error states.
+ virtual task process_lc_esc();
+ forever begin
+ wait(cfg.otp_ctrl_vif.alert_reqs == 1 && cfg.en_scb);
+
+ if (cfg.otp_ctrl_vif.lc_esc_on == 0) `DV_CHECK_NE(exp_alert, OtpNoAlert)
+
+ if (exp_alert != OtpCheckAlert) set_exp_alert("fatal_check_error", 1, 5);
+
+ // If the lc_escalation is triggered by internal fatal alert, wait 2 negedge until status is
+ // updated internally
+ if (cfg.otp_ctrl_vif.lc_esc_on == 0) begin
+ cfg.clk_rst_vif.wait_n_clks(2);
+ exp_status[OtpCheckPendingIdx] = 0;
+ exp_status[OtpDaiIdleIdx] = 0;
+ end else begin
+ exp_status = '0;
+ // Only lc_esc_on will set these bits to 1.
+ exp_status[OtpDerivKeyFsmErrIdx:OtpLfsrFsmErrIdx] = '1;
+ end
+
+ // Update status bits.
+ foreach (FATAL_EXP_STATUS[i]) begin
+ if (FATAL_EXP_STATUS[i]) begin
+ predict_err(.status_err_idx(otp_status_e'(i)), .err_code(OtpFsmStateError),
+ .update_esc_err(1));
+ end
+ end
+
+ // Update digest values and direct_access_regwen.
+ predict_rdata(1, 0, 0);
+ void'(ral.direct_access_regwen.predict(.value(0), .kind(UVM_PREDICT_READ)));
+
+ // DAI access is locked until reset, so no need to backdoor read otp write value until reset.
+
+ wait(cfg.otp_ctrl_vif.alert_reqs == 0);
+ end
+ endtask
+
+ // This task monitors if lc_program req is interrupted by reset.
+ // If it happens, scb cannot predict how many bits have been written to OTP_CTRL.
+ // So here we will backdoor read back OTP lc partitions bits.
+ virtual task recover_lc_prog_req();
+ forever begin
+ wait(cfg.otp_ctrl_vif.lc_prog_req == 1);
+ wait(cfg.otp_ctrl_vif.lc_prog_req == 0);
+ // Wait one 1ps to avoid race condition.
+ #1ps;
+ if (cfg.otp_ctrl_vif.rst_ni == 0) begin
+ for (int i = 0; i < LC_PROG_DATA_SIZE/32; i++) begin
+ otp_lc_data[i*32+:32] = cfg.mem_bkdr_util_h.read32(LifeCycleOffset + i * 4);
+ end
+ end
+ end
+ endtask
+
+ virtual task process_lc_prog_req();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)) rcv_item;
+ bit exp_err_bit;
+ bit [15:0] rcv_words [LC_PROG_DATA_SIZE/16];
+
+ lc_prog_fifo.get(rcv_item);
+
+ // LCI is updated by OTP word.
+ rcv_words = {<< 16{rcv_item.h_data}};
+ foreach (rcv_words[i]) begin
+ bit [15:0] curr_word = otp_lc_data[i*16 +: 16];
+ if ((curr_word & rcv_words[i]) == curr_word) otp_lc_data[i*16 +: 16] = rcv_words[i];
+ else exp_err_bit = 1;
+ end
+
+ if (exp_err_bit) predict_err(OtpLciErrIdx, OtpMacroWriteBlankError);
+ else predict_no_err(OtpLciErrIdx);
+
+ // LC program request data is valid means no OTP macro error.
+ `DV_CHECK_EQ(rcv_item.d_data, exp_err_bit)
+
+ if (cfg.en_cov) cov.lc_prog_cg.sample(exp_err_bit);
+ end
+ endtask
+
+ virtual task process_edn_req();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(EDN_DATA_WIDTH)) edn_item;
+ edn_fifos[0].get(edn_item);
+ edn_data_q.push_back(edn_item.d_data[EDN_BUS_WIDTH-1:0]);
+ end
+ endtask
+
+ virtual task check_otbn_rsp();
+ forever begin
+ push_pull_item#(.DeviceDataWidth(OTBN_DATA_SIZE)) rcv_item;
+ bit [SCRAMBLE_KEY_SIZE-1:0] edn_key2, edn_key1;
+ bit [SCRAMBLE_KEY_SIZE-1:0] sram_key;
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+ bit [OtbnKeyWidth-1:0] key, exp_key;
+ bit [OtbnNonceWidth-1:0] nonce, exp_nonce;
+ bit seed_valid;
+ bit part_locked;
+
+ otbn_fifo.get(rcv_item);
+ seed_valid = rcv_item.d_data[0];
+ nonce = rcv_item.d_data[1+:OtbnNonceWidth];
+ key = rcv_item.d_data[OtbnNonceWidth+1+:OtbnKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+
+ // seed is valid as long as secret1 is locked
+ `DV_CHECK_EQ(seed_valid, part_locked, "otbn seed_valid mismatch")
+
+ // If edn_data_q matches the OTBN requested size, check OTBN outputs
+ if (edn_data_q.size() == NUM_OTBN_EDN_REQ) begin
+ {exp_nonce, edn_key2, edn_key1} = {<<32{edn_data_q}};
+
+ // check nonce value
+ `DV_CHECK_EQ(nonce, exp_nonce, "otbn nonce mismatch")
+
+ // calculate key
+ sram_key = get_key_from_otp(part_locked, SramDataKeySeedOffset / 4);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key1),
+ .num_round(2));
+
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key2),
+ .num_round(2));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, "otbn key mismatch")
+
+ if (cfg.en_cov) cov.otbn_req_cg.sample(part_locked);
+
+ // If during OTBN key request, the LFSR timer expired and trigger an EDN request to acquire
+ // two EDN keys, then ignore the OTBN output checking, because scb did not know which EDN
+ // keys are used for LFSR.
+ // Thus any edn_data_q size equal to (16+2*N) is exempted from checking.
+ end else if ((edn_data_q.size() - NUM_OTBN_EDN_REQ) % 2 != 0) begin
+ `uvm_error(`gfn, $sformatf("Unexpected edn_data_q size (%0d) during OTBN request",
+ edn_data_q.size()))
+ end
+ edn_data_q.delete();
+ end
+ endtask
+
+ virtual task check_flash_rsps();
+ for (int i = FlashDataKey; i <= FlashAddrKey; i++) begin
+ automatic digest_sel_e sel_flash = digest_sel_e'(i);
+ fork
+ forever begin
+ push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE)) rcv_item;
+ bit [SCRAMBLE_KEY_SIZE-1:0] flash_key;
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+ bit [FlashKeyWidth-1:0] key, exp_key;
+ bit seed_valid, part_locked;
+ int flash_key_index;
+
+ if (sel_flash == FlashAddrKey) begin
+ flash_addr_fifo.get(rcv_item);
+ flash_key_index = FlashAddrKeySeedOffset / 4;
+ end else begin
+ flash_data_fifo.get(rcv_item);
+ flash_key_index = FlashDataKeySeedOffset / 4;
+ end
+ seed_valid = rcv_item.d_data[0];
+ key = rcv_item.d_data[1+:FlashKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+ `DV_CHECK_EQ(seed_valid, part_locked,
+ $sformatf("flash %0s seed_valid mismatch", sel_flash.name()))
+
+ // calculate key
+ flash_key = get_key_from_otp(part_locked, flash_key_index);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[sel_flash]),
+ .key(flash_key),
+ .final_const(RndCnstDigestConst[sel_flash]));
+
+ flash_key = get_key_from_otp(part_locked, flash_key_index + 4);
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[sel_flash]),
+ .key(flash_key),
+ .final_const(RndCnstDigestConst[sel_flash]));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, $sformatf("flash %s key mismatch", sel_flash.name()))
+
+ if (cfg.en_cov) cov.flash_req_cg.sample(sel_flash, part_locked);
+ end
+ join_none;
+ end
+ endtask
+
+ virtual task check_sram_rsps();
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ automatic int index = i;
+ fork
+ forever begin
+ push_pull_item#(.DeviceDataWidth(SRAM_DATA_SIZE)) rcv_item;
+ sram_key_t key, exp_key;
+ sram_nonce_t nonce, exp_nonce;
+ bit seed_valid, part_locked;
+ bit [SCRAMBLE_KEY_SIZE-1:0] edn_key2, edn_key1;
+ bit [SCRAMBLE_KEY_SIZE-1:0] sram_key; // key used as input to present algo
+ bit [SCRAMBLE_DATA_SIZE-1:0] exp_key_lower, exp_key_higher;
+
+ sram_fifos[index].get(rcv_item);
+ seed_valid = rcv_item.d_data[0];
+ nonce = rcv_item.d_data[1+:SramNonceWidth];
+ key = rcv_item.d_data[SramNonceWidth+1+:SramKeyWidth];
+ part_locked = {`gmv(ral.secret1_digest[0]), `gmv(ral.secret1_digest[1])} != '0;
+
+ // seed is valid as long as secret1 is locked
+ `DV_CHECK_EQ(seed_valid, part_locked, $sformatf("sram_%0d seed_valid mismatch", index))
+
+ // If edn_data_q matches the OTBN requested size, check OTBN outputs
+ if (edn_data_q.size() == NUM_SRAM_EDN_REQ) begin
+ {exp_nonce, edn_key2, edn_key1} = {<<32{edn_data_q}};
+
+ // check nonce value
+ `DV_CHECK_EQ(nonce, exp_nonce, $sformatf("sram_%0d nonce mismatch", index))
+
+ // calculate key
+ sram_key = get_key_from_otp(part_locked, SramDataKeySeedOffset / 4);
+ exp_key_lower = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key1),
+ .num_round(2));
+
+ exp_key_higher = present_encode_with_final_const(
+ .data(RndCnstDigestIV[SramDataKey]),
+ .key(sram_key),
+ .final_const(RndCnstDigestConst[SramDataKey]),
+ .second_key(edn_key2),
+ .num_round(2));
+ exp_key = {exp_key_higher, exp_key_lower};
+ `DV_CHECK_EQ(key, exp_key, $sformatf("sram_%0d key mismatch", index))
+ if (cfg.en_cov) cov.sram_req_cg.sample(index, part_locked);
+
+ end else if ((edn_data_q.size() - NUM_SRAM_EDN_REQ) % 2 != 0) begin
+ `uvm_error(`gfn, $sformatf("Unexpected edn_data_q size (%0d) during SRAM request",
+ edn_data_q.size()))
+ end
+ edn_data_q.delete();
+ end
+ join_none
+ end
+ endtask
+
+ virtual task process_tl_access(tl_seq_item item, tl_channels_e channel, string ral_name);
+ bit write = item.is_write();
+ uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ bit [TL_AW-1:0] addr_mask = ral.get_addr_mask();
+
+ bit addr_phase_read = (!write && channel == AddrChannel);
+ bit addr_phase_write = (write && channel == AddrChannel);
+ bit data_phase_read = (!write && channel == DataChannel);
+ bit data_phase_write = (write && channel == DataChannel);
+
+ if (ral_name != "otp_ctrl_prim_reg_block") begin
+ process_core_tl_access(item, csr_addr, ral_name, addr_mask,
+ addr_phase_read, addr_phase_write, data_phase_read, data_phase_write);
+ end else begin
+ process_prim_tl_access(item, csr_addr, ral_name, addr_phase_write, data_phase_read);
+ end
+ endtask
+
+ virtual function void process_prim_tl_access(tl_seq_item item, uvm_reg_addr_t csr_addr,
+ string ral_name, bit addr_phase_write, bit data_phase_read);
+
+ uvm_reg csr;
+ dv_base_reg dv_reg;
+ csr = cfg.ral_models[ral_name].default_map.get_reg_by_offset(csr_addr);
+ `DV_CHECK_NE_FATAL(csr, null)
+ `downcast(dv_reg, csr)
+
+ if (addr_phase_write) begin
+ void'(csr.predict(.value(item.a_data), .kind(UVM_PREDICT_WRITE), .be(item.a_mask)));
+ end else if (data_phase_read) begin
+ `DV_CHECK_EQ((csr.get_mirrored_value() | status_mask), (item.d_data | status_mask),
+ $sformatf("reg name: status, compare_mask %0h", status_mask))
+ end
+ endfunction
+
+ virtual function void process_core_tl_access(tl_seq_item item, uvm_reg_addr_t csr_addr,
+ string ral_name, bit [TL_AW-1:0] addr_mask, bit addr_phase_read, bit addr_phase_write,
+ bit data_phase_read, bit data_phase_write);
+
+ bit do_read_check = 1;
+ uvm_reg csr;
+ dv_base_reg dv_reg;
+ string csr_name;
+
+ `uvm_info(`gfn, $sformatf("sw state %d, reg state %d", direct_access_regwen_state,
+ `gmv(ral.direct_access_regwen)), UVM_LOW);
+
+ // if access was to a valid csr, get the csr handle
+ if (csr_addr inside {cfg.ral_models[ral_name].csr_addrs}) begin
+ csr = cfg.ral_models[ral_name].default_map.get_reg_by_offset(csr_addr);
+ `DV_CHECK_NE_FATAL(csr, null)
+ `downcast(dv_reg, csr)
+ // SW CFG window
+ end else if ((csr_addr & addr_mask) inside
+ {[SW_WINDOW_BASE_ADDR : SW_WINDOW_BASE_ADDR + SW_WINDOW_SIZE]}) begin
+ if (data_phase_read) begin
+ bit [TL_AW-1:0] dai_addr = (csr_addr & addr_mask - SW_WINDOW_BASE_ADDR);
+ bit [TL_AW-1:0] otp_addr = dai_addr >> 2;
+ int part_idx = get_part_index(dai_addr);
+ bit [TL_DW-1:0] read_out;
+ int ecc_err = OtpNoEccErr;
+
+ // We can't get an ECC error if the partition does not have integrity.
+ if (part_has_integrity(part_idx)) begin
+ ecc_err = read_a_word_with_ecc(dai_addr, read_out);
+ end else begin
+ ecc_err = read_a_word_with_ecc_raw(dai_addr, read_out);
+ end
+
+ if (part_has_digest(part_idx) && cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[part_idx].sample(.read_lock(0),
+ .write_lock(get_digest_reg_val(part_idx) != 0), .is_write(0));
+ end
+
+ // Any alert that indicates the OTP block is in the final error state should not enter the
+ // logic here, but gated at `is_tl_mem_access_allowed` function.
+ `DV_CHECK_EQ(cfg.otp_ctrl_vif.alert_reqs, 0)
+
+ // ECC uncorrectable errors are gated by `is_tl_mem_access_allowed` function.
+ if (ecc_err != OtpNoEccErr && part_has_integrity(part_idx)) begin
+
+ predict_err(otp_status_e'(part_idx), OtpMacroEccCorrError);
+ if (ecc_err == OtpEccCorrErr) begin
+ `DV_CHECK_EQ(item.d_data, otp_a[otp_addr],
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ end else begin
+ // Only check the first 16 bits because if ECC readout detects uncorrectable error, it
+ // won't continue read the remaining 16 bits.
+ `DV_CHECK_EQ(item.d_data & 16'hffff, read_out & 16'hffff,
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ end
+ // If there is an injected error, but the partition cannot detect it, we have to compare
+ // to the value read via the backdoor instead of otp_a[otp_addr] since otherwise the
+ // perturbed value does not get modelled correctly.
+ end else if (ecc_err != OtpNoEccErr && !part_has_integrity(part_idx)) begin
+ `DV_CHECK_EQ(item.d_data, read_out,
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ predict_no_err(otp_status_e'(part_idx));
+ end else if (ecc_err == OtpNoEccErr) begin
+ `DV_CHECK_EQ(item.d_data, otp_a[otp_addr],
+ $sformatf("mem read mismatch at TLUL addr %0h, csr_addr %0h",
+ csr_addr, dai_addr))
+ predict_no_err(otp_status_e'(part_idx));
+ end
+ end
+ return;
+ end else begin
+ `uvm_fatal(`gfn, $sformatf("Access unexpected addr 0x%0h", csr_addr))
+ end
+
+ csr_name = csr.get_name();
+
+ if (addr_phase_write) begin
+ if (cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs && csr_name == "direct_access_cmd") begin
+ cov.req_dai_access_after_alert_cg.sample(item.a_data);
+ end
+
+ // Skip predict if the register is locked by `direct_access_regwen`.
+ // An exception is the direct_access_regwen which may always be written.
+ if (ral.direct_access_regwen.locks_reg_or_fld(dv_reg) &&
+ `gmv(ral.direct_access_regwen) == 0 &&
+ csr_name != "direct_access_regwen") return;
+
+ void'(csr.predict(.value(item.a_data), .kind(UVM_PREDICT_WRITE), .be(item.a_mask)));
+ end
+
+ // process the csr req
+ // for write, update local variable and fifo at address phase
+ // for read, update predication at address phase and compare at data phase
+ case (csr_name)
+ // add individual case item for each csr
+ "intr_state": begin
+ if (data_phase_read) begin
+ // Disable intr_state checking when lc_program is in progress, because scb cannot
+ // accurately predict when program_error will be triggered.
+ // We will check the intr_state after lc_program request is done, and the error bit will
+ // be checked in the `process_lc_prog_req` task.
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check) do_read_check = 0;
+ if (do_read_check) begin
+ bit [TL_DW-1:0] intr_en = `gmv(ral.intr_enable);
+ bit [NumOtpCtrlIntr-1:0] intr_exp = `gmv(ral.intr_state);
+
+ foreach (intr_exp[i]) begin
+ otp_intr_e intr = otp_intr_e'(i);
+ `DV_CHECK_CASE_EQ(cfg.intr_vif.pins[i], (intr_en[i] & intr_exp[i]),
+ $sformatf("Interrupt_pin: %0s", intr.name));
+ if (cfg.en_cov) begin
+ cov.intr_cg.sample(i, intr_en[i], item.d_data[i]);
+ cov.intr_pins_cg.sample(i, cfg.intr_vif.pins[i]);
+ end
+ end
+ end
+ end
+ end
+ "intr_test": begin
+ if (addr_phase_write) begin
+ bit [TL_DW-1:0] intr_en = `gmv(ral.intr_enable);
+ bit [NumOtpCtrlIntr-1:0] intr_exp = `gmv(ral.intr_state) | item.a_data;
+
+ void'(ral.intr_state.predict(.value(intr_exp)));
+ if (cfg.en_cov) begin
+ foreach (intr_exp[i]) begin
+ cov.intr_test_cg.sample(i, item.a_data[i], intr_en[i], intr_exp[i]);
+ end
+ end
+ end
+ end
+ "direct_access_cmd": begin
+ if (addr_phase_write && !cfg.otp_ctrl_vif.under_error_states()) begin
+ // here only normalize to 2 lsb, if is secret, will be reduced further
+ bit [TL_AW-1:0] dai_addr = normalize_dai_addr(`gmv(ral.direct_access_address));
+ int part_idx = get_part_index(dai_addr);
+ bit sw_read_lock = 0;
+ void'(ral.direct_access_regwen.predict(0));
+ under_dai_access = 1;
+
+ // Check if it is sw partition read lock - this can be used in `DaiRead` branch and also
+ // coverage collection.
+ if (part_idx == VendorTestIdx) begin
+ sw_read_lock = `gmv(ral.vendor_test_read_lock) == 0;
+ end else if (part_idx == CreatorSwCfgIdx) begin
+ sw_read_lock = `gmv(ral.creator_sw_cfg_read_lock) == 0;
+ end else if (part_idx == OwnerSwCfgIdx) begin
+ sw_read_lock = `gmv(ral.owner_sw_cfg_read_lock) == 0;
+ end else if (part_idx == RotCreatorAuthCodesignIdx) begin
+ sw_read_lock = `gmv(ral.rot_creator_auth_codesign_read_lock) == 0;
+ end else if (part_idx == RotCreatorAuthStateIdx) begin
+ sw_read_lock = `gmv(ral.rot_creator_auth_state_read_lock) == 0;
+ end
+
+ // LC partition cannot be access via DAI
+ if (part_idx == LifeCycleIdx) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ if (item.a_data == DaiRead) predict_rdata(is_secret(dai_addr), 0, 0);
+ end else begin
+ // Collect coverage.
+ if (cfg.en_cov) begin
+ if (part_idx == Secret2Idx) begin
+ cov.dai_access_secret2_cg.sample(
+ !(cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On),
+ dai_cmd_e'(item.a_data));
+ end else if (is_sw_part_idx(part_idx) && part_has_digest(part_idx) &&
+ item.a_data inside {DaiRead, DaiWrite}) begin
+ cov.unbuf_access_lock_cg_wrap[part_idx].sample(.read_lock(sw_read_lock),
+ .write_lock(get_digest_reg_val(part_idx) != 0),
+ .is_write(item.a_data == DaiWrite));
+
+ end
+ end
+
+ case (item.a_data)
+ DaiDigest: cal_digest_val(part_idx);
+ DaiRead: begin
+ // Check if it is sw partition read lock
+ check_dai_rd_data = 1;
+
+ // SW partitions write read_lock_csr can lock read access.
+ if (sw_read_lock ||
+ // Secret partitions cal digest can also lock read access.
+ // However, digest is always readable except SW partitions (Issue #5752).
+ (is_secret(dai_addr) && get_digest_reg_val(part_idx) != 0 &&
+ !is_digest(dai_addr)) ||
+ // If the partition has creator key material and lc_creator_seed_sw_rw is
+ // disable, then return access error.
+ (PartInfo[part_idx].iskeymgr_creator && !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr), 0, 0);
+ end else if (sw_read_lock ||
+ // Secret partitions cal digest can also lock read access.
+ // However, digest is always readable except SW partitions (Issue #5752).
+ (is_secret(dai_addr) && get_digest_reg_val(part_idx) != 0 &&
+ !is_digest(dai_addr)) ||
+ // If the partition has owner key material and lc_owner_seed_sw_rw is disable,
+ // then return access error.
+ (PartInfo[part_idx].iskeymgr_owner && !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr), 0, 0);
+
+ end else begin
+ bit [TL_DW-1:0] read_out0, read_out1;
+ bit [TL_AW-1:0] otp_addr = get_scb_otp_addr();
+ int ecc_err = 0;
+
+ // Backdoor read to check if there is any ECC error.
+ if (part_has_integrity(part_idx)) begin
+ ecc_err = read_a_word_with_ecc(dai_addr, read_out0);
+ if (is_secret(dai_addr) || is_digest(dai_addr)) begin
+ ecc_err = max2(read_a_word_with_ecc(dai_addr + 4, read_out1), ecc_err);
+ end
+ end else begin
+ ecc_err = read_a_word_with_ecc_raw(dai_addr, read_out0);
+ if (is_secret(dai_addr) || is_digest(dai_addr)) begin
+ ecc_err = max2(read_a_word_with_ecc_raw(dai_addr + 4, read_out1), ecc_err);
+ end
+ end
+
+ if (ecc_err == OtpEccCorrErr && part_has_integrity(part_idx)) begin
+ predict_err(OtpDaiErrIdx, OtpMacroEccCorrError);
+ backdoor_update_otp_array(dai_addr);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ otp_a[otp_addr], otp_a[otp_addr+1]);
+ end else if (ecc_err == OtpEccUncorrErr && part_has_integrity(part_idx)) begin
+ predict_err(OtpDaiErrIdx, OtpMacroEccUncorrError);
+ // Max wait 20 clock cycles because scb did not know when exactly OTP will
+ // finish reading and reporting the uncorrectable error.
+ set_exp_alert("fatal_macro_error", 1, 20);
+ predict_rdata(1, 0, 0);
+ // Some partitions do not interpret/report ECC errors. In those cases
+ // we still need to model the read data correctly if it has been perturbed.
+ end else if (ecc_err inside {OtpEccCorrErr, OtpEccUncorrErr} &&
+ !part_has_integrity(part_idx)) begin
+ predict_no_err(OtpDaiErrIdx);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ read_out0, read_out1);
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ predict_rdata(is_secret(dai_addr) || is_digest(dai_addr),
+ otp_a[otp_addr], otp_a[otp_addr+1]);
+ end
+ end
+ end
+ DaiWrite: begin
+ bit[TL_AW-1:0] otp_addr = get_scb_otp_addr();
+ bit is_write_locked;
+ // check if write locked
+ if (part_has_digest(part_idx)) begin
+ is_write_locked = get_digest_reg_val(part_idx) != 0;
+ end else begin
+ is_write_locked = 0;
+ end
+
+ if (is_write_locked || (PartInfo[part_idx].iskeymgr_creator &&
+ !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ end else if (is_write_locked || (PartInfo[part_idx].iskeymgr_owner &&
+ !is_digest(dai_addr) &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ // write digest
+ if (is_sw_digest(dai_addr)) begin
+ bit [TL_DW*2-1:0] curr_digest, prev_digest;
+ curr_digest = {`gmv(ral.direct_access_wdata[1]),
+ `gmv(ral.direct_access_wdata[0])};
+ prev_digest = {otp_a[otp_addr+1], otp_a[otp_addr]};
+ dai_wr_ip = 1;
+ // allow bit write
+ if ((prev_digest & curr_digest) == prev_digest) begin
+ update_digest_to_otp(part_idx, curr_digest);
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end else if (is_digest(dai_addr)) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ // write OTP memory
+ end else begin
+ dai_wr_ip = 1;
+ if (!is_secret(dai_addr)) begin
+ bit [TL_DW-1:0] wr_data = `gmv(ral.direct_access_wdata[0]);
+ // allow bit write
+ if ((otp_a[otp_addr] & wr_data) == otp_a[otp_addr]) begin
+ otp_a[otp_addr] = wr_data;
+ check_otp_idle(.val(0), .wait_clks(3));
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end else begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] secret_data = {otp_a[otp_addr + 1],
+ otp_a[otp_addr]};
+ bit [SCRAMBLE_DATA_SIZE-1:0] wr_data = {`gmv(ral.direct_access_wdata[1]),
+ `gmv(ral.direct_access_wdata[0])};
+ wr_data = scramble_data(wr_data, part_idx);
+ secret_data = scramble_data(secret_data, part_idx);
+ if ((secret_data & wr_data) == secret_data) begin
+ otp_a[otp_addr] = `gmv(ral.direct_access_wdata[0]);
+ otp_a[otp_addr + 1] = `gmv(ral.direct_access_wdata[1]);
+ // wait until secret scrambling is done
+ check_otp_idle(.val(0), .wait_clks(34));
+ end else begin
+ predict_err(OtpDaiErrIdx, OtpMacroWriteBlankError);
+ end
+ end
+ end
+ end
+ end
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid cmd: %0d", item.a_data))
+ end
+ endcase
+ // regwen is set to 0 only if the dai operation is successfully
+ if (`gmv(ral.intr_state.otp_error) == 0) void'(ral.direct_access_regwen.predict(0));
+ end
+ end
+ end
+ "status": begin
+ if (addr_phase_read) begin
+ void'(ral.status.predict(.value(exp_status), .kind(UVM_PREDICT_READ)));
+
+ // update status mask
+ status_mask = 0;
+ // Mask out check_pending field - we do not know how long it takes to process checks.
+ // Check failure can trigger all kinds of errors.
+ if (under_chk) status_mask = '1;
+
+ // Mask out otp_dai access related field - we do not know how long it takes to finish
+ // DAI access.
+ if (under_dai_access) begin
+ status_mask[OtpDaiIdleIdx] = 1;
+ status_mask[OtpDaiErrIdx] = 1;
+ end
+
+ // Mask out LCI error bit if lc_req is set.
+ if (cfg.otp_ctrl_vif.lc_prog_no_sta_check) status_mask[OtpLciErrIdx] = 1;
+
+ end else if (data_phase_read) begin
+ if (cfg.en_cov) begin
+ cov.collect_status_cov(item.d_data);
+ if (cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.csr_rd_after_alert_cg_wrap.sample(csr.get_offset());
+ end
+ end
+
+ if (item.d_data[OtpDaiIdleIdx]) begin
+ check_otp_idle(1);
+ dai_wr_ip = 0;
+ dai_digest_ip = LifeCycleIdx;
+ end
+
+ // STATUS register check with mask
+ if (do_read_check) begin
+ `DV_CHECK_EQ((csr.get_mirrored_value() | status_mask), (item.d_data | status_mask),
+ $sformatf("reg name: status, compare_mask %0h", status_mask))
+ end
+
+ // Check if OtpCheckPending is set correctly, then ignore checking until check is done
+ if (under_chk) begin
+ if (item.d_data[OtpCheckPendingIdx] == 0) begin
+ exp_status[OtpCheckPendingIdx] = 0;
+ under_chk = 0;
+ end
+ end
+
+ if (under_dai_access && !cfg.otp_ctrl_vif.under_error_states()) begin
+ if (item.d_data[OtpDaiIdleIdx]) begin
+ under_dai_access = 0;
+ void'(ral.direct_access_regwen.predict(direct_access_regwen_state));
+ void'(ral.intr_state.otp_operation_done.predict(1));
+ end
+ end
+ end
+ // checked in this block above
+ do_read_check = 0;
+ end
+ "check_trigger": begin
+ if (addr_phase_write && cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.issue_checks_after_alert_cg.sample(item.a_data);
+ end
+
+ if (addr_phase_write && `gmv(ral.check_trigger_regwen) && item.a_data inside {[1:3]}) begin
+ bit [TL_DW-1:0] check_timeout = `gmv(ral.check_timeout) == 0 ? '1 :
+ `gmv(ral.check_timeout);
+ exp_status[OtpCheckPendingIdx] = 1;
+ under_chk = 1;
+ if (check_timeout <= CHK_TIMEOUT_CYC) begin
+ set_exp_alert("fatal_check_error", 1, `gmv(ral.check_timeout));
+ predict_err(OtpTimeoutErrIdx);
+ end else begin
+ if (get_field_val(ral.check_trigger.consistency, item.a_data)) begin
+ foreach (cfg.ecc_chk_err[i]) begin
+ if (cfg.ecc_chk_err[i] == OtpEccCorrErr && part_has_integrity(i)) begin
+ predict_err(otp_status_e'(i), OtpMacroEccCorrError);
+ end else if (cfg.ecc_chk_err[i] == OtpEccUncorrErr &&
+ part_has_integrity(i)) begin
+ set_exp_alert("fatal_macro_error", 1, 40_000);
+ predict_err(otp_status_e'(i), OtpMacroEccUncorrError);
+ end
+ end
+ end
+ end
+ end
+ end
+ "direct_access_regwen": begin
+ if (addr_phase_write) begin
+ // This locks the DAI until the next reset.
+ if (!item.a_data[0]) begin
+ direct_access_regwen_state = 0;
+ void'(ral.direct_access_regwen.predict(0));
+ end
+ end
+ end
+ // For error codes, if lc_prog in progress, err_code might update anytime in DUT. Ignore
+ // checking until req is acknowledged.
+
+ "err_code_0": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(0, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_1": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(1, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_2": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(2, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_3": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(3, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_4": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(4, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_5": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(5, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_6": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(6, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_7": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(7, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_8": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(8, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_9": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(9, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_10": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(10, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_11": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(11, item.d_data, access_part_idx);
+ end
+ end
+ "err_code_12": begin
+ if (cfg.m_lc_prog_pull_agent_cfg.vif.req) do_read_check = 0;
+ if (cfg.en_cov && do_read_check && data_phase_read) begin
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address) >> 2 << 2;
+ int access_part_idx = get_part_index(dai_addr);
+ cov.collect_err_code_cov(12, item.d_data, access_part_idx);
+ end
+ end
+ "vendor_test_digest_0", "vendor_test_digest_1",
+ "creator_sw_cfg_digest_0", "creator_sw_cfg_digest_1",
+ "owner_sw_cfg_digest_0", "owner_sw_cfg_digest_1",
+ "rot_creator_auth_codesign_digest_0", "rot_creator_auth_codesign_digest_1",
+ "rot_creator_auth_state_digest_0", "rot_creator_auth_state_digest_1",
+ "hw_cfg0_digest_0", "hw_cfg0_digest_1",
+ "hw_cfg1_digest_0", "hw_cfg1_digest_1",
+ "secret0_digest_0", "secret0_digest_1",
+ "secret1_digest_0", "secret1_digest_1",
+ "secret2_digest_0", "secret2_digest_1": begin
+ if (ignore_digest_chk) do_read_check = 0;
+ end
+ "vendor_test_read_lock",
+ "creator_sw_cfg_read_lock",
+ "owner_sw_cfg_read_lock",
+ "rot_creator_auth_codesign_read_lock",
+ "rot_creator_auth_state_read_lock",
+ "direct_access_wdata_0",
+ "direct_access_wdata_1",
+ "direct_access_address",
+ "check_regwen",
+ "check_trigger_regwen",
+ "check_trigger",
+ "check_timeout",
+ "intr_enable",
+ "integrity_check_period",
+ "consistency_check_period",
+ "alert_test": begin
+ // Do nothing
+ end
+ // DAI read data
+ "direct_access_rdata_0", "direct_access_rdata_1": do_read_check = check_dai_rd_data;
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("invalid csr: %0s", csr.get_full_name()))
+ end
+ endcase
+
+ // On reads, if do_read_check, is set, then check mirrored_value against item.d_data
+ if (data_phase_read) begin
+ if (do_read_check) begin
+ `DV_CHECK_EQ(csr.get_mirrored_value(), item.d_data,
+ $sformatf("reg name: %0s", csr.get_full_name()))
+ if (cfg.en_cov && cfg.otp_ctrl_vif.alert_reqs) begin
+ cov.csr_rd_after_alert_cg_wrap.sample(csr.get_offset());
+ end
+ end
+ void'(csr.predict(.value(item.d_data), .kind(UVM_PREDICT_READ)));
+ end
+ endfunction
+
+ // If reset or lc_escalate_en is issued during otp program, this function will backdoor update
+ // otp memory write value because scb did not know how many cells haven been written.
+ // We won't update csr `direct_access_address` after fatal alert happened, so in this function
+ // we can directly call method `get_scb_otp_addr` to get the interrupted dai address.
+ virtual function void recover_interrupted_op();
+ if (dai_wr_ip) begin
+ bit [TL_DW-1:0] otp_addr = get_scb_otp_addr();
+ bit [TL_DW-1:0] dai_addr = otp_addr << 2;
+ backdoor_update_otp_array(dai_addr);
+ dai_wr_ip = 0;
+ end
+ endfunction
+
+ virtual function void backdoor_update_otp_array(bit [TL_DW-1:0] dai_addr);
+ bit [TL_DW-1:0] otp_addr = dai_addr >> 2;
+ bit [TL_DW-1:0] readout_word, readout_word1;
+ int part_idx = get_part_index(dai_addr);
+ if (part_has_integrity(part_idx)) begin
+ void'(read_a_word_with_ecc(dai_addr, readout_word));
+ void'(read_a_word_with_ecc(dai_addr + 4, readout_word1));
+ end else begin
+ void'(read_a_word_with_ecc_raw(dai_addr, readout_word));
+ void'(read_a_word_with_ecc_raw(dai_addr + 4, readout_word1));
+ end
+
+ otp_a[otp_addr] = readout_word;
+
+ if (is_digest(dai_addr)) begin
+ otp_a[otp_addr+1] = readout_word1;
+ end else if (is_secret(dai_addr)) begin
+ bit [TL_DW*2-1:0] mem_rd_val, descrambled_val;
+ mem_rd_val = {readout_word1 ,readout_word};
+ descrambled_val = descramble_data(mem_rd_val, part_idx);
+ otp_a[otp_addr+1] = descrambled_val[TL_DW*2-1:TL_DW];
+ otp_a[otp_addr] = descrambled_val[TL_DW-1:0];
+ end
+ endfunction
+
+ virtual function bit [1:0] read_a_word_with_ecc(bit [TL_DW-1:0] dai_addr,
+ ref bit [TL_DW-1:0] readout_word);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data0 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data1 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr + 2);
+ readout_word[15:0] = ecc_rd_data0.data;
+ readout_word[31:16] = ecc_rd_data1.data;
+ return max2(ecc_rd_data0.err, ecc_rd_data1.err);
+ endfunction
+
+ // Returns the ECC error but does not correct the data bits (i.e. returns the raw data).
+ virtual function bit [1:0] read_a_word_with_ecc_raw(bit [TL_DW-1:0] dai_addr,
+ ref bit [TL_DW-1:0] readout_word);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data0 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr);
+ prim_secded_pkg::secded_22_16_t ecc_rd_data1 = cfg.mem_bkdr_util_h.ecc_read16(dai_addr + 2);
+ readout_word[15:0] = 16'hFFFF & cfg.mem_bkdr_util_h.read(dai_addr);
+ readout_word[31:16] = 16'hFFFF & cfg.mem_bkdr_util_h.read(dai_addr + 2);
+ return max2(ecc_rd_data0.err, ecc_rd_data1.err);
+ endfunction
+
+
+ virtual function void reset(string kind = "HARD");
+ recover_interrupted_op();
+ super.reset(kind);
+ // flush fifos
+ otbn_fifo.flush();
+ flash_addr_fifo.flush();
+ flash_data_fifo.flush();
+ lc_prog_fifo.flush();
+ for (int i = 0; i < NumSramKeyReqSlots; i++) begin
+ sram_fifos[i].flush();
+ end
+
+ direct_access_regwen_state = 1;
+ under_chk = 0;
+ under_dai_access = 0;
+ ignore_digest_chk = 0;
+ exp_status = `gmv(ral.status);
+ exp_alert = OtpNoAlert;
+
+ edn_data_q.delete();
+
+ // Out of reset: lock dai access until power init is done
+ if (cfg.en_scb) void'(ral.direct_access_regwen.predict(0));
+ endfunction
+
+ virtual function void check_otp_idle(bit val, int wait_clks = 0);
+ fork
+ begin
+ fork
+ begin
+ // use negedge to avoid race condition
+ cfg.clk_rst_vif.wait_n_clks(wait_clks + 1);
+ `uvm_error(`gfn,
+ $sformatf("pwr_otp_idle output is %0b while expect %0b within %0d cycles",
+ cfg.otp_ctrl_vif.pwr_otp_idle_o, val, wait_clks))
+ end
+ begin
+ wait(cfg.under_reset || cfg.otp_ctrl_vif.pwr_otp_idle_o == val ||
+ // Due to OTP access arbitration, any KDI request during DAI access might block
+ // write secret until KDI request is completed. Since the KDI process time could
+ // vary depends on the push-pull-agent, we are going to ignore the checking if
+ // this scenario happens.
+ cfg.m_otbn_pull_agent_cfg.vif.req ||
+ cfg.m_flash_data_pull_agent_cfg.vif.req ||
+ cfg.m_flash_addr_pull_agent_cfg.vif.req ||
+ cfg.m_sram_pull_agent_cfg[0].vif.req ||
+ cfg.m_sram_pull_agent_cfg[1].vif.req ||
+ cfg.m_sram_pull_agent_cfg[2].vif.req ||
+ cfg.m_sram_pull_agent_cfg[3].vif.req ||
+ cfg.m_lc_prog_pull_agent_cfg.vif.req ||
+ // When lc_escalation is on, the DAI interface goes to ErrorSt, so ignore
+ // otp_idle checking.
+ cfg.otp_ctrl_vif.alert_reqs ||
+ // Check timeout will keep doing background check, issue #5616
+ exp_status[OtpTimeoutErrIdx]);
+ end
+ join_any
+ disable fork;
+ end
+ join_none
+ endfunction
+
+ // predict digest registers
+ virtual function void predict_digest_csrs();
+ void'(ral.vendor_test_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[VendorTestIdx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.vendor_test_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[VendorTestIdx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.creator_sw_cfg_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[CreatorSwCfgIdx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.creator_sw_cfg_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[CreatorSwCfgIdx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.owner_sw_cfg_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[OwnerSwCfgIdx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.owner_sw_cfg_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[OwnerSwCfgIdx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.rot_creator_auth_codesign_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[RotCreatorAuthCodesignIdx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.rot_creator_auth_codesign_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[RotCreatorAuthCodesignIdx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.rot_creator_auth_state_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[RotCreatorAuthStateIdx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.rot_creator_auth_state_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[RotCreatorAuthStateIdx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.hw_cfg0_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[HwCfg0Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.hw_cfg0_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[HwCfg0Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.hw_cfg1_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[HwCfg1Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.hw_cfg1_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[HwCfg1Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.secret0_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret0Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.secret0_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret0Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.secret1_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret1Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.secret1_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret1Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+
+ void'(ral.secret2_digest[0].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret2Idx]]),
+ .kind(UVM_PREDICT_DIRECT)));
+ void'(ral.secret2_digest[1].predict(
+ .value(otp_a[PART_OTP_DIGEST_ADDRS[Secret2Idx] + 1]),
+ .kind(UVM_PREDICT_DIRECT)));
+ endfunction
+
+ function void update_digest_to_otp(int part_idx, bit [TL_DW*2-1:0] digest);
+ otp_a[PART_OTP_DIGEST_ADDRS[part_idx]] = digest[31:0];
+ otp_a[PART_OTP_DIGEST_ADDRS[part_idx] + 1] = digest[63:32];
+ endfunction
+
+ function void check_phase(uvm_phase phase);
+ super.check_phase(phase);
+ // post test checks - ensure that all local fifos and queues are empty
+ endfunction
+
+ // Calculate digest value for each partition
+ // According to the design spec, the calculation is based on 64-rounds of PRESENT cipher
+ // The 64-bit data_in state is initialized with a silicon creator constant, and each 128 bit
+ // chunk of partition data are fed in as keys
+ // The last 64-round PRESENT calculation will use a global digest constant as key input
+ function void cal_digest_val(int part_idx);
+ bit [TL_DW-1:0] mem_q[$];
+ int array_size;
+ bit [SCRAMBLE_DATA_SIZE-1:0] digest;
+
+ if (cfg.otp_ctrl_vif.under_error_states()) return;
+
+ if (!part_has_hw_digest(part_idx) || get_digest_reg_val(part_idx) != 0) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else if (PartInfo[part_idx].iskeymgr_creator &&
+ cfg.otp_ctrl_vif.lc_creator_seed_sw_rw_en_i != lc_ctrl_pkg::On) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else if (PartInfo[part_idx].iskeymgr_owner &&
+ cfg.otp_ctrl_vif.lc_owner_seed_sw_rw_en_i != lc_ctrl_pkg::On) begin
+ predict_err(OtpDaiErrIdx, OtpAccessError);
+ return;
+ end else begin
+ predict_no_err(OtpDaiErrIdx);
+ dai_digest_ip = part_idx;
+ end
+ case (part_idx)
+ HwCfg0Idx: mem_q = otp_a[HwCfg0Offset / TL_SIZE : HwCfg0DigestOffset / TL_SIZE - 1];
+ HwCfg1Idx: mem_q = otp_a[HwCfg1Offset / TL_SIZE : HwCfg1DigestOffset / TL_SIZE - 1];
+ Secret0Idx: mem_q = otp_a[Secret0Offset / TL_SIZE : Secret0DigestOffset / TL_SIZE - 1];
+ Secret1Idx: mem_q = otp_a[Secret1Offset / TL_SIZE : Secret1DigestOffset / TL_SIZE - 1];
+ Secret2Idx: mem_q = otp_a[Secret2Offset / TL_SIZE : Secret2DigestOffset / TL_SIZE - 1];
+ default: begin
+ `uvm_fatal(`gfn, $sformatf("Access unexpected partition %0d", part_idx))
+ end
+ endcase
+
+ array_size = mem_q.size();
+
+ // for secret partitions, need to use otp scrambled value as data input
+ if (PartInfo[part_idx].secret) begin
+ bit [TL_DW-1:0] scrambled_mem_q[$];
+ for (int i = 0; i < array_size/2; i++) begin
+ bit [SCRAMBLE_DATA_SIZE-1:0] scrambled_data;
+ scrambled_data = scramble_data({mem_q[i*2+1], mem_q[i*2]}, part_idx);
+ scrambled_mem_q.push_back(scrambled_data[TL_DW-1:0]);
+ scrambled_mem_q.push_back(scrambled_data[SCRAMBLE_DATA_SIZE-1:TL_DW]);
+ end
+ mem_q = scrambled_mem_q;
+ end
+
+ digest = otp_scrambler_pkg::cal_digest(part_idx, mem_q);
+ update_digest_to_otp(part_idx, digest);
+ endfunction
+
+
+ // this function go through present encode algo two or three iterations:
+ // first iteration with input key,
+ // second iteration with second_key, this iteration only happens if num_round is 2
+ // third iteration with a final constant as key
+ // this is mainly used for unlock token hashing, key derivation
+ virtual function bit [SCRAMBLE_DATA_SIZE-1:0] present_encode_with_final_const(
+ bit [SCRAMBLE_DATA_SIZE-1:0] data,
+ bit [SCRAMBLE_KEY_SIZE-1:0] key,
+ bit [SCRAMBLE_KEY_SIZE-1:0] final_const,
+ bit [SCRAMBLE_KEY_SIZE-1:0] second_key = '0,
+ int num_round = 1);
+ bit [SCRAMBLE_DATA_SIZE-1:0] enc_data;
+ bit [SCRAMBLE_DATA_SIZE-1:0] intermediate_state;
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(data, key,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ // XOR the previous state into the digest result according to the Davies-Meyer scheme.
+ intermediate_state = data ^ enc_data;
+
+ if (num_round == 2) begin
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(intermediate_state, second_key,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ intermediate_state = intermediate_state ^ enc_data;
+ end else if (num_round > 2) begin
+ `uvm_fatal(`gfn, $sformatf("does not support num_round: %0d > 2", num_round))
+ end
+
+ crypto_dpi_present_pkg::sv_dpi_present_encrypt(intermediate_state, final_const,
+ SCRAMBLE_KEY_SIZE, NUM_ROUND, enc_data);
+ // XOR the previous state into the digest result according to the Davies-Meyer scheme.
+ present_encode_with_final_const = intermediate_state ^ enc_data;
+ endfunction
+
+ // Get address for scoreboard's otp_a array from the `direct_access_address` CSR
+ function bit [TL_DW-1:0] get_scb_otp_addr();
+ bit [TL_DW-1:0] dai_addr = `gmv(ral.direct_access_address);
+ get_scb_otp_addr = normalize_dai_addr(dai_addr) >> 2;
+ endfunction
+
+ // This function predict OTP error related registers: intr_state, status, and err_code
+ virtual function void predict_err(otp_status_e status_err_idx,
+ otp_err_code_e err_code = OtpNoError,
+ bit update_esc_err = 0);
+ if (cfg.otp_ctrl_vif.under_error_states() && !update_esc_err) return;
+
+ // Update intr_state
+ void'(ral.intr_state.otp_error.predict(.value(1), .kind(UVM_PREDICT_READ)));
+ // Update status
+ exp_status[status_err_idx] = 1;
+
+ // Only first status errors up to the LCI have corresponding err_code
+ if (status_err_idx <= OtpLciErrIdx) begin
+ dv_base_reg_field err_code_flds[$];
+ if (err_code == OtpNoError) begin
+ `uvm_error(`gfn, $sformatf("please set status error: %0s error code", status_err_idx.name))
+ end
+ ral.err_code[status_err_idx].get_dv_base_reg_fields(err_code_flds);
+
+ if (`gmv(err_code_flds[0]) inside {OTP_TERMINAL_ERRS}) begin
+ `uvm_info(`gfn, "terminal error cannot be updated", UVM_HIGH)
+ end else if (status_err_idx == OtpLciErrIdx &&
+ `gmv(err_code_flds[0]) != OtpNoError) begin
+ `uvm_info(`gfn, "For LC partition, all errors are terminal error!", UVM_HIGH)
+ end else begin
+ void'(err_code_flds[0].predict(.value(err_code), .kind(UVM_PREDICT_READ)));
+ end
+ end
+
+ endfunction
+
+ virtual function void predict_no_err(otp_status_e status_err_idx);
+ if (cfg.otp_ctrl_vif.under_error_states()) return;
+
+ exp_status[status_err_idx] = 0;
+ if (status_err_idx == OtpDaiErrIdx) exp_status[OtpDaiIdleIdx] = 1;
+
+ if (status_err_idx <= OtpLciErrIdx) begin
+ dv_base_reg_field err_code_flds[$];
+ ral.err_code[status_err_idx].get_dv_base_reg_fields(err_code_flds);
+ void'(err_code_flds[0].predict(OtpNoError));
+ end
+ endfunction
+
+ virtual function void predict_rdata(bit is_64_bits, bit [TL_DW-1:0] rdata0,
+ bit [TL_DW-1:0] rdata1 = 0);
+ void'(ral.direct_access_rdata[0].predict(.value(rdata0), .kind(UVM_PREDICT_READ)));
+ if (is_64_bits) begin
+ void'(ral.direct_access_rdata[1].predict(.value(rdata1), .kind(UVM_PREDICT_READ)));
+ end
+ endfunction
+
+ // this function retrieves keys (128 bits) from scb's otp_array with a starting address
+ // if not locked, it will return 0
+ // this is mainly used for scrambling key algo
+ virtual function bit [SCRAMBLE_KEY_SIZE-1:0] get_key_from_otp(bit locked, int start_i);
+ bit [SCRAMBLE_KEY_SIZE-1:0] key;
+ if (!locked) return 0;
+ for (int i = 0; i < 4; i++) key |= otp_a[i + start_i] << (TL_DW * i);
+ return key;
+ endfunction
+
+ // The following two methods are all retrieving digest val.
+ // get_otp_digest_val: is the digest value from OTP memory
+ // get_digest_reg_val: is the digest value in register. This value is identical to OTP
+ // memory's digest value after a power cycle reset.
+ virtual function bit [TL_DW*2-1:0] get_otp_digest_val(int part_idx);
+ get_otp_digest_val[31:0] = otp_a[PART_OTP_DIGEST_ADDRS[part_idx]];
+ get_otp_digest_val[63:32] = otp_a[PART_OTP_DIGEST_ADDRS[part_idx] + 1];
+ endfunction
+
+ virtual function bit [TL_DW*2-1:0] get_digest_reg_val(int part_idx);
+ bit [TL_DW*2-1:0] digest;
+ case (part_idx)
+ VendorTestIdx: begin
+ digest = {`gmv(ral.vendor_test_digest[1]),
+ `gmv(ral.vendor_test_digest[0])};
+ end
+ CreatorSwCfgIdx: begin
+ digest = {`gmv(ral.creator_sw_cfg_digest[1]),
+ `gmv(ral.creator_sw_cfg_digest[0])};
+ end
+ OwnerSwCfgIdx: begin
+ digest = {`gmv(ral.owner_sw_cfg_digest[1]),
+ `gmv(ral.owner_sw_cfg_digest[0])};
+ end
+ RotCreatorAuthCodesignIdx: begin
+ digest = {`gmv(ral.rot_creator_auth_codesign_digest[1]),
+ `gmv(ral.rot_creator_auth_codesign_digest[0])};
+ end
+ RotCreatorAuthStateIdx: begin
+ digest = {`gmv(ral.rot_creator_auth_state_digest[1]),
+ `gmv(ral.rot_creator_auth_state_digest[0])};
+ end
+ HwCfg0Idx: begin
+ digest = {`gmv(ral.hw_cfg0_digest[1]),
+ `gmv(ral.hw_cfg0_digest[0])};
+ end
+ HwCfg1Idx: begin
+ digest = {`gmv(ral.hw_cfg1_digest[1]),
+ `gmv(ral.hw_cfg1_digest[0])};
+ end
+ Secret0Idx: begin
+ digest = {`gmv(ral.secret0_digest[1]),
+ `gmv(ral.secret0_digest[0])};
+ end
+ Secret1Idx: begin
+ digest = {`gmv(ral.secret1_digest[1]),
+ `gmv(ral.secret1_digest[0])};
+ end
+ Secret2Idx: begin
+ digest = {`gmv(ral.secret2_digest[1]),
+ `gmv(ral.secret2_digest[0])};
+ end
+ default: `uvm_fatal(`gfn, $sformatf("Partition %0d does not have digest", part_idx))
+ endcase
+ return digest;
+ endfunction
+
+ virtual function bit is_tl_mem_access_allowed(input tl_seq_item item, input string ral_name,
+ output bit mem_byte_access_err,
+ output bit mem_wo_err,
+ output bit mem_ro_err,
+ output bit custom_err);
+
+ uvm_reg_addr_t addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr);
+ bit [TL_AW-1:0] addr_mask = ral.get_addr_mask();
+ bit [TL_AW-1:0] dai_addr = (csr_addr & addr_mask - SW_WINDOW_BASE_ADDR);
+
+ bit mem_access_allowed = super.is_tl_mem_access_allowed(item, ral_name, mem_byte_access_err,
+ mem_wo_err, mem_ro_err, custom_err);
+
+ if (ral_name == "otp_ctrl_prim_reg_block") return mem_access_allowed;
+
+ // Ensure the address is within the memory window range.
+ // Also will skip checking if memory access is not allowed due to TLUL bus error.
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr :
+ cfg.ral_models[ral_name].mem_ranges[0].end_addr]} &&
+ mem_access_allowed) begin
+
+ // If sw partition is read locked, then access policy changes from RO to no access
+ if (`gmv(ral.vendor_test_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + VendorTestOffset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + VendorTestOffset +
+ VendorTestSize - 1]}) begin
+ predict_err(OtpVendorTestErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[VendorTestIdx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(VendorTestIdx) != 0), .is_write(0));
+ end
+ return 0;
+ end
+ end
+ if (`gmv(ral.creator_sw_cfg_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + CreatorSwCfgOffset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + CreatorSwCfgOffset +
+ CreatorSwCfgSize - 1]}) begin
+ predict_err(OtpCreatorSwCfgErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[CreatorSwCfgIdx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(CreatorSwCfgIdx) != 0), .is_write(0));
+ end
+ return 0;
+ end
+ end
+ if (`gmv(ral.owner_sw_cfg_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + OwnerSwCfgOffset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + OwnerSwCfgOffset +
+ OwnerSwCfgSize - 1]}) begin
+ predict_err(OtpOwnerSwCfgErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[OwnerSwCfgIdx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(OwnerSwCfgIdx) != 0), .is_write(0));
+ end
+ return 0;
+ end
+ end
+ if (`gmv(ral.rot_creator_auth_codesign_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + RotCreatorAuthCodesignOffset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + RotCreatorAuthCodesignOffset +
+ RotCreatorAuthCodesignSize - 1]}) begin
+ predict_err(OtpRotCreatorAuthCodesignErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[RotCreatorAuthCodesignIdx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(RotCreatorAuthCodesignIdx) != 0), .is_write(0));
+ end
+ return 0;
+ end
+ end
+ if (`gmv(ral.rot_creator_auth_state_read_lock) == 0 ||
+ cfg.otp_ctrl_vif.under_error_states()) begin
+ if (addr inside {
+ [cfg.ral_models[ral_name].mem_ranges[0].start_addr + RotCreatorAuthStateOffset :
+ cfg.ral_models[ral_name].mem_ranges[0].start_addr + RotCreatorAuthStateOffset +
+ RotCreatorAuthStateSize - 1]}) begin
+ predict_err(OtpRotCreatorAuthStateErrIdx, OtpAccessError);
+ custom_err = 1;
+ if (cfg.en_cov) begin
+ cov.unbuf_access_lock_cg_wrap[RotCreatorAuthStateIdx].sample(.read_lock(1),
+ .write_lock(get_digest_reg_val(RotCreatorAuthStateIdx) != 0), .is_write(0));
+ end
+ return 0;
+ end
+ end
+
+ // Check ECC uncorrectable fatal error.
+ if (dai_addr < LifeCycleOffset) begin
+ int part_idx = get_part_index(dai_addr);
+ bit [TL_DW-1:0] read_out;
+ int ecc_err = read_a_word_with_ecc(dai_addr, read_out);
+ if (ecc_err == OtpEccUncorrErr && part_has_integrity(part_idx)) begin
+ predict_err(otp_status_e'(part_idx), OtpMacroEccUncorrError);
+ set_exp_alert("fatal_macro_error", 1, 20);
+ custom_err = 1;
+ return 0;
+ end
+ end
+ end
+
+ return mem_access_allowed;
+ endfunction
+
+ virtual function bit predict_tl_err(tl_seq_item item, tl_channels_e channel, string ral_name);
+ if (ral_name == "otp_ctrl_prim_reg_block" &&
+ cfg.otp_ctrl_vif.lc_dft_en_i != lc_ctrl_pkg::On) begin
+ if (channel == DataChannel) begin
+ `DV_CHECK_EQ(item.d_error, 1,
+ $sformatf({"On interface %0s, TL item: %0s, access gated by lc_dft_en_i"},
+ ral_name, item.sprint(uvm_default_line_printer)))
+
+ // In data read phase, check d_data when d_error = 1.
+ if (item.d_error && (item.d_opcode == tlul_pkg::AccessAckData)) begin
+ check_tl_read_value_after_error(item, ral_name);
+ end
+ end
+ return 1;
+ end
+ return super.predict_tl_err(item, channel, ral_name);
+ endfunction
+
+ virtual function void set_exp_alert(string alert_name, bit is_fatal = 0, int max_delay = 0);
+ exp_alert = alert_name == "fatal_check_error" ? OtpCheckAlert : OtpMacroAlert;
+ super.set_exp_alert(alert_name, is_fatal, max_delay);
+ endfunction
+
+endclass
diff --git a/src/fuse_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv b/src/fuse_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv
new file mode 100644
index 0000000..4780a80
--- /dev/null
+++ b/src/fuse_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv
@@ -0,0 +1,19 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+class otp_ctrl_virtual_sequencer extends cip_base_virtual_sequencer #(
+ .CFG_T(otp_ctrl_env_cfg),
+ .COV_T(otp_ctrl_env_cov)
+ );
+ `uvm_component_utils(otp_ctrl_virtual_sequencer)
+
+ `uvm_component_new
+
+ push_pull_sequencer#(.DeviceDataWidth(SRAM_DATA_SIZE)) sram_pull_sequencer_h[NumSramKeyReqSlots];
+ push_pull_sequencer#(.DeviceDataWidth(OTBN_DATA_SIZE)) otbn_pull_sequencer_h;
+ push_pull_sequencer#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_data_pull_sequencer_h;
+ push_pull_sequencer#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_addr_pull_sequencer_h;
+ push_pull_sequencer#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE))
+ lc_prog_pull_sequencer_h;
+endclass
diff --git a/src/fuse_ctrl/dv/otp_ctrl_top_sim_cfg.hjson b/src/fuse_ctrl/dv/otp_ctrl_top_sim_cfg.hjson
new file mode 100644
index 0000000..0cbc6a1
--- /dev/null
+++ b/src/fuse_ctrl/dv/otp_ctrl_top_sim_cfg.hjson
@@ -0,0 +1,179 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+{
+ // Name of the sim cfg - typically same as the name of the DUT.
+ name: otp_ctrl_top
+
+ // Top level dut name (sv module).
+ dut: otp_ctrl_top
+
+ // Top level testbench name (sv module).
+ tb: tb
+
+ // Simulator used to sign off this block
+ tool: vcs
+
+ // Fusesoc core file used for building the file list.
+ fusesoc_core: lowrisc:dv:otp_ctrl_sim:0.1
+
+ // Testplan hjson file.
+ testplan: "{CALIPTRA_ROOT}/src/otp_ctrl/data/otp_ctrl_testplan.hjson"
+
+ // RAL spec - used to generate the RAL model.
+ ral_spec: "{CALITPRA_ROOT}/src/otp_ctrl/data/otp_ctrl.hjson"
+
+ // Import additional common sim cfg files.
+ import_cfgs: [// Project wide common sim cfg file
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/common_sim_cfg.hjson",
+ // Config files to get the correct flags for crypto_dpi_prince
+ //"{CALIPTRA_ROOT}/hw/ip/prim/dv/prim_prince/crypto_dpi_prince/crypto_dpi_prince_sim_opts.hjson",
+ // Common CIP test lists
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/csr_tests.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/mem_tests.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/intr_test.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/alert_test.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/tl_access_tests.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/sec_cm_tests.hjson",
+ "{CALIPTRA_ROOT}/tools/dv/dvsim/tests/stress_tests.hjson"]
+
+ //en_build_modes: ["{tool}_crypto_dpi_prince_build_opts"]
+
+ build_modes: [
+ // Sim mode that enables build randomization. See the `build_seed` mode
+ // defined in `hw/dv/tools/dvsim/common_modes.hjson` for more details.
+ {
+ name: build_seed
+ pre_build_cmds: ["cd {CALIPTRA_ROOT} && ./tools/util/design/gen-otp-mmap.py --seed {seed}"]
+ is_sim_mode: 1
+ }
+ ]
+
+ // Add additional tops for simulation.
+ sim_tops: ["otp_ctrl_bind", "otp_ctrl_cov_bind",
+ "sec_cm_prim_sparse_fsm_flop_bind",
+ "sec_cm_prim_count_bind",
+ "sec_cm_prim_double_lfsr_bind",
+ "sec_cm_prim_onehot_check_bind"]
+
+ // Default iterations for all tests - each test entry can override this.
+ reseed: 50
+
+ // Add OTP_CTRL specific exclusion files.
+ vcs_cov_excl_files: ["{CALIPTRA_ROOT}/src/otp_ctrl/dv/cov/otp_ctrl_cov_unr_excl.el",
+ "{CALIPTRA_ROOT}/src/otp_ctrl/dv/cov/otp_ctrl_cov_fsm_unr_excl.el"]
+
+ overrides: [
+ {
+ name: default_vcs_cov_cfg_file
+ value: "-cm_hier {CALIPTRA_ROOT}/tools/dv/vcs/cover.cfg+{CALIPTRA_ROOT}/tools/dv/vcs/common_cov_excl.cfg+{CALIPTRA_ROOT}/src/otp_ctrl/dv/cov/otp_ctrl_cover.cfg"
+ }
+ ]
+
+ // Default UVM test and seq class name.
+ uvm_test: otp_ctrl_base_test
+ uvm_test_seq: otp_ctrl_base_vseq
+
+ run_opts: ["+cdc_instrumentation_enabled=1"]
+
+ // List of test specifications.
+ tests: [
+ {
+ name: otp_ctrl_wake_up
+ uvm_test_seq: otp_ctrl_wake_up_vseq
+ run_opts: ["+en_scb=0"]
+ reseed: 1
+ }
+
+ {
+ name: otp_ctrl_smoke
+ uvm_test_seq: otp_ctrl_smoke_vseq
+ }
+
+ {
+ name: otp_ctrl_partition_walk
+ uvm_test_seq: otp_ctrl_partition_walk_vseq
+ reseed: 1
+ }
+
+ {
+ name: otp_ctrl_low_freq_read
+ uvm_test_seq: otp_ctrl_low_freq_read_vseq
+ reseed: 1
+ }
+
+ {
+ name: otp_ctrl_init_fail
+ uvm_test_seq: otp_ctrl_init_fail_vseq
+ reseed: 300
+ }
+ {
+ name: otp_ctrl_background_chks
+ uvm_test_seq: otp_ctrl_background_chks_vseq
+ reseed: 10
+ }
+
+ {
+ name: otp_ctrl_parallel_lc_req
+ uvm_test_seq: otp_ctrl_parallel_lc_req_vseq
+ run_opts: ["+zero_delays=1"]
+ }
+
+ {
+ name: otp_ctrl_parallel_lc_esc
+ uvm_test_seq: otp_ctrl_parallel_lc_esc_vseq
+ reseed: 200
+ }
+
+ {
+ name: otp_ctrl_dai_lock
+ uvm_test_seq: otp_ctrl_dai_lock_vseq
+ }
+
+ {
+ name: otp_ctrl_dai_errs
+ uvm_test_seq: otp_ctrl_dai_errs_vseq
+ }
+
+ {
+ name: otp_ctrl_check_fail
+ uvm_test_seq: otp_ctrl_check_fail_vseq
+ }
+
+ {
+ name: otp_ctrl_macro_errs
+ uvm_test_seq: otp_ctrl_macro_errs_vseq
+ }
+
+ {
+ name: otp_ctrl_parallel_key_req
+ uvm_test_seq: otp_ctrl_parallel_key_req_vseq
+ }
+
+ {
+ name: otp_ctrl_regwen
+ uvm_test_seq: otp_ctrl_regwen_vseq
+ // This test is to check reg programming is gated when direct_access_regwen=0
+ // Thus this test is timing sensitive
+ run_opts: ["+zero_delays=1"]
+ }
+
+ {
+ name: otp_ctrl_test_access
+ uvm_test_seq: otp_ctrl_test_access_vseq
+ }
+
+ {
+ name: "{name}_stress_all_with_rand_reset"
+ reseed: 100
+ }
+ ]
+
+ // List of regressions.
+ regressions: [
+ {
+ name: smoke
+ tests: ["otp_ctrl_smoke"]
+ }
+ ]
+}
diff --git a/src/fuse_ctrl/dv/tb.sv b/src/fuse_ctrl/dv/tb.sv
new file mode 100644
index 0000000..e1b2664
--- /dev/null
+++ b/src/fuse_ctrl/dv/tb.sv
@@ -0,0 +1,238 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+module tb;
+ // dep packages
+ import uvm_pkg::*;
+ import dv_utils_pkg::*;
+ import otp_ctrl_env_pkg::*;
+ import otp_ctrl_test_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import mem_bkdr_util_pkg::mem_bkdr_util;
+
+ // macro includes
+ `include "uvm_macros.svh"
+ `include "dv_macros.svh"
+
+ // TB base test ENV_T & CFG_T specification
+ //
+ // Specify the parameters for the otp_ctrl_base_test
+ // This will invoke the UVM registry and link this test type to
+ // the name 'otp_ctrl_base_test' as a test name passed by UVM_TESTNAME
+ //
+ // This is done explicitly only for the prim_pkg::ImplGeneric implementation
+ // since partner base tests inherit from otp_ctrl_base_test#(CFG_T, ENV_T) and
+ // specify directly (CFG_T, ENV_T) via the class extension and use a different
+ // UVM_TESTNAME
+ if (`PRIM_DEFAULT_IMPL == prim_pkg::ImplGeneric) begin : gen_spec_base_test_params
+ typedef otp_ctrl_base_test #(.CFG_T(otp_ctrl_env_cfg),
+ .ENV_T(otp_ctrl_env)) otp_ctrl_base_test_t;
+ end
+
+ wire clk, rst_n;
+ wire otp_ctrl_pkg::flash_otp_key_req_t flash_req;
+ wire otp_ctrl_pkg::flash_otp_key_rsp_t flash_rsp;
+ wire otp_ctrl_pkg::otbn_otp_key_req_t otbn_req;
+ wire otp_ctrl_pkg::otbn_otp_key_rsp_t otbn_rsp;
+ wire otp_ctrl_pkg::sram_otp_key_req_t[NumSramKeyReqSlots-1:0] sram_req;
+ wire otp_ctrl_pkg::sram_otp_key_rsp_t[NumSramKeyReqSlots-1:0] sram_rsp;
+
+ wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
+ wire intr_otp_operation_done, intr_otp_error;
+
+ // Output from close-source OTP, not checked in open-source env.
+ wire otp_ctrl_pkg::otp_ast_req_t ast_req;
+ wire [7:0] otp_obs_o;
+
+ tlul_pkg::tl_d2h_t prim_tl_o;
+
+ // interfaces
+ clk_rst_if clk_rst_if(.clk(clk), .rst_n(rst_n));
+ pins_if #(NUM_MAX_INTERRUPTS) intr_if(interrupts);
+
+ // lc_otp interfaces
+ push_pull_if #(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1))
+ lc_prog_if(.clk(clk), .rst_n(rst_n));
+ push_pull_if #(.DeviceDataWidth(SRAM_DATA_SIZE))
+ sram_if[NumSramKeyReqSlots](.clk(clk), .rst_n(rst_n));
+ push_pull_if #(.DeviceDataWidth(OTBN_DATA_SIZE)) otbn_if(.clk(clk), .rst_n(rst_n));
+ push_pull_if #(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_addr_if(.clk(clk), .rst_n(rst_n));
+ push_pull_if #(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_data_if(.clk(clk), .rst_n(rst_n));
+
+ tl_if tl_if(.clk(clk), .rst_n(rst_n));
+ tl_if prim_tl_if(.clk(clk), .rst_n(rst_n));
+
+ otp_ctrl_if otp_ctrl_if(.clk_i(clk), .rst_ni(rst_n));
+
+ `DV_ALERT_IF_CONNECT()
+
+ // edn_clk, edn_rst_n and edn_if are defined and driven in below macro
+ `DV_EDN_IF_CONNECT
+
+ assign otp_ctrl_if.lc_prog_req = lc_prog_if.req;
+ assign otp_ctrl_if.lc_prog_err = lc_prog_if.d_data;
+
+ // Assign to otp_ctrl_if for assertion checks.
+ assign otp_ctrl_if.lc_prog_ack = lc_prog_if.ack;
+ assign otp_ctrl_if.flash_acks = flash_data_if.ack;
+ assign otp_ctrl_if.otbn_ack = otbn_if.ack;
+
+ // This signal probes design's alert request to avoid additional logic for triggering alert and
+ // disable assertions.
+ // Alert checkings are done independently in otp_ctrl's scb.
+ // The correctness of this probed signal is checked in otp_ctrl's scb as well.
+ assign otp_ctrl_if.alert_reqs = dut.alerts[0] | dut.alerts[1];
+
+ // connected to interface
+ wire otp_ext_voltage_h = otp_ctrl_if.ext_voltage_h_io;
+
+ // dut
+ otp_ctrl dut (
+ .clk_i (clk ),
+ .rst_ni (rst_n ),
+ // edn
+ .clk_edn_i (edn_clk ),
+ .rst_edn_ni (edn_rst_n ),
+ .edn_o (edn_if[0].req ),
+ .edn_i ({edn_if[0].ack, edn_if[0].d_data}),
+ // bus interfaces
+ .core_tl_i (tl_if.h2d ),
+ .core_tl_o (tl_if.d2h ),
+ .prim_tl_i (prim_tl_if.h2d),
+ .prim_tl_o (prim_tl_if.d2h),
+ // interrupt
+ .intr_otp_operation_done_o (intr_otp_operation_done),
+ .intr_otp_error_o (intr_otp_error),
+ // alert
+ .alert_rx_i (alert_rx ),
+ .alert_tx_o (alert_tx ),
+ // ast
+ .obs_ctrl_i (otp_ctrl_if.obs_ctrl_i),
+ .otp_obs_o (otp_obs_o),
+ .otp_ast_pwr_seq_o (ast_req),
+ .otp_ast_pwr_seq_h_i (otp_ctrl_if.otp_ast_pwr_seq_h_i),
+ // pwrmgr
+ .pwr_otp_i (otp_ctrl_if.pwr_otp_init_i),
+ .pwr_otp_o ({otp_ctrl_if.pwr_otp_done_o, otp_ctrl_if.pwr_otp_idle_o}),
+ // lc
+ .lc_otp_vendor_test_i (otp_ctrl_if.otp_vendor_test_ctrl_i),
+ .lc_otp_vendor_test_o (otp_ctrl_if.otp_vendor_test_status_o),
+ .lc_otp_program_i ({lc_prog_if.req, lc_prog_if.h_data}),
+ .lc_otp_program_o ({lc_prog_if.d_data, lc_prog_if.ack}),
+ .lc_creator_seed_sw_rw_en_i (otp_ctrl_if.lc_creator_seed_sw_rw_en_i),
+ .lc_owner_seed_sw_rw_en_i (otp_ctrl_if.lc_owner_seed_sw_rw_en_i),
+ .lc_seed_hw_rd_en_i (otp_ctrl_if.lc_seed_hw_rd_en_i),
+ .lc_dft_en_i (otp_ctrl_if.lc_dft_en_i),
+ .lc_escalate_en_i (otp_ctrl_if.lc_escalate_en_i),
+ .lc_check_byp_en_i (otp_ctrl_if.lc_check_byp_en_i),
+ .otp_lc_data_o (otp_ctrl_if.lc_data_o),
+ // keymgr
+ .otp_keymgr_key_o (otp_ctrl_if.keymgr_key_o),
+ // flash
+ .flash_otp_key_i (flash_req),
+ .flash_otp_key_o (flash_rsp),
+ // sram
+ .sram_otp_key_i (sram_req),
+ .sram_otp_key_o (sram_rsp),
+ // otbn
+ .otbn_otp_key_i (otbn_req),
+ .otbn_otp_key_o (otbn_rsp),
+
+ .otp_broadcast_o (otp_ctrl_if.otp_broadcast_o),
+ .otp_ext_voltage_h_io (otp_ext_voltage_h),
+
+ //scan
+ .scan_en_i (otp_ctrl_if.scan_en_i),
+ .scan_rst_ni (otp_ctrl_if.scan_rst_ni),
+ .scanmode_i (otp_ctrl_if.scanmode_i),
+
+ // Test-related GPIO output
+ .cio_test_o (otp_ctrl_if.cio_test_o),
+ .cio_test_en_o (otp_ctrl_if.cio_test_en_o)
+ );
+
+ for (genvar i = 0; i < NumSramKeyReqSlots; i++) begin : gen_sram_pull_if
+ assign sram_req[i] = sram_if[i].req;
+ assign sram_if[i].ack = sram_rsp[i].ack;
+ assign sram_if[i].d_data = {sram_rsp[i].key, sram_rsp[i].nonce, sram_rsp[i].seed_valid};
+ assign otp_ctrl_if.sram_acks[i] = sram_rsp[i].ack;
+ initial begin
+ uvm_config_db#(virtual push_pull_if#(.DeviceDataWidth(SRAM_DATA_SIZE)))::set(null,
+ $sformatf("*env.m_sram_pull_agent[%0d]*", i), "vif", sram_if[i]);
+ end
+ end
+ assign otbn_req = otbn_if.req;
+ assign otbn_if.ack = otbn_rsp.ack;
+ assign otbn_if.d_data = {otbn_rsp.key, otbn_rsp.nonce, otbn_rsp.seed_valid};
+
+ assign flash_req = {flash_data_if.req, flash_addr_if.req};
+ assign flash_data_if.ack = flash_rsp.data_ack;
+ assign flash_addr_if.ack = flash_rsp.addr_ack;
+ assign flash_data_if.d_data = {flash_rsp.key, flash_rsp.seed_valid};
+ assign flash_addr_if.d_data = {flash_rsp.key, flash_rsp.seed_valid};
+
+ assign interrupts[OtpOperationDone] = intr_otp_operation_done;
+ assign interrupts[OtpErr] = intr_otp_error;
+
+ // Instantitate the memory backdoor util instance only for OS implementation
+ // Proprietary IP will instantiate their own backdoor util
+
+ if (`PRIM_DEFAULT_IMPL == prim_pkg::ImplGeneric) begin : gen_impl_generic
+ `define MEM_MODULE_PATH \
+ tb.dut.u_otp.gen_generic.u_impl_generic.u_prim_ram_1p_adv
+
+ `define MEM_ARRAY_PATH \
+ `MEM_MODULE_PATH.u_mem.gen_generic.u_impl_generic.mem
+
+ initial begin : mem_bkdr_util_gen
+ mem_bkdr_util m_mem_bkdr_util;
+ m_mem_bkdr_util = new(.name("mem_bkdr_util"),
+ .path(`DV_STRINGIFY(`MEM_ARRAY_PATH)),
+ .depth($size(`MEM_ARRAY_PATH)),
+ .n_bits($bits(`MEM_ARRAY_PATH)),
+ .err_detection_scheme(mem_bkdr_util_pkg::EccHamming_22_16));
+
+ uvm_config_db#(mem_bkdr_util)::set(null, "*.env", "mem_bkdr_util", m_mem_bkdr_util);
+ end : mem_bkdr_util_gen
+
+ `undef MEM_ARRAY_PATH
+ `undef MEM_MODULE_PATH
+ end : gen_impl_generic
+
+ // DV forced otp_cmd_i to reach invalid state, thus violate the assertions
+ for (genvar idx = 0; idx < NumPart; idx++) begin : gen_assertoff_loop
+ if (is_hw_part_idx(idx)) begin : gen_assertoff
+ initial begin
+ $assertoff(0, tb.dut.gen_partitions[idx].gen_buffered.u_part_buf.OtpErrorState_A);
+ end
+ end
+ end
+
+ initial begin
+ // drive clk and rst_n from clk_if
+ clk_rst_if.set_active();
+ uvm_config_db#(virtual clk_rst_if)::set(null, "*.env", "clk_rst_vif", clk_rst_if);
+ uvm_config_db#(virtual clk_rst_if)::set(null, "*.env",
+ "clk_rst_vif_otp_ctrl_prim_reg_block", clk_rst_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent_otp_ctrl_core_reg_block*",
+ "vif", tl_if);
+ uvm_config_db#(virtual tl_if)::set(null, "*.env.m_tl_agent_otp_ctrl_prim_reg_block",
+ "vif", prim_tl_if);
+ uvm_config_db#(virtual push_pull_if#(.DeviceDataWidth(OTBN_DATA_SIZE)))::set(null,
+ "*env.m_otbn_pull_agent*", "vif", otbn_if);
+ uvm_config_db#(virtual push_pull_if#(.DeviceDataWidth(FLASH_DATA_SIZE)))::set(null,
+ "*env.m_flash_data_pull_agent*", "vif", flash_data_if);
+ uvm_config_db#(virtual push_pull_if#(.DeviceDataWidth(FLASH_DATA_SIZE)))::set(null,
+ "*env.m_flash_addr_pull_agent*", "vif", flash_addr_if);
+ uvm_config_db#(virtual push_pull_if#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1)))::
+ set(null, "*env.m_lc_prog_pull_agent*", "vif", lc_prog_if);
+
+ uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
+
+ uvm_config_db#(virtual otp_ctrl_if)::set(null, "*.env", "otp_ctrl_vif", otp_ctrl_if);
+ $timeformat(-12, 0, " ps", 12);
+ run_test();
+ end
+
+endmodule
diff --git a/src/fuse_ctrl/dv/tests/otp_ctrl_base_test.sv b/src/fuse_ctrl/dv/tests/otp_ctrl_base_test.sv
new file mode 100644
index 0000000..284c5e0
--- /dev/null
+++ b/src/fuse_ctrl/dv/tests/otp_ctrl_base_test.sv
@@ -0,0 +1,51 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+class otp_ctrl_base_test #(
+ type CFG_T = otp_ctrl_env_cfg,
+ type ENV_T = otp_ctrl_env
+ ) extends cip_base_test #(
+ .CFG_T(CFG_T),
+ .ENV_T(ENV_T)
+ );
+
+ // A prototype for the registry to associate the parameterized base test
+ // with the name 'otp_ctrl_base_test'
+ //
+ // Register the name 'otp_ctrl_base_test' with the UVM factory to be associated
+ // with the template base test class parameterized with the default types (see
+ // declaration. We cannot invoke the standard UVM factory automation macro t
+ // (uvm_component_param_utils) to register a parameterized test class with the
+ // factory because the creation of the test by name (via the UVM_TESTNAME
+ // plusarg) does not work. We expand the contents of the automation macro
+ // here instead. See the following paper for details:
+ // https://verificationacademy-news.s3.amazonaws.com/DVCon2016/Papers/
+ // dvcon-2016_paramaters-uvm-coverage-and-emulation-take-two-and-call-me-in-the-morning_paper.pdf
+ typedef uvm_component_registry#(otp_ctrl_base_test#(CFG_T, ENV_T), "otp_ctrl_base_test") type_id;
+
+ // functions to support the component registry above
+ static function type_id get_type();
+ return type_id::get();
+ endfunction : get_type
+
+ virtual function uvm_object_wrapper get_object_type();
+ return type_id::get();
+ endfunction : get_object_type
+
+ const static string type_name = "otp_ctrl_base_test";
+
+ virtual function string get_type_name();
+ return type_name;
+ endfunction : get_type_name
+
+ `uvm_component_new
+
+ // the base class dv_base_test creates the following instances:
+ // otp_ctrl_env_cfg: cfg
+ // otp_ctrl_env: env
+
+ // the base class also looks up UVM_TEST_SEQ plusarg to create and run that seq in
+ // the run_phase; as such, nothing more needs to be done
+
+endclass : otp_ctrl_base_test
diff --git a/src/fuse_ctrl/dv/tests/otp_ctrl_test.core b/src/fuse_ctrl/dv/tests/otp_ctrl_test.core
new file mode 100644
index 0000000..de8cfed
--- /dev/null
+++ b/src/fuse_ctrl/dv/tests/otp_ctrl_test.core
@@ -0,0 +1,19 @@
+CAPI=2:
+# Copyright lowRISC contributors (OpenTitan project).
+# Licensed under the Apache License, Version 2.0, see LICENSE for details.
+# SPDX-License-Identifier: Apache-2.0
+name: "lowrisc:dv:otp_ctrl_test:0.1"
+description: "OTP_CTRL DV UVM test"
+filesets:
+ files_dv:
+ depend:
+ - lowrisc:dv:otp_ctrl_env
+ files:
+ - otp_ctrl_test_pkg.sv
+ - otp_ctrl_base_test.sv: {is_include_file: true}
+ file_type: systemVerilogSource
+
+targets:
+ default:
+ filesets:
+ - files_dv
diff --git a/src/fuse_ctrl/dv/tests/otp_ctrl_test_pkg.sv b/src/fuse_ctrl/dv/tests/otp_ctrl_test_pkg.sv
new file mode 100644
index 0000000..3d5703d
--- /dev/null
+++ b/src/fuse_ctrl/dv/tests/otp_ctrl_test_pkg.sv
@@ -0,0 +1,22 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+package otp_ctrl_test_pkg;
+ // dep packages
+ import uvm_pkg::*;
+ import cip_base_pkg::*;
+ import otp_ctrl_env_pkg::*;
+
+ // macro includes
+ `include "uvm_macros.svh"
+ `include "dv_macros.svh"
+
+ // local types
+
+ // functions
+
+ // package sources
+ `include "otp_ctrl_base_test.sv"
+
+endpackage
diff --git a/src/fuse_ctrl/rtl/otp_ctrl.sv b/src/fuse_ctrl/rtl/otp_ctrl.sv
new file mode 100644
index 0000000..7561d90
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl.sv
@@ -0,0 +1,1708 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// OTP Controller top.
+//
+
+`include "caliptra_prim_assert.sv"
+
+module otp_ctrl
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import axi_pkg::*;
+#(
+ // Enable asynchronous transitions on alerts.
+ parameter logic [NumAlerts-1:0] AlertAsyncOn = {NumAlerts{1'b1}},
+ // Compile time random constants, to be overriden by topgen.
+ parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault,
+ parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault,
+ parameter scrmbl_key_init_t RndCnstScrmblKeyInit = RndCnstScrmblKeyInitDefault,
+ // Hexfile file to initialize the OTP macro.
+ // Note that the hexdump needs to account for ECC.
+ parameter MemInitFile = ""
+) (
+ // OTP clock
+ input clk_i,
+ input rst_ni,
+ // EDN clock and interface
+ logic clk_edn_i,
+ logic rst_edn_ni,
+ output edn_pkg::edn_req_t edn_o,
+ input edn_pkg::edn_rsp_t edn_i,
+ // Bus Interface
+ // input tlul_pkg::tl_h2d_t core_tl_i,
+ // output tlul_pkg::tl_d2h_t core_tl_o,
+ input axi_struct_pkg::axi_wr_req_t core_axi_wr_req,
+ output axi_struct_pkg::axi_wr_rsp_t core_axi_wr_rsp,
+ input axi_struct_pkg::axi_rd_req_t core_axi_rd_req,
+ output axi_struct_pkg::axi_rd_rsp_t core_axi_rd_rsp,
+
+ // input tlul_pkg::tl_h2d_t prim_tl_i,
+ // output tlul_pkg::tl_d2h_t prim_tl_o,
+ input axi_struct_pkg::axi_wr_req_t prim_axi_wr_req,
+ output axi_struct_pkg::axi_wr_rsp_t prim_axi_wr_rsp,
+ input axi_struct_pkg::axi_rd_req_t prim_axi_rd_req,
+ output axi_struct_pkg::axi_rd_rsp_t prim_axi_rd_rsp,
+
+ // Interrupt Requests
+ output logic intr_otp_operation_done_o,
+ output logic intr_otp_error_o,
+ // Alerts
+ input caliptra_prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i,
+ output caliptra_prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o,
+ // Observability to AST
+ input ast_pkg::ast_obs_ctrl_t obs_ctrl_i,
+ output logic [7:0] otp_obs_o,
+ // Macro-specific power sequencing signals to/from AST.
+ output otp_ast_req_t otp_ast_pwr_seq_o,
+ input otp_ast_rsp_t otp_ast_pwr_seq_h_i,
+ // Power manager interface (inputs are synced to OTP clock domain)
+ input pwrmgr_pkg::pwr_otp_req_t pwr_otp_i,
+ output pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o,
+ // Macro-specific test registers going to lifecycle TAP
+ input caliptra_ss_lc_otp_vendor_test_req_t caliptra_ss_lc_otp_vendor_test_i,
+ output caliptra_ss_lc_otp_vendor_test_rsp_t caliptra_ss_lc_otp_vendor_test_o,
+ // Lifecycle transition command interface
+ input caliptra_ss_lc_otp_program_req_t caliptra_ss_lc_otp_program_i,
+ output caliptra_ss_lc_otp_program_rsp_t caliptra_ss_lc_otp_program_o,
+ // Lifecycle broadcast inputs
+ // SEC_CM: LC_CTRL.INTERSIG.MUBI
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en_i,
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_owner_seed_sw_rw_en_i,
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_seed_hw_rd_en_i,
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_dft_en_i,
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_escalate_en_i,
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_check_byp_en_i,
+ // OTP broadcast outputs
+ // SEC_CM: TOKEN_VALID.CTRL.MUBI
+ output otp_caliptra_ss_lc_data_t otp_caliptra_ss_lc_data_o,
+ output otp_keymgr_key_t otp_keymgr_key_o,
+ // Scrambling key requests
+ input flash_otp_key_req_t flash_otp_key_i,
+ output flash_otp_key_rsp_t flash_otp_key_o,
+ input sram_otp_key_req_t [NumSramKeyReqSlots-1:0] sram_otp_key_i,
+ output sram_otp_key_rsp_t [NumSramKeyReqSlots-1:0] sram_otp_key_o,
+ input otbn_otp_key_req_t otbn_otp_key_i,
+ output otbn_otp_key_rsp_t otbn_otp_key_o,
+ // Hardware config bits
+ output otp_broadcast_t otp_broadcast_o,
+ // External voltage for OTP
+ inout wire otp_ext_voltage_h_io,
+ // Scan
+ input scan_en_i,
+ input scan_rst_ni,
+ input caliptra_prim_mubi_pkg::mubi4_t scanmode_i,
+ // Test-related GPIO output
+ output logic [OtpTestVectWidth-1:0] cio_test_o,
+ output logic [OtpTestVectWidth-1:0] cio_test_en_o
+);
+
+ import caliptra_prim_mubi_pkg::*;
+ import caliptra_prim_util_pkg::vbits;
+
+ // Core AXI2TLUL interface signals
+ tlul_pkg::tl_h2d_t core_tl_i;
+ tlul_pkg::tl_d2h_t core_tl_o;
+
+ axi_if core_axi_if(
+ .clk(clk_i),
+ .rst_n(rst_ni)
+ );
+
+ assign core_axi_if.awaddr = core_axi_wr_req.awaddr;
+ assign core_axi_if.awburst = core_axi_wr_req.awburst;
+ assign core_axi_if.awsize = core_axi_wr_req.awsize;
+ assign core_axi_if.awlen = core_axi_wr_req.awlen;
+ assign core_axi_if.awuser = core_axi_wr_req.awuser;
+ assign core_axi_if.awid = core_axi_wr_req.awid;
+ assign core_axi_if.awlock = core_axi_wr_req.awlock;
+ assign core_axi_if.awvalid = core_axi_wr_req.awvalid;
+ assign core_axi_wr_rsp.awready = core_axi_if.awready;
+
+ assign core_axi_if.wdata = core_axi_wr_req.wdata;
+ assign core_axi_if.wstrb = core_axi_wr_req.wstrb;
+ assign core_axi_if.wlast = core_axi_wr_req.wlast;
+ assign core_axi_if.wvalid = core_axi_wr_req.wvalid;
+ assign core_axi_wr_rsp.wready = core_axi_if.wready;
+
+ assign core_axi_wr_rsp.bresp = core_axi_if.bresp;
+ assign core_axi_wr_rsp.bid = core_axi_if.bid;
+ assign core_axi_wr_rsp.bvalid = core_axi_if.bvalid;
+ assign core_axi_if.bready = core_axi_wr_req.bready;
+
+ assign core_axi_if.araddr = core_axi_rd_req.araddr;
+ assign core_axi_if.arburst = core_axi_rd_req.arburst;
+ assign core_axi_if.arsize = core_axi_rd_req.arsize;
+ assign core_axi_if.arlen = core_axi_rd_req.arlen;
+ assign core_axi_if.aruser = core_axi_rd_req.aruser;
+ assign core_axi_if.arid = core_axi_rd_req.arid;
+ assign core_axi_if.arlock = core_axi_rd_req.arlock;
+ assign core_axi_if.arvalid = core_axi_rd_req.arvalid;
+ assign core_axi_rd_rsp.arready = core_axi_if.arready;
+
+ assign core_axi_rd_rsp.rdata = core_axi_if.rdata;
+ assign core_axi_rd_rsp.rresp = core_axi_if.rresp;
+ assign core_axi_rd_rsp.rid = core_axi_if.rid;
+ assign core_axi_rd_rsp.rlast = core_axi_if.rlast;
+ assign core_axi_rd_rsp.rvalid = core_axi_if.rvalid;
+ assign core_axi_if.rready = core_axi_rd_req.rready;
+
+ // Core AXI2TLUL instance
+ axi2tlul #(
+ .AW (32),
+ .DW (32),
+ .UW (32),
+ .IW (8 )
+ ) u_core_axi2tlul (
+ .clk (clk_i),
+ .rst_n (rst_ni),
+ .s_axi_w_if (core_axi_if.w_sub),
+ .s_axi_r_if (core_axi_if.r_sub),
+ .tl_o (core_tl_i),
+ .tl_i (core_tl_o)
+ );
+
+ // Prim AXI2TLUL interface signals
+ tlul_pkg::tl_h2d_t prim_tl_i;
+ tlul_pkg::tl_d2h_t prim_tl_o;
+
+ axi_if prim_axi_if(
+ .clk(clk_i),
+ .rst_n(rst_ni)
+ );
+
+ assign prim_axi_if.awaddr = prim_axi_wr_req.awaddr;
+ assign prim_axi_if.awburst = prim_axi_wr_req.awburst;
+ assign prim_axi_if.awsize = prim_axi_wr_req.awsize;
+ assign prim_axi_if.awlen = prim_axi_wr_req.awlen;
+ assign prim_axi_if.awuser = prim_axi_wr_req.awuser;
+ assign prim_axi_if.awid = prim_axi_wr_req.awid;
+ assign prim_axi_if.awlock = prim_axi_wr_req.awlock;
+ assign prim_axi_if.awvalid = prim_axi_wr_req.awvalid;
+ assign prim_axi_wr_rsp.awready = prim_axi_if.awready;
+
+ assign prim_axi_if.wdata = prim_axi_wr_req.wdata;
+ assign prim_axi_if.wstrb = prim_axi_wr_req.wstrb;
+ assign prim_axi_if.wlast = prim_axi_wr_req.wlast;
+ assign prim_axi_if.wvalid = prim_axi_wr_req.wvalid;
+ assign prim_axi_wr_rsp.wready = prim_axi_if.wready;
+
+ assign prim_axi_wr_rsp.bresp = prim_axi_if.bresp;
+ assign prim_axi_wr_rsp.bid = prim_axi_if.bid;
+ assign prim_axi_wr_rsp.bvalid = prim_axi_if.bvalid;
+ assign prim_axi_if.bready = prim_axi_wr_req.bready;
+
+ assign prim_axi_if.araddr = prim_axi_rd_req.araddr;
+ assign prim_axi_if.arburst = prim_axi_rd_req.arburst;
+ assign prim_axi_if.arsize = prim_axi_rd_req.arsize;
+ assign prim_axi_if.arlen = prim_axi_rd_req.arlen;
+ assign prim_axi_if.aruser = prim_axi_rd_req.aruser;
+ assign prim_axi_if.arid = prim_axi_rd_req.arid;
+ assign prim_axi_if.arlock = prim_axi_rd_req.arlock;
+ assign prim_axi_if.arvalid = prim_axi_rd_req.arvalid;
+ assign prim_axi_rd_rsp.arready = prim_axi_if.arready;
+
+ assign prim_axi_rd_rsp.rdata = prim_axi_if.rdata;
+ assign prim_axi_rd_rsp.rresp = prim_axi_if.rresp;
+ assign prim_axi_rd_rsp.rid = prim_axi_if.rid;
+ assign prim_axi_rd_rsp.rlast = prim_axi_if.rlast;
+ assign prim_axi_rd_rsp.rvalid = prim_axi_if.rvalid;
+ assign prim_axi_if.rready = prim_axi_rd_req.rready;
+
+ // Prim AXI2TLUL instance
+ axi2tlul #(
+ .AW (32),
+ .DW (32),
+ .UW (32),
+ .IW (8 )
+ ) u_prim_axi2tlul (
+ .clk (clk_i),
+ .rst_n (rst_ni),
+ .s_axi_w_if (prim_axi_if.w_sub),
+ .s_axi_r_if (prim_axi_if.r_sub),
+ .tl_o (prim_tl_i),
+ .tl_i (prim_tl_o)
+ );
+
+
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ // This ensures that we can transfer scrambler data blocks in and out of OTP atomically.
+ `CALIPTRA_ASSERT_INIT(OtpIfWidth_A, OtpIfWidth == ScrmblBlockWidth)
+
+ // These error codes need to be identical.
+ `CALIPTRA_ASSERT_INIT(ErrorCodeWidth_A, OtpErrWidth == caliptra_prim_otp_pkg::ErrWidth)
+ `CALIPTRA_ASSERT_INIT(OtpErrorCode0_A, int'(NoError) == int'(caliptra_prim_otp_pkg::NoError))
+ `CALIPTRA_ASSERT_INIT(OtpErrorCode1_A, int'(MacroError) == int'(caliptra_prim_otp_pkg::MacroError))
+ `CALIPTRA_ASSERT_INIT(OtpErrorCode2_A, int'(MacroEccCorrError) == int'(caliptra_prim_otp_pkg::MacroEccCorrError))
+ `CALIPTRA_ASSERT_INIT(OtpErrorCode3_A,
+ int'(MacroEccUncorrError) == int'(caliptra_prim_otp_pkg::MacroEccUncorrError))
+ `CALIPTRA_ASSERT_INIT(OtpErrorCode4_A,
+ int'(MacroWriteBlankError) == int'(caliptra_prim_otp_pkg::MacroWriteBlankError))
+
+ /////////////
+ // Regfile //
+ /////////////
+
+ // We have one CSR node, one functional TL-UL window and a gate module for that window
+ logic [2:0] intg_error;
+
+ tlul_pkg::tl_h2d_t tl_win_h2d;
+ tlul_pkg::tl_d2h_t tl_win_d2h;
+
+ otp_ctrl_reg_pkg::otp_ctrl_core_reg2hw_t reg2hw;
+ otp_ctrl_reg_pkg::otp_ctrl_core_hw2reg_t hw2reg;
+
+ // SEC_CM: DIRECT_ACCESS.CONFIG.REGWEN, CHECK_TRIGGER.CONFIG.REGWEN, CHECK.CONFIG.REGWEN
+ otp_ctrl_core_reg_top u_reg_core (
+ .clk_i,
+ .rst_ni,
+ .tl_i ( core_tl_i ),
+ .tl_o ( core_tl_o ),
+ .tl_win_o ( tl_win_h2d ),
+ .tl_win_i ( tl_win_d2h ),
+ .reg2hw ( reg2hw ),
+ .hw2reg ( hw2reg ),
+ // SEC_CM: BUS.INTEGRITY
+ .intg_err_o( intg_error[0] )
+ );
+
+ ///////////////////////////////////////
+ // Life Cycle Signal Synchronization //
+ ///////////////////////////////////////
+
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_creator_seed_sw_rw_en, caliptra_ss_lc_owner_seed_sw_rw_en,
+ caliptra_ss_lc_seed_hw_rd_en, caliptra_ss_lc_check_byp_en;
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [2:0] caliptra_ss_lc_dft_en;
+ // NumAgents + lfsr timer and scrambling datapath.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t [NumAgentsIdx+1:0] caliptra_ss_lc_escalate_en, caliptra_ss_lc_escalate_en_synced;
+ // Single wire for gating assertions in arbitration and CDC primitives.
+ logic caliptra_ss_lc_escalate_en_any;
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(NumAgentsIdx+2)
+ ) u_prim_caliptra_ss_lc_sync_escalate_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_escalate_en_i),
+ .lc_en_o(caliptra_ss_lc_escalate_en_synced)
+ );
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(1)
+ ) u_prim_caliptra_ss_lc_sync_creator_seed_sw_rw_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_creator_seed_sw_rw_en_i),
+ .lc_en_o({caliptra_ss_lc_creator_seed_sw_rw_en})
+ );
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(1)
+ ) u_prim_caliptra_ss_lc_sync_owner_seed_sw_rw_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_owner_seed_sw_rw_en_i),
+ .lc_en_o({caliptra_ss_lc_owner_seed_sw_rw_en})
+ );
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(1)
+ ) u_prim_caliptra_ss_lc_sync_seed_hw_rd_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_seed_hw_rd_en_i),
+ .lc_en_o({caliptra_ss_lc_seed_hw_rd_en})
+ );
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(3)
+ ) u_prim_caliptra_ss_lc_sync_dft_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_dft_en_i),
+ .lc_en_o(caliptra_ss_lc_dft_en)
+ );
+
+ caliptra_prim_lc_sync #(
+ .NumCopies(1)
+ ) u_prim_caliptra_ss_lc_sync_check_byp_en (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(caliptra_ss_lc_check_byp_en_i),
+ .lc_en_o({caliptra_ss_lc_check_byp_en})
+ );
+
+ /////////////////////////////////////
+ // TL-UL SW partition select logic //
+ /////////////////////////////////////
+
+ // The SW partitions share the same TL-UL adapter.
+ logic tlul_req, tlul_gnt, tlul_rvalid;
+ logic [SwWindowAddrWidth-1:0] tlul_addr;
+ logic [1:0] tlul_rerror;
+ logic [31:0] tlul_rdata;
+
+ import caliptra_prim_mubi_pkg::MuBi4False;
+ tlul_adapter_sram #(
+ .SramAw ( SwWindowAddrWidth ),
+ .SramDw ( 32 ),
+ .Outstanding ( 1 ),
+ .ByteAccess ( 0 ),
+ .ErrOnWrite ( 1 ) // No write accesses allowed here.
+ ) u_tlul_adapter_sram (
+ .clk_i,
+ .rst_ni,
+ .en_ifetch_i ( MuBi4False ),
+ .tl_i ( tl_win_h2d ),
+ .tl_o ( tl_win_d2h ),
+ .req_o ( tlul_req ),
+ .gnt_i ( tlul_gnt ),
+ .we_o ( ), // unused
+ .addr_o ( tlul_addr ),
+ .wdata_o ( ), // unused
+ .wmask_o ( ), // unused
+ // SEC_CM: BUS.INTEGRITY
+ .intg_error_o ( intg_error[1] ),
+ .rdata_i ( tlul_rdata ),
+ .rvalid_i ( tlul_rvalid ),
+ .rerror_i ( tlul_rerror ),
+ .req_type_o ( ),
+ .compound_txn_in_progress_o ( ),
+ .readback_en_i ( MuBi4False ),
+ .readback_error_o ( ),
+ .wr_collision_i ( 1'b0 ),
+ .write_pending_i ( 1'b0 )
+ );
+
+ logic [NumPart-1:0] tlul_part_sel_oh;
+ for (genvar k = 0; k < NumPart; k++) begin : gen_part_sel
+ localparam logic [OtpByteAddrWidth:0] PartEnd = (OtpByteAddrWidth+1)'(PartInfo[k].offset) +
+ (OtpByteAddrWidth+1)'(PartInfo[k].size);
+ if (PartInfo[k].offset == 0) begin : gen_zero_offset
+ assign tlul_part_sel_oh[k] = ({1'b0, {tlul_addr, 2'b00}} < PartEnd);
+ end else begin : gen_nonzero_offset
+ assign tlul_part_sel_oh[k] = ({tlul_addr, 2'b00} >= PartInfo[k].offset) &
+ ({1'b0, {tlul_addr, 2'b00}} < PartEnd);
+ end
+ end
+
+ `CALIPTRA_ASSERT(PartSelMustBeOnehot_A, $onehot0(tlul_part_sel_oh))
+
+ logic [NumPartWidth-1:0] tlul_part_idx;
+ caliptra_prim_arbiter_fixed #(
+ .N(NumPart),
+ .EnDataPort(0)
+ ) u_part_sel_idx (
+ .clk_i,
+ .rst_ni,
+ .req_i ( tlul_part_sel_oh ),
+ .data_i ( '{default: '0} ),
+ .gnt_o ( ), // unused
+ .idx_o ( tlul_part_idx ),
+ .valid_o ( ), // unused
+ .data_o ( ), // unused
+ .ready_i ( 1'b0 )
+ );
+
+ logic tlul_oob_err_d, tlul_oob_err_q;
+ logic [NumPart-1:0] part_tlul_req, part_tlul_gnt, part_tlul_rvalid;
+ logic [SwWindowAddrWidth-1:0] part_tlul_addr;
+ logic [NumPart-1:0][1:0] part_tlul_rerror;
+ logic [NumPart-1:0][31:0] part_tlul_rdata;
+
+ always_comb begin : p_tlul_assign
+ // Send request to the correct partition.
+ part_tlul_addr = tlul_addr;
+ part_tlul_req = '0;
+ tlul_oob_err_d = 1'b0;
+ if (tlul_req) begin
+ if (tlul_part_sel_oh != '0) begin
+ part_tlul_req[tlul_part_idx] = 1'b1;
+ end else begin
+ // Error out in the next cycle if address was out of bounds.
+ tlul_oob_err_d = 1'b1;
+ end
+ end
+
+ // aggregate TL-UL responses
+ tlul_gnt = |part_tlul_gnt | tlul_oob_err_q;
+ tlul_rvalid = |part_tlul_rvalid | tlul_oob_err_q;
+ tlul_rerror = '0;
+ tlul_rdata = '0;
+ for (int k = 0; k < NumPart; k++) begin
+ tlul_rerror |= part_tlul_rerror[k];
+ tlul_rdata |= part_tlul_rdata[k];
+ end
+ end
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_tlul_reg
+ if (!rst_ni) begin
+ tlul_oob_err_q <= 1'b0;
+ end else begin
+ tlul_oob_err_q <= tlul_oob_err_d;
+ end
+ end
+
+ //////////////////////////////
+ // Access Defaults and CSRs //
+ //////////////////////////////
+
+ // SEC_CM: ACCESS.CTRL.MUBI
+ part_access_t [NumPart-1:0] part_access_pre, part_access;
+ always_comb begin : p_access_control
+ // Assigns default and extracts named CSR read enables for SW_CFG partitions.
+ // SEC_CM: PART.MEM.REGREN
+ part_access_pre = named_part_access_pre(reg2hw);
+
+ // Permanently lock DAI write and read access to the life cycle partition.
+ // The LC partition can only be read from and written to via the LC controller.
+ // SEC_CM: LC_PART.MEM.SW_NOACCESS
+ part_access_pre[LifeCycleIdx].write_lock = MuBi8True;
+ part_access_pre[LifeCycleIdx].read_lock = MuBi8True;
+
+ // Special partitions for keymgr material only become writable when
+ // provisioning is enabled.
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_loose(caliptra_ss_lc_creator_seed_sw_rw_en)) begin
+ for (int k = 0; k < NumPart; k++) begin
+ if (PartInfo[k].iskeymgr_creator) begin
+ part_access_pre[k] = {2{caliptra_prim_mubi_pkg::MuBi8True}};
+ end
+ end
+ end
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_loose(caliptra_ss_lc_owner_seed_sw_rw_en)) begin
+ for (int k = 0; k < NumPart; k++) begin
+ if (PartInfo[k].iskeymgr_owner) begin
+ part_access_pre[k] = {2{caliptra_prim_mubi_pkg::MuBi8True}};
+ end
+ end
+ end
+ end
+
+ // This prevents the synthesis tool from optimizing the multibit signals.
+ for (genvar k = 0; k < NumPart; k++) begin : gen_bufs
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_write_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(part_access_pre[k].write_lock),
+ .mubi_o(part_access[k].write_lock)
+ );
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_read_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(part_access_pre[k].read_lock),
+ .mubi_o(part_access[k].read_lock)
+ );
+ end
+
+ //////////////////////
+ // DAI-related CSRs //
+ //////////////////////
+
+ logic dai_idle;
+ logic dai_req;
+ dai_cmd_e dai_cmd;
+ logic [OtpByteAddrWidth-1:0] dai_addr;
+ logic [NumDaiWords-1:0][31:0] dai_wdata, dai_rdata;
+ logic direct_access_regwen_d, direct_access_regwen_q;
+
+ // This is the HWEXT implementation of a RW0C regwen bit.
+ assign direct_access_regwen_d = (reg2hw.direct_access_regwen.qe &&
+ !reg2hw.direct_access_regwen.q) ? 1'b0 : direct_access_regwen_q;
+
+ // Any write to this register triggers a DAI command.
+ assign dai_req = reg2hw.direct_access_cmd.digest.qe |
+ reg2hw.direct_access_cmd.wr.qe |
+ reg2hw.direct_access_cmd.rd.qe;
+
+ assign dai_cmd = dai_cmd_e'({reg2hw.direct_access_cmd.digest.q,
+ reg2hw.direct_access_cmd.wr.q,
+ reg2hw.direct_access_cmd.rd.q});
+
+ assign dai_addr = reg2hw.direct_access_address.q;
+ assign dai_wdata = reg2hw.direct_access_wdata;
+
+ // The DAI and the LCI can initiate write transactions, which
+ // are critical and we must not power down if such transactions
+ // are pending. Hence, we signal the LCI/DAI idle state to the
+ // power manager. This signal is flopped here as it has to
+ // cross a clock boundary to the power manager.
+ logic dai_prog_idle, lci_prog_idle, otp_idle_d, otp_idle_q;
+ assign otp_idle_d = lci_prog_idle & dai_prog_idle;
+ assign pwr_otp_o.otp_idle = otp_idle_q;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_idle_regwen_regs
+ if (!rst_ni) begin
+ otp_idle_q <= 1'b0;
+ // The regwen bit has to reset to 1 so that CSR accesses are enabled by default.
+ direct_access_regwen_q <= 1'b1;
+ end else begin
+ otp_idle_q <= otp_idle_d;
+ direct_access_regwen_q <= direct_access_regwen_d;
+ end
+ end
+
+ //////////////////////////////////////
+ // Ctrl/Status CSRs, Errors, Alerts //
+ //////////////////////////////////////
+
+ // Status and error reporting CSRs, error interrupt generation and alerts.
+ otp_err_e [NumPart+1:0] part_error;
+ logic [NumAgents-1:0] part_fsm_err;
+ logic [NumPart+1:0] part_errors_reduced;
+ logic otp_operation_done, otp_error;
+ logic fatal_macro_error_d, fatal_macro_error_q;
+ logic fatal_check_error_d, fatal_check_error_q;
+ logic fatal_bus_integ_error_d, fatal_bus_integ_error_q;
+ logic chk_pending, chk_timeout;
+ logic lfsr_fsm_err, scrmbl_fsm_err;
+ always_comb begin : p_errors_alerts
+ // Note: since these are all fatal alert events, we latch them and keep on sending
+ // alert events via the alert senders. These regs can only be cleared via a system reset.
+ fatal_macro_error_d = fatal_macro_error_q;
+ fatal_check_error_d = fatal_check_error_q;
+ fatal_bus_integ_error_d = fatal_bus_integ_error_q | (|intg_error);
+ // These are the per-partition buffered escalation inputs
+ caliptra_ss_lc_escalate_en = caliptra_ss_lc_escalate_en_synced;
+ // Need a single wire for gating assertions in arbitration and CDC primitives.
+ caliptra_ss_lc_escalate_en_any = 1'b0;
+
+ // Aggregate all the macro alerts from the partitions
+ for (int k = 0; k < NumPart; k++) begin
+ // Filter for critical error codes that should not occur in the field.
+ fatal_macro_error_d |= part_error[k] == MacroError;
+ // While uncorrectable ECC errors are always reported, they do not trigger a fatal alert
+ // event in some partitions like the VENDOR_TEST partition.
+ if (PartInfo[k].integrity) begin
+ fatal_macro_error_d |= part_error[k] == MacroEccUncorrError;
+ end
+ end
+ // Aggregate all the macro alerts from the DAI/LCI
+ for (int k = NumPart; k < NumPart+2; k++) begin
+ // Filter for critical error codes that should not occur in the field.
+ fatal_macro_error_d |= part_error[k] inside {MacroError, MacroEccUncorrError};
+ end
+
+ // Aggregate all the remaining errors / alerts from the partitions and the DAI/LCI
+ for (int k = 0; k < NumPart+2; k++) begin
+ // Set the error bit if the error status of the corresponding partition is nonzero.
+ // Need to reverse the order here since the field enumeration in hw2reg.status is reversed.
+ part_errors_reduced[NumPart+1-k] = |part_error[k];
+ // Filter for integrity and consistency check failures.
+ fatal_check_error_d |= part_error[k] inside {CheckFailError, FsmStateError};
+
+ // If a fatal alert has been observed in any of the partitions/FSMs,
+ // we locally trigger escalation within OTP, which moves all FSMs
+ // to a terminal error state.
+ if (fatal_macro_error_q || fatal_check_error_q) begin
+ caliptra_ss_lc_escalate_en[k] = caliptra_ss_lc_ctrl_pkg::On;
+ end
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_escalate_en[k])) begin
+ caliptra_ss_lc_escalate_en_any = 1'b1;
+ end
+ end
+
+ // Errors from other non-partition FSMs.
+ fatal_check_error_d |= chk_timeout |
+ lfsr_fsm_err |
+ scrmbl_fsm_err |
+ (|part_fsm_err);
+ end
+
+ // If we got an error, we trigger an interrupt.
+ logic [$bits(part_errors_reduced)+4-1:0] interrupt_triggers_d, interrupt_triggers_q;
+
+ // This makes sure that interrupts are not sticky.
+ assign interrupt_triggers_d = {
+ part_errors_reduced,
+ chk_timeout,
+ lfsr_fsm_err,
+ scrmbl_fsm_err,
+ |part_fsm_err
+ };
+
+ assign otp_error = |(interrupt_triggers_d & ~interrupt_triggers_q);
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_alert_regs
+ if (!rst_ni) begin
+ fatal_macro_error_q <= '0;
+ fatal_check_error_q <= '0;
+ fatal_bus_integ_error_q <= '0;
+ interrupt_triggers_q <= '0;
+ end else begin
+ fatal_macro_error_q <= fatal_macro_error_d;
+ fatal_check_error_q <= fatal_check_error_d;
+ fatal_bus_integ_error_q <= fatal_bus_integ_error_d;
+ interrupt_triggers_q <= interrupt_triggers_d;
+ end
+ end
+
+ // CSR assignments are done in one combo process so that we can use
+ // the parameterized digest_assign task below without multiple driver issues.
+ logic unused_part_digest;
+ logic [NumPart-1:0][ScrmblBlockWidth-1:0] part_digest;
+ logic intr_state_otp_operation_done_d, intr_state_otp_operation_done_de;
+ logic intr_state_otp_error_d, intr_state_otp_error_de;
+ always_comb begin : p_csr_assign
+ // Not all partition digests are consumed, and assigning them to an unused_* signal in the
+ // function below does not seem to work for some linters.
+ unused_part_digest = ^part_digest;
+ // Assign named CSRs (like digests).
+ hw2reg = named_reg_assign(part_digest);
+ // DAI related CSRs
+ hw2reg.direct_access_rdata = dai_rdata;
+ // ANDing this state with dai_idle write-protects all DAI regs during pending operations.
+ hw2reg.direct_access_regwen.d = direct_access_regwen_q & dai_idle;
+ // Assign these to the status register.
+ hw2reg.status = {part_errors_reduced,
+ chk_timeout,
+ lfsr_fsm_err,
+ scrmbl_fsm_err,
+ part_fsm_err[KdiIdx],
+ fatal_bus_integ_error_q,
+ dai_idle,
+ chk_pending};
+ // Error code registers.
+ hw2reg.err_code = part_error;
+ // Interrupt signals
+ hw2reg.intr_state.otp_operation_done.de = intr_state_otp_operation_done_de;
+ hw2reg.intr_state.otp_operation_done.d = intr_state_otp_operation_done_d;
+ hw2reg.intr_state.otp_error.de = intr_state_otp_error_de;
+ hw2reg.intr_state.otp_error.d = intr_state_otp_error_d;
+end
+
+
+ //////////////////////////////////
+ // Interrupts and Alert Senders //
+ //////////////////////////////////
+
+ caliptra_prim_intr_hw #(
+ .Width(1)
+ ) u_intr_operation_done (
+ .clk_i,
+ .rst_ni,
+ .event_intr_i ( otp_operation_done ),
+ .reg2hw_intr_enable_q_i ( reg2hw.intr_enable.otp_operation_done.q ),
+ .reg2hw_intr_test_q_i ( reg2hw.intr_test.otp_operation_done.q ),
+ .reg2hw_intr_test_qe_i ( reg2hw.intr_test.otp_operation_done.qe ),
+ .reg2hw_intr_state_q_i ( reg2hw.intr_state.otp_operation_done.q ),
+ .hw2reg_intr_state_de_o ( intr_state_otp_operation_done_de ),
+ .hw2reg_intr_state_d_o ( intr_state_otp_operation_done_d ),
+ .intr_o ( intr_otp_operation_done_o )
+ );
+
+ caliptra_prim_intr_hw #(
+ .Width(1)
+ ) u_intr_error (
+ .clk_i,
+ .rst_ni,
+ .event_intr_i ( otp_error ),
+ .reg2hw_intr_enable_q_i ( reg2hw.intr_enable.otp_error.q ),
+ .reg2hw_intr_test_q_i ( reg2hw.intr_test.otp_error.q ),
+ .reg2hw_intr_test_qe_i ( reg2hw.intr_test.otp_error.qe ),
+ .reg2hw_intr_state_q_i ( reg2hw.intr_state.otp_error.q ),
+ .hw2reg_intr_state_de_o ( intr_state_otp_error_de ),
+ .hw2reg_intr_state_d_o ( intr_state_otp_error_d ),
+ .intr_o ( intr_otp_error_o )
+ );
+
+ logic [NumAlerts-1:0] alerts;
+ logic [NumAlerts-1:0] alert_test;
+ logic fatal_prim_otp_alert, recov_prim_otp_alert;
+
+ assign alerts = {
+ recov_prim_otp_alert,
+ fatal_prim_otp_alert,
+ fatal_bus_integ_error_q,
+ fatal_check_error_q,
+ fatal_macro_error_q
+ };
+
+ assign alert_test = {
+ reg2hw.alert_test.recov_prim_otp_alert.q &
+ reg2hw.alert_test.recov_prim_otp_alert.qe,
+ reg2hw.alert_test.fatal_prim_otp_alert.q &
+ reg2hw.alert_test.fatal_prim_otp_alert.qe,
+ reg2hw.alert_test.fatal_bus_integ_error.q &
+ reg2hw.alert_test.fatal_bus_integ_error.qe,
+ reg2hw.alert_test.fatal_check_error.q &
+ reg2hw.alert_test.fatal_check_error.qe,
+ reg2hw.alert_test.fatal_macro_error.q &
+ reg2hw.alert_test.fatal_macro_error.qe
+ };
+
+ localparam logic [NumAlerts-1:0] AlertIsFatal = {
+ 1'b0, // recov_prim_otp_alert
+ 1'b1, // fatal_prim_otp_alert
+ 1'b1, // fatal_bus_integ_error_q
+ 1'b1, // fatal_check_error_q
+ 1'b1 // fatal_macro_error_q
+ };
+
+ for (genvar k = 0; k < NumAlerts; k++) begin : gen_alert_tx
+ caliptra_prim_alert_sender #(
+ .AsyncOn(AlertAsyncOn[k]),
+ .IsFatal(AlertIsFatal[k])
+ ) u_prim_alert_sender (
+ .clk_i,
+ .rst_ni,
+ .alert_test_i ( alert_test[k] ),
+ .alert_req_i ( alerts[k] ),
+ .alert_ack_o ( ),
+ .alert_state_o ( ),
+ .alert_rx_i ( alert_rx_i[k] ),
+ .alert_tx_o ( alert_tx_o[k] )
+ );
+ end
+
+ ////////////////////////////////
+ // LFSR Timer and CSR mapping //
+ ////////////////////////////////
+
+ logic integ_chk_trig, cnsty_chk_trig;
+ logic [NumPart-1:0] integ_chk_req, integ_chk_ack;
+ logic [NumPart-1:0] cnsty_chk_req, cnsty_chk_ack;
+ logic lfsr_edn_req, lfsr_edn_ack;
+ logic [EdnDataWidth-1:0] edn_data;
+
+ assign integ_chk_trig = reg2hw.check_trigger.integrity.q &
+ reg2hw.check_trigger.integrity.qe;
+ assign cnsty_chk_trig = reg2hw.check_trigger.consistency.q &
+ reg2hw.check_trigger.consistency.qe;
+
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ otp_ctrl_lfsr_timer #(
+ .RndCnstLfsrSeed(RndCnstLfsrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm)
+ ) u_otp_ctrl_lfsr_timer (
+ .clk_i,
+ .rst_ni,
+ .edn_req_o ( lfsr_edn_req ),
+ .edn_ack_i ( lfsr_edn_ack ),
+ .edn_data_i ( edn_data ),
+ // We can enable the timer once OTP has initialized.
+ // Note that this is only the initial release that gets
+ // the timer FSM into an operational state.
+ // Whether or not the timers / background checks are
+ // activated depends on the CSR configuration (by default
+ // they are switched off).
+ .timer_en_i ( pwr_otp_o.otp_done ),
+ // This idle signal is the same that is output to the power
+ // manager, and indicates whether there is an ongoing OTP programming
+ // operation. It is used to pause the consistency check timeout
+ // counter in order to prevent spurious timeouts (OTP programming
+ // operations are very slow compared to readout operations and can
+ // hence interfere with the timeout mechanism).
+ .otp_prog_busy_i ( ~otp_idle_d ),
+ .integ_chk_trig_i ( integ_chk_trig ),
+ .cnsty_chk_trig_i ( cnsty_chk_trig ),
+ .chk_pending_o ( chk_pending ),
+ .timeout_i ( reg2hw.check_timeout.q ),
+ .integ_period_msk_i ( reg2hw.integrity_check_period.q ),
+ .cnsty_period_msk_i ( reg2hw.consistency_check_period.q ),
+ .integ_chk_req_o ( integ_chk_req ),
+ .cnsty_chk_req_o ( cnsty_chk_req ),
+ .integ_chk_ack_i ( integ_chk_ack ),
+ .cnsty_chk_ack_i ( cnsty_chk_ack ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[NumAgents] ),
+ .chk_timeout_o ( chk_timeout ),
+ .fsm_err_o ( lfsr_fsm_err )
+ );
+
+ ///////////////////////////////////////
+ // EDN Arbitration, Request and Sync //
+ ///////////////////////////////////////
+
+ // Both the key derivation and LFSR reseeding are low bandwidth,
+ // hence they can share the same EDN interface.
+ logic edn_req, edn_ack;
+ logic key_edn_req, key_edn_ack;
+ caliptra_prim_arbiter_tree #(
+ .N(2),
+ .EnDataPort(0)
+ ) u_edn_arb (
+ .clk_i,
+ .rst_ni,
+ .req_chk_i ( ~caliptra_ss_lc_escalate_en_any ),
+ .req_i ( {lfsr_edn_req, key_edn_req} ),
+ .data_i ( '{default: '0} ),
+ .gnt_o ( {lfsr_edn_ack, key_edn_ack} ),
+ .idx_o ( ), // unused
+ .valid_o ( edn_req ),
+ .data_o ( ), // unused
+ .ready_i ( edn_ack )
+ );
+
+ // This synchronizes the data coming from EDN and stacks the
+ // 32bit EDN words to achieve an internal entropy width of 64bit.
+ caliptra_prim_edn_req #(
+ .OutWidth(EdnDataWidth)
+ ) u_prim_edn_req (
+ .clk_i,
+ .rst_ni,
+ .req_chk_i ( ~caliptra_ss_lc_escalate_en_any ),
+ .req_i ( edn_req ),
+ .ack_o ( edn_ack ),
+ .data_o ( edn_data ),
+ .fips_o ( ), // unused
+ .err_o ( ), // unused
+ .clk_edn_i,
+ .rst_edn_ni,
+ .edn_o,
+ .edn_i
+ );
+
+ ///////////////////////////////
+ // OTP Macro and Arbitration //
+ ///////////////////////////////
+
+ typedef struct packed {
+ caliptra_prim_otp_pkg::cmd_e cmd;
+ logic [OtpSizeWidth-1:0] size; // Number of native words to write.
+ logic [OtpIfWidth-1:0] wdata;
+ logic [OtpAddrWidth-1:0] addr; // Halfword address.
+ } otp_bundle_t;
+
+ logic [NumAgents-1:0] part_otp_arb_req, part_otp_arb_gnt;
+ otp_bundle_t part_otp_arb_bundle [NumAgents];
+ logic otp_arb_valid, otp_arb_ready;
+ logic otp_prim_valid, otp_prim_ready;
+ logic otp_rsp_fifo_valid, otp_rsp_fifo_ready;
+ logic [vbits(NumAgents)-1:0] otp_arb_idx;
+ otp_bundle_t otp_arb_bundle;
+
+ // The OTP interface is arbitrated on a per-cycle basis, meaning that back-to-back
+ // transactions can be completely independent.
+ caliptra_prim_arbiter_tree #(
+ .N(NumAgents),
+ .DW($bits(otp_bundle_t))
+ ) u_otp_arb (
+ .clk_i,
+ .rst_ni,
+ .req_chk_i ( ~caliptra_ss_lc_escalate_en_any ),
+ .req_i ( part_otp_arb_req ),
+ .data_i ( part_otp_arb_bundle ),
+ .gnt_o ( part_otp_arb_gnt ),
+ .idx_o ( otp_arb_idx ),
+ .valid_o ( otp_arb_valid ),
+ .data_o ( otp_arb_bundle ),
+ .ready_i ( otp_arb_ready )
+ );
+
+ // Don't issue more transactions than what the rsp_fifo can keep track of.
+ assign otp_arb_ready = otp_prim_ready & otp_rsp_fifo_ready;
+ assign otp_prim_valid = otp_arb_valid & otp_rsp_fifo_ready;
+ assign otp_rsp_fifo_valid = otp_prim_ready & otp_prim_valid;
+
+ caliptra_prim_otp_pkg::err_e part_otp_err;
+ logic [OtpIfWidth-1:0] part_otp_rdata;
+ logic otp_rvalid;
+ tlul_pkg::tl_h2d_t prim_tl_h2d_gated;
+ tlul_pkg::tl_d2h_t prim_tl_d2h_gated;
+
+ // Life cycle qualification of TL-UL test interface.
+ // SEC_CM: TEST.BUS.LC_GATED
+ // SEC_CM: TEST_TL_LC_GATE.FSM.SPARSE
+ tlul_caliptra_ss_lc_gate #(
+ .NumGatesPerDirection(2)
+ ) u_tlul_caliptra_ss_lc_gate (
+ .clk_i,
+ .rst_ni,
+ .tl_h2d_i(prim_tl_i),
+ .tl_d2h_o(prim_tl_o),
+ .tl_h2d_o(prim_tl_h2d_gated),
+ .tl_d2h_i(prim_tl_d2h_gated),
+ .lc_en_i (caliptra_ss_lc_dft_en[0]),
+ .flush_req_i('0),
+ .flush_ack_o(),
+ .resp_pending_o(),
+ .err_o (intg_error[2])
+ );
+
+ // Test-related GPIOs.
+ // SEC_CM: TEST.BUS.LC_GATED
+ logic [OtpTestVectWidth-1:0] otp_test_vect;
+ assign cio_test_o = (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_dft_en[1])) ?
+ otp_test_vect : '0;
+ assign cio_test_en_o = (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_dft_en[2])) ?
+ {OtpTestVectWidth{1'b1}} : '0;
+
+ // SEC_CM: MACRO.MEM.CM, MACRO.MEM.INTEGRITY
+ prim_generic_otp #(
+ .Width ( OtpWidth ),
+ .Depth ( OtpDepth ),
+ .SizeWidth ( OtpSizeWidth ),
+ .PwrSeqWidth ( OtpPwrSeqWidth ),
+ .TestCtrlWidth ( OtpTestCtrlWidth ),
+ .TestStatusWidth ( OtpTestStatusWidth ),
+ .TestVectWidth ( OtpTestVectWidth ),
+ .MemInitFile ( MemInitFile ),
+ .VendorTestOffset ( VendorTestOffset ),
+ .VendorTestSize ( VendorTestSize )
+ ) u_otp (
+ .clk_i,
+ .rst_ni,
+ // Observability controls to/from AST
+ .obs_ctrl_i,
+ .otp_obs_o,
+ // Power sequencing signals to/from AST
+ .pwr_seq_o ( otp_ast_pwr_seq_o.pwr_seq ),
+ .pwr_seq_h_i ( otp_ast_pwr_seq_h_i.pwr_seq_h ),
+ .ext_voltage_io ( otp_ext_voltage_h_io ),
+ // Test interface
+ .test_ctrl_i ( caliptra_ss_lc_otp_vendor_test_i.ctrl ),
+ .test_status_o ( caliptra_ss_lc_otp_vendor_test_o.status ),
+ .test_vect_o ( otp_test_vect ),
+ .test_tl_i ( prim_tl_h2d_gated ),
+ .test_tl_o ( prim_tl_d2h_gated ),
+ // Other DFT signals
+ .scan_en_i,
+ .scan_rst_ni,
+ .scanmode_i,
+ // Alerts
+ .fatal_alert_o ( fatal_prim_otp_alert ),
+ .recov_alert_o ( recov_prim_otp_alert ),
+ // Read / Write command interface
+ .ready_o ( otp_prim_ready ),
+ .valid_i ( otp_prim_valid ),
+ .cmd_i ( otp_arb_bundle.cmd ),
+ .size_i ( otp_arb_bundle.size ),
+ .addr_i ( otp_arb_bundle.addr ),
+ .wdata_i ( otp_arb_bundle.wdata ),
+ // Read data out
+ .valid_o ( otp_rvalid ),
+ .rdata_o ( part_otp_rdata ),
+ .err_o ( part_otp_err )
+ );
+
+ logic otp_fifo_valid;
+ logic [vbits(NumAgents)-1:0] otp_part_idx;
+ logic [NumAgents-1:0] part_otp_rvalid;
+
+ // We can have up to two OTP commands in flight, hence we size this to be 2 deep.
+ // The partitions can unconditionally sink requested data.
+ caliptra_prim_fifo_sync #(
+ .Width(vbits(NumAgents)),
+ .Depth(2)
+ ) u_otp_rsp_fifo (
+ .clk_i,
+ .rst_ni,
+ .clr_i ( 1'b0 ),
+ .wvalid_i ( otp_rsp_fifo_valid ),
+ .wready_o ( otp_rsp_fifo_ready ),
+ .wdata_i ( otp_arb_idx ),
+ .rvalid_o ( otp_fifo_valid ),
+ .rready_i ( otp_rvalid ),
+ .rdata_o ( otp_part_idx ),
+ .depth_o ( ),
+ .full_o ( ),
+ .err_o ( )
+ );
+
+ // Steer response back to the partition where this request originated.
+ always_comb begin : p_rvalid
+ part_otp_rvalid = '0;
+ part_otp_rvalid[otp_part_idx] = otp_rvalid & otp_fifo_valid;
+ end
+
+ // Note that this must be true by construction.
+ `CALIPTRA_ASSERT(OtpRespFifoUnderflow_A, otp_rvalid |-> otp_fifo_valid)
+
+ /////////////////////////////////////////
+ // Scrambling Datapath and Arbitration //
+ /////////////////////////////////////////
+
+ // Note: as opposed to the OTP arbitration above, we do not perform cycle-wise arbitration, but
+ // transaction-wise arbitration. This is implemented using a RR arbiter that acts as a mutex.
+ // I.e., each agent (e.g. the DAI or a partition) can request a lock on the mutex. Once granted,
+ // the partition can keep the lock as long as needed for the transaction to complete. The
+ // partition must yield its lock by deasserting the request signal for the arbiter to proceed.
+ // Since this scheme does not have built-in preemtion, it must be ensured that the agents
+ // eventually release their locks for this to be fair.
+ //
+ // See also https://docs.opentitan.org/hw/ip/otp_ctrl/doc/index.html#block-diagram for details.
+ typedef struct packed {
+ otp_scrmbl_cmd_e cmd;
+ digest_mode_e mode;
+ logic [ConstSelWidth-1:0] sel;
+ logic [ScrmblBlockWidth-1:0] data;
+ logic valid;
+ } scrmbl_bundle_t;
+
+ logic [NumAgents-1:0] part_scrmbl_mtx_req, part_scrmbl_mtx_gnt;
+ scrmbl_bundle_t part_scrmbl_req_bundle [NumAgents];
+ scrmbl_bundle_t scrmbl_req_bundle;
+ logic [vbits(NumAgents)-1:0] scrmbl_mtx_idx;
+ logic scrmbl_mtx_valid;
+
+ // Note that arbiter decisions do not change when backpressured.
+ // Hence, the idx_o signal is guaranteed to remain stable until ack'ed.
+ caliptra_prim_arbiter_tree #(
+ .N(NumAgents),
+ .DW($bits(scrmbl_bundle_t))
+ ) u_scrmbl_mtx (
+ .clk_i,
+ .rst_ni,
+ .req_chk_i ( 1'b0 ), // REQ is allowed to go low again without ACK even
+ // during normal operation.
+ .req_i ( part_scrmbl_mtx_req ),
+ .data_i ( part_scrmbl_req_bundle ),
+ .gnt_o ( ),
+ .idx_o ( scrmbl_mtx_idx ),
+ .valid_o ( scrmbl_mtx_valid ),
+ .data_o ( scrmbl_req_bundle ),
+ .ready_i ( 1'b0 )
+ );
+
+ // Since the ready_i signal of the arbiter is statically set to 1'b0 above, we are always in a
+ // "backpressure" situation, where the RR arbiter will automatically advance the internal RR state
+ // to give the current winner max priority in subsequent cycles in order to keep the decision
+ // stable. Rearbitration occurs once the winning agent deasserts its request.
+ always_comb begin : p_mutex
+ part_scrmbl_mtx_gnt = '0;
+ part_scrmbl_mtx_gnt[scrmbl_mtx_idx] = scrmbl_mtx_valid;
+ end
+
+ logic [ScrmblBlockWidth-1:0] part_scrmbl_rsp_data;
+ logic scrmbl_arb_req_ready, scrmbl_arb_rsp_valid;
+ logic [NumAgents-1:0] part_scrmbl_req_ready, part_scrmbl_rsp_valid;
+
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ // SEC_CM: PART.MEM.DIGEST
+ otp_ctrl_scrmbl u_otp_ctrl_scrmbl (
+ .clk_i,
+ .rst_ni,
+ .cmd_i ( scrmbl_req_bundle.cmd ),
+ .mode_i ( scrmbl_req_bundle.mode ),
+ .sel_i ( scrmbl_req_bundle.sel ),
+ .data_i ( scrmbl_req_bundle.data ),
+ .valid_i ( scrmbl_req_bundle.valid ),
+ .ready_o ( scrmbl_arb_req_ready ),
+ .data_o ( part_scrmbl_rsp_data ),
+ .valid_o ( scrmbl_arb_rsp_valid ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[NumAgents+1] ),
+ .fsm_err_o ( scrmbl_fsm_err )
+ );
+
+ // steer back responses
+ always_comb begin : p_scmrbl_resp
+ part_scrmbl_req_ready = '0;
+ part_scrmbl_rsp_valid = '0;
+ part_scrmbl_req_ready[scrmbl_mtx_idx] = scrmbl_arb_req_ready;
+ part_scrmbl_rsp_valid[scrmbl_mtx_idx] = scrmbl_arb_rsp_valid;
+ end
+
+ /////////////////////////////
+ // Direct Access Interface //
+ /////////////////////////////
+
+ logic part_init_req;
+ logic [NumPart-1:0] part_init_done;
+ part_access_t [NumPart-1:0] part_access_dai;
+
+ // The init request comes from the power manager, which lives in the AON clock domain.
+ logic pwr_otp_req_synced;
+ caliptra_prim_flop_2sync #(
+ .Width(1)
+ ) u_otp_init_sync (
+ .clk_i,
+ .rst_ni,
+ .d_i ( pwr_otp_i.otp_init ),
+ .q_o ( pwr_otp_req_synced )
+ );
+
+ // Register this signal as it has to cross a clock boundary.
+ logic pwr_otp_rsp_d, pwr_otp_rsp_q;
+ assign pwr_otp_o.otp_done = pwr_otp_rsp_q;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_init_reg
+ if (!rst_ni) begin
+ pwr_otp_rsp_q <= 1'b0;
+ end else begin
+ pwr_otp_rsp_q <= pwr_otp_rsp_d;
+ end
+ end
+
+ otp_ctrl_dai u_otp_ctrl_dai (
+ .clk_i,
+ .rst_ni,
+ .init_req_i ( pwr_otp_req_synced ),
+ .init_done_o ( pwr_otp_rsp_d ),
+ .part_init_req_o ( part_init_req ),
+ .part_init_done_i ( part_init_done ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[DaiIdx] ),
+ .error_o ( part_error[DaiIdx] ),
+ .fsm_err_o ( part_fsm_err[DaiIdx] ),
+ .part_access_i ( part_access_dai ),
+ .dai_addr_i ( dai_addr ),
+ .dai_cmd_i ( dai_cmd ),
+ .dai_req_i ( dai_req ),
+ .dai_wdata_i ( dai_wdata ),
+ .dai_idle_o ( dai_idle ),
+ .dai_prog_idle_o ( dai_prog_idle ),
+ .dai_cmd_done_o ( otp_operation_done ),
+ .dai_rdata_o ( dai_rdata ),
+ .otp_req_o ( part_otp_arb_req[DaiIdx] ),
+ .otp_cmd_o ( part_otp_arb_bundle[DaiIdx].cmd ),
+ .otp_size_o ( part_otp_arb_bundle[DaiIdx].size ),
+ .otp_wdata_o ( part_otp_arb_bundle[DaiIdx].wdata ),
+ .otp_addr_o ( part_otp_arb_bundle[DaiIdx].addr ),
+ .otp_gnt_i ( part_otp_arb_gnt[DaiIdx] ),
+ .otp_rvalid_i ( part_otp_rvalid[DaiIdx] ),
+ .otp_rdata_i ( part_otp_rdata ),
+ .otp_err_i ( part_otp_err ),
+ .scrmbl_mtx_req_o ( part_scrmbl_mtx_req[DaiIdx] ),
+ .scrmbl_mtx_gnt_i ( part_scrmbl_mtx_gnt[DaiIdx] ),
+ .scrmbl_cmd_o ( part_scrmbl_req_bundle[DaiIdx].cmd ),
+ .scrmbl_mode_o ( part_scrmbl_req_bundle[DaiIdx].mode ),
+ .scrmbl_sel_o ( part_scrmbl_req_bundle[DaiIdx].sel ),
+ .scrmbl_data_o ( part_scrmbl_req_bundle[DaiIdx].data ),
+ .scrmbl_valid_o ( part_scrmbl_req_bundle[DaiIdx].valid ),
+ .scrmbl_ready_i ( part_scrmbl_req_ready[DaiIdx] ),
+ .scrmbl_valid_i ( part_scrmbl_rsp_valid[DaiIdx] ),
+ .scrmbl_data_i ( part_scrmbl_rsp_data )
+ );
+
+ ////////////////////////////////////
+ // Lifecycle Transition Interface //
+ ////////////////////////////////////
+
+ logic [PartInfo[LifeCycleIdx].size-1:0][7:0] caliptra_ss_lc_otp_program_data;
+ assign caliptra_ss_lc_otp_program_data[LcStateOffset-LifeCycleOffset +: LcStateSize] =
+ caliptra_ss_lc_otp_program_i.state;
+ assign caliptra_ss_lc_otp_program_data[LcTransitionCntOffset-LifeCycleOffset +: LcTransitionCntSize] =
+ caliptra_ss_lc_otp_program_i.count;
+
+ otp_ctrl_lci #(
+ .Info(PartInfo[LifeCycleIdx])
+ ) u_otp_ctrl_lci (
+ .clk_i,
+ .rst_ni,
+ .lci_en_i ( pwr_otp_o.otp_done ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[LciIdx] ),
+ .error_o ( part_error[LciIdx] ),
+ .fsm_err_o ( part_fsm_err[LciIdx] ),
+ .lci_prog_idle_o ( lci_prog_idle ),
+ .caliptra_ss_lc_req_i ( caliptra_ss_lc_otp_program_i.req ),
+ .caliptra_ss_lc_data_i ( caliptra_ss_lc_otp_program_data ),
+ .caliptra_ss_lc_ack_o ( caliptra_ss_lc_otp_program_o.ack ),
+ .caliptra_ss_lc_err_o ( caliptra_ss_lc_otp_program_o.err ),
+ .otp_req_o ( part_otp_arb_req[LciIdx] ),
+ .otp_cmd_o ( part_otp_arb_bundle[LciIdx].cmd ),
+ .otp_size_o ( part_otp_arb_bundle[LciIdx].size ),
+ .otp_wdata_o ( part_otp_arb_bundle[LciIdx].wdata ),
+ .otp_addr_o ( part_otp_arb_bundle[LciIdx].addr ),
+ .otp_gnt_i ( part_otp_arb_gnt[LciIdx] ),
+ .otp_rvalid_i ( part_otp_rvalid[LciIdx] ),
+ .otp_rdata_i ( part_otp_rdata ),
+ .otp_err_i ( part_otp_err )
+ );
+
+ // Tie off unused connections.
+ assign part_scrmbl_mtx_req[LciIdx] = '0;
+ assign part_scrmbl_req_bundle[LciIdx] = '0;
+
+ // This stops lint from complaining about unused signals.
+ logic unused_lci_scrmbl_sigs;
+ assign unused_lci_scrmbl_sigs = ^{part_scrmbl_mtx_gnt[LciIdx],
+ part_scrmbl_req_ready[LciIdx],
+ part_scrmbl_rsp_valid[LciIdx]};
+
+ ////////////////////////////////////
+ // Key Derivation Interface (KDI) //
+ ////////////////////////////////////
+
+ logic scrmbl_key_seed_valid;
+ logic [SramKeySeedWidth-1:0] sram_data_key_seed;
+ logic [FlashKeySeedWidth-1:0] flash_data_key_seed, flash_addr_key_seed;
+
+ otp_ctrl_kdi #(
+ .RndCnstScrmblKeyInit(RndCnstScrmblKeyInit)
+ ) u_otp_ctrl_kdi (
+ .clk_i,
+ .rst_ni,
+ .kdi_en_i ( pwr_otp_o.otp_done ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[KdiIdx] ),
+ .fsm_err_o ( part_fsm_err[KdiIdx] ),
+ .scrmbl_key_seed_valid_i ( scrmbl_key_seed_valid ),
+ .flash_data_key_seed_i ( flash_data_key_seed ),
+ .flash_addr_key_seed_i ( flash_addr_key_seed ),
+ .sram_data_key_seed_i ( sram_data_key_seed ),
+ .edn_req_o ( key_edn_req ),
+ .edn_ack_i ( key_edn_ack ),
+ .edn_data_i ( edn_data ),
+ .flash_otp_key_i,
+ .flash_otp_key_o,
+ .sram_otp_key_i,
+ .sram_otp_key_o,
+ .otbn_otp_key_i,
+ .otbn_otp_key_o,
+ .scrmbl_mtx_req_o ( part_scrmbl_mtx_req[KdiIdx] ),
+ .scrmbl_mtx_gnt_i ( part_scrmbl_mtx_gnt[KdiIdx] ),
+ .scrmbl_cmd_o ( part_scrmbl_req_bundle[KdiIdx].cmd ),
+ .scrmbl_mode_o ( part_scrmbl_req_bundle[KdiIdx].mode ),
+ .scrmbl_sel_o ( part_scrmbl_req_bundle[KdiIdx].sel ),
+ .scrmbl_data_o ( part_scrmbl_req_bundle[KdiIdx].data ),
+ .scrmbl_valid_o ( part_scrmbl_req_bundle[KdiIdx].valid ),
+ .scrmbl_ready_i ( part_scrmbl_req_ready[KdiIdx] ),
+ .scrmbl_valid_i ( part_scrmbl_rsp_valid[KdiIdx] ),
+ .scrmbl_data_i ( part_scrmbl_rsp_data )
+ );
+
+ // Tie off OTP bus access, since this is not needed.
+ assign part_otp_arb_req[KdiIdx] = 1'b0;
+ assign part_otp_arb_bundle[KdiIdx] = '0;
+
+ // This stops lint from complaining about unused signals.
+ logic unused_kdi_otp_sigs;
+ assign unused_kdi_otp_sigs = ^{part_otp_arb_gnt[KdiIdx],
+ part_otp_rvalid[KdiIdx]};
+
+ /////////////////////////
+ // Partition Instances //
+ /////////////////////////
+
+ logic [$bits(PartInvDefault)/8-1:0][7:0] part_buf_data;
+
+ for (genvar k = 0; k < NumPart; k ++) begin : gen_partitions
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ if (PartInfo[k].variant == Unbuffered) begin : gen_unbuffered
+ otp_ctrl_part_unbuf #(
+ .Info(PartInfo[k])
+ ) u_part_unbuf (
+ .clk_i,
+ .rst_ni,
+ .init_req_i ( part_init_req ),
+ .init_done_o ( part_init_done[k] ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[k] ),
+ .error_o ( part_error[k] ),
+ .fsm_err_o ( part_fsm_err[k] ),
+ .access_i ( part_access[k] ),
+ .access_o ( part_access_dai[k] ),
+ .digest_o ( part_digest[k] ),
+ .tlul_req_i ( part_tlul_req[k] ),
+ .tlul_gnt_o ( part_tlul_gnt[k] ),
+ .tlul_addr_i ( part_tlul_addr ),
+ .tlul_rerror_o ( part_tlul_rerror[k] ),
+ .tlul_rvalid_o ( part_tlul_rvalid[k] ),
+ .tlul_rdata_o ( part_tlul_rdata[k] ),
+ .otp_req_o ( part_otp_arb_req[k] ),
+ .otp_cmd_o ( part_otp_arb_bundle[k].cmd ),
+ .otp_size_o ( part_otp_arb_bundle[k].size ),
+ .otp_wdata_o ( part_otp_arb_bundle[k].wdata ),
+ .otp_addr_o ( part_otp_arb_bundle[k].addr ),
+ .otp_gnt_i ( part_otp_arb_gnt[k] ),
+ .otp_rvalid_i ( part_otp_rvalid[k] ),
+ .otp_rdata_i ( part_otp_rdata ),
+ .otp_err_i ( part_otp_err )
+ );
+
+ // Tie off unused connections.
+ assign part_scrmbl_mtx_req[k] = '0;
+ assign part_scrmbl_req_bundle[k] = '0;
+ // These checks do not exist in this partition type,
+ // so we always acknowledge the request.
+ assign integ_chk_ack[k] = 1'b1;
+ assign cnsty_chk_ack[k] = 1'b1;
+
+ // No buffered data to expose.
+ assign part_buf_data[PartInfo[k].offset +: PartInfo[k].size] = '0;
+
+ // This stops lint from complaining about unused signals.
+ logic unused_part_scrmbl_sigs;
+ assign unused_part_scrmbl_sigs = ^{part_scrmbl_mtx_gnt[k],
+ part_scrmbl_req_ready[k],
+ part_scrmbl_rsp_valid[k],
+ integ_chk_req[k],
+ cnsty_chk_req[k]};
+
+ // Alert assertion for sparse FSM.
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlPartUnbufFsmCheck_A,
+ u_part_unbuf.u_state_regs, alert_tx_o[1])
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ end else if (PartInfo[k].variant == Buffered) begin : gen_buffered
+ otp_ctrl_part_buf #(
+ .Info(PartInfo[k]),
+ .DataDefault(PartInvDefault[PartInfo[k].offset*8 +: PartInfo[k].size*8])
+ ) u_part_buf (
+ .clk_i,
+ .rst_ni,
+ .init_req_i ( part_init_req ),
+ .init_done_o ( part_init_done[k] ),
+ .integ_chk_req_i ( integ_chk_req[k] ),
+ .integ_chk_ack_o ( integ_chk_ack[k] ),
+ .cnsty_chk_req_i ( cnsty_chk_req[k] ),
+ .cnsty_chk_ack_o ( cnsty_chk_ack[k] ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[k] ),
+ // Only supported by life cycle partition (see further below).
+ .check_byp_en_i ( caliptra_ss_lc_ctrl_pkg::Off ),
+ .error_o ( part_error[k] ),
+ .fsm_err_o ( part_fsm_err[k] ),
+ .access_i ( part_access[k] ),
+ .access_o ( part_access_dai[k] ),
+ .digest_o ( part_digest[k] ),
+ .data_o ( part_buf_data[PartInfo[k].offset +: PartInfo[k].size] ),
+ .otp_req_o ( part_otp_arb_req[k] ),
+ .otp_cmd_o ( part_otp_arb_bundle[k].cmd ),
+ .otp_size_o ( part_otp_arb_bundle[k].size ),
+ .otp_wdata_o ( part_otp_arb_bundle[k].wdata ),
+ .otp_addr_o ( part_otp_arb_bundle[k].addr ),
+ .otp_gnt_i ( part_otp_arb_gnt[k] ),
+ .otp_rvalid_i ( part_otp_rvalid[k] ),
+ .otp_rdata_i ( part_otp_rdata ),
+ .otp_err_i ( part_otp_err ),
+ .scrmbl_mtx_req_o ( part_scrmbl_mtx_req[k] ),
+ .scrmbl_mtx_gnt_i ( part_scrmbl_mtx_gnt[k] ),
+ .scrmbl_cmd_o ( part_scrmbl_req_bundle[k].cmd ),
+ .scrmbl_mode_o ( part_scrmbl_req_bundle[k].mode ),
+ .scrmbl_sel_o ( part_scrmbl_req_bundle[k].sel ),
+ .scrmbl_data_o ( part_scrmbl_req_bundle[k].data ),
+ .scrmbl_valid_o ( part_scrmbl_req_bundle[k].valid ),
+ .scrmbl_ready_i ( part_scrmbl_req_ready[k] ),
+ .scrmbl_valid_i ( part_scrmbl_rsp_valid[k] ),
+ .scrmbl_data_i ( part_scrmbl_rsp_data )
+ );
+
+ // Buffered partitions are not accessible via the TL-UL window.
+ logic unused_part_tlul_sigs;
+ assign unused_part_tlul_sigs = ^part_tlul_req[k];
+ assign part_tlul_gnt[k] = 1'b0;
+ assign part_tlul_rerror[k] = '0;
+ assign part_tlul_rvalid[k] = 1'b0;
+ assign part_tlul_rdata[k] = '0;
+
+ // Alert assertion for sparse FSM.
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlPartBufFsmCheck_A,
+ u_part_buf.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntPartBufCheck_A,
+ u_part_buf.u_prim_count, alert_tx_o[1])
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ end else if (PartInfo[k].variant == LifeCycle) begin : gen_lifecycle
+ otp_ctrl_part_buf #(
+ .Info(PartInfo[k]),
+ .DataDefault(PartInvDefault[PartInfo[k].offset*8 +: PartInfo[k].size*8])
+ ) u_part_buf (
+ .clk_i,
+ .rst_ni,
+ .init_req_i ( part_init_req ),
+ .init_done_o ( part_init_done[k] ),
+ .integ_chk_req_i ( integ_chk_req[k] ),
+ .integ_chk_ack_o ( integ_chk_ack[k] ),
+ .cnsty_chk_req_i ( cnsty_chk_req[k] ),
+ .cnsty_chk_ack_o ( cnsty_chk_ack[k] ),
+ .escalate_en_i ( caliptra_ss_lc_escalate_en[k] ),
+ // This is only supported by the life cycle partition. We need to prevent this partition
+ // from escalating once the life cycle state in memory is being updated (and hence not
+ // consistent with the values in the buffer regs anymore).
+ .check_byp_en_i ( caliptra_ss_lc_check_byp_en ),
+ .error_o ( part_error[k] ),
+ .fsm_err_o ( part_fsm_err[k] ),
+ .access_i ( part_access[k] ),
+ .access_o ( part_access_dai[k] ),
+ .digest_o ( part_digest[k] ),
+ .data_o ( part_buf_data[PartInfo[k].offset +: PartInfo[k].size] ),
+ .otp_req_o ( part_otp_arb_req[k] ),
+ .otp_cmd_o ( part_otp_arb_bundle[k].cmd ),
+ .otp_size_o ( part_otp_arb_bundle[k].size ),
+ .otp_wdata_o ( part_otp_arb_bundle[k].wdata ),
+ .otp_addr_o ( part_otp_arb_bundle[k].addr ),
+ .otp_gnt_i ( part_otp_arb_gnt[k] ),
+ .otp_rvalid_i ( part_otp_rvalid[k] ),
+ .otp_rdata_i ( part_otp_rdata ),
+ .otp_err_i ( part_otp_err ),
+ // The LC partition does not need any scrambling features.
+ .scrmbl_mtx_req_o ( ),
+ .scrmbl_mtx_gnt_i ( 1'b0 ),
+ .scrmbl_cmd_o ( ),
+ .scrmbl_mode_o ( ),
+ .scrmbl_sel_o ( ),
+ .scrmbl_data_o ( ),
+ .scrmbl_valid_o ( ),
+ .scrmbl_ready_i ( 1'b0 ),
+ .scrmbl_valid_i ( 1'b0 ),
+ .scrmbl_data_i ( '0 )
+ );
+
+ // Buffered partitions are not accessible via the TL-UL window.
+ logic unused_part_tlul_sigs;
+ assign unused_part_tlul_sigs = ^part_tlul_req[k];
+ assign part_tlul_gnt[k] = 1'b0;
+ assign part_tlul_rerror[k] = '0;
+ assign part_tlul_rvalid[k] = 1'b0;
+ assign part_tlul_rdata[k] = '0;
+
+ // Tie off unused connections.
+ assign part_scrmbl_mtx_req[k] = '0;
+ assign part_scrmbl_req_bundle[k] = '0;
+
+ // This stops lint from complaining about unused signals.
+ logic unused_part_scrmbl_sigs;
+ assign unused_part_scrmbl_sigs = ^{part_scrmbl_mtx_gnt[k],
+ part_scrmbl_req_ready[k],
+ part_scrmbl_rsp_valid[k]};
+ // Alert assertion for sparse FSM.
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlPartLcFsmCheck_A,
+ u_part_buf.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntPartLcCheck_A,
+ u_part_buf.u_prim_count, alert_tx_o[1])
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ end else begin : gen_invalid
+ // This is invalid and should break elaboration
+ assert_static_in_generate_invalid assert_static_in_generate_invalid();
+ end
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ end
+
+ //////////////////////////////////
+ // Buffered Data Output Mapping //
+ //////////////////////////////////
+
+ // Output complete hardware config partition.
+ // Actual mapping to other IPs is done via the intersignal topgen feature,
+ // selection of fields can be done using the otp_hw_cfg_t struct fields.
+ otp_broadcast_t otp_broadcast;
+ assign otp_broadcast = named_broadcast_assign(part_init_done, part_buf_data);
+
+ // Make sure the broadcast valid is flopped before sending it out.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t otp_broadcast_valid_q;
+ caliptra_prim_lc_sender u_prim_caliptra_ss_lc_sender_otp_broadcast_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(otp_broadcast.valid),
+ .lc_en_o(otp_broadcast_valid_q)
+ );
+
+ always_comb begin : p_otp_broadcast_valid
+ otp_broadcast_o = otp_broadcast;
+ otp_broadcast_o.valid = otp_broadcast_valid_q;
+ end
+
+ // Root keys and seeds.
+ // This uses a generated function to assign all collateral that is marked with "iskeymgr" in
+ // the memory map. Note that in this case the type is static and represents a superset of all
+ // options so that we can maintain a stable interface with keymgr (otherwise keymgr will have
+ // to be templated as well. Unused key material will be tied off to '0. The keymgr has to be
+ // parameterized accordingly (via SV parameters) to consume the correct key material.
+ //
+ // The key material valid signals are set to true if the corresponding digest is nonzero and the
+ // partition is initialized. On top of that, the entire output is gated by caliptra_ss_lc_seed_hw_rd_en.
+ otp_keymgr_key_t otp_keymgr_key;
+ assign otp_keymgr_key = named_keymgr_key_assign(part_digest,
+ part_buf_data,
+ caliptra_ss_lc_seed_hw_rd_en);
+
+ // Note regarding these breakouts: named_keymgr_key_assign will tie off unused key material /
+ // valid signals to '0. This is the case for instance in system configurations that keep the seed
+ // material in the flash instead of OTP.
+ logic creator_root_key_share0_valid_d, creator_root_key_share0_valid_q;
+ logic creator_root_key_share1_valid_d, creator_root_key_share1_valid_q;
+ logic creator_seed_valid_d, creator_seed_valid_q;
+ logic owner_seed_valid_d, owner_seed_valid_q;
+ caliptra_prim_flop #(
+ .Width(4)
+ ) u_keygmr_key_valid (
+ .clk_i,
+ .rst_ni,
+ .d_i ({creator_root_key_share0_valid_d,
+ creator_root_key_share1_valid_d,
+ creator_seed_valid_d,
+ owner_seed_valid_d}),
+ .q_o ({creator_root_key_share0_valid_q,
+ creator_root_key_share1_valid_q,
+ creator_seed_valid_q,
+ owner_seed_valid_q})
+ );
+
+ always_comb begin : p_otp_keymgr_key_valid
+ // Valid reg inputs
+ creator_root_key_share0_valid_d = otp_keymgr_key.creator_root_key_share0_valid;
+ creator_root_key_share1_valid_d = otp_keymgr_key.creator_root_key_share1_valid;
+ creator_seed_valid_d = otp_keymgr_key.creator_seed_valid;
+ owner_seed_valid_d = otp_keymgr_key.owner_seed_valid;
+ // Output to keymgr
+ otp_keymgr_key_o = otp_keymgr_key;
+ otp_keymgr_key_o.creator_root_key_share0_valid = creator_root_key_share0_valid_q;
+ otp_keymgr_key_o.creator_root_key_share1_valid = creator_root_key_share1_valid_q;
+ otp_keymgr_key_o.creator_seed_valid = creator_seed_valid_q;
+ otp_keymgr_key_o.owner_seed_valid = owner_seed_valid_q;
+ end
+
+ // Check that the caliptra_ss_lc_seed_hw_rd_en remains stable, once the key material is valid.
+ `CALIPTRA_ASSERT(LcSeedHwRdEnStable0_A,
+ $rose(creator_root_key_share0_valid_q) |=> $stable(caliptra_ss_lc_seed_hw_rd_en) [*1:$],
+ clk_i, !rst_ni || caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i) // Disable if escalating
+ )
+ `CALIPTRA_ASSERT(LcSeedHwRdEnStable1_A,
+ $rose(creator_root_key_share1_valid_q) |=> $stable(caliptra_ss_lc_seed_hw_rd_en) [*1:$],
+ clk_i, !rst_ni || caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i) // Disable if escalating
+ )
+ `CALIPTRA_ASSERT(LcSeedHwRdEnStable2_A,
+ $rose(creator_seed_valid_q) |=> $stable(caliptra_ss_lc_seed_hw_rd_en) [*1:$],
+ clk_i, !rst_ni || caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i) // Disable if escalating
+ )
+ `CALIPTRA_ASSERT(LcSeedHwRdEnStable3_A,
+ $rose(owner_seed_valid_q) |=> $stable(caliptra_ss_lc_seed_hw_rd_en) [*1:$],
+ clk_i, !rst_ni || caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(caliptra_ss_lc_escalate_en_i) // Disable if escalating
+ )
+
+ // Scrambling Keys
+ assign scrmbl_key_seed_valid = part_digest[Secret1Idx] != '0;
+ assign sram_data_key_seed = part_buf_data[SramDataKeySeedOffset +:
+ SramDataKeySeedSize];
+ assign flash_data_key_seed = part_buf_data[FlashDataKeySeedOffset +:
+ FlashDataKeySeedSize];
+ assign flash_addr_key_seed = part_buf_data[FlashAddrKeySeedOffset +:
+ FlashAddrKeySeedSize];
+
+ // Test unlock and exit tokens and RMA token
+ assign otp_caliptra_ss_lc_data_o.test_exit_token = part_buf_data[TestExitTokenOffset +:
+ TestExitTokenSize];
+ assign otp_caliptra_ss_lc_data_o.test_unlock_token = part_buf_data[TestUnlockTokenOffset +:
+ TestUnlockTokenSize];
+ assign otp_caliptra_ss_lc_data_o.rma_token = part_buf_data[RmaTokenOffset +:
+ RmaTokenSize];
+
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t test_tokens_valid, rma_token_valid, secrets_valid;
+ // The test tokens have been provisioned.
+ assign test_tokens_valid = (part_digest[Secret0Idx] != '0) ? caliptra_ss_lc_ctrl_pkg::On : caliptra_ss_lc_ctrl_pkg::Off;
+ // The rma token has been provisioned.
+ assign rma_token_valid = (part_digest[Secret2Idx] != '0) ? caliptra_ss_lc_ctrl_pkg::On : caliptra_ss_lc_ctrl_pkg::Off;
+ // The device is personalized if the root key has been provisioned and locked.
+ assign secrets_valid = (part_digest[Secret2Idx] != '0) ? caliptra_ss_lc_ctrl_pkg::On : caliptra_ss_lc_ctrl_pkg::Off;
+
+ // Buffer these constants in order to ensure that synthesis does not try to optimize the encoding.
+ // SEC_CM: TOKEN_VALID.CTRL.MUBI
+ caliptra_prim_lc_sender #(
+ .AsyncOn(0)
+ ) u_prim_caliptra_ss_lc_sender_test_tokens_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(test_tokens_valid),
+ .lc_en_o(otp_caliptra_ss_lc_data_o.test_tokens_valid)
+ );
+
+ caliptra_prim_lc_sender #(
+ .AsyncOn(0)
+ ) u_prim_caliptra_ss_lc_sender_rma_token_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(rma_token_valid),
+ .lc_en_o(otp_caliptra_ss_lc_data_o.rma_token_valid)
+ );
+
+ caliptra_prim_lc_sender #(
+ .AsyncOn(0)
+ ) u_prim_caliptra_ss_lc_sender_secrets_valid (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(secrets_valid),
+ .lc_en_o(otp_caliptra_ss_lc_data_o.secrets_valid)
+ );
+
+ // Lifecycle state
+ assign otp_caliptra_ss_lc_data_o.state = caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_state_e'(part_buf_data[LcStateOffset +:
+ LcStateSize]);
+ assign otp_caliptra_ss_lc_data_o.count = caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_cnt_e'(part_buf_data[LcTransitionCntOffset +:
+ LcTransitionCntSize]);
+
+ // Assert life cycle state valid signal only when all partitions have initialized.
+ assign otp_caliptra_ss_lc_data_o.valid = &part_init_done;
+ // Signal whether there are any errors in the life cycle partition (both correctable and
+ // uncorrectable ones). This bit is made available via the JTAG TAP, which is useful for
+ // production testing in RAW life cycle state where the OTP regs are not accessible.
+ assign otp_caliptra_ss_lc_data_o.error = |part_error[LifeCycleIdx];
+
+ // Not all bits of part_buf_data are used here.
+ logic unused_buf_data;
+ assign unused_buf_data = ^part_buf_data;
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_INIT(CreatorRootKeyShare0Size_A, KeyMgrKeyWidth == CreatorRootKeyShare0Size * 8)
+ `CALIPTRA_ASSERT_INIT(CreatorRootKeyShare1Size_A, KeyMgrKeyWidth == CreatorRootKeyShare1Size * 8)
+ `CALIPTRA_ASSERT_INIT(FlashDataKeySeedSize_A, FlashKeySeedWidth == FlashDataKeySeedSize * 8)
+ `CALIPTRA_ASSERT_INIT(FlashAddrKeySeedSize_A, FlashKeySeedWidth == FlashAddrKeySeedSize * 8)
+ `CALIPTRA_ASSERT_INIT(SramDataKeySeedSize_A, SramKeySeedWidth == SramDataKeySeedSize * 8)
+
+ `CALIPTRA_ASSERT_INIT(RmaTokenSize_A, caliptra_ss_lc_ctrl_state_pkg::LcTokenWidth == RmaTokenSize * 8)
+ `CALIPTRA_ASSERT_INIT(TestUnlockTokenSize_A, caliptra_ss_lc_ctrl_state_pkg::LcTokenWidth == TestUnlockTokenSize * 8)
+ `CALIPTRA_ASSERT_INIT(TestExitTokenSize_A, caliptra_ss_lc_ctrl_state_pkg::LcTokenWidth == TestExitTokenSize * 8)
+ `CALIPTRA_ASSERT_INIT(LcStateSize_A, caliptra_ss_lc_ctrl_state_pkg::LcStateWidth == LcStateSize * 8)
+ `CALIPTRA_ASSERT_INIT(LcTransitionCntSize_A, caliptra_ss_lc_ctrl_state_pkg::LcCountWidth == LcTransitionCntSize * 8)
+
+ `CALIPTRA_ASSERT_KNOWN(OtpAstPwrSeqKnown_A, otp_ast_pwr_seq_o)
+ `CALIPTRA_ASSERT_KNOWN(CoreTlOutKnown_A, core_tl_o)
+ `CALIPTRA_ASSERT_KNOWN(PrimTlOutKnown_A, prim_tl_o)
+ `CALIPTRA_ASSERT_KNOWN(IntrOtpOperationDoneKnown_A, intr_otp_operation_done_o)
+ `CALIPTRA_ASSERT_KNOWN(IntrOtpErrorKnown_A, intr_otp_error_o)
+ `CALIPTRA_ASSERT_KNOWN(AlertTxKnown_A, alert_tx_o)
+ `CALIPTRA_ASSERT_KNOWN(PwrOtpInitRspKnown_A, pwr_otp_o)
+ `CALIPTRA_ASSERT_KNOWN(LcOtpProgramRspKnown_A, caliptra_ss_lc_otp_program_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpLcDataKnown_A, otp_caliptra_ss_lc_data_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpKeymgrKeyKnown_A, otp_keymgr_key_o)
+ `CALIPTRA_ASSERT_KNOWN(FlashOtpKeyRspKnown_A, flash_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpSramKeyKnown_A, sram_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpOtgnKeyKnown_A, otbn_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpBroadcastKnown_A, otp_broadcast_o)
+
+ // Alert assertions for sparse FSMs.
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlDaiFsmCheck_A,
+ u_otp_ctrl_dai.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlKdiFsmCheck_A,
+ u_otp_ctrl_kdi.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlLciFsmCheck_A,
+ u_otp_ctrl_lci.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlLfsrTimerFsmCheck_A,
+ u_otp_ctrl_lfsr_timer.u_state_regs, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(CtrlScrambleFsmCheck_A,
+ u_otp_ctrl_scrmbl.u_state_regs, alert_tx_o[1])
+
+ // Alert assertions for redundant counters.
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntIntegCheck_A,
+ u_otp_ctrl_lfsr_timer.u_prim_count_integ, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntCnstyCheck_A,
+ u_otp_ctrl_lfsr_timer.u_prim_count_cnsty, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntDaiCheck_A,
+ u_otp_ctrl_dai.u_prim_count, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntKdiSeedCheck_A,
+ u_otp_ctrl_kdi.u_prim_count_seed, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntKdiEntropyCheck_A,
+ u_otp_ctrl_kdi.u_prim_count_entropy, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntLciCheck_A,
+ u_otp_ctrl_lci.u_prim_count, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_COUNT_ERROR_TRIGGER_ALERT(CntScrmblCheck_A,
+ u_otp_ctrl_scrmbl.u_prim_count, alert_tx_o[1])
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(TlLcGateFsm_A,
+ u_tlul_caliptra_ss_lc_gate.u_state_regs, alert_tx_o[2])
+
+ // Alert assertions for double LFSR.
+ `CALIPTRA_ASSERT_PRIM_DOUBLE_LFSR_ERROR_TRIGGER_ALERT(DoubleLfsrCheck_A,
+ u_otp_ctrl_lfsr_timer.u_prim_double_lfsr, alert_tx_o[1])
+
+ // Alert assertions for reg_we onehot check
+ `CALIPTRA_ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ALERT(RegWeOnehotCheck_A, u_reg_core, alert_tx_o[2])
+
+ // Assertions for countermeasures inside prim_otp
+ `ifndef PRIM_DEFAULT_IMPL
+ `define PRIM_DEFAULT_IMPL prim_pkg::ImplGeneric
+ `endif
+ if (`CALIPTRA_PRIM_DEFAULT_IMPL == caliptra_prim_pkg::ImplGeneric) begin : gen_reg_we_assert_generic
+ `CALIPTRA_ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT(PrimFsmCheck_A,
+ u_otp.u_state_regs, alert_tx_o[3])
+ //u_otp.gen_generic.u_impl_generic.u_state_regs, alert_tx_o[3])
+ `CALIPTRA_ASSERT_PRIM_REG_WE_ONEHOT_ERROR_TRIGGER_ALERT(PrimRegWeOnehotCheck_A,
+ u_otp.u_reg_top, alert_tx_o[3])
+ // //u_otp.gen_generic.u_impl_generic.u_reg_top, alert_tx_o[3])
+ end
+endmodule : otp_ctrl
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_core_reg_top.sv b/src/fuse_ctrl/rtl/otp_ctrl_core_reg_top.sv
new file mode 100644
index 0000000..657bfd8
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_core_reg_top.sv
@@ -0,0 +1,2579 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "caliptra_prim_assert.sv"
+
+module otp_ctrl_core_reg_top (
+ input clk_i,
+ input rst_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+
+ // Output port for window
+ output tlul_pkg::tl_h2d_t tl_win_o,
+ input tlul_pkg::tl_d2h_t tl_win_i,
+
+ // To HW
+ output otp_ctrl_reg_pkg::otp_ctrl_core_reg2hw_t reg2hw, // Write
+ input otp_ctrl_reg_pkg::otp_ctrl_core_hw2reg_t hw2reg, // Read
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import otp_ctrl_reg_pkg::* ;
+
+ localparam int AW = 12;
+ localparam int DW = 32;
+ localparam int DBW = DW/8; // Byte Width
+
+ // register signals
+ logic reg_we;
+ logic reg_re;
+ logic [AW-1:0] reg_addr;
+ logic [DW-1:0] reg_wdata;
+ logic [DBW-1:0] reg_be;
+ logic [DW-1:0] reg_rdata;
+ logic reg_error;
+
+ logic addrmiss, wr_err;
+
+ logic [DW-1:0] reg_rdata_next;
+ logic reg_busy;
+
+ tlul_pkg::tl_h2d_t tl_reg_h2d;
+ tlul_pkg::tl_d2h_t tl_reg_d2h;
+
+
+ // incoming payload check
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
+ .tl_i(tl_i),
+ .err_o(intg_err)
+ );
+
+ // also check for spurious write enables
+ logic reg_we_err;
+ logic [55:0] reg_we_check;
+ caliptra_prim_reg_we_check #(
+ .OneHotWidth(56)
+ ) u_caliptra_prim_reg_we_check (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .oh_i (reg_we_check),
+ .en_i (reg_we && !addrmiss),
+ .err_o (reg_we_err)
+ );
+
+ logic err_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_q <= '0;
+ end else if (intg_err || reg_we_err) begin
+ err_q <= 1'b1;
+ end
+ end
+
+ // integrity error output is permanent and should be used for alert generation
+ // register errors are transactional
+ assign intg_err_o = err_q | intg_err | reg_we_err;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(1)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ tlul_pkg::tl_h2d_t tl_socket_h2d [2];
+ tlul_pkg::tl_d2h_t tl_socket_d2h [2];
+
+ logic [0:0] reg_steer;
+
+ // socket_1n connection
+ assign tl_reg_h2d = tl_socket_h2d[1];
+ assign tl_socket_d2h[1] = tl_reg_d2h;
+
+ assign tl_win_o = tl_socket_h2d[0];
+ assign tl_socket_d2h[0] = tl_win_i;
+
+ // Create Socket_1n
+ tlul_socket_1n #(
+ .N (2),
+ .HReqPass (1'b1),
+ .HRspPass (1'b1),
+ .DReqPass ({2{1'b1}}),
+ .DRspPass ({2{1'b1}}),
+ .HReqDepth (4'h0),
+ .HRspDepth (4'h0),
+ .DReqDepth ({2{4'h0}}),
+ .DRspDepth ({2{4'h0}}),
+ .ExplicitErrs (1'b0)
+ ) u_socket (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+ .tl_h_i (tl_i),
+ .tl_h_o (tl_o_pre),
+ .tl_d_o (tl_socket_h2d),
+ .tl_d_i (tl_socket_d2h),
+ .dev_select_i (reg_steer)
+ );
+
+ // Create steering logic
+ always_comb begin
+ reg_steer =
+ tl_i.a_address[AW-1:0] inside {[2048:4095]} ? 1'd0 :
+ // Default set to register
+ 1'd1;
+
+ // Override this in case of an integrity error
+ if (intg_err) begin
+ reg_steer = 1'd1;
+ end
+ end
+
+ tlul_adapter_reg #(
+ .RegAw(AW),
+ .RegDw(DW),
+ .EnableDataIntgGen(0)
+ ) u_reg_if (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ .tl_i (tl_reg_h2d),
+ .tl_o (tl_reg_d2h),
+
+ .en_ifetch_i(caliptra_prim_mubi_pkg::MuBi4False),
+ .intg_error_o(),
+
+ .we_o (reg_we),
+ .re_o (reg_re),
+ .addr_o (reg_addr),
+ .wdata_o (reg_wdata),
+ .be_o (reg_be),
+ .busy_i (reg_busy),
+ .rdata_i (reg_rdata),
+ .error_i (reg_error)
+ );
+
+ // cdc oversampling signals
+
+ assign reg_rdata = reg_rdata_next ;
+ assign reg_error = addrmiss | wr_err | intg_err;
+
+ // Define SW related signals
+ // Format: __{wd|we|qs}
+ // or _{wd|we|qs} if field == 1 or 0
+ logic intr_state_we;
+ logic intr_state_otp_operation_done_qs;
+ logic intr_state_otp_operation_done_wd;
+ logic intr_state_otp_error_qs;
+ logic intr_state_otp_error_wd;
+ logic intr_enable_we;
+ logic intr_enable_otp_operation_done_qs;
+ logic intr_enable_otp_operation_done_wd;
+ logic intr_enable_otp_error_qs;
+ logic intr_enable_otp_error_wd;
+ logic intr_test_we;
+ logic intr_test_otp_operation_done_wd;
+ logic intr_test_otp_error_wd;
+ logic alert_test_we;
+ logic alert_test_fatal_macro_error_wd;
+ logic alert_test_fatal_check_error_wd;
+ logic alert_test_fatal_bus_integ_error_wd;
+ logic alert_test_fatal_prim_otp_alert_wd;
+ logic alert_test_recov_prim_otp_alert_wd;
+ logic status_re;
+ logic status_vendor_test_error_qs;
+ logic status_creator_sw_cfg_error_qs;
+ logic status_owner_sw_cfg_error_qs;
+ logic status_rot_creator_auth_codesign_error_qs;
+ logic status_rot_creator_auth_state_error_qs;
+ logic status_hw_cfg0_error_qs;
+ logic status_hw_cfg1_error_qs;
+ logic status_secret0_error_qs;
+ logic status_secret1_error_qs;
+ logic status_secret2_error_qs;
+ logic status_life_cycle_error_qs;
+ logic status_dai_error_qs;
+ logic status_lci_error_qs;
+ logic status_timeout_error_qs;
+ logic status_lfsr_fsm_error_qs;
+ logic status_scrambling_fsm_error_qs;
+ logic status_key_deriv_fsm_error_qs;
+ logic status_bus_integ_error_qs;
+ logic status_dai_idle_qs;
+ logic status_check_pending_qs;
+ logic err_code_0_re;
+ logic [2:0] err_code_0_qs;
+ logic err_code_1_re;
+ logic [2:0] err_code_1_qs;
+ logic err_code_2_re;
+ logic [2:0] err_code_2_qs;
+ logic err_code_3_re;
+ logic [2:0] err_code_3_qs;
+ logic err_code_4_re;
+ logic [2:0] err_code_4_qs;
+ logic err_code_5_re;
+ logic [2:0] err_code_5_qs;
+ logic err_code_6_re;
+ logic [2:0] err_code_6_qs;
+ logic err_code_7_re;
+ logic [2:0] err_code_7_qs;
+ logic err_code_8_re;
+ logic [2:0] err_code_8_qs;
+ logic err_code_9_re;
+ logic [2:0] err_code_9_qs;
+ logic err_code_10_re;
+ logic [2:0] err_code_10_qs;
+ logic err_code_11_re;
+ logic [2:0] err_code_11_qs;
+ logic err_code_12_re;
+ logic [2:0] err_code_12_qs;
+ logic direct_access_regwen_re;
+ logic direct_access_regwen_we;
+ logic direct_access_regwen_qs;
+ logic direct_access_regwen_wd;
+ logic direct_access_cmd_we;
+ logic direct_access_cmd_rd_wd;
+ logic direct_access_cmd_wr_wd;
+ logic direct_access_cmd_digest_wd;
+ logic direct_access_address_we;
+ logic [10:0] direct_access_address_qs;
+ logic [10:0] direct_access_address_wd;
+ logic direct_access_wdata_0_we;
+ logic [31:0] direct_access_wdata_0_qs;
+ logic [31:0] direct_access_wdata_0_wd;
+ logic direct_access_wdata_1_we;
+ logic [31:0] direct_access_wdata_1_qs;
+ logic [31:0] direct_access_wdata_1_wd;
+ logic direct_access_rdata_0_re;
+ logic [31:0] direct_access_rdata_0_qs;
+ logic direct_access_rdata_1_re;
+ logic [31:0] direct_access_rdata_1_qs;
+ logic check_trigger_regwen_we;
+ logic check_trigger_regwen_qs;
+ logic check_trigger_regwen_wd;
+ logic check_trigger_we;
+ logic check_trigger_integrity_wd;
+ logic check_trigger_consistency_wd;
+ logic check_regwen_we;
+ logic check_regwen_qs;
+ logic check_regwen_wd;
+ logic check_timeout_we;
+ logic [31:0] check_timeout_qs;
+ logic [31:0] check_timeout_wd;
+ logic integrity_check_period_we;
+ logic [31:0] integrity_check_period_qs;
+ logic [31:0] integrity_check_period_wd;
+ logic consistency_check_period_we;
+ logic [31:0] consistency_check_period_qs;
+ logic [31:0] consistency_check_period_wd;
+ logic vendor_test_read_lock_we;
+ logic vendor_test_read_lock_qs;
+ logic vendor_test_read_lock_wd;
+ logic creator_sw_cfg_read_lock_we;
+ logic creator_sw_cfg_read_lock_qs;
+ logic creator_sw_cfg_read_lock_wd;
+ logic owner_sw_cfg_read_lock_we;
+ logic owner_sw_cfg_read_lock_qs;
+ logic owner_sw_cfg_read_lock_wd;
+ logic rot_creator_auth_codesign_read_lock_we;
+ logic rot_creator_auth_codesign_read_lock_qs;
+ logic rot_creator_auth_codesign_read_lock_wd;
+ logic rot_creator_auth_state_read_lock_we;
+ logic rot_creator_auth_state_read_lock_qs;
+ logic rot_creator_auth_state_read_lock_wd;
+ logic vendor_test_digest_0_re;
+ logic [31:0] vendor_test_digest_0_qs;
+ logic vendor_test_digest_1_re;
+ logic [31:0] vendor_test_digest_1_qs;
+ logic creator_sw_cfg_digest_0_re;
+ logic [31:0] creator_sw_cfg_digest_0_qs;
+ logic creator_sw_cfg_digest_1_re;
+ logic [31:0] creator_sw_cfg_digest_1_qs;
+ logic owner_sw_cfg_digest_0_re;
+ logic [31:0] owner_sw_cfg_digest_0_qs;
+ logic owner_sw_cfg_digest_1_re;
+ logic [31:0] owner_sw_cfg_digest_1_qs;
+ logic rot_creator_auth_codesign_digest_0_re;
+ logic [31:0] rot_creator_auth_codesign_digest_0_qs;
+ logic rot_creator_auth_codesign_digest_1_re;
+ logic [31:0] rot_creator_auth_codesign_digest_1_qs;
+ logic rot_creator_auth_state_digest_0_re;
+ logic [31:0] rot_creator_auth_state_digest_0_qs;
+ logic rot_creator_auth_state_digest_1_re;
+ logic [31:0] rot_creator_auth_state_digest_1_qs;
+ logic hw_cfg0_digest_0_re;
+ logic [31:0] hw_cfg0_digest_0_qs;
+ logic hw_cfg0_digest_1_re;
+ logic [31:0] hw_cfg0_digest_1_qs;
+ logic hw_cfg1_digest_0_re;
+ logic [31:0] hw_cfg1_digest_0_qs;
+ logic hw_cfg1_digest_1_re;
+ logic [31:0] hw_cfg1_digest_1_qs;
+ logic secret0_digest_0_re;
+ logic [31:0] secret0_digest_0_qs;
+ logic secret0_digest_1_re;
+ logic [31:0] secret0_digest_1_qs;
+ logic secret1_digest_0_re;
+ logic [31:0] secret1_digest_0_qs;
+ logic secret1_digest_1_re;
+ logic [31:0] secret1_digest_1_qs;
+ logic secret2_digest_0_re;
+ logic [31:0] secret2_digest_0_qs;
+ logic secret2_digest_1_re;
+ logic [31:0] secret2_digest_1_qs;
+
+ // Register instances
+ // R[intr_state]: V(False)
+ // F[otp_operation_done]: 0:0
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_state_otp_operation_done (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_state_we),
+ .wd (intr_state_otp_operation_done_wd),
+
+ // from internal hardware
+ .de (hw2reg.intr_state.otp_operation_done.de),
+ .d (hw2reg.intr_state.otp_operation_done.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_state.otp_operation_done.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_state_otp_operation_done_qs)
+ );
+
+ // F[otp_error]: 1:1
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_state_otp_error (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_state_we),
+ .wd (intr_state_otp_error_wd),
+
+ // from internal hardware
+ .de (hw2reg.intr_state.otp_error.de),
+ .d (hw2reg.intr_state.otp_error.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_state.otp_error.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_state_otp_error_qs)
+ );
+
+
+ // R[intr_enable]: V(False)
+ // F[otp_operation_done]: 0:0
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_enable_otp_operation_done (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_enable_we),
+ .wd (intr_enable_otp_operation_done_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_enable.otp_operation_done.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_enable_otp_operation_done_qs)
+ );
+
+ // F[otp_error]: 1:1
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_intr_enable_otp_error (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (intr_enable_we),
+ .wd (intr_enable_otp_error_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.intr_enable.otp_error.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (intr_enable_otp_error_qs)
+ );
+
+
+ // R[intr_test]: V(True)
+ logic intr_test_qe;
+ logic [1:0] intr_test_flds_we;
+ assign intr_test_qe = &intr_test_flds_we;
+ // F[otp_operation_done]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_intr_test_otp_operation_done (
+ .re (1'b0),
+ .we (intr_test_we),
+ .wd (intr_test_otp_operation_done_wd),
+ .d ('0),
+ .qre (),
+ .qe (intr_test_flds_we[0]),
+ .q (reg2hw.intr_test.otp_operation_done.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.intr_test.otp_operation_done.qe = intr_test_qe;
+
+ // F[otp_error]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_intr_test_otp_error (
+ .re (1'b0),
+ .we (intr_test_we),
+ .wd (intr_test_otp_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (intr_test_flds_we[1]),
+ .q (reg2hw.intr_test.otp_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.intr_test.otp_error.qe = intr_test_qe;
+
+
+ // R[alert_test]: V(True)
+ logic alert_test_qe;
+ logic [4:0] alert_test_flds_we;
+ assign alert_test_qe = &alert_test_flds_we;
+ // F[fatal_macro_error]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_macro_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_macro_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[0]),
+ .q (reg2hw.alert_test.fatal_macro_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_macro_error.qe = alert_test_qe;
+
+ // F[fatal_check_error]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_check_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_check_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[1]),
+ .q (reg2hw.alert_test.fatal_check_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_check_error.qe = alert_test_qe;
+
+ // F[fatal_bus_integ_error]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_bus_integ_error (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_bus_integ_error_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[2]),
+ .q (reg2hw.alert_test.fatal_bus_integ_error.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_bus_integ_error.qe = alert_test_qe;
+
+ // F[fatal_prim_otp_alert]: 3:3
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_fatal_prim_otp_alert (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_fatal_prim_otp_alert_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[3]),
+ .q (reg2hw.alert_test.fatal_prim_otp_alert.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.fatal_prim_otp_alert.qe = alert_test_qe;
+
+ // F[recov_prim_otp_alert]: 4:4
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_alert_test_recov_prim_otp_alert (
+ .re (1'b0),
+ .we (alert_test_we),
+ .wd (alert_test_recov_prim_otp_alert_wd),
+ .d ('0),
+ .qre (),
+ .qe (alert_test_flds_we[4]),
+ .q (reg2hw.alert_test.recov_prim_otp_alert.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.alert_test.recov_prim_otp_alert.qe = alert_test_qe;
+
+
+ // R[status]: V(True)
+ // F[vendor_test_error]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_vendor_test_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.vendor_test_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_vendor_test_error_qs)
+ );
+
+ // F[creator_sw_cfg_error]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_creator_sw_cfg_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.creator_sw_cfg_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_creator_sw_cfg_error_qs)
+ );
+
+ // F[owner_sw_cfg_error]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_owner_sw_cfg_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.owner_sw_cfg_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_owner_sw_cfg_error_qs)
+ );
+
+ // F[rot_creator_auth_codesign_error]: 3:3
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_rot_creator_auth_codesign_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.rot_creator_auth_codesign_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_rot_creator_auth_codesign_error_qs)
+ );
+
+ // F[rot_creator_auth_state_error]: 4:4
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_rot_creator_auth_state_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.rot_creator_auth_state_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_rot_creator_auth_state_error_qs)
+ );
+
+ // F[hw_cfg0_error]: 5:5
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_hw_cfg0_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.hw_cfg0_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_hw_cfg0_error_qs)
+ );
+
+ // F[hw_cfg1_error]: 6:6
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_hw_cfg1_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.hw_cfg1_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_hw_cfg1_error_qs)
+ );
+
+ // F[secret0_error]: 7:7
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_secret0_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.secret0_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_secret0_error_qs)
+ );
+
+ // F[secret1_error]: 8:8
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_secret1_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.secret1_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_secret1_error_qs)
+ );
+
+ // F[secret2_error]: 9:9
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_secret2_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.secret2_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_secret2_error_qs)
+ );
+
+ // F[life_cycle_error]: 10:10
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_life_cycle_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.life_cycle_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_life_cycle_error_qs)
+ );
+
+ // F[dai_error]: 11:11
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_dai_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.dai_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_dai_error_qs)
+ );
+
+ // F[lci_error]: 12:12
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_lci_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.lci_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_lci_error_qs)
+ );
+
+ // F[timeout_error]: 13:13
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_timeout_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.timeout_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_timeout_error_qs)
+ );
+
+ // F[lfsr_fsm_error]: 14:14
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_lfsr_fsm_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.lfsr_fsm_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_lfsr_fsm_error_qs)
+ );
+
+ // F[scrambling_fsm_error]: 15:15
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_scrambling_fsm_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.scrambling_fsm_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_scrambling_fsm_error_qs)
+ );
+
+ // F[key_deriv_fsm_error]: 16:16
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_key_deriv_fsm_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.key_deriv_fsm_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_key_deriv_fsm_error_qs)
+ );
+
+ // F[bus_integ_error]: 17:17
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_bus_integ_error (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.bus_integ_error.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_bus_integ_error_qs)
+ );
+
+ // F[dai_idle]: 18:18
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_dai_idle (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.dai_idle.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_dai_idle_qs)
+ );
+
+ // F[check_pending]: 19:19
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_status_check_pending (
+ .re (status_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.status.check_pending.d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (status_check_pending_qs)
+ );
+
+
+ // Subregister 0 of Multireg err_code
+ // R[err_code_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_0 (
+ .re (err_code_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg err_code
+ // R[err_code_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_1 (
+ .re (err_code_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_1_qs)
+ );
+
+
+ // Subregister 2 of Multireg err_code
+ // R[err_code_2]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_2 (
+ .re (err_code_2_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[2].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_2_qs)
+ );
+
+
+ // Subregister 3 of Multireg err_code
+ // R[err_code_3]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_3 (
+ .re (err_code_3_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[3].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_3_qs)
+ );
+
+
+ // Subregister 4 of Multireg err_code
+ // R[err_code_4]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_4 (
+ .re (err_code_4_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[4].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_4_qs)
+ );
+
+
+ // Subregister 5 of Multireg err_code
+ // R[err_code_5]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_5 (
+ .re (err_code_5_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[5].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_5_qs)
+ );
+
+
+ // Subregister 6 of Multireg err_code
+ // R[err_code_6]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_6 (
+ .re (err_code_6_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[6].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_6_qs)
+ );
+
+
+ // Subregister 7 of Multireg err_code
+ // R[err_code_7]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_7 (
+ .re (err_code_7_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[7].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_7_qs)
+ );
+
+
+ // Subregister 8 of Multireg err_code
+ // R[err_code_8]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_8 (
+ .re (err_code_8_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[8].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_8_qs)
+ );
+
+
+ // Subregister 9 of Multireg err_code
+ // R[err_code_9]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_9 (
+ .re (err_code_9_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[9].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_9_qs)
+ );
+
+
+ // Subregister 10 of Multireg err_code
+ // R[err_code_10]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_10 (
+ .re (err_code_10_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[10].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_10_qs)
+ );
+
+
+ // Subregister 11 of Multireg err_code
+ // R[err_code_11]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_11 (
+ .re (err_code_11_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[11].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_11_qs)
+ );
+
+
+ // Subregister 12 of Multireg err_code
+ // R[err_code_12]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (3)
+ ) u_err_code_12 (
+ .re (err_code_12_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.err_code[12].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (err_code_12_qs)
+ );
+
+
+ // R[direct_access_regwen]: V(True)
+ logic direct_access_regwen_qe;
+ logic [0:0] direct_access_regwen_flds_we;
+ assign direct_access_regwen_qe = &direct_access_regwen_flds_we;
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_direct_access_regwen (
+ .re (direct_access_regwen_re),
+ .we (direct_access_regwen_we),
+ .wd (direct_access_regwen_wd),
+ .d (hw2reg.direct_access_regwen.d),
+ .qre (),
+ .qe (direct_access_regwen_flds_we[0]),
+ .q (reg2hw.direct_access_regwen.q),
+ .ds (),
+ .qs (direct_access_regwen_qs)
+ );
+ assign reg2hw.direct_access_regwen.qe = direct_access_regwen_qe;
+
+
+ // R[direct_access_cmd]: V(True)
+ logic direct_access_cmd_qe;
+ logic [2:0] direct_access_cmd_flds_we;
+ assign direct_access_cmd_qe = &direct_access_cmd_flds_we;
+ // Create REGWEN-gated WE signal
+ logic direct_access_cmd_gated_we;
+ assign direct_access_cmd_gated_we = direct_access_cmd_we & direct_access_regwen_qs;
+ // F[rd]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_direct_access_cmd_rd (
+ .re (1'b0),
+ .we (direct_access_cmd_gated_we),
+ .wd (direct_access_cmd_rd_wd),
+ .d ('0),
+ .qre (),
+ .qe (direct_access_cmd_flds_we[0]),
+ .q (reg2hw.direct_access_cmd.rd.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.direct_access_cmd.rd.qe = direct_access_cmd_qe;
+
+ // F[wr]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_direct_access_cmd_wr (
+ .re (1'b0),
+ .we (direct_access_cmd_gated_we),
+ .wd (direct_access_cmd_wr_wd),
+ .d ('0),
+ .qre (),
+ .qe (direct_access_cmd_flds_we[1]),
+ .q (reg2hw.direct_access_cmd.wr.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.direct_access_cmd.wr.qe = direct_access_cmd_qe;
+
+ // F[digest]: 2:2
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_direct_access_cmd_digest (
+ .re (1'b0),
+ .we (direct_access_cmd_gated_we),
+ .wd (direct_access_cmd_digest_wd),
+ .d ('0),
+ .qre (),
+ .qe (direct_access_cmd_flds_we[2]),
+ .q (reg2hw.direct_access_cmd.digest.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.direct_access_cmd.digest.qe = direct_access_cmd_qe;
+
+
+ // R[direct_access_address]: V(False)
+ // Create REGWEN-gated WE signal
+ logic direct_access_address_gated_we;
+ assign direct_access_address_gated_we = direct_access_address_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (11),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (11'h0),
+ .Mubi (1'b0)
+ ) u_direct_access_address (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (direct_access_address_gated_we),
+ .wd (direct_access_address_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.direct_access_address.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (direct_access_address_qs)
+ );
+
+
+ // Subregister 0 of Multireg direct_access_wdata
+ // R[direct_access_wdata_0]: V(False)
+ // Create REGWEN-gated WE signal
+ logic direct_access_wdata_0_gated_we;
+ assign direct_access_wdata_0_gated_we = direct_access_wdata_0_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_direct_access_wdata_0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (direct_access_wdata_0_gated_we),
+ .wd (direct_access_wdata_0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.direct_access_wdata[0].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (direct_access_wdata_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg direct_access_wdata
+ // R[direct_access_wdata_1]: V(False)
+ // Create REGWEN-gated WE signal
+ logic direct_access_wdata_1_gated_we;
+ assign direct_access_wdata_1_gated_we = direct_access_wdata_1_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_direct_access_wdata_1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (direct_access_wdata_1_gated_we),
+ .wd (direct_access_wdata_1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.direct_access_wdata[1].q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (direct_access_wdata_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg direct_access_rdata
+ // R[direct_access_rdata_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_direct_access_rdata_0 (
+ .re (direct_access_rdata_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.direct_access_rdata[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (direct_access_rdata_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg direct_access_rdata
+ // R[direct_access_rdata_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_direct_access_rdata_1 (
+ .re (direct_access_rdata_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.direct_access_rdata[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (direct_access_rdata_1_qs)
+ );
+
+
+ // R[check_trigger_regwen]: V(False)
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_check_trigger_regwen (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (check_trigger_regwen_we),
+ .wd (check_trigger_regwen_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+ .ds (),
+
+ // to register interface (read)
+ .qs (check_trigger_regwen_qs)
+ );
+
+
+ // R[check_trigger]: V(True)
+ logic check_trigger_qe;
+ logic [1:0] check_trigger_flds_we;
+ assign check_trigger_qe = &check_trigger_flds_we;
+ // Create REGWEN-gated WE signal
+ logic check_trigger_gated_we;
+ assign check_trigger_gated_we = check_trigger_we & check_trigger_regwen_qs;
+ // F[integrity]: 0:0
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_check_trigger_integrity (
+ .re (1'b0),
+ .we (check_trigger_gated_we),
+ .wd (check_trigger_integrity_wd),
+ .d ('0),
+ .qre (),
+ .qe (check_trigger_flds_we[0]),
+ .q (reg2hw.check_trigger.integrity.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.check_trigger.integrity.qe = check_trigger_qe;
+
+ // F[consistency]: 1:1
+ caliptra_prim_subreg_ext #(
+ .DW (1)
+ ) u_check_trigger_consistency (
+ .re (1'b0),
+ .we (check_trigger_gated_we),
+ .wd (check_trigger_consistency_wd),
+ .d ('0),
+ .qre (),
+ .qe (check_trigger_flds_we[1]),
+ .q (reg2hw.check_trigger.consistency.q),
+ .ds (),
+ .qs ()
+ );
+ assign reg2hw.check_trigger.consistency.qe = check_trigger_qe;
+
+
+ // R[check_regwen]: V(False)
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_check_regwen (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (check_regwen_we),
+ .wd (check_regwen_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (),
+ .ds (),
+
+ // to register interface (read)
+ .qs (check_regwen_qs)
+ );
+
+
+ // R[check_timeout]: V(False)
+ // Create REGWEN-gated WE signal
+ logic check_timeout_gated_we;
+ assign check_timeout_gated_we = check_timeout_we & check_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_check_timeout (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (check_timeout_gated_we),
+ .wd (check_timeout_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.check_timeout.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (check_timeout_qs)
+ );
+
+
+ // R[integrity_check_period]: V(False)
+ // Create REGWEN-gated WE signal
+ logic integrity_check_period_gated_we;
+ assign integrity_check_period_gated_we = integrity_check_period_we & check_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_integrity_check_period (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (integrity_check_period_gated_we),
+ .wd (integrity_check_period_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.integrity_check_period.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (integrity_check_period_qs)
+ );
+
+
+ // R[consistency_check_period]: V(False)
+ // Create REGWEN-gated WE signal
+ logic consistency_check_period_gated_we;
+ assign consistency_check_period_gated_we = consistency_check_period_we & check_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (32),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (32'h0),
+ .Mubi (1'b0)
+ ) u_consistency_check_period (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (consistency_check_period_gated_we),
+ .wd (consistency_check_period_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.consistency_check_period.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (consistency_check_period_qs)
+ );
+
+
+ // R[vendor_test_read_lock]: V(False)
+ // Create REGWEN-gated WE signal
+ logic vendor_test_read_lock_gated_we;
+ assign vendor_test_read_lock_gated_we = vendor_test_read_lock_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_vendor_test_read_lock (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (vendor_test_read_lock_gated_we),
+ .wd (vendor_test_read_lock_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.vendor_test_read_lock.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (vendor_test_read_lock_qs)
+ );
+
+
+ // R[creator_sw_cfg_read_lock]: V(False)
+ // Create REGWEN-gated WE signal
+ logic creator_sw_cfg_read_lock_gated_we;
+ assign creator_sw_cfg_read_lock_gated_we = creator_sw_cfg_read_lock_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_creator_sw_cfg_read_lock (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (creator_sw_cfg_read_lock_gated_we),
+ .wd (creator_sw_cfg_read_lock_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.creator_sw_cfg_read_lock.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (creator_sw_cfg_read_lock_qs)
+ );
+
+
+ // R[owner_sw_cfg_read_lock]: V(False)
+ // Create REGWEN-gated WE signal
+ logic owner_sw_cfg_read_lock_gated_we;
+ assign owner_sw_cfg_read_lock_gated_we = owner_sw_cfg_read_lock_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_owner_sw_cfg_read_lock (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (owner_sw_cfg_read_lock_gated_we),
+ .wd (owner_sw_cfg_read_lock_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.owner_sw_cfg_read_lock.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (owner_sw_cfg_read_lock_qs)
+ );
+
+
+ // R[rot_creator_auth_codesign_read_lock]: V(False)
+ // Create REGWEN-gated WE signal
+ logic rot_creator_auth_codesign_read_lock_gated_we;
+ assign rot_creator_auth_codesign_read_lock_gated_we =
+ rot_creator_auth_codesign_read_lock_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_rot_creator_auth_codesign_read_lock (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rot_creator_auth_codesign_read_lock_gated_we),
+ .wd (rot_creator_auth_codesign_read_lock_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rot_creator_auth_codesign_read_lock.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rot_creator_auth_codesign_read_lock_qs)
+ );
+
+
+ // R[rot_creator_auth_state_read_lock]: V(False)
+ // Create REGWEN-gated WE signal
+ logic rot_creator_auth_state_read_lock_gated_we;
+ assign rot_creator_auth_state_read_lock_gated_we =
+ rot_creator_auth_state_read_lock_we & direct_access_regwen_qs;
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW0C),
+ .RESVAL (1'h1),
+ .Mubi (1'b0)
+ ) u_rot_creator_auth_state_read_lock (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (rot_creator_auth_state_read_lock_gated_we),
+ .wd (rot_creator_auth_state_read_lock_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.rot_creator_auth_state_read_lock.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (rot_creator_auth_state_read_lock_qs)
+ );
+
+
+ // Subregister 0 of Multireg vendor_test_digest
+ // R[vendor_test_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_vendor_test_digest_0 (
+ .re (vendor_test_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.vendor_test_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (vendor_test_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg vendor_test_digest
+ // R[vendor_test_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_vendor_test_digest_1 (
+ .re (vendor_test_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.vendor_test_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (vendor_test_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg creator_sw_cfg_digest
+ // R[creator_sw_cfg_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_creator_sw_cfg_digest_0 (
+ .re (creator_sw_cfg_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.creator_sw_cfg_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (creator_sw_cfg_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg creator_sw_cfg_digest
+ // R[creator_sw_cfg_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_creator_sw_cfg_digest_1 (
+ .re (creator_sw_cfg_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.creator_sw_cfg_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (creator_sw_cfg_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg owner_sw_cfg_digest
+ // R[owner_sw_cfg_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_owner_sw_cfg_digest_0 (
+ .re (owner_sw_cfg_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.owner_sw_cfg_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (owner_sw_cfg_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg owner_sw_cfg_digest
+ // R[owner_sw_cfg_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_owner_sw_cfg_digest_1 (
+ .re (owner_sw_cfg_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.owner_sw_cfg_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (owner_sw_cfg_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg rot_creator_auth_codesign_digest
+ // R[rot_creator_auth_codesign_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_rot_creator_auth_codesign_digest_0 (
+ .re (rot_creator_auth_codesign_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.rot_creator_auth_codesign_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (rot_creator_auth_codesign_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg rot_creator_auth_codesign_digest
+ // R[rot_creator_auth_codesign_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_rot_creator_auth_codesign_digest_1 (
+ .re (rot_creator_auth_codesign_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.rot_creator_auth_codesign_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (rot_creator_auth_codesign_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg rot_creator_auth_state_digest
+ // R[rot_creator_auth_state_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_rot_creator_auth_state_digest_0 (
+ .re (rot_creator_auth_state_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.rot_creator_auth_state_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (rot_creator_auth_state_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg rot_creator_auth_state_digest
+ // R[rot_creator_auth_state_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_rot_creator_auth_state_digest_1 (
+ .re (rot_creator_auth_state_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.rot_creator_auth_state_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (rot_creator_auth_state_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg hw_cfg0_digest
+ // R[hw_cfg0_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_hw_cfg0_digest_0 (
+ .re (hw_cfg0_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_cfg0_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_cfg0_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg hw_cfg0_digest
+ // R[hw_cfg0_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_hw_cfg0_digest_1 (
+ .re (hw_cfg0_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_cfg0_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_cfg0_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg hw_cfg1_digest
+ // R[hw_cfg1_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_hw_cfg1_digest_0 (
+ .re (hw_cfg1_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_cfg1_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_cfg1_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg hw_cfg1_digest
+ // R[hw_cfg1_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_hw_cfg1_digest_1 (
+ .re (hw_cfg1_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.hw_cfg1_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (hw_cfg1_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg secret0_digest
+ // R[secret0_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret0_digest_0 (
+ .re (secret0_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret0_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret0_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg secret0_digest
+ // R[secret0_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret0_digest_1 (
+ .re (secret0_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret0_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret0_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg secret1_digest
+ // R[secret1_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret1_digest_0 (
+ .re (secret1_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret1_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret1_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg secret1_digest
+ // R[secret1_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret1_digest_1 (
+ .re (secret1_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret1_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret1_digest_1_qs)
+ );
+
+
+ // Subregister 0 of Multireg secret2_digest
+ // R[secret2_digest_0]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret2_digest_0 (
+ .re (secret2_digest_0_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret2_digest[0].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret2_digest_0_qs)
+ );
+
+
+ // Subregister 1 of Multireg secret2_digest
+ // R[secret2_digest_1]: V(True)
+ caliptra_prim_subreg_ext #(
+ .DW (32)
+ ) u_secret2_digest_1 (
+ .re (secret2_digest_1_re),
+ .we (1'b0),
+ .wd ('0),
+ .d (hw2reg.secret2_digest[1].d),
+ .qre (),
+ .qe (),
+ .q (),
+ .ds (),
+ .qs (secret2_digest_1_qs)
+ );
+
+
+
+ logic [55:0] addr_hit;
+ always_comb begin
+ addr_hit = '0;
+ addr_hit[ 0] = (reg_addr == OTP_CTRL_INTR_STATE_OFFSET);
+ addr_hit[ 1] = (reg_addr == OTP_CTRL_INTR_ENABLE_OFFSET);
+ addr_hit[ 2] = (reg_addr == OTP_CTRL_INTR_TEST_OFFSET);
+ addr_hit[ 3] = (reg_addr == OTP_CTRL_ALERT_TEST_OFFSET);
+ addr_hit[ 4] = (reg_addr == OTP_CTRL_STATUS_OFFSET);
+ addr_hit[ 5] = (reg_addr == OTP_CTRL_ERR_CODE_0_OFFSET);
+ addr_hit[ 6] = (reg_addr == OTP_CTRL_ERR_CODE_1_OFFSET);
+ addr_hit[ 7] = (reg_addr == OTP_CTRL_ERR_CODE_2_OFFSET);
+ addr_hit[ 8] = (reg_addr == OTP_CTRL_ERR_CODE_3_OFFSET);
+ addr_hit[ 9] = (reg_addr == OTP_CTRL_ERR_CODE_4_OFFSET);
+ addr_hit[10] = (reg_addr == OTP_CTRL_ERR_CODE_5_OFFSET);
+ addr_hit[11] = (reg_addr == OTP_CTRL_ERR_CODE_6_OFFSET);
+ addr_hit[12] = (reg_addr == OTP_CTRL_ERR_CODE_7_OFFSET);
+ addr_hit[13] = (reg_addr == OTP_CTRL_ERR_CODE_8_OFFSET);
+ addr_hit[14] = (reg_addr == OTP_CTRL_ERR_CODE_9_OFFSET);
+ addr_hit[15] = (reg_addr == OTP_CTRL_ERR_CODE_10_OFFSET);
+ addr_hit[16] = (reg_addr == OTP_CTRL_ERR_CODE_11_OFFSET);
+ addr_hit[17] = (reg_addr == OTP_CTRL_ERR_CODE_12_OFFSET);
+ addr_hit[18] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET);
+ addr_hit[19] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET);
+ addr_hit[20] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET);
+ addr_hit[21] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET);
+ addr_hit[22] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET);
+ addr_hit[23] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET);
+ addr_hit[24] = (reg_addr == OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET);
+ addr_hit[25] = (reg_addr == OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET);
+ addr_hit[26] = (reg_addr == OTP_CTRL_CHECK_TRIGGER_OFFSET);
+ addr_hit[27] = (reg_addr == OTP_CTRL_CHECK_REGWEN_OFFSET);
+ addr_hit[28] = (reg_addr == OTP_CTRL_CHECK_TIMEOUT_OFFSET);
+ addr_hit[29] = (reg_addr == OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET);
+ addr_hit[30] = (reg_addr == OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET);
+ addr_hit[31] = (reg_addr == OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET);
+ addr_hit[32] = (reg_addr == OTP_CTRL_CREATOR_SW_CFG_READ_LOCK_OFFSET);
+ addr_hit[33] = (reg_addr == OTP_CTRL_OWNER_SW_CFG_READ_LOCK_OFFSET);
+ addr_hit[34] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_READ_LOCK_OFFSET);
+ addr_hit[35] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_STATE_READ_LOCK_OFFSET);
+ addr_hit[36] = (reg_addr == OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET);
+ addr_hit[37] = (reg_addr == OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET);
+ addr_hit[38] = (reg_addr == OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_OFFSET);
+ addr_hit[39] = (reg_addr == OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_OFFSET);
+ addr_hit[40] = (reg_addr == OTP_CTRL_OWNER_SW_CFG_DIGEST_0_OFFSET);
+ addr_hit[41] = (reg_addr == OTP_CTRL_OWNER_SW_CFG_DIGEST_1_OFFSET);
+ addr_hit[42] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0_OFFSET);
+ addr_hit[43] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1_OFFSET);
+ addr_hit[44] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0_OFFSET);
+ addr_hit[45] = (reg_addr == OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1_OFFSET);
+ addr_hit[46] = (reg_addr == OTP_CTRL_HW_CFG0_DIGEST_0_OFFSET);
+ addr_hit[47] = (reg_addr == OTP_CTRL_HW_CFG0_DIGEST_1_OFFSET);
+ addr_hit[48] = (reg_addr == OTP_CTRL_HW_CFG1_DIGEST_0_OFFSET);
+ addr_hit[49] = (reg_addr == OTP_CTRL_HW_CFG1_DIGEST_1_OFFSET);
+ addr_hit[50] = (reg_addr == OTP_CTRL_SECRET0_DIGEST_0_OFFSET);
+ addr_hit[51] = (reg_addr == OTP_CTRL_SECRET0_DIGEST_1_OFFSET);
+ addr_hit[52] = (reg_addr == OTP_CTRL_SECRET1_DIGEST_0_OFFSET);
+ addr_hit[53] = (reg_addr == OTP_CTRL_SECRET1_DIGEST_1_OFFSET);
+ addr_hit[54] = (reg_addr == OTP_CTRL_SECRET2_DIGEST_0_OFFSET);
+ addr_hit[55] = (reg_addr == OTP_CTRL_SECRET2_DIGEST_1_OFFSET);
+ end
+
+ assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
+
+ // Check sub-word write is permitted
+ always_comb begin
+ wr_err = (reg_we &
+ ((addr_hit[ 0] & (|(OTP_CTRL_CORE_PERMIT[ 0] & ~reg_be))) |
+ (addr_hit[ 1] & (|(OTP_CTRL_CORE_PERMIT[ 1] & ~reg_be))) |
+ (addr_hit[ 2] & (|(OTP_CTRL_CORE_PERMIT[ 2] & ~reg_be))) |
+ (addr_hit[ 3] & (|(OTP_CTRL_CORE_PERMIT[ 3] & ~reg_be))) |
+ (addr_hit[ 4] & (|(OTP_CTRL_CORE_PERMIT[ 4] & ~reg_be))) |
+ (addr_hit[ 5] & (|(OTP_CTRL_CORE_PERMIT[ 5] & ~reg_be))) |
+ (addr_hit[ 6] & (|(OTP_CTRL_CORE_PERMIT[ 6] & ~reg_be))) |
+ (addr_hit[ 7] & (|(OTP_CTRL_CORE_PERMIT[ 7] & ~reg_be))) |
+ (addr_hit[ 8] & (|(OTP_CTRL_CORE_PERMIT[ 8] & ~reg_be))) |
+ (addr_hit[ 9] & (|(OTP_CTRL_CORE_PERMIT[ 9] & ~reg_be))) |
+ (addr_hit[10] & (|(OTP_CTRL_CORE_PERMIT[10] & ~reg_be))) |
+ (addr_hit[11] & (|(OTP_CTRL_CORE_PERMIT[11] & ~reg_be))) |
+ (addr_hit[12] & (|(OTP_CTRL_CORE_PERMIT[12] & ~reg_be))) |
+ (addr_hit[13] & (|(OTP_CTRL_CORE_PERMIT[13] & ~reg_be))) |
+ (addr_hit[14] & (|(OTP_CTRL_CORE_PERMIT[14] & ~reg_be))) |
+ (addr_hit[15] & (|(OTP_CTRL_CORE_PERMIT[15] & ~reg_be))) |
+ (addr_hit[16] & (|(OTP_CTRL_CORE_PERMIT[16] & ~reg_be))) |
+ (addr_hit[17] & (|(OTP_CTRL_CORE_PERMIT[17] & ~reg_be))) |
+ (addr_hit[18] & (|(OTP_CTRL_CORE_PERMIT[18] & ~reg_be))) |
+ (addr_hit[19] & (|(OTP_CTRL_CORE_PERMIT[19] & ~reg_be))) |
+ (addr_hit[20] & (|(OTP_CTRL_CORE_PERMIT[20] & ~reg_be))) |
+ (addr_hit[21] & (|(OTP_CTRL_CORE_PERMIT[21] & ~reg_be))) |
+ (addr_hit[22] & (|(OTP_CTRL_CORE_PERMIT[22] & ~reg_be))) |
+ (addr_hit[23] & (|(OTP_CTRL_CORE_PERMIT[23] & ~reg_be))) |
+ (addr_hit[24] & (|(OTP_CTRL_CORE_PERMIT[24] & ~reg_be))) |
+ (addr_hit[25] & (|(OTP_CTRL_CORE_PERMIT[25] & ~reg_be))) |
+ (addr_hit[26] & (|(OTP_CTRL_CORE_PERMIT[26] & ~reg_be))) |
+ (addr_hit[27] & (|(OTP_CTRL_CORE_PERMIT[27] & ~reg_be))) |
+ (addr_hit[28] & (|(OTP_CTRL_CORE_PERMIT[28] & ~reg_be))) |
+ (addr_hit[29] & (|(OTP_CTRL_CORE_PERMIT[29] & ~reg_be))) |
+ (addr_hit[30] & (|(OTP_CTRL_CORE_PERMIT[30] & ~reg_be))) |
+ (addr_hit[31] & (|(OTP_CTRL_CORE_PERMIT[31] & ~reg_be))) |
+ (addr_hit[32] & (|(OTP_CTRL_CORE_PERMIT[32] & ~reg_be))) |
+ (addr_hit[33] & (|(OTP_CTRL_CORE_PERMIT[33] & ~reg_be))) |
+ (addr_hit[34] & (|(OTP_CTRL_CORE_PERMIT[34] & ~reg_be))) |
+ (addr_hit[35] & (|(OTP_CTRL_CORE_PERMIT[35] & ~reg_be))) |
+ (addr_hit[36] & (|(OTP_CTRL_CORE_PERMIT[36] & ~reg_be))) |
+ (addr_hit[37] & (|(OTP_CTRL_CORE_PERMIT[37] & ~reg_be))) |
+ (addr_hit[38] & (|(OTP_CTRL_CORE_PERMIT[38] & ~reg_be))) |
+ (addr_hit[39] & (|(OTP_CTRL_CORE_PERMIT[39] & ~reg_be))) |
+ (addr_hit[40] & (|(OTP_CTRL_CORE_PERMIT[40] & ~reg_be))) |
+ (addr_hit[41] & (|(OTP_CTRL_CORE_PERMIT[41] & ~reg_be))) |
+ (addr_hit[42] & (|(OTP_CTRL_CORE_PERMIT[42] & ~reg_be))) |
+ (addr_hit[43] & (|(OTP_CTRL_CORE_PERMIT[43] & ~reg_be))) |
+ (addr_hit[44] & (|(OTP_CTRL_CORE_PERMIT[44] & ~reg_be))) |
+ (addr_hit[45] & (|(OTP_CTRL_CORE_PERMIT[45] & ~reg_be))) |
+ (addr_hit[46] & (|(OTP_CTRL_CORE_PERMIT[46] & ~reg_be))) |
+ (addr_hit[47] & (|(OTP_CTRL_CORE_PERMIT[47] & ~reg_be))) |
+ (addr_hit[48] & (|(OTP_CTRL_CORE_PERMIT[48] & ~reg_be))) |
+ (addr_hit[49] & (|(OTP_CTRL_CORE_PERMIT[49] & ~reg_be))) |
+ (addr_hit[50] & (|(OTP_CTRL_CORE_PERMIT[50] & ~reg_be))) |
+ (addr_hit[51] & (|(OTP_CTRL_CORE_PERMIT[51] & ~reg_be))) |
+ (addr_hit[52] & (|(OTP_CTRL_CORE_PERMIT[52] & ~reg_be))) |
+ (addr_hit[53] & (|(OTP_CTRL_CORE_PERMIT[53] & ~reg_be))) |
+ (addr_hit[54] & (|(OTP_CTRL_CORE_PERMIT[54] & ~reg_be))) |
+ (addr_hit[55] & (|(OTP_CTRL_CORE_PERMIT[55] & ~reg_be)))));
+ end
+
+ // Generate write-enables
+ assign intr_state_we = addr_hit[0] & reg_we & !reg_error;
+
+ assign intr_state_otp_operation_done_wd = reg_wdata[0];
+
+ assign intr_state_otp_error_wd = reg_wdata[1];
+ assign intr_enable_we = addr_hit[1] & reg_we & !reg_error;
+
+ assign intr_enable_otp_operation_done_wd = reg_wdata[0];
+
+ assign intr_enable_otp_error_wd = reg_wdata[1];
+ assign intr_test_we = addr_hit[2] & reg_we & !reg_error;
+
+ assign intr_test_otp_operation_done_wd = reg_wdata[0];
+
+ assign intr_test_otp_error_wd = reg_wdata[1];
+ assign alert_test_we = addr_hit[3] & reg_we & !reg_error;
+
+ assign alert_test_fatal_macro_error_wd = reg_wdata[0];
+
+ assign alert_test_fatal_check_error_wd = reg_wdata[1];
+
+ assign alert_test_fatal_bus_integ_error_wd = reg_wdata[2];
+
+ assign alert_test_fatal_prim_otp_alert_wd = reg_wdata[3];
+
+ assign alert_test_recov_prim_otp_alert_wd = reg_wdata[4];
+ assign status_re = addr_hit[4] & reg_re & !reg_error;
+ assign err_code_0_re = addr_hit[5] & reg_re & !reg_error;
+ assign err_code_1_re = addr_hit[6] & reg_re & !reg_error;
+ assign err_code_2_re = addr_hit[7] & reg_re & !reg_error;
+ assign err_code_3_re = addr_hit[8] & reg_re & !reg_error;
+ assign err_code_4_re = addr_hit[9] & reg_re & !reg_error;
+ assign err_code_5_re = addr_hit[10] & reg_re & !reg_error;
+ assign err_code_6_re = addr_hit[11] & reg_re & !reg_error;
+ assign err_code_7_re = addr_hit[12] & reg_re & !reg_error;
+ assign err_code_8_re = addr_hit[13] & reg_re & !reg_error;
+ assign err_code_9_re = addr_hit[14] & reg_re & !reg_error;
+ assign err_code_10_re = addr_hit[15] & reg_re & !reg_error;
+ assign err_code_11_re = addr_hit[16] & reg_re & !reg_error;
+ assign err_code_12_re = addr_hit[17] & reg_re & !reg_error;
+ assign direct_access_regwen_re = addr_hit[18] & reg_re & !reg_error;
+ assign direct_access_regwen_we = addr_hit[18] & reg_we & !reg_error;
+
+ assign direct_access_regwen_wd = reg_wdata[0];
+ assign direct_access_cmd_we = addr_hit[19] & reg_we & !reg_error;
+
+ assign direct_access_cmd_rd_wd = reg_wdata[0];
+
+ assign direct_access_cmd_wr_wd = reg_wdata[1];
+
+ assign direct_access_cmd_digest_wd = reg_wdata[2];
+ assign direct_access_address_we = addr_hit[20] & reg_we & !reg_error;
+
+ assign direct_access_address_wd = reg_wdata[10:0];
+ assign direct_access_wdata_0_we = addr_hit[21] & reg_we & !reg_error;
+
+ assign direct_access_wdata_0_wd = reg_wdata[31:0];
+ assign direct_access_wdata_1_we = addr_hit[22] & reg_we & !reg_error;
+
+ assign direct_access_wdata_1_wd = reg_wdata[31:0];
+ assign direct_access_rdata_0_re = addr_hit[23] & reg_re & !reg_error;
+ assign direct_access_rdata_1_re = addr_hit[24] & reg_re & !reg_error;
+ assign check_trigger_regwen_we = addr_hit[25] & reg_we & !reg_error;
+
+ assign check_trigger_regwen_wd = reg_wdata[0];
+ assign check_trigger_we = addr_hit[26] & reg_we & !reg_error;
+
+ assign check_trigger_integrity_wd = reg_wdata[0];
+
+ assign check_trigger_consistency_wd = reg_wdata[1];
+ assign check_regwen_we = addr_hit[27] & reg_we & !reg_error;
+
+ assign check_regwen_wd = reg_wdata[0];
+ assign check_timeout_we = addr_hit[28] & reg_we & !reg_error;
+
+ assign check_timeout_wd = reg_wdata[31:0];
+ assign integrity_check_period_we = addr_hit[29] & reg_we & !reg_error;
+
+ assign integrity_check_period_wd = reg_wdata[31:0];
+ assign consistency_check_period_we = addr_hit[30] & reg_we & !reg_error;
+
+ assign consistency_check_period_wd = reg_wdata[31:0];
+ assign vendor_test_read_lock_we = addr_hit[31] & reg_we & !reg_error;
+
+ assign vendor_test_read_lock_wd = reg_wdata[0];
+ assign creator_sw_cfg_read_lock_we = addr_hit[32] & reg_we & !reg_error;
+
+ assign creator_sw_cfg_read_lock_wd = reg_wdata[0];
+ assign owner_sw_cfg_read_lock_we = addr_hit[33] & reg_we & !reg_error;
+
+ assign owner_sw_cfg_read_lock_wd = reg_wdata[0];
+ assign rot_creator_auth_codesign_read_lock_we = addr_hit[34] & reg_we & !reg_error;
+
+ assign rot_creator_auth_codesign_read_lock_wd = reg_wdata[0];
+ assign rot_creator_auth_state_read_lock_we = addr_hit[35] & reg_we & !reg_error;
+
+ assign rot_creator_auth_state_read_lock_wd = reg_wdata[0];
+ assign vendor_test_digest_0_re = addr_hit[36] & reg_re & !reg_error;
+ assign vendor_test_digest_1_re = addr_hit[37] & reg_re & !reg_error;
+ assign creator_sw_cfg_digest_0_re = addr_hit[38] & reg_re & !reg_error;
+ assign creator_sw_cfg_digest_1_re = addr_hit[39] & reg_re & !reg_error;
+ assign owner_sw_cfg_digest_0_re = addr_hit[40] & reg_re & !reg_error;
+ assign owner_sw_cfg_digest_1_re = addr_hit[41] & reg_re & !reg_error;
+ assign rot_creator_auth_codesign_digest_0_re = addr_hit[42] & reg_re & !reg_error;
+ assign rot_creator_auth_codesign_digest_1_re = addr_hit[43] & reg_re & !reg_error;
+ assign rot_creator_auth_state_digest_0_re = addr_hit[44] & reg_re & !reg_error;
+ assign rot_creator_auth_state_digest_1_re = addr_hit[45] & reg_re & !reg_error;
+ assign hw_cfg0_digest_0_re = addr_hit[46] & reg_re & !reg_error;
+ assign hw_cfg0_digest_1_re = addr_hit[47] & reg_re & !reg_error;
+ assign hw_cfg1_digest_0_re = addr_hit[48] & reg_re & !reg_error;
+ assign hw_cfg1_digest_1_re = addr_hit[49] & reg_re & !reg_error;
+ assign secret0_digest_0_re = addr_hit[50] & reg_re & !reg_error;
+ assign secret0_digest_1_re = addr_hit[51] & reg_re & !reg_error;
+ assign secret1_digest_0_re = addr_hit[52] & reg_re & !reg_error;
+ assign secret1_digest_1_re = addr_hit[53] & reg_re & !reg_error;
+ assign secret2_digest_0_re = addr_hit[54] & reg_re & !reg_error;
+ assign secret2_digest_1_re = addr_hit[55] & reg_re & !reg_error;
+
+ // Assign write-enables to checker logic vector.
+ always_comb begin
+ reg_we_check = '0;
+ reg_we_check[0] = intr_state_we;
+ reg_we_check[1] = intr_enable_we;
+ reg_we_check[2] = intr_test_we;
+ reg_we_check[3] = alert_test_we;
+ reg_we_check[4] = 1'b0;
+ reg_we_check[5] = 1'b0;
+ reg_we_check[6] = 1'b0;
+ reg_we_check[7] = 1'b0;
+ reg_we_check[8] = 1'b0;
+ reg_we_check[9] = 1'b0;
+ reg_we_check[10] = 1'b0;
+ reg_we_check[11] = 1'b0;
+ reg_we_check[12] = 1'b0;
+ reg_we_check[13] = 1'b0;
+ reg_we_check[14] = 1'b0;
+ reg_we_check[15] = 1'b0;
+ reg_we_check[16] = 1'b0;
+ reg_we_check[17] = 1'b0;
+ reg_we_check[18] = direct_access_regwen_we;
+ reg_we_check[19] = direct_access_cmd_gated_we;
+ reg_we_check[20] = direct_access_address_gated_we;
+ reg_we_check[21] = direct_access_wdata_0_gated_we;
+ reg_we_check[22] = direct_access_wdata_1_gated_we;
+ reg_we_check[23] = 1'b0;
+ reg_we_check[24] = 1'b0;
+ reg_we_check[25] = check_trigger_regwen_we;
+ reg_we_check[26] = check_trigger_gated_we;
+ reg_we_check[27] = check_regwen_we;
+ reg_we_check[28] = check_timeout_gated_we;
+ reg_we_check[29] = integrity_check_period_gated_we;
+ reg_we_check[30] = consistency_check_period_gated_we;
+ reg_we_check[31] = vendor_test_read_lock_gated_we;
+ reg_we_check[32] = creator_sw_cfg_read_lock_gated_we;
+ reg_we_check[33] = owner_sw_cfg_read_lock_gated_we;
+ reg_we_check[34] = rot_creator_auth_codesign_read_lock_gated_we;
+ reg_we_check[35] = rot_creator_auth_state_read_lock_gated_we;
+ reg_we_check[36] = 1'b0;
+ reg_we_check[37] = 1'b0;
+ reg_we_check[38] = 1'b0;
+ reg_we_check[39] = 1'b0;
+ reg_we_check[40] = 1'b0;
+ reg_we_check[41] = 1'b0;
+ reg_we_check[42] = 1'b0;
+ reg_we_check[43] = 1'b0;
+ reg_we_check[44] = 1'b0;
+ reg_we_check[45] = 1'b0;
+ reg_we_check[46] = 1'b0;
+ reg_we_check[47] = 1'b0;
+ reg_we_check[48] = 1'b0;
+ reg_we_check[49] = 1'b0;
+ reg_we_check[50] = 1'b0;
+ reg_we_check[51] = 1'b0;
+ reg_we_check[52] = 1'b0;
+ reg_we_check[53] = 1'b0;
+ reg_we_check[54] = 1'b0;
+ reg_we_check[55] = 1'b0;
+ end
+
+ // Read data return
+ always_comb begin
+ reg_rdata_next = '0;
+ unique case (1'b1)
+ addr_hit[0]: begin
+ reg_rdata_next[0] = intr_state_otp_operation_done_qs;
+ reg_rdata_next[1] = intr_state_otp_error_qs;
+ end
+
+ addr_hit[1]: begin
+ reg_rdata_next[0] = intr_enable_otp_operation_done_qs;
+ reg_rdata_next[1] = intr_enable_otp_error_qs;
+ end
+
+ addr_hit[2]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ end
+
+ addr_hit[3]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ reg_rdata_next[2] = '0;
+ reg_rdata_next[3] = '0;
+ reg_rdata_next[4] = '0;
+ end
+
+ addr_hit[4]: begin
+ reg_rdata_next[0] = status_vendor_test_error_qs;
+ reg_rdata_next[1] = status_creator_sw_cfg_error_qs;
+ reg_rdata_next[2] = status_owner_sw_cfg_error_qs;
+ reg_rdata_next[3] = status_rot_creator_auth_codesign_error_qs;
+ reg_rdata_next[4] = status_rot_creator_auth_state_error_qs;
+ reg_rdata_next[5] = status_hw_cfg0_error_qs;
+ reg_rdata_next[6] = status_hw_cfg1_error_qs;
+ reg_rdata_next[7] = status_secret0_error_qs;
+ reg_rdata_next[8] = status_secret1_error_qs;
+ reg_rdata_next[9] = status_secret2_error_qs;
+ reg_rdata_next[10] = status_life_cycle_error_qs;
+ reg_rdata_next[11] = status_dai_error_qs;
+ reg_rdata_next[12] = status_lci_error_qs;
+ reg_rdata_next[13] = status_timeout_error_qs;
+ reg_rdata_next[14] = status_lfsr_fsm_error_qs;
+ reg_rdata_next[15] = status_scrambling_fsm_error_qs;
+ reg_rdata_next[16] = status_key_deriv_fsm_error_qs;
+ reg_rdata_next[17] = status_bus_integ_error_qs;
+ reg_rdata_next[18] = status_dai_idle_qs;
+ reg_rdata_next[19] = status_check_pending_qs;
+ end
+
+ addr_hit[5]: begin
+ reg_rdata_next[2:0] = err_code_0_qs;
+ end
+
+ addr_hit[6]: begin
+ reg_rdata_next[2:0] = err_code_1_qs;
+ end
+
+ addr_hit[7]: begin
+ reg_rdata_next[2:0] = err_code_2_qs;
+ end
+
+ addr_hit[8]: begin
+ reg_rdata_next[2:0] = err_code_3_qs;
+ end
+
+ addr_hit[9]: begin
+ reg_rdata_next[2:0] = err_code_4_qs;
+ end
+
+ addr_hit[10]: begin
+ reg_rdata_next[2:0] = err_code_5_qs;
+ end
+
+ addr_hit[11]: begin
+ reg_rdata_next[2:0] = err_code_6_qs;
+ end
+
+ addr_hit[12]: begin
+ reg_rdata_next[2:0] = err_code_7_qs;
+ end
+
+ addr_hit[13]: begin
+ reg_rdata_next[2:0] = err_code_8_qs;
+ end
+
+ addr_hit[14]: begin
+ reg_rdata_next[2:0] = err_code_9_qs;
+ end
+
+ addr_hit[15]: begin
+ reg_rdata_next[2:0] = err_code_10_qs;
+ end
+
+ addr_hit[16]: begin
+ reg_rdata_next[2:0] = err_code_11_qs;
+ end
+
+ addr_hit[17]: begin
+ reg_rdata_next[2:0] = err_code_12_qs;
+ end
+
+ addr_hit[18]: begin
+ reg_rdata_next[0] = direct_access_regwen_qs;
+ end
+
+ addr_hit[19]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ reg_rdata_next[2] = '0;
+ end
+
+ addr_hit[20]: begin
+ reg_rdata_next[10:0] = direct_access_address_qs;
+ end
+
+ addr_hit[21]: begin
+ reg_rdata_next[31:0] = direct_access_wdata_0_qs;
+ end
+
+ addr_hit[22]: begin
+ reg_rdata_next[31:0] = direct_access_wdata_1_qs;
+ end
+
+ addr_hit[23]: begin
+ reg_rdata_next[31:0] = direct_access_rdata_0_qs;
+ end
+
+ addr_hit[24]: begin
+ reg_rdata_next[31:0] = direct_access_rdata_1_qs;
+ end
+
+ addr_hit[25]: begin
+ reg_rdata_next[0] = check_trigger_regwen_qs;
+ end
+
+ addr_hit[26]: begin
+ reg_rdata_next[0] = '0;
+ reg_rdata_next[1] = '0;
+ end
+
+ addr_hit[27]: begin
+ reg_rdata_next[0] = check_regwen_qs;
+ end
+
+ addr_hit[28]: begin
+ reg_rdata_next[31:0] = check_timeout_qs;
+ end
+
+ addr_hit[29]: begin
+ reg_rdata_next[31:0] = integrity_check_period_qs;
+ end
+
+ addr_hit[30]: begin
+ reg_rdata_next[31:0] = consistency_check_period_qs;
+ end
+
+ addr_hit[31]: begin
+ reg_rdata_next[0] = vendor_test_read_lock_qs;
+ end
+
+ addr_hit[32]: begin
+ reg_rdata_next[0] = creator_sw_cfg_read_lock_qs;
+ end
+
+ addr_hit[33]: begin
+ reg_rdata_next[0] = owner_sw_cfg_read_lock_qs;
+ end
+
+ addr_hit[34]: begin
+ reg_rdata_next[0] = rot_creator_auth_codesign_read_lock_qs;
+ end
+
+ addr_hit[35]: begin
+ reg_rdata_next[0] = rot_creator_auth_state_read_lock_qs;
+ end
+
+ addr_hit[36]: begin
+ reg_rdata_next[31:0] = vendor_test_digest_0_qs;
+ end
+
+ addr_hit[37]: begin
+ reg_rdata_next[31:0] = vendor_test_digest_1_qs;
+ end
+
+ addr_hit[38]: begin
+ reg_rdata_next[31:0] = creator_sw_cfg_digest_0_qs;
+ end
+
+ addr_hit[39]: begin
+ reg_rdata_next[31:0] = creator_sw_cfg_digest_1_qs;
+ end
+
+ addr_hit[40]: begin
+ reg_rdata_next[31:0] = owner_sw_cfg_digest_0_qs;
+ end
+
+ addr_hit[41]: begin
+ reg_rdata_next[31:0] = owner_sw_cfg_digest_1_qs;
+ end
+
+ addr_hit[42]: begin
+ reg_rdata_next[31:0] = rot_creator_auth_codesign_digest_0_qs;
+ end
+
+ addr_hit[43]: begin
+ reg_rdata_next[31:0] = rot_creator_auth_codesign_digest_1_qs;
+ end
+
+ addr_hit[44]: begin
+ reg_rdata_next[31:0] = rot_creator_auth_state_digest_0_qs;
+ end
+
+ addr_hit[45]: begin
+ reg_rdata_next[31:0] = rot_creator_auth_state_digest_1_qs;
+ end
+
+ addr_hit[46]: begin
+ reg_rdata_next[31:0] = hw_cfg0_digest_0_qs;
+ end
+
+ addr_hit[47]: begin
+ reg_rdata_next[31:0] = hw_cfg0_digest_1_qs;
+ end
+
+ addr_hit[48]: begin
+ reg_rdata_next[31:0] = hw_cfg1_digest_0_qs;
+ end
+
+ addr_hit[49]: begin
+ reg_rdata_next[31:0] = hw_cfg1_digest_1_qs;
+ end
+
+ addr_hit[50]: begin
+ reg_rdata_next[31:0] = secret0_digest_0_qs;
+ end
+
+ addr_hit[51]: begin
+ reg_rdata_next[31:0] = secret0_digest_1_qs;
+ end
+
+ addr_hit[52]: begin
+ reg_rdata_next[31:0] = secret1_digest_0_qs;
+ end
+
+ addr_hit[53]: begin
+ reg_rdata_next[31:0] = secret1_digest_1_qs;
+ end
+
+ addr_hit[54]: begin
+ reg_rdata_next[31:0] = secret2_digest_0_qs;
+ end
+
+ addr_hit[55]: begin
+ reg_rdata_next[31:0] = secret2_digest_1_qs;
+ end
+
+ default: begin
+ reg_rdata_next = '1;
+ end
+ endcase
+ end
+
+ // shadow busy
+ logic shadow_busy;
+ assign shadow_busy = 1'b0;
+
+ // register busy
+ assign reg_busy = shadow_busy;
+
+ // Unused signal tieoff
+
+ // wdata / byte enable are not always fully used
+ // add a blanket unused statement to handle lint waivers
+ logic unused_wdata;
+ logic unused_be;
+ assign unused_wdata = ^reg_wdata;
+ assign unused_be = ^reg_be;
+
+ // Assertions for Register Interface
+ `CALIPTRA_ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni)
+ `CALIPTRA_ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o_pre.d_valid, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni)
+
+ // this is formulated as an assumption such that the FPV testbenches do disprove this
+ // property by mistake
+ //`ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.chk_en == tlul_pkg::CheckDis)
+
+endmodule
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_dai.sv b/src/fuse_ctrl/rtl/otp_ctrl_dai.sv
new file mode 100644
index 0000000..b264fd0
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_dai.sv
@@ -0,0 +1,858 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Direct access interface for OTP controller.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_dai
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+(
+ input clk_i,
+ input rst_ni,
+ // Init reqest from power manager
+ input init_req_i,
+ output logic init_done_o,
+ // Init request going to partitions
+ output logic part_init_req_o,
+ input [NumPart-1:0] part_init_done_i,
+ // Escalation input. This moves the FSM into a terminal state and locks down
+ // the DAI.
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ // Output error state of DAI, to be consumed by OTP error/alert logic.
+ // Note that most errors are not recoverable and move the DAI FSM into
+ // a terminal error state.
+ output otp_err_e error_o,
+ // This error signal is pulsed high if the FSM has been glitched into an invalid state.
+ // Although it is somewhat redundant with the error code in error_o above, it is
+ // meant to cover cases where we already latched an error code while the FSM is
+ // glitched into an invalid state (since in that case, the error code will not be
+ // overridden with the FSM error code so that the original error code is still
+ // discoverable).
+ output logic fsm_err_o,
+ // Access/lock status from partitions
+ // SEC_CM: ACCESS.CTRL.MUBI
+ input part_access_t [NumPart-1:0] part_access_i,
+ // CSR interface
+ input [OtpByteAddrWidth-1:0] dai_addr_i,
+ input dai_cmd_e dai_cmd_i,
+ input logic dai_req_i,
+ input [NumDaiWords-1:0][31:0] dai_wdata_i,
+ output logic dai_idle_o, // wired to the status CSRs
+ output logic dai_prog_idle_o, // wired to lfsr timer and pwrmgr
+ output logic dai_cmd_done_o, // this is used to raise an IRQ
+ output logic [NumDaiWords-1:0][31:0] dai_rdata_o,
+ // OTP interface
+ output logic otp_req_o,
+ output caliptra_prim_otp_pkg::cmd_e otp_cmd_o,
+ output logic [OtpSizeWidth-1:0] otp_size_o,
+ output logic [OtpIfWidth-1:0] otp_wdata_o,
+ output logic [OtpAddrWidth-1:0] otp_addr_o,
+ input otp_gnt_i,
+ input otp_rvalid_i,
+ input [ScrmblBlockWidth-1:0] otp_rdata_i,
+ input caliptra_prim_otp_pkg::err_e otp_err_i,
+ // Scrambling mutex request
+ output logic scrmbl_mtx_req_o,
+ input scrmbl_mtx_gnt_i,
+ // Scrambling datapath interface
+ output otp_scrmbl_cmd_e scrmbl_cmd_o,
+ output digest_mode_e scrmbl_mode_o,
+ output logic [ConstSelWidth-1:0] scrmbl_sel_o,
+ output logic [ScrmblBlockWidth-1:0] scrmbl_data_o,
+ output logic scrmbl_valid_o,
+ input logic scrmbl_ready_i,
+ input logic scrmbl_valid_i,
+ input logic [ScrmblBlockWidth-1:0] scrmbl_data_i
+);
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ import caliptra_prim_mubi_pkg::*;
+ import caliptra_prim_util_pkg::vbits;
+
+ localparam int CntWidth = OtpByteAddrWidth - $clog2(ScrmblBlockWidth/8);
+
+ // Integration checks for parameters.
+ `CALIPTRA_ASSERT_INIT(CheckNativeOtpWidth0_A, (ScrmblBlockWidth % OtpWidth) == 0)
+ `CALIPTRA_ASSERT_INIT(CheckNativeOtpWidth1_A, (32 % OtpWidth) == 0)
+
+ /////////////////////
+ // DAI Control FSM //
+ /////////////////////
+
+ // SEC_CM: DAI.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 20 -n 12 \
+ // -s 3011551511 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||| (31.05%)
+ // 6: |||||||||||||||||||| (36.84%)
+ // 7: |||||||| (15.26%)
+ // 8: |||| (8.95%)
+ // 9: || (5.26%)
+ // 10: (1.58%)
+ // 11: (1.05%)
+ // 12: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 11
+ // Minimum Hamming weight: 2
+ // Maximum Hamming weight: 9
+ //
+ localparam int StateWidth = 12;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 12'b101111010100,
+ InitOtpSt = 12'b110000110010,
+ InitPartSt = 12'b000111111001,
+ IdleSt = 12'b111010000011,
+ ErrorSt = 12'b100010001110,
+ ReadSt = 12'b100101100110,
+ ReadWaitSt = 12'b001100000000,
+ DescrSt = 12'b011000101111,
+ DescrWaitSt = 12'b110101011111,
+ WriteSt = 12'b110111001000,
+ WriteWaitSt = 12'b111001111100,
+ ScrSt = 12'b000000010101,
+ ScrWaitSt = 12'b010110110100,
+ DigClrSt = 12'b001111001111,
+ DigReadSt = 12'b001001110011,
+ DigReadWaitSt = 12'b101110111010,
+ DigSt = 12'b011111100010,
+ DigPadSt = 12'b011010011000,
+ DigFinSt = 12'b110011100101,
+ DigWaitSt = 12'b100000101001
+ } state_e;
+
+ typedef enum logic [1:0] {
+ OtpData = 2'b00,
+ DaiData = 2'b01,
+ ScrmblData = 2'b10
+ } data_sel_e;
+
+
+ typedef enum logic {
+ PartOffset = 1'b0,
+ DaiOffset = 1'b1
+ } addr_sel_e;
+
+ state_e state_d, state_q;
+ logic [CntWidth-1:0] cnt;
+ logic cnt_en, cnt_clr, cnt_err;
+ otp_err_e error_d, error_q;
+ logic data_en, data_clr;
+ data_sel_e data_sel;
+ addr_sel_e base_sel_d, base_sel_q;
+ logic [ScrmblBlockWidth-1:0] data_q;
+ logic [NumPartWidth-1:0] part_idx;
+ logic [NumPart-1:0][OtpAddrWidth-1:0] digest_addr_lut;
+ logic part_sel_valid;
+
+ // Depending on the partition configuration, the wrapper is instructed to ignore integrity
+ // calculations and checks. To be on the safe side, the partition filters error responses at this
+ // point and does not report any integrity errors if integrity is disabled.
+ otp_err_e otp_err;
+ always_comb begin
+ otp_err = otp_err_e'(otp_err_i);
+ if (!PartInfo[part_idx].integrity &&
+ otp_err_e'(otp_err_i) inside {MacroEccCorrError, MacroEccUncorrError}) begin
+ otp_err = NoError;
+ end
+ end
+
+ // Output partition error state.
+ assign error_o = error_q;
+ // Working register is connected to data outputs.
+ assign otp_wdata_o = data_q;
+ assign scrmbl_data_o = data_q;
+ // Only expose this working register in IdleSt.
+ // The FSM below makes sure to clear this register
+ // after digest and write ops.
+ assign dai_rdata_o = (state_q == IdleSt) ? data_q : '0;
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+
+ // Init signals
+ init_done_o = 1'b1;
+ part_init_req_o = 1'b0;
+
+ // DAI signals
+ dai_idle_o = 1'b0;
+ dai_prog_idle_o = 1'b1;
+ dai_cmd_done_o = 1'b0;
+
+ // OTP signals
+ otp_req_o = 1'b0;
+ otp_cmd_o = caliptra_prim_otp_pkg::Init;
+
+ // Scrambling mutex
+ scrmbl_mtx_req_o = 1'b0;
+
+ // Scrambling datapath
+ scrmbl_cmd_o = LoadShadow;
+ scrmbl_sel_o = CnstyDigest;
+ scrmbl_mode_o = StandardMode;
+ scrmbl_valid_o = 1'b0;
+
+ // Counter
+ cnt_en = 1'b0;
+ cnt_clr = 1'b0;
+ base_sel_d = base_sel_q;
+
+ // Temporary data register
+ data_en = 1'b0;
+ data_clr = 1'b0;
+ data_sel = OtpData;
+
+ // Error Register
+ error_d = error_q;
+ fsm_err_o = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // We get here after reset and wait until the power manager
+ // requests OTP initialization. If initialization is requested,
+ // an init command is written to the OTP macro, and we move on
+ // to the InitOtpSt waiting state.
+ ResetSt: begin
+ init_done_o = 1'b0;
+ dai_prog_idle_o = 1'b0;
+ data_clr = 1'b1;
+ if (init_req_i) begin
+ otp_req_o = 1'b1;
+ if (otp_gnt_i) begin
+ state_d = InitOtpSt;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // We wait here unitl the OTP macro has initialized without
+ // error. If an error occurred during this stage, we latch that
+ // error and move into a terminal error state.
+ InitOtpSt: begin
+ init_done_o = 1'b0;
+ dai_prog_idle_o = 1'b0;
+ if (otp_rvalid_i) begin
+ if ((!(otp_err inside {NoError, MacroEccCorrError}))) begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end else begin
+ state_d = InitPartSt;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Since the OTP macro is now functional, we can send out an
+ // initialization request to all partitions and wait until they
+ // all have initialized.
+ InitPartSt: begin
+ init_done_o = 1'b0;
+ dai_prog_idle_o = 1'b0;
+ part_init_req_o = 1'b1;
+ if (part_init_done_i == {NumPart{1'b1}}) begin
+ state_d = IdleSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Idle state where we wait for incoming commands.
+ // Invalid commands trigger a CmdInvErr, which is recoverable.
+ IdleSt: begin
+ dai_idle_o = 1'b1;
+ if (dai_req_i) begin
+ // This clears previous (recoverable) and reset the counter.
+ error_d = NoError;
+ cnt_clr = 1'b1;
+ unique case (dai_cmd_i)
+ DaiRead: begin
+ state_d = ReadSt;
+ // Clear the temporary data register.
+ data_clr = 1'b1;
+ base_sel_d = DaiOffset;
+ end
+ DaiWrite: begin
+ data_sel = DaiData;
+ // Fetch data block.
+ data_en = 1'b1;
+ base_sel_d = DaiOffset;
+ // If this partition is scrambled, directly go to write scrambling first.
+ if (PartInfo[part_idx].secret) begin
+ state_d = ScrSt;
+ end else begin
+ state_d = WriteSt;
+ end
+ end
+ DaiDigest: begin
+ state_d = DigClrSt;
+ scrmbl_mtx_req_o = 1'b1;
+ base_sel_d = PartOffset;
+ end
+ default: ; // Ignore invalid commands
+ endcase // dai_cmd_i
+ end // dai_req_i
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Each time we request a block of data from OTP, we re-check
+ // whether read access has been locked for this partition. If
+ // that is the case, we immediately bail out. Otherwise, we
+ // request a block of data from OTP.
+ ReadSt: begin
+ if (part_sel_valid && (mubi8_test_false_strict(part_access_i[part_idx].read_lock) ||
+ // HW digests always remain readable.
+ PartInfo[part_idx].hw_digest && otp_addr_o ==
+ digest_addr_lut[part_idx])) begin
+ otp_req_o = 1'b1;
+ // Depending on the partition configuration,
+ // the wrapper is instructed to ignore integrity errors.
+ if (PartInfo[part_idx].integrity) begin
+ otp_cmd_o = caliptra_prim_otp_pkg::Read;
+ end else begin
+ otp_cmd_o = caliptra_prim_otp_pkg::ReadRaw;
+ end
+ if (otp_gnt_i) begin
+ state_d = ReadWaitSt;
+ end
+ end else begin
+ state_d = IdleSt;
+ error_d = AccessError; // Signal this error, but do not go into terminal error state.
+ dai_cmd_done_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and write to readout register. Check
+ // whether descrambling is required or not. In case an OTP
+ // transaction fails, latch the OTP error code, and jump to
+ // terminal error state.
+ ReadWaitSt: begin
+ // Continuously check read access and bail out if this is not consistent.
+ if (part_sel_valid && (mubi8_test_false_strict(part_access_i[part_idx].read_lock) ||
+ // HW digests always remain readable.
+ PartInfo[part_idx].hw_digest && otp_addr_o ==
+ digest_addr_lut[part_idx])) begin
+ if (otp_rvalid_i) begin
+ // Check OTP return code.
+ if (otp_err inside {NoError, MacroEccCorrError}) begin
+ data_en = 1'b1;
+ // We do not need to descramble the digest values.
+ if (PartInfo[part_idx].secret && otp_addr_o != digest_addr_lut[part_idx]) begin
+ state_d = DescrSt;
+ end else begin
+ state_d = IdleSt;
+ dai_cmd_done_o = 1'b1;
+ end
+ // At this point the only error that we could have gotten are correctable ECC errors.
+ if (otp_err != NoError) begin
+ error_d = MacroEccCorrError;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end
+ end
+ // At this point, this check MUST succeed - otherwise this means that
+ // there was a tampering attempt. Hence we go into a terminal error state
+ // when this check fails.
+ end else begin
+ state_d = ErrorSt;
+ error_d = FsmStateError;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Descrambling state. This first acquires the scrambling
+ // datapath mutex. Note that once the mutex is acquired, we have
+ // exclusive access to the scrambling datapath until we release
+ // the mutex by deasserting scrmbl_mtx_req_o.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ DescrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Decrypt;
+ scrmbl_sel_o = PartInfo[part_idx].key_sel;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = DescrWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the descrambled data to return. Note that we release
+ // the mutex lock upon leaving this state.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ DescrWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_sel_o = PartInfo[part_idx].key_sel;
+ data_sel = ScrmblData;
+ if (scrmbl_valid_i) begin
+ state_d = IdleSt;
+ data_en = 1'b1;
+ dai_cmd_done_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // First, check whether write accesses are allowed to this
+ // partition, and error out otherwise. Note that for buffered
+ // partitions, we do not allow DAI writes to the digest offset.
+ // Unbuffered partitions have SW managed digests, hence that
+ // check is not needed in that case. The LC partition is
+ // permanently write locked and can hence not be written via the DAI.
+ WriteSt: begin
+ dai_prog_idle_o = 1'b0;
+ if (part_sel_valid && mubi8_test_false_strict(part_access_i[part_idx].write_lock) &&
+ // If this is a HW digest write to a buffered partition.
+ ((PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].hw_digest &&
+ base_sel_q == PartOffset && otp_addr_o == digest_addr_lut[part_idx]) ||
+ // If this is a non HW digest write to a buffered partition.
+ (PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].hw_digest &&
+ base_sel_q == DaiOffset && otp_addr_o < digest_addr_lut[part_idx]) ||
+ // If this is a write to an unbuffered partition
+ (PartInfo[part_idx].variant != Buffered && base_sel_q == DaiOffset))) begin
+ otp_req_o = 1'b1;
+ // Depending on the partition configuration,
+ // the wrapper is instructed to ignore integrity errors.
+ if (PartInfo[part_idx].integrity) begin
+ otp_cmd_o = caliptra_prim_otp_pkg::Write;
+ end else begin
+ otp_cmd_o = caliptra_prim_otp_pkg::WriteRaw;
+ end
+ if (otp_gnt_i) begin
+ state_d = WriteWaitSt;
+ end
+ end else begin
+ // Clear working register state.
+ data_clr = 1'b1;
+ state_d = IdleSt;
+ error_d = AccessError; // Signal this error, but do not go into terminal error state.
+ dai_cmd_done_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response, and then go back to idle. In case an
+ // OTP transaction fails, latch the OTP error code, and jump to
+ // terminal error state.
+ WriteWaitSt: begin
+ dai_prog_idle_o = 1'b0;
+ // Continuously check write access and bail out if this is not consistent.
+ if (part_sel_valid && mubi8_test_false_strict(part_access_i[part_idx].write_lock) &&
+ // If this is a HW digest write to a buffered partition.
+ ((PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].hw_digest &&
+ base_sel_q == PartOffset && otp_addr_o == digest_addr_lut[part_idx]) ||
+ // If this is a non HW digest write to a buffered partition.
+ (PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].hw_digest &&
+ base_sel_q == DaiOffset && otp_addr_o < digest_addr_lut[part_idx]) ||
+ // If this is a write to an unbuffered partition
+ (PartInfo[part_idx].variant != Buffered && base_sel_q == DaiOffset))) begin
+
+ if (otp_rvalid_i) begin
+ // Check OTP return code. Note that non-blank errors are recoverable.
+ if ((!(otp_err inside {NoError, MacroWriteBlankError}))) begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end else begin
+ // Clear working register state.
+ data_clr = 1'b1;
+ state_d = IdleSt;
+ dai_cmd_done_o = 1'b1;
+ // Signal non-blank state, but do not go to terminal error state.
+ if (otp_err == MacroWriteBlankError) begin
+ error_d = otp_err;
+ end
+ end
+ end
+ // At this point, this check MUST succeed - otherwise this means that
+ // there was a tampering attempt. Hence we go into a terminal error state
+ // when this check fails.
+ end else begin
+ state_d = ErrorSt;
+ error_d = FsmStateError;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Scrambling state. This first acquires the scrambling
+ // datapath mutex. Note that once the mutex is acquired, we have
+ // exclusive access to the scrambling datapath until we release
+ // the mutex by deasserting scrmbl_mtx_req_o.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ ScrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ // Check write access and bail out if this is not consistent.
+ if (part_sel_valid && mubi8_test_false_strict(part_access_i[part_idx].write_lock) &&
+ // If this is a non HW digest write to a buffered partition.
+ (PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].secret &&
+ PartInfo[part_idx].hw_digest && base_sel_q == DaiOffset &&
+ otp_addr_o < digest_addr_lut[part_idx])) begin
+
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Encrypt;
+ scrmbl_sel_o = PartInfo[part_idx].key_sel;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = ScrWaitSt;
+ end
+ end else begin
+ state_d = IdleSt;
+ error_d = AccessError; // Signal this error, but do not go into terminal error state.
+ dai_cmd_done_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the scrambled data to return. Note that we release
+ // the mutex lock upon leaving this state.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ ScrWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ // Continously check write access and bail out if this is not consistent.
+ if (part_sel_valid && mubi8_test_false_strict(part_access_i[part_idx].write_lock) &&
+ // If this is a non HW digest write to a buffered partition.
+ (PartInfo[part_idx].variant == Buffered && PartInfo[part_idx].secret &&
+ PartInfo[part_idx].hw_digest && base_sel_q == DaiOffset &&
+ otp_addr_o < digest_addr_lut[part_idx])) begin
+ data_sel = ScrmblData;
+ if (scrmbl_valid_i) begin
+ state_d = WriteSt;
+ data_en = 1'b1;
+ end
+ // At this point, this check MUST succeed - otherwise this means that
+ // there was a tampering attempt. Hence we go into a terminal error state
+ // when this check fails.
+ end else begin
+ state_d = ErrorSt;
+ error_d = FsmStateError;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // First, acquire the mutex for the digest and clear the digest state.
+ // SEC_CM: PART.MEM.DIGEST
+ DigClrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ // Need to reset the digest state and set digest mode to "standard".
+ scrmbl_cmd_o = DigestInit;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = DigReadSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This requests a 64bit block to be pushed into the digest datapath.
+ // We also check here whether the partition has been write locked.
+ // SEC_CM: PART.MEM.DIGEST
+ DigReadSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ if (part_sel_valid &&
+ mubi8_test_false_strict(part_access_i[part_idx].read_lock) &&
+ mubi8_test_false_strict(part_access_i[part_idx].write_lock)) begin
+ otp_req_o = 1'b1;
+ // Depending on the partition configuration,
+ // the wrapper is instructed to ignore integrity errors.
+ if (PartInfo[part_idx].integrity) begin
+ otp_cmd_o = caliptra_prim_otp_pkg::Read;
+ end else begin
+ otp_cmd_o = caliptra_prim_otp_pkg::ReadRaw;
+ end
+ if (otp_gnt_i) begin
+ state_d = DigReadWaitSt;
+ end
+ end else begin
+ state_d = IdleSt;
+ error_d = AccessError; // Signal this error, but do not go into terminal error state.
+ dai_cmd_done_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and write to readout register. Check
+ // whether descrambling is required or not. In case an OTP
+ // transaction fails, latch the OTP error code, and jump to
+ // terminal error state.
+ // SEC_CM: PART.MEM.DIGEST
+ DigReadWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ if (otp_rvalid_i) begin
+ cnt_en = 1'b1;
+ // Check OTP return code.
+ if ((!(otp_err inside {NoError, MacroEccCorrError}))) begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end else begin
+ data_en = 1'b1;
+ state_d = DigSt;
+ // Signal soft ECC errors, but do not go into terminal error state.
+ if (otp_err == MacroEccCorrError) begin
+ error_d = otp_err;
+ end
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Push the word read into the scrambling datapath. The last
+ // block is repeated in case the number blocks in this partition
+ // is odd.
+ // SEC_CM: PART.MEM.DIGEST
+ DigSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ // No need to digest the digest value itself
+ if (otp_addr_o == digest_addr_lut[part_idx]) begin
+ // Trigger digest round in case this is the second block in a row.
+ if (!cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ if (scrmbl_ready_i) begin
+ state_d = DigFinSt;
+ end
+ // Otherwise, just load low word and go to padding state.
+ end else if (scrmbl_ready_i) begin
+ state_d = DigPadSt;
+ end
+ end else begin
+ // Trigger digest round in case this is the second block in a row.
+ if (!cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ end
+ // Go back and fetch more data blocks.
+ if (scrmbl_ready_i) begin
+ state_d = DigReadSt;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Padding state, just repeat the last block and go to digest
+ // finalization.
+ // SEC_CM: PART.MEM.DIGEST
+ DigPadSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Digest;
+ if (scrmbl_ready_i) begin
+ state_d = DigFinSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Trigger digest finalization and go wait for the result.
+ // SEC_CM: PART.MEM.DIGEST
+ DigFinSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = DigestFinalize;
+ if (scrmbl_ready_i) begin
+ state_d = DigWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the digest to return, and write the result to OTP.
+ // Note that the write address will be correct in this state,
+ // since the counter has been stepped to the correct address as
+ // part of the readout sequence, and the correct size for this
+ // access has been loaded before.
+ // SEC_CM: PART.MEM.DIGEST
+ DigWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ data_sel = ScrmblData;
+ if (scrmbl_valid_i) begin
+ state_d = WriteSt;
+ data_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal Error State. This locks access to the DAI. Make sure
+ // an FsmStateError error code is assigned here, in case no error code has
+ // been assigned yet.
+ ErrorSt: begin
+ if (error_q == NoError) begin
+ error_d = FsmStateError;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // We should never get here. If we do (e.g. via a malicious
+ // glitch), error out immediately.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of escalation.
+ // SEC_CM: DAI.FSM.LOCAL_ESC, DAI.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i) || cnt_err) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ if (state_q != ErrorSt) begin
+ error_d = FsmStateError;
+ end
+ end
+ end
+
+ ////////////////////////////
+ // Partition Select Logic //
+ ////////////////////////////
+
+ // This checks which partition the address belongs to by comparing
+ // the incoming address to the partition address ranges. The onehot
+ // bitvector generated by the parallel comparisons is fed into a
+ // binary tree that determines the partition index with O(log(N)) delay.
+
+ logic [NumPart-1:0] part_sel_oh;
+ for (genvar k = 0; k < NumPart; k++) begin : gen_part_sel
+ localparam int unsigned PartEndInt = 32'(PartInfo[k].offset) + 32'(PartInfo[k].size);
+ localparam int unsigned DigestOffsetInt = PartEndInt - ScrmblBlockWidth / 8;
+ localparam int unsigned DigestAddrLutInt = DigestOffsetInt >> OtpAddrShift;
+
+ // PartEnd has an extra bit to cope with the case where offset + size overflows. However, we
+ // arrange the address map to make sure that PartEndInt is at most 1 << OtpByteAddrWidth. Check
+ // that here.
+ `CALIPTRA_ASSERT_INIT(PartEndMax_A, PartEndInt <= (1 << OtpByteAddrWidth))
+
+ // The shift right by OtpAddrShift drops exactly the bottom bits that are needed to convert
+ // between OtpAddrWidth and OtpByteAddrWidth, so we know that we can slice safely here.
+ localparam bit [OtpAddrWidth-1:0] DigestAddrLut = DigestAddrLutInt[OtpAddrWidth-1:0];
+
+ if (PartInfo[k].offset == 0) begin : gen_zero_offset
+ assign part_sel_oh[k] = ({1'b0, dai_addr_i} < PartEndInt[OtpByteAddrWidth:0]);
+
+ end else begin : gen_nonzero_offset
+ assign part_sel_oh[k] = (dai_addr_i >= PartInfo[k].offset) &
+ ({1'b0, dai_addr_i} < PartEndInt[OtpByteAddrWidth:0]);
+ end
+ assign digest_addr_lut[k] = DigestAddrLut;
+ end
+
+ `CALIPTRA_ASSERT(ScrmblBlockWidthGe8_A, ScrmblBlockWidth >= 8)
+ `CALIPTRA_ASSERT(PartSelMustBeOnehot_A, $onehot0(part_sel_oh))
+
+ caliptra_prim_arbiter_fixed #(
+ .N(NumPart),
+ .EnDataPort(0)
+ ) u_part_sel_idx (
+ .clk_i,
+ .rst_ni,
+ .req_i ( part_sel_oh ),
+ .data_i ( '{default: '0} ),
+ .gnt_o ( ), // unused
+ .idx_o ( part_idx ),
+ .valid_o ( part_sel_valid ), // used for detecting OOB addresses
+ .data_o ( ), // unused
+ .ready_i ( 1'b0 )
+ );
+
+ /////////////////////////////////////
+ // Address Calculations for Digest //
+ /////////////////////////////////////
+
+ // Depending on whether this is a 32bit or 64bit partition, we cut off the lower address bits.
+ // Access sizes are either 64bit or 32bit, depending on what region the access goes to.
+ logic [OtpByteAddrWidth-1:0] addr_base;
+ always_comb begin : p_size_sel
+ otp_size_o = OtpSizeWidth'(unsigned'(32 / OtpWidth - 1));
+ addr_base = {dai_addr_i[OtpByteAddrWidth-1:2], 2'h0};
+
+ // 64bit transaction for scrambled partitions.
+ if (PartInfo[part_idx].secret) begin
+ otp_size_o = OtpSizeWidth'(unsigned'(ScrmblBlockWidth / OtpWidth - 1));
+ addr_base = {dai_addr_i[OtpByteAddrWidth-1:3], 3'h0};
+ // 64bit transaction if computing a digest.
+ end else if (PartInfo[part_idx].hw_digest && (base_sel_q == PartOffset)) begin
+ otp_size_o = OtpSizeWidth'(unsigned'(ScrmblBlockWidth / OtpWidth - 1));
+ addr_base = PartInfo[part_idx].offset;
+ // 64bit transaction if the DAI address points to the partition's digest offset.
+ end else if ((PartInfo[part_idx].hw_digest || PartInfo[part_idx].sw_digest) &&
+ (base_sel_q == DaiOffset) &&
+ ({dai_addr_i[OtpByteAddrWidth-1:3], 2'b0} == digest_addr_lut[part_idx])) begin
+ otp_size_o = OtpSizeWidth'(unsigned'(ScrmblBlockWidth / OtpWidth - 1));
+ addr_base = {dai_addr_i[OtpByteAddrWidth-1:3], 3'h0};
+ end
+ end
+
+ // Address counter - this is only used for computing a digest, hence the increment is
+ // fixed to 8 byte.
+ // SEC_CM: DAI.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(cnt),
+ .cnt_after_commit_o(),
+ .err_o(cnt_err)
+ );
+
+ // Note that OTP works on halfword (16bit) addresses, hence need to
+ // shift the addresses appropriately.
+ logic [OtpByteAddrWidth-1:0] addr_calc;
+ assign addr_calc = {cnt, {$clog2(ScrmblBlockWidth/8){1'b0}}} + addr_base;
+ assign otp_addr_o = OtpAddrWidth'(addr_calc >> OtpAddrShift);
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ error_q <= NoError;
+ data_q <= '0;
+ base_sel_q <= DaiOffset;
+ end else begin
+ error_q <= error_d;
+ base_sel_q <= base_sel_d;
+
+ // Working register
+ if (data_clr) begin
+ data_q <= '0;
+ end else if (data_en) begin
+ if (data_sel == ScrmblData) begin
+ data_q <= scrmbl_data_i;
+ end else if (data_sel == DaiData) begin
+ data_q <= dai_wdata_i;
+ end else begin
+ data_q <= otp_rdata_i;
+ end
+ end
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Known assertions
+ `CALIPTRA_ASSERT_KNOWN(InitDoneKnown_A, init_done_o)
+ `CALIPTRA_ASSERT_KNOWN(PartInitReqKnown_A, part_init_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ErrorKnown_A, error_o)
+ `CALIPTRA_ASSERT_KNOWN(DaiIdleKnown_A, dai_idle_o)
+ `CALIPTRA_ASSERT_KNOWN(DaiRdataKnown_A, dai_rdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpReqKnown_A, otp_req_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpCmdKnown_A, otp_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpSizeKnown_A, otp_size_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpWdataKnown_A, otp_wdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpAddrKnown_A, otp_addr_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblMtxReqKnown_A, scrmbl_mtx_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblCmdKnown_A, scrmbl_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblModeKnown_A, scrmbl_mode_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblSelKnown_A, scrmbl_sel_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblDataKnown_A, scrmbl_data_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblValidKnown_A, scrmbl_valid_o)
+
+ // OTP error response
+ `CALIPTRA_ASSERT(OtpErrorState_A,
+ state_q inside {InitOtpSt, ReadWaitSt, WriteWaitSt, DigReadWaitSt} && otp_rvalid_i &&
+ !(otp_err inside {NoError, MacroEccCorrError, MacroWriteBlankError})
+ |=>
+ state_q == ErrorSt && error_o == $past(otp_err))
+
+endmodule : otp_ctrl_dai
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_ecc_reg.sv b/src/fuse_ctrl/rtl/otp_ctrl_ecc_reg.sv
new file mode 100644
index 0000000..7514aea
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_ecc_reg.sv
@@ -0,0 +1,105 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register file for buffered OTP partitions. ECC is used to detect up
+// to two simultaneous errors within each 64bit word.
+
+`include "caliptra_prim_assert.sv"
+
+module otp_ctrl_ecc_reg #(
+ parameter int Width = 64, // bit
+ parameter int Depth = 128,
+ localparam int Aw = caliptra_prim_util_pkg::vbits(Depth) // derived parameter
+) (
+ input logic clk_i,
+ input logic rst_ni,
+
+ input logic wren_i,
+ input logic [Aw-1:0] addr_i,
+ input logic [Width-1:0] wdata_i,
+ output logic [Width-1:0] rdata_o,
+
+ // Concurrent output of the register state.
+ output logic [Depth-1:0][Width-1:0] data_o,
+ // Concurrent ECC check error is flagged via this signal.
+ output logic ecc_err_o
+);
+
+ // Integration checks for parameters.
+ `CALIPTRA_ASSERT_INIT(WidthMustBe64bit_A, Width == 64)
+
+ localparam int EccWidth = 8;
+
+ logic [Depth-1:0][Width-1:0] data_d, data_q;
+ logic [Depth-1:0][EccWidth-1:0] ecc_d, ecc_q;
+ logic [Width+EccWidth-1:0] ecc_enc;
+
+ // Only one encoder is needed.
+ caliptra_prim_secded_inv_72_64_enc u_prim_secded_inv_72_64_enc (
+ .data_i(wdata_i),
+ .data_o(ecc_enc)
+ );
+
+ if (Depth == 1) begin : gen_one_word_only
+ always_comb begin : p_write
+ data_o = data_q;
+ data_d = data_q;
+ ecc_d = ecc_q;
+
+ rdata_o = '0;
+ if (32'(addr_i) < Depth) begin
+ rdata_o = data_q[0];
+ if (wren_i) begin
+ {ecc_d[0], data_d[0]} = ecc_enc;
+ end
+ end
+ end
+ end else begin : gen_multiple_words
+ always_comb begin : p_write
+ data_o = data_q;
+ data_d = data_q;
+ ecc_d = ecc_q;
+
+ rdata_o = '0;
+ if (32'(addr_i) < Depth) begin
+ rdata_o = data_q[addr_i];
+ if (wren_i) begin
+ {ecc_d[addr_i], data_d[addr_i]} = ecc_enc;
+ end
+ end
+ end
+ end
+
+ // Concurrent ECC checks.
+ logic [Depth-1:0][1:0] err;
+ for (genvar k = 0; k < Depth; k++) begin : gen_ecc_dec
+ caliptra_prim_secded_inv_72_64_dec u_prim_secded_inv_72_64_dec (
+ .data_i({ecc_q[k], data_q[k]}),
+ // We only rely on the error detection mechanism,
+ // and not on error correction.
+ .data_o(),
+ .syndrome_o(),
+ .err_o(err[k])
+ );
+ end
+
+ assign ecc_err_o = |err;
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ ecc_q <= {Depth{caliptra_prim_secded_pkg::SecdedInv7264ZeroEcc}};
+ data_q <= '0;
+ end else begin
+ ecc_q <= ecc_d;
+ data_q <= data_d;
+ end
+ end
+
+ `CALIPTRA_ASSERT_KNOWN(EccKnown_A, ecc_q)
+ `CALIPTRA_ASSERT_KNOWN(DataKnown_A, data_q)
+ `CALIPTRA_ASSERT_KNOWN(RDataOutKnown_A, rdata_o)
+ `CALIPTRA_ASSERT_KNOWN(DataOutKnown_A, data_o)
+ `CALIPTRA_ASSERT_KNOWN(EccErrKnown_A, ecc_err_o)
+
+endmodule : otp_ctrl_ecc_reg
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_kdi.sv b/src/fuse_ctrl/rtl/otp_ctrl_kdi.sv
new file mode 100644
index 0000000..3a22511
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_kdi.sv
@@ -0,0 +1,603 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Scrambling key derivation module for OTP.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_kdi
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+#(
+ parameter scrmbl_key_init_t RndCnstScrmblKeyInit = RndCnstScrmblKeyInitDefault
+) (
+ input clk_i,
+ input rst_ni,
+ // Pulse to enable this module after OTP partitions have
+ // been initialized.
+ input kdi_en_i,
+ // Escalation input. This moves the FSM into a terminal state.
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ // FSM is in error state
+ output logic fsm_err_o,
+ // Key seed inputs from OTP
+ input logic scrmbl_key_seed_valid_i,
+ input logic [FlashKeySeedWidth-1:0] flash_data_key_seed_i,
+ input logic [FlashKeySeedWidth-1:0] flash_addr_key_seed_i,
+ input logic [SramKeySeedWidth-1:0] sram_data_key_seed_i,
+ // EDN interface for requesting entropy
+ output logic edn_req_o,
+ input edn_ack_i,
+ input [EdnDataWidth-1:0] edn_data_i,
+ // Scrambling key requests
+ input flash_otp_key_req_t flash_otp_key_i,
+ output flash_otp_key_rsp_t flash_otp_key_o,
+ input sram_otp_key_req_t [NumSramKeyReqSlots-1:0] sram_otp_key_i,
+ output sram_otp_key_rsp_t [NumSramKeyReqSlots-1:0] sram_otp_key_o,
+ input otbn_otp_key_req_t otbn_otp_key_i,
+ output otbn_otp_key_rsp_t otbn_otp_key_o,
+ // Scrambling mutex request
+ output logic scrmbl_mtx_req_o,
+ input scrmbl_mtx_gnt_i,
+ // Scrambling datapath interface
+ output otp_scrmbl_cmd_e scrmbl_cmd_o,
+ output digest_mode_e scrmbl_mode_o,
+ output logic [ConstSelWidth-1:0] scrmbl_sel_o,
+ output logic [ScrmblBlockWidth-1:0] scrmbl_data_o,
+ output logic scrmbl_valid_o,
+ input logic scrmbl_ready_i,
+ input logic scrmbl_valid_i,
+ input logic [ScrmblBlockWidth-1:0] scrmbl_data_i
+);
+
+ import caliptra_prim_util_pkg::vbits;
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ // 2xFlash, OTBN + SRAM slots
+ localparam int NumReq = 3 + NumSramKeyReqSlots;
+ // Make sure key sizes in the system are multiples of 64bit and not larger than 256bit.
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize0_A, (FlashKeySeedWidth <= 256) && ((FlashKeySeedWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize1_A, (SramKeySeedWidth <= 256) && ((SramKeySeedWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize2_A, (FlashKeyWidth <= 256) && ((FlashKeyWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize3_A, (SramKeyWidth <= 256) && ((SramKeyWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize4_A, (SramNonceWidth <= 256) && ((SramNonceWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize5_A, (OtbnKeyWidth <= 256) && ((OtbnKeyWidth % 64) == 0))
+ `CALIPTRA_ASSERT_INIT(KeyNonceSize6_A, (OtbnNonceWidth <= 256) && ((OtbnNonceWidth % 64) == 0))
+
+ // Make sure EDN interface has compatible width.
+ `CALIPTRA_ASSERT_INIT(EntropyWidthDividesDigestBlockWidth_A, (ScrmblKeyWidth % EdnDataWidth) == 0)
+
+ // Currently the assumption is that the SRAM nonce is the widest.
+ `CALIPTRA_ASSERT_INIT(NonceWidth_A, NumNonceChunks * ScrmblBlockWidth == SramNonceWidth)
+
+ ///////////////////////////////////
+ // Input Mapping and Arbitration //
+ ///////////////////////////////////
+
+ // The key derivation and token hashing functions are aligned such that 2 x 128bit key
+ // seeds / token blocks are processed in two subsequent steps using the digest primitive.
+ // This effectively compresses these blocks down into 2 x 64bit blocks, thereby creating
+ // one 128bit key or token output.
+ //
+ // The same FSM is shared among the different flavors of key derivation and token
+ // hashing functions, and the following configuration options are available:
+ //
+ // 1) ingest an additional 128bit entropy block after ingesting a 128bit key seed.
+ // 2) keep digest state after producing the first 64bit block instead of reverting to the IV.
+ // 3) netlist constant index.
+ // 4) fetch additional entropy for the nonce output.
+ // 5) whether or not the key seed is valid. if not, it will be defaulted to '0.
+ // 6) 256bit key seed / token input.
+ //
+ // The configuration options are set further below, depending on the request type.
+
+ typedef struct packed {
+ logic ingest_entropy; // 1)
+ logic chained_digest; // 2)
+ digest_sel_e digest_sel; // 3)
+ logic fetch_nonce; // 4)
+ logic [1:0] nonce_size; // 4)
+ logic seed_valid; // 5)
+ logic [3:0][ScrmblBlockWidth-1:0] seed; // 6)
+ } req_bundle_t;
+
+ logic [NumReq-1:0] req, gnt;
+ req_bundle_t req_bundles [NumReq];
+
+ assign req[0] = flash_otp_key_i.data_req;
+ assign req[1] = flash_otp_key_i.addr_req;
+ assign req[2] = otbn_otp_key_i.req;
+
+ assign flash_otp_key_o.data_ack = gnt[0];
+ assign flash_otp_key_o.addr_ack = gnt[1];
+ assign otbn_otp_key_o.ack = gnt[2];
+
+ // anchored seeds
+ logic [FlashKeySeedWidth-1:0] flash_data_key_seed;
+ logic [FlashKeySeedWidth-1:0] flash_addr_key_seed;
+ logic [SramKeySeedWidth-1:0] sram_data_key_seed;
+
+ caliptra_prim_sec_anchor_buf #(
+ .Width(FlashKeySeedWidth)
+ ) u_flash_data_key_anchor (
+ .in_i(flash_data_key_seed_i),
+ .out_o(flash_data_key_seed)
+ );
+
+ caliptra_prim_sec_anchor_buf #(
+ .Width(FlashKeySeedWidth)
+ ) u_flash_addr_key_anchor (
+ .in_i(flash_addr_key_seed_i),
+ .out_o(flash_addr_key_seed)
+ );
+
+ caliptra_prim_sec_anchor_buf #(
+ .Width(SramKeySeedWidth)
+ ) u_sram_data_key_anchor (
+ .in_i(sram_data_key_seed_i),
+ .out_o(sram_data_key_seed)
+ );
+
+ // Flash data key
+ assign req_bundles[0] = '{ingest_entropy: 1'b0, // no random entropy added
+ chained_digest: 1'b0, // revert to netlist IV between blocks
+ digest_sel: FlashDataKey,
+ fetch_nonce: 1'b1,
+ nonce_size: 2'(FlashKeyWidth/EdnDataWidth-1),
+ seed_valid: scrmbl_key_seed_valid_i,
+ seed: flash_data_key_seed}; // 2x128bit
+ // Flash addr key
+ assign req_bundles[1] = '{ingest_entropy: 1'b0, // no random entropy added
+ chained_digest: 1'b0, // revert to netlist IV between blocks
+ digest_sel: FlashAddrKey,
+ fetch_nonce: 1'b1,
+ nonce_size: '0,
+ seed_valid: scrmbl_key_seed_valid_i,
+ seed: flash_addr_key_seed}; // 2x128bit
+ // OTBN key
+ assign req_bundles[2] = '{ingest_entropy: 1'b1, // ingest random data
+ chained_digest: 1'b0, // revert to netlist IV between blocks
+ digest_sel: SramDataKey,
+ fetch_nonce: 1'b1, // fetch nonce
+ nonce_size: 2'(OtbnNonceWidth/EdnDataWidth-1),
+ seed_valid: scrmbl_key_seed_valid_i,
+ seed: {sram_data_key_seed, // reuse same seed
+ sram_data_key_seed}};
+
+ // SRAM keys
+ for (genvar k = 3; k < NumReq; k++) begin : gen_req_assign
+ assign req[k] = sram_otp_key_i[k-3].req;
+ assign sram_otp_key_o[k-3].ack = gnt[k];
+ assign req_bundles[k] = '{ingest_entropy: 1'b1, // ingest random data
+ chained_digest: 1'b0, // revert to netlist IV between blocks
+ digest_sel: SramDataKey,
+ fetch_nonce: 1'b1, // fetch nonce
+ nonce_size: 2'(SramNonceWidth/EdnDataWidth-1),
+ seed_valid: scrmbl_key_seed_valid_i,
+ seed: {sram_data_key_seed, // reuse same seed
+ sram_data_key_seed}};
+ end
+
+ // This arbitrates among incoming key derivation requests on a
+ // round robin basis to prevent deadlock.
+ logic req_valid, req_ready;
+ req_bundle_t req_bundle;
+
+ caliptra_prim_arbiter_tree #(
+ .N(NumReq),
+ .DW($bits(req_bundle_t)))
+ u_req_arb (
+ .clk_i,
+ .rst_ni,
+ .req_chk_i ( 1'b1 ),
+ .req_i ( req ),
+ .data_i ( req_bundles ),
+ .gnt_o ( gnt ),
+ .idx_o ( ),
+ .valid_o ( req_valid ),
+ .data_o ( req_bundle ),
+ .ready_i ( req_ready )
+ );
+
+ //////////////////////////////
+ // Temporary Regs and Muxes //
+ //////////////////////////////
+
+ localparam int CntWidth = 2;
+ logic seed_cnt_clr, seed_cnt_en, entropy_cnt_clr, entropy_cnt_en, seed_cnt_err, entropy_cnt_err;
+ logic [CntWidth-1:0] seed_cnt, entropy_cnt;
+
+ // SEC_CM: KDI_SEED.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count_seed (
+ .clk_i,
+ .rst_ni,
+ .clr_i(seed_cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(seed_cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(seed_cnt),
+ .cnt_after_commit_o(),
+ .err_o(seed_cnt_err)
+ );
+
+ // SEC_CM: KDI_ENTROPY.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count_entropy (
+ .clk_i,
+ .rst_ni,
+ .clr_i(entropy_cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(entropy_cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(entropy_cnt),
+ .cnt_after_commit_o(),
+ .err_o(entropy_cnt_err)
+ );
+
+ logic seed_valid_reg_en;
+ logic key_reg_en, nonce_reg_en;
+ logic seed_valid_d, seed_valid_q;
+ logic [ScrmblKeyWidth/ScrmblBlockWidth-1:0][ScrmblBlockWidth-1:0] key_out_d, key_out_q;
+ logic [NumNonceChunks-1:0][ScrmblBlockWidth-1:0] nonce_out_d, nonce_out_q;
+
+ always_comb begin : p_outregs
+ key_out_d = key_out_q;
+ nonce_out_d = nonce_out_q;
+ seed_valid_d = seed_valid_q;
+ if (key_reg_en) begin
+ key_out_d[seed_cnt[1]] = scrmbl_data_i;
+ end
+ if (nonce_reg_en) begin
+ nonce_out_d[entropy_cnt[$clog2(NumNonceChunks)-1:0]] = edn_data_i;
+ end
+ if (seed_valid_reg_en) begin
+ seed_valid_d = req_bundle.seed_valid;
+ end
+ end
+
+ // Connect keys/nonce outputs to output regs.
+ caliptra_prim_sec_anchor_flop #(
+ .Width(ScrmblKeyWidth),
+ .ResetValue(RndCnstScrmblKeyInit.key)
+ ) u_key_out_anchor (
+ .clk_i,
+ .rst_ni,
+ .d_i(key_out_d),
+ .q_o(key_out_q)
+ );
+
+ assign otbn_otp_key_o.key = key_out_q;
+ assign otbn_otp_key_o.nonce = nonce_out_q[OtbnNonceSel-1:0];
+ assign otbn_otp_key_o.seed_valid = seed_valid_q;
+
+ assign flash_otp_key_o.key = key_out_q;
+ assign flash_otp_key_o.rand_key = nonce_out_q[FlashNonceSel-1:0];
+ assign flash_otp_key_o.seed_valid = seed_valid_q;
+
+ for (genvar k = 0; k < NumSramKeyReqSlots; k++) begin : gen_out_assign
+ assign sram_otp_key_o[k].key = key_out_q;
+ assign sram_otp_key_o[k].nonce = nonce_out_q[SramNonceSel-1:0];
+ assign sram_otp_key_o[k].seed_valid = seed_valid_q;
+ end
+
+ typedef enum logic {
+ SeedData,
+ EntropyData
+ } data_sel_e;
+
+ // Select correct 64bit block.
+ data_sel_e data_sel;
+ assign scrmbl_data_o = (data_sel == EntropyData) ? nonce_out_q[entropy_cnt[0]] :
+ // Gate seed value to '0 if invalid.
+ (req_bundle.seed_valid) ? req_bundle.seed[seed_cnt] : '0;
+
+ /////////////////
+ // Control FSM //
+ /////////////////
+
+ // SEC_CM: KDI.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 11 -n 10 \
+ // -s 2544133835 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (54.55%)
+ // 6: |||||||||||||||| (45.45%)
+ // 7: --
+ // 8: --
+ // 9: --
+ // 10: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 6
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 9
+ //
+ localparam int StateWidth = 10;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 10'b0101100001,
+ IdleSt = 10'b0001011011,
+ DigClrSt = 10'b1101010110,
+ DigLoadSt = 10'b0010110111,
+ FetchEntropySt = 10'b1000001101,
+ DigEntropySt = 10'b0100111100,
+ DigFinSt = 10'b1000100010,
+ DigWaitSt = 10'b1110010001,
+ FetchNonceSt = 10'b0011000100,
+ FinishSt = 10'b1011111000,
+ ErrorSt = 10'b1111101111
+ } state_e;
+
+ state_e state_d, state_q;
+ logic edn_req_d, edn_req_q;
+ assign edn_req_o = edn_req_q;
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+
+ // FSM Error output
+ fsm_err_o = 1'b0;
+
+ // Counters
+ seed_cnt_en = 1'b0;
+ seed_cnt_clr = 1'b0;
+ entropy_cnt_en = 1'b0;
+ entropy_cnt_clr = 1'b0;
+
+ // EDN 128bit block fetch request.
+ // This keeps the request alive until it has
+ // been acked to adhere to the req/ack protocol
+ // even in cases where the FSM jumps into
+ // an error state while waiting for a request.
+ edn_req_d = edn_req_q & ~edn_ack_i;
+
+ // Data selection and temp registers
+ data_sel = SeedData;
+ key_reg_en = 1'b0;
+ nonce_reg_en = 1'b0;
+ seed_valid_reg_en = 1'b0;
+
+ // Scrambling datapath
+ scrmbl_mtx_req_o = 1'b0;
+ scrmbl_sel_o = req_bundle.digest_sel;
+ scrmbl_cmd_o = LoadShadow;
+ scrmbl_mode_o = StandardMode;
+
+ scrmbl_valid_o = 1'b0;
+
+ // Request acknowledgement
+ req_ready = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // State right after reset. Wait here until KDI gets enabled.
+ ResetSt: begin
+ if (kdi_en_i) begin
+ state_d = IdleSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for a request, then go and acquire the mutex.
+ IdleSt: begin
+ if (req_valid) begin
+ state_d = DigClrSt;
+ seed_cnt_clr = 1'b1;
+ entropy_cnt_clr = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // First, acquire the mutex for the digest and clear the digest state.
+ DigClrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ // Need to reset the digest state and set digest mode to "standard".
+ scrmbl_cmd_o = DigestInit;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = DigLoadSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Load two 64bit blocks of the seed, and trigger digest calculation.
+ DigLoadSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ // Trigger digest round in case this is the second block in a row.
+ if (seed_cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ if (scrmbl_ready_i) begin
+ // Go and ingest a block of entropy if required.
+ if (req_bundle.ingest_entropy) begin
+ state_d = FetchEntropySt;
+ // Otherwise go to digest finalization state.
+ end else begin
+ state_d = DigFinSt;
+ end
+ end
+ // Just load first 64bit block and stay here.
+ end else if (scrmbl_ready_i) begin
+ seed_cnt_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Fetch random data to ingest for key derivation.
+ FetchEntropySt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ edn_req_d = 1'b1;
+ if (edn_ack_i) begin
+ nonce_reg_en = 1'b1;
+ // Finished, go and acknowledge this request.
+ if (entropy_cnt == 2'h1) begin
+ state_d = DigEntropySt;
+ entropy_cnt_clr = 1'b1;
+ // Keep on requesting entropy.
+ end else begin
+ entropy_cnt_en = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Load two 64bit blocks of entropy data.
+ DigEntropySt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ data_sel = EntropyData;
+ scrmbl_valid_o = 1'b1;
+ // Trigger digest round in case this is the second block in a row,
+ // and go to digest finalization.
+ if (entropy_cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ if (scrmbl_ready_i) begin
+ state_d = DigFinSt;
+ entropy_cnt_clr = 1'b1;
+ end
+ // Just load first 64bit block and stay here.
+ end else if (scrmbl_ready_i) begin
+ entropy_cnt_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Trigger digest finalization and go wait for the result.
+ DigFinSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = DigestFinalize;
+ if (scrmbl_ready_i) begin
+ state_d = DigWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the digest to return, and write the result to the key
+ // output register. Go back and process the second part of the
+ // input seed if needed.
+ DigWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ if (scrmbl_valid_i) begin
+ key_reg_en = 1'b1;
+ // Not finished yet, need to go back and produce second 64bit block.
+ if (seed_cnt == 2'h1) begin
+ seed_cnt_en = 1'b1;
+ // In this case the previous digest state is kept,
+ // which leads to a chained digest.
+ if (req_bundle.chained_digest) begin
+ state_d = DigLoadSt;
+ // In this case we revert the digest state to the netlist IV.
+ end else begin
+ state_d = DigClrSt;
+ end
+ // This was the second 64bit output block.
+ end else begin
+ seed_cnt_clr = 1'b1;
+ // Make sure we output the status of the key seed in OTP.
+ seed_valid_reg_en = 1'b1;
+ // Check whether we need to fetch additional nonce data.
+ if (req_bundle.fetch_nonce) begin
+ state_d = FetchNonceSt;
+ end else begin
+ // Finished, go and acknowledge this request.
+ state_d = FinishSt;
+ end
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Fetch additional nonce data. Note that the mutex is released in
+ // this state.
+ FetchNonceSt: begin
+ edn_req_d = 1'b1;
+ if (edn_ack_i) begin
+ nonce_reg_en = 1'b1;
+ // Finished, go and acknowledge this request.
+ if (entropy_cnt == req_bundle.nonce_size) begin
+ state_d = FinishSt;
+ entropy_cnt_clr = 1'b1;
+ // Keep on requesting entropy.
+ end else begin
+ entropy_cnt_en = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Acknowledge request and go back to IdleSt.
+ FinishSt: begin
+ state_d = IdleSt;
+ req_ready = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal error state. This raises an alert.
+ ErrorSt: begin
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This should never happen, hence we directly jump into the
+ // error state, where an alert will be triggered.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of escalation.
+ // SEC_CM: KDI.FSM.LOCAL_ESC, KDI.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i) ||
+ seed_cnt_err || entropy_cnt_err) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ end
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ nonce_out_q <= RndCnstScrmblKeyInit.nonce;
+ seed_valid_q <= 1'b0;
+ edn_req_q <= 1'b0;
+ end else begin
+ nonce_out_q <= nonce_out_d;
+ seed_valid_q <= seed_valid_d;
+ edn_req_q <= edn_req_d;
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_KNOWN(FsmErrKnown_A, fsm_err_o)
+ `CALIPTRA_ASSERT_KNOWN(EdnReqKnown_A, edn_req_o)
+ `CALIPTRA_ASSERT_KNOWN(FlashOtpKeyRspKnown_A, flash_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(SramOtpKeyRspKnown_A, sram_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(OtbnOtpKeyRspKnown_A, otbn_otp_key_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblMtxReqKnown_A, scrmbl_mtx_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblCmdKnown_A, scrmbl_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblModeKnown_A, scrmbl_mode_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblSelKnown_A, scrmbl_sel_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblDataKnown_A, scrmbl_data_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblValidKnown_A, scrmbl_valid_o)
+
+endmodule : otp_ctrl_kdi
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_lci.sv b/src/fuse_ctrl/rtl/otp_ctrl_lci.sv
new file mode 100644
index 0000000..d9eb445
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_lci.sv
@@ -0,0 +1,298 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Life cycle interface for performing life cycle transitions in OTP.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_lci
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+#(
+ // Lifecycle partition information
+ parameter part_info_t Info = PartInfoDefault
+) (
+ input clk_i,
+ input rst_ni,
+ input lci_en_i,
+ // Escalation input. This moves the FSM into a terminal state and locks down
+ // the partition.
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ // Life cycle transition request. In order to perform a state transition,
+ // the LC controller signals the new count and state. The OTP wrapper then
+ // only programs bits that have not been programmed before.
+ // Note that a transition request will fail if the request attempts to
+ // clear already programmed bits within OTP.
+ input caliptra_ss_lc_req_i,
+ input logic [Info.size*8-1:0] caliptra_ss_lc_data_i,
+ output logic caliptra_ss_lc_ack_o,
+ output logic caliptra_ss_lc_err_o,
+ // Output error state of partition, to be consumed by OTP error/alert logic.
+ // Note that most errors are not recoverable and move the partition FSM into
+ // a terminal error state.
+ output otp_err_e error_o,
+ // This error signal is pulsed high if the FSM has been glitched into an invalid state.
+ // Although it is somewhat redundant with the error code in error_o above, it is
+ // meant to cover cases where we already latched an error code while the FSM is
+ // glitched into an invalid state (since in that case, the error code will not be
+ // overridden with the FSM error code so that the original error code is still
+ // discoverable).
+ output logic fsm_err_o,
+ output logic lci_prog_idle_o,
+ // OTP interface
+ output logic otp_req_o,
+ output caliptra_prim_otp_pkg::cmd_e otp_cmd_o,
+ output logic [OtpSizeWidth-1:0] otp_size_o,
+ output logic [OtpIfWidth-1:0] otp_wdata_o,
+ output logic [OtpAddrWidth-1:0] otp_addr_o,
+ input otp_gnt_i,
+ input otp_rvalid_i,
+ input [ScrmblBlockWidth-1:0] otp_rdata_i,
+ input caliptra_prim_otp_pkg::err_e otp_err_i
+);
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ import caliptra_prim_util_pkg::vbits;
+
+ localparam int NumLcOtpWords = int'(Info.size) >> OtpAddrShift;
+ localparam int CntWidth = vbits(NumLcOtpWords);
+
+ localparam int unsigned LastLcOtpWordInt = NumLcOtpWords - 1;
+ localparam bit [CntWidth-1:0] LastLcOtpWord = LastLcOtpWordInt[CntWidth-1:0];
+
+ // This is required, since each native OTP word can only be programmed once.
+ `CALIPTRA_ASSERT_INIT(LcValueMustBeWiderThanNativeOtpWidth_A, caliptra_ss_lc_ctrl_state_pkg::LcValueWidth >= OtpWidth)
+
+ ////////////////////
+ // Controller FSM //
+ ////////////////////
+
+ // SEC_CM: LCI.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 5 -n 9 \
+ // -s 558234734 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (60.00%)
+ // 6: ||||||||||||| (40.00%)
+ // 7: --
+ // 8: --
+ // 9: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 6
+ // Minimum Hamming weight: 1
+ // Maximum Hamming weight: 7
+ //
+ localparam int StateWidth = 9;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 9'b000101011,
+ IdleSt = 9'b110011110,
+ WriteSt = 9'b101010001,
+ WriteWaitSt = 9'b010000000,
+ ErrorSt = 9'b011111101
+ } state_e;
+
+ state_e state_d, state_q;
+ logic cnt_clr, cnt_en, cnt_err;
+ logic [CntWidth-1:0] cnt;
+ otp_err_e error_d, error_q;
+
+ // Output LCI errors
+ assign error_o = error_q;
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+
+ // Counter
+ cnt_en = 1'b0;
+ cnt_clr = 1'b0;
+
+ // Idle status
+ lci_prog_idle_o = 1'b1;
+
+ // OTP signals
+ otp_req_o = 1'b0;
+ otp_cmd_o = caliptra_prim_otp_pkg::Read;
+
+ // Response to LC controller
+ caliptra_ss_lc_err_o = 1'b0;
+ caliptra_ss_lc_ack_o = 1'b0;
+
+ // Error Register
+ error_d = error_q;
+ fsm_err_o = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // State right after reset. Wait here until LCI gets enabled.
+ ResetSt: begin
+ lci_prog_idle_o = 1'b0;
+ if (lci_en_i) begin
+ state_d = IdleSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for a request from the life cycle controller
+ IdleSt: begin
+ if (caliptra_ss_lc_req_i) begin
+ state_d = WriteSt;
+ cnt_clr = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Loop through the lifecycle sate and burn in all words.
+ // If the write data contains a 0 bit in a position where a bit has already been
+ // programmed to 1 before, the OTP errors out.
+ WriteSt: begin
+ otp_req_o = 1'b1;
+ otp_cmd_o = caliptra_prim_otp_pkg::Write;
+ lci_prog_idle_o = 1'b0;
+ if (otp_gnt_i) begin
+ state_d = WriteWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response, and check whether there are more words to burn in.
+ // In case an OTP transaction fails, latch the OTP error code, and jump to
+ // terminal error state.
+ WriteWaitSt: begin
+ lci_prog_idle_o = 1'b0;
+ if (otp_rvalid_i) begin
+ // Check OTP return code.
+ // Note that if errors occur, we aggregate the error code
+ // but still attempt to program all remaining words.
+ // This is done to ensure that a life cycle state with
+ // ECC correctable errors in some words can still be scrapped.
+ if (otp_err_e'(otp_err_i) != NoError) begin
+ error_d = otp_err_e'(otp_err_i);
+ end
+
+ // Check whether we programmed all OTP words.
+ // If yes, we are done and can go back to idle.
+ if (cnt == LastLcOtpWord) begin
+ state_d = IdleSt;
+ caliptra_ss_lc_ack_o = 1'b1;
+ // If in any of the words a programming error has occurred,
+ // we signal that accordingly and go to the error state.
+ if (error_d != NoError) begin
+ caliptra_ss_lc_err_o = 1'b1;
+ state_d = ErrorSt;
+ end
+ // Otherwise we increase the OTP word counter.
+ end else begin
+ state_d = WriteSt;
+ cnt_en = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal Error State. This locks access to the partition.
+ // Make sure the partition signals an error state if no error
+ // code has been latched so far, and lock the buffer regs down.
+ ErrorSt: begin
+ if (error_q == NoError) begin
+ error_d = FsmStateError;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // We should never get here. If we do (e.g. via a malicious
+ // glitch), error out immediately.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of escalation.
+ // SEC_CM: LCI.FSM.LOCAL_ESC, LCI.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i) || cnt_err) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ if (error_q == NoError) begin
+ error_d = FsmStateError;
+ end
+ end
+
+ end
+
+ //////////////////////////////
+ // Counter and address calc //
+ //////////////////////////////
+
+ // Native OTP word counter
+ // SEC_CM: LCI.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(cnt),
+ .cnt_after_commit_o(),
+ .err_o(cnt_err)
+ );
+
+ // The output address is "offset + count", but we have to convert Info.offset from a byte address
+ // to a halfword (16-bit) address by discarding the bottom OtpAddrShift bits. We also make the
+ // zero-extension of cnt explicit (to avoid width mismatch warnings).
+ assign otp_addr_o = Info.offset[OtpByteAddrWidth-1:OtpAddrShift] + OtpAddrWidth'(cnt);
+
+ // Always transfer 16bit blocks.
+ assign otp_size_o = '0;
+
+ logic [NumLcOtpWords-1:0][OtpWidth-1:0] data;
+ assign data = caliptra_ss_lc_data_i;
+ assign otp_wdata_o = (otp_req_o) ? OtpIfWidth'(data[cnt]) : '0;
+
+ logic unused_rdata;
+ assign unused_rdata = ^otp_rdata_i;
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ error_q <= NoError;
+ end else begin
+ error_q <= error_d;
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_KNOWN(LcAckKnown_A, caliptra_ss_lc_ack_o)
+ `CALIPTRA_ASSERT_KNOWN(LcErrKnown_A, caliptra_ss_lc_err_o)
+ `CALIPTRA_ASSERT_KNOWN(ErrorKnown_A, error_o)
+ `CALIPTRA_ASSERT_KNOWN(LciIdleKnown_A, lci_prog_idle_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpReqKnown_A, otp_req_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpCmdKnown_A, otp_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpSizeKnown_A, otp_size_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpWdataKnown_A, otp_wdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpAddrKnown_A, otp_addr_o)
+
+endmodule : otp_ctrl_lci
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_lfsr_timer.sv b/src/fuse_ctrl/rtl/otp_ctrl_lfsr_timer.sv
new file mode 100644
index 0000000..6f7c04e
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_lfsr_timer.sv
@@ -0,0 +1,397 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// This module implements the LFSR timer for triggering periodic consistency and integrity checks in
+// OTP. In particular, this module contains two 40bit counters (one for the consistency and one
+// for the integrity checks) and a 40bit LFSR to draw pseudo random wait counts.
+//
+// The integ_period_msk_i and cnsty_period_msk_i mask signals are used to mask off the LFSR outputs
+// and hence determine the maximum wait count that can be drawn. If these values are set to
+// zero, the corresponding timer is disabled.
+//
+// Once a particular check timer has expired, the module will send out a check request to all
+// partitions and wait for an acknowledgment. If a particular partition encounters an integrity or
+// consistency mismatch, this will be directly reported via the error and alert logic.
+//
+// In order to guard against wedged partition controllers or arbitration lock ups due to tampering
+// attempts, this check timer module also supports a 32bit timeout that can optionally be
+// programmed. If a particular check times out, chk_timeout_o will be asserted, which will raise
+// an alert via the error logic.
+//
+// The EntropyWidth LSBs of the LFSR are reseeded with fresh entropy from EDN once
+// LfsrUsageThreshold values have been drawn from the LFSR.
+//
+// It is also possible to trigger one-off checks via integ_chk_trig_i and cnsty_chk_trig_i.
+// This can be useful if SW chooses to leave the periodic checks disabled.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_lfsr_timer
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+#(
+ // Compile time random constants, to be overriden by topgen.
+ parameter lfsr_seed_t RndCnstLfsrSeed = RndCnstLfsrSeedDefault,
+ parameter lfsr_perm_t RndCnstLfsrPerm = RndCnstLfsrPermDefault
+) (
+ input clk_i,
+ input rst_ni,
+ output logic edn_req_o, // request to EDN
+ input edn_ack_i, // ack from EDN
+ input [EdnDataWidth-1:0] edn_data_i, // from EDN
+ input timer_en_i, // enable timer
+ input otp_prog_busy_i, // indicates whether prog ops are in progress
+ input integ_chk_trig_i, // one-off trigger for integrity check
+ input cnsty_chk_trig_i, // one-off trigger for consistency check
+ output logic chk_pending_o, // indicates whether there are pending checks
+ input [31:0] timeout_i, // check timeout
+ input [31:0] integ_period_msk_i, // maximum integrity check mask
+ input [31:0] cnsty_period_msk_i, // maximum consistency check mask
+ output logic [NumPart-1:0] integ_chk_req_o, // request to all partitions
+ output logic [NumPart-1:0] cnsty_chk_req_o, // request to all partitions
+ input [NumPart-1:0] integ_chk_ack_i, // response from partitions
+ input [NumPart-1:0] cnsty_chk_ack_i, // response from partitions
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i, // escalation input, moves FSM into ErrorSt
+ output logic chk_timeout_o, // a check has timed out
+ output logic fsm_err_o // the FSM has reached an invalid state
+);
+
+ ////////////////////
+ // Reseed counter //
+ ////////////////////
+
+ // Count how many times the LFSR has been used to generate a value.
+ // Once we've reached the limit, we request new entropy from EDN to reseed
+ // the LFSR. Note that this is not a blocking operation for the timer below.
+ // I.e., the timer is allowed to continue its operation, and may draw more
+ // values, even if the EDN reseed request is still in progress.
+ logic reseed_en, lfsr_en;
+ logic [$clog2(LfsrUsageThreshold+1)-1:0] reseed_cnt_d, reseed_cnt_q;
+ assign reseed_cnt_d = (reseed_en) ? '0 :
+ (edn_req_o) ? reseed_cnt_q :
+ (lfsr_en) ? reseed_cnt_q + 1'b1 :
+ reseed_cnt_q;
+
+ assign edn_req_o = (reseed_cnt_q >= LfsrUsageThreshold);
+ assign reseed_en = edn_req_o & edn_ack_i;
+
+ ///////////////////////////
+ // Tandem LFSR Instances //
+ ///////////////////////////
+
+ logic lfsr_err;
+ logic [LfsrWidth-1:0] entropy;
+ logic [LfsrWidth-1:0] lfsr_state;
+ assign entropy = (reseed_en) ? edn_data_i[LfsrWidth-1:0] : '0;
+
+ // We employ two redundant LFSRs to guard against FI attacks.
+ // If any of the two is glitched and the two LFSR states do not agree,
+ // the FSM below is moved into a terminal error state.
+ // SEC_CM: TIMER.LFSR.REDUN
+ caliptra_prim_double_lfsr #(
+ .LfsrDw ( LfsrWidth ),
+ .EntropyDw ( LfsrWidth ),
+ .StateOutDw ( LfsrWidth ),
+ .DefaultSeed ( RndCnstLfsrSeed ),
+ .StatePermEn ( 1'b1 ),
+ .StatePerm ( RndCnstLfsrPerm ),
+ .ExtSeedSVA ( 1'b0 )
+ ) u_prim_double_lfsr (
+ .clk_i,
+ .rst_ni,
+ .seed_en_i ( 1'b0 ),
+ .seed_i ( '0 ),
+ .lfsr_en_i ( reseed_en || lfsr_en ),
+ .entropy_i ( entropy ),
+ .state_o ( lfsr_state ),
+ .err_o ( lfsr_err )
+ );
+
+ // Not all entropy bits are used.
+ logic unused_seed;
+ assign unused_seed = ^edn_data_i;
+
+ `CALIPTRA_ASSERT_INIT(EdnIsWideEnough_A, EdnDataWidth >= LfsrWidth)
+
+ //////////////////////////////
+ // Tandem Counter Instances //
+ //////////////////////////////
+
+ // We employ redundant counters to guard against FI attacks.
+ // If any of them is glitched and the redundant counter states do not agree,
+ // the FSM below is moved into a terminal error state.
+ logic [LfsrWidth-1:0] integ_cnt, cnsty_cnt, integ_cnt_set_val, cnsty_cnt_set_val;
+ logic [LfsrWidth-1:0] integ_mask, cnsty_mask;
+ logic integ_set_period, integ_set_timeout, integ_cnt_zero;
+ logic cnsty_set_period, cnsty_set_timeout, cnsty_cnt_zero;
+ logic integ_cnt_set, cnsty_cnt_set, integ_cnt_err, cnsty_cnt_err;
+ logic timeout_zero, integ_msk_zero, cnsty_msk_zero, cnsty_cnt_pause;
+
+ assign timeout_zero = (timeout_i == '0);
+ assign integ_msk_zero = (integ_period_msk_i == '0);
+ assign cnsty_msk_zero = (cnsty_period_msk_i == '0);
+ assign integ_cnt_zero = (integ_cnt == '0);
+ assign cnsty_cnt_zero = (cnsty_cnt == '0);
+
+ assign integ_cnt_set = integ_set_period || integ_set_timeout;
+ assign cnsty_cnt_set = cnsty_set_period || cnsty_set_timeout;
+
+ assign integ_mask = {integ_period_msk_i, {LfsrWidth-32{1'b1}}};
+ assign cnsty_mask = {cnsty_period_msk_i, {LfsrWidth-32{1'b1}}};
+ assign integ_cnt_set_val = (integ_set_period) ? (lfsr_state & integ_mask) : LfsrWidth'(timeout_i);
+ assign cnsty_cnt_set_val = (cnsty_set_period) ? (lfsr_state & cnsty_mask) : LfsrWidth'(timeout_i);
+
+ // SEC_CM: TIMER_INTEG.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(LfsrWidth)
+ ) u_prim_count_integ (
+ .clk_i,
+ .rst_ni,
+ .clr_i(1'b0),
+ .set_i(integ_cnt_set),
+ .set_cnt_i(integ_cnt_set_val),
+ .incr_en_i(1'b0),
+ .decr_en_i(!integ_cnt_zero),
+ .step_i(LfsrWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(integ_cnt),
+ .cnt_after_commit_o(),
+ .err_o(integ_cnt_err)
+ );
+
+ // SEC_CM: TIMER_CNSTY.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(LfsrWidth)
+ ) u_prim_count_cnsty (
+ .clk_i,
+ .rst_ni,
+ .clr_i(1'b0),
+ .set_i(cnsty_cnt_set),
+ .set_cnt_i(cnsty_cnt_set_val),
+ .incr_en_i(1'b0),
+ .decr_en_i(!cnsty_cnt_zero && !cnsty_cnt_pause),
+ .step_i(LfsrWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(cnsty_cnt),
+ .cnt_after_commit_o(),
+ .err_o(cnsty_cnt_err)
+ );
+
+ /////////////////////
+ // Request signals //
+ /////////////////////
+
+ logic set_all_integ_reqs, set_all_cnsty_reqs;
+ logic [NumPart-1:0] integ_chk_req_d, integ_chk_req_q;
+ logic [NumPart-1:0] cnsty_chk_req_d, cnsty_chk_req_q;
+ assign integ_chk_req_o = integ_chk_req_q;
+ assign cnsty_chk_req_o = cnsty_chk_req_q;
+ assign integ_chk_req_d = (set_all_integ_reqs) ? {NumPart{1'b1}} :
+ integ_chk_req_q & ~integ_chk_ack_i;
+ assign cnsty_chk_req_d = (set_all_cnsty_reqs) ? {NumPart{1'b1}} :
+ cnsty_chk_req_q & ~cnsty_chk_ack_i;
+
+
+ // external triggers
+ logic clr_integ_chk_trig, clr_cnsty_chk_trig;
+ logic integ_chk_trig_d, integ_chk_trig_q;
+ logic cnsty_chk_trig_d, cnsty_chk_trig_q;
+ assign integ_chk_trig_d = (integ_chk_trig_q & ~clr_integ_chk_trig) | integ_chk_trig_i;
+ assign cnsty_chk_trig_d = (cnsty_chk_trig_q & ~clr_cnsty_chk_trig) | cnsty_chk_trig_i;
+
+ ////////////////////////////
+ // Ping and Timeout Logic //
+ ////////////////////////////
+
+ // SEC_CM: TIMER.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 5 -n 9 \
+ // -s 628816752 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (60.00%)
+ // 6: ||||||||||||| (40.00%)
+ // 7: --
+ // 8: --
+ // 9: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 6
+ // Minimum Hamming weight: 4
+ // Maximum Hamming weight: 6
+ //
+ localparam int StateWidth = 9;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 9'b100100101,
+ IdleSt = 9'b001101110,
+ IntegWaitSt = 9'b010110011,
+ CnstyWaitSt = 9'b111010110,
+ ErrorSt = 9'b001011001
+ } state_e;
+
+ state_e state_d, state_q;
+ logic chk_timeout_d, chk_timeout_q;
+
+ assign chk_timeout_o = chk_timeout_q;
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+
+ // LFSR and counter signals
+ lfsr_en = 1'b0;
+ integ_set_period = 1'b0;
+ cnsty_set_period = 1'b0;
+ integ_set_timeout = 1'b0;
+ cnsty_set_timeout = 1'b0;
+ cnsty_cnt_pause = 1'b0;
+
+ // Requests going to partitions.
+ set_all_integ_reqs = '0;
+ set_all_cnsty_reqs = '0;
+
+ // Status signals going to CSRs and error logic.
+ chk_timeout_d = chk_timeout_q;
+ chk_pending_o = cnsty_chk_trig_q || integ_chk_trig_q;
+ fsm_err_o = 1'b0;
+
+ // Clear signals for external triggers
+ clr_integ_chk_trig = 1'b0;
+ clr_cnsty_chk_trig = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // Wait until enabled. We never return to this state
+ // once enabled!
+ ResetSt: begin
+ if (timer_en_i) begin
+ state_d = IdleSt;
+ lfsr_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait here until one of the two timers expires (if enabled) or if
+ // a check is triggered externally.
+ IdleSt: begin
+ if ((!integ_msk_zero && integ_cnt_zero) || integ_chk_trig_q) begin
+ state_d = IntegWaitSt;
+ integ_set_timeout = 1'b1;
+ set_all_integ_reqs = 1'b1;
+ clr_integ_chk_trig = integ_chk_trig_q;
+ end else if ((!cnsty_msk_zero && cnsty_cnt_zero) || cnsty_chk_trig_q) begin
+ state_d = CnstyWaitSt;
+ cnsty_set_timeout = 1'b1;
+ set_all_cnsty_reqs = 1'b1;
+ clr_cnsty_chk_trig = cnsty_chk_trig_q;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for all the partitions to respond and go back to idle.
+ // If the timeout is enabled, bail out into terminal error state
+ // if the timeout counter expires (this will raise an alert).
+ IntegWaitSt: begin
+ chk_pending_o = 1'b1;
+ if (!timeout_zero && integ_cnt_zero) begin
+ state_d = ErrorSt;
+ chk_timeout_d = 1'b1;
+ end else if (integ_chk_req_q == '0) begin
+ state_d = IdleSt;
+ // This draws the next wait period.
+ integ_set_period = 1'b1;
+ lfsr_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for all the partitions to respond and go back to idle.
+ // If the timeout is enabled, bail out into terminal error state
+ // if the timeout counter expires (this will raise an alert).
+ CnstyWaitSt: begin
+ chk_pending_o = 1'b1;
+ // Note that consistency checks go back and read from OTP. Hence,
+ // life cycle transitions and DAI programming operations
+ // may interfere with these checks and cause them to take longer
+ // than typically expected. Therefore, the timeout counter is stopped
+ // during programming operations.
+ cnsty_cnt_pause = otp_prog_busy_i;
+ if (!timeout_zero && cnsty_cnt_zero) begin
+ state_d = ErrorSt;
+ chk_timeout_d = 1'b1;
+ end else if (cnsty_chk_req_q == '0) begin
+ state_d = IdleSt;
+ // This draws the next wait period.
+ cnsty_set_period = 1'b1;
+ lfsr_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal error state. This raises an alert.
+ ErrorSt: begin
+ // Continuously clear pending checks.
+ clr_integ_chk_trig = 1'b1;
+ clr_cnsty_chk_trig = 1'b1;
+ if (!chk_timeout_q) begin
+ fsm_err_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This should never happen, hence we directly jump into the
+ // error state, where an alert will be triggered.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of escalation,
+ // or if the two LFSR or counter states do not agree.
+ // SEC_CM: TIMER.FSM.LOCAL_ESC, TIMER.FSM.GLOBAL_ESC
+ if (lfsr_err || integ_cnt_err || cnsty_cnt_err ||
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i)) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ end
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ integ_chk_req_q <= '0;
+ cnsty_chk_req_q <= '0;
+ chk_timeout_q <= 1'b0;
+ reseed_cnt_q <= '0;
+ integ_chk_trig_q <= 1'b0;
+ cnsty_chk_trig_q <= 1'b0;
+ end else begin
+ integ_chk_req_q <= integ_chk_req_d;
+ cnsty_chk_req_q <= cnsty_chk_req_d;
+ chk_timeout_q <= chk_timeout_d;
+ reseed_cnt_q <= reseed_cnt_d;
+ integ_chk_trig_q <= integ_chk_trig_d;
+ cnsty_chk_trig_q <= cnsty_chk_trig_d;
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ `CALIPTRA_ASSERT_KNOWN(EdnReqKnown_A, edn_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ChkPendingKnown_A, chk_pending_o)
+ `CALIPTRA_ASSERT_KNOWN(IntegChkReqKnown_A, integ_chk_req_o)
+ `CALIPTRA_ASSERT_KNOWN(CnstyChkReqKnown_A, cnsty_chk_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ChkTimeoutKnown_A, chk_timeout_o)
+
+endmodule : otp_ctrl_lfsr_timer
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_part_buf.sv b/src/fuse_ctrl/rtl/otp_ctrl_part_buf.sv
new file mode 100644
index 0000000..92e5b96
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_part_buf.sv
@@ -0,0 +1,821 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Buffered partition for OTP controller.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_part_buf
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+#(
+ // Partition information.
+ parameter part_info_t Info = PartInfoDefault,
+ parameter logic [Info.size*8-1:0] DataDefault = '0
+) (
+ input clk_i,
+ input rst_ni,
+ // Pulse to start partition initialisation (required once per power cycle).
+ input init_req_i,
+ output logic init_done_o,
+ // Integrity check requests
+ input integ_chk_req_i,
+ output logic integ_chk_ack_o,
+ // Consistency check requests
+ input cnsty_chk_req_i,
+ output logic cnsty_chk_ack_o,
+ // Escalation input. This moves the FSM into a terminal state and locks down
+ // the partition.
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ // Check bypass enable. This bypasses integrity and consistency checks and
+ // acknowledges all incoming check requests (only used by life cycle).
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t check_byp_en_i,
+ // Output error state of partition, to be consumed by OTP error/alert logic.
+ // Note that most errors are not recoverable and move the partition FSM into
+ // a terminal error state.
+ output otp_err_e error_o,
+ // This error signal is pulsed high if the FSM has been glitched into an invalid state.
+ // Although it is somewhat redundant with the error code in error_o above, it is
+ // meant to cover cases where we already latched an error code while the FSM is
+ // glitched into an invalid state (since in that case, the error code will not be
+ // overridden with the FSM error code so that the original error code is still
+ // discoverable).
+ output logic fsm_err_o,
+ // Access/lock status
+ // SEC_CM: ACCESS.CTRL.MUBI
+ input part_access_t access_i, // runtime lock from CSRs
+ output part_access_t access_o,
+ // Buffered 64bit digest output.
+ output logic [ScrmblBlockWidth-1:0] digest_o,
+ output logic [Info.size*8-1:0] data_o,
+ // OTP interface
+ output logic otp_req_o,
+ output caliptra_prim_otp_pkg::cmd_e otp_cmd_o,
+ output logic [OtpSizeWidth-1:0] otp_size_o,
+ output logic [OtpIfWidth-1:0] otp_wdata_o,
+ output logic [OtpAddrWidth-1:0] otp_addr_o,
+ input otp_gnt_i,
+ input otp_rvalid_i,
+ input [ScrmblBlockWidth-1:0] otp_rdata_i,
+ input caliptra_prim_otp_pkg::err_e otp_err_i,
+ // Scrambling mutex request
+ output logic scrmbl_mtx_req_o,
+ input scrmbl_mtx_gnt_i,
+ // Scrambling datapath interface
+ output otp_scrmbl_cmd_e scrmbl_cmd_o,
+ output digest_mode_e scrmbl_mode_o,
+ output logic [ConstSelWidth-1:0] scrmbl_sel_o,
+ output logic [ScrmblBlockWidth-1:0] scrmbl_data_o,
+ output logic scrmbl_valid_o,
+ input logic scrmbl_ready_i,
+ input logic scrmbl_valid_i,
+ input logic [ScrmblBlockWidth-1:0] scrmbl_data_i
+);
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ import caliptra_prim_mubi_pkg::*;
+ import caliptra_prim_util_pkg::vbits;
+
+ localparam int unsigned DigestOffsetInt = (int'(Info.offset) +
+ int'(Info.size) - ScrmblBlockWidth/8);
+ localparam int NumScrmblBlocks = int'(Info.size) / (ScrmblBlockWidth/8);
+ localparam int CntWidth = vbits(NumScrmblBlocks);
+
+ localparam bit [OtpByteAddrWidth-1:0] DigestOffset = DigestOffsetInt[OtpByteAddrWidth-1:0];
+
+ localparam int unsigned LastScrmblBlockInt = NumScrmblBlocks - 1;
+ localparam int unsigned PenultimateScrmblBlockInt = NumScrmblBlocks - 2;
+ localparam bit [CntWidth-1:0] LastScrmblBlock = LastScrmblBlockInt[CntWidth-1:0];
+ localparam bit [CntWidth-1:0] PenultimateScrmblBlock = PenultimateScrmblBlockInt[CntWidth-1:0];
+
+ // Integration checks for parameters.
+ `CALIPTRA_ASSERT_INIT(OffsetMustBeBlockAligned_A, (Info.offset % (ScrmblBlockWidth/8)) == 0)
+ `CALIPTRA_ASSERT_INIT(SizeMustBeBlockAligned_A, (Info.size % (ScrmblBlockWidth/8)) == 0)
+ `CALIPTRA_ASSERT_INIT(DigestOffsetMustBeRepresentable_A, DigestOffsetInt == int'(DigestOffset))
+ `CALIPTRA_ASSERT(ScrambledImpliesDigest_A, Info.secret |-> Info.hw_digest)
+ `CALIPTRA_ASSERT(WriteLockImpliesDigest_A, Info.read_lock |-> Info.hw_digest)
+ `CALIPTRA_ASSERT(ReadLockImpliesDigest_A, Info.write_lock |-> Info.hw_digest)
+
+ // This feature is only supposed to be used with partitions that are not scrambled
+ // and that do not have a digest.
+ `CALIPTRA_ASSERT(BypassEnable0_A, Info.secret |-> caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_strict(check_byp_en_i))
+ `CALIPTRA_ASSERT(BypassEnable1_A, Info.hw_digest |-> caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_false_strict(check_byp_en_i))
+
+ ///////////////////////
+ // OTP Partition FSM //
+ ///////////////////////
+
+ // SEC_CM: PART.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 16 -n 12 \
+ // -s 3370657881 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||| (28.33%)
+ // 6: |||||||||||||||||||| (38.33%)
+ // 7: |||||||||| (19.17%)
+ // 8: ||| (5.83%)
+ // 9: || (4.17%)
+ // 10: | (2.50%)
+ // 11: (0.83%)
+ // 12: (0.83%)
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 12
+ // Minimum Hamming weight: 4
+ // Maximum Hamming weight: 8
+ //
+ localparam int StateWidth = 12;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 12'b011000001110,
+ InitSt = 12'b110100100111,
+ InitWaitSt = 12'b001110110001,
+ InitDescrSt = 12'b110010000100,
+ InitDescrWaitSt = 12'b100110101000,
+ IdleSt = 12'b010101001101,
+ IntegScrSt = 12'b110101011010,
+ IntegScrWaitSt = 12'b100010011111,
+ IntegDigClrSt = 12'b101001000001,
+ IntegDigSt = 12'b011101100010,
+ IntegDigPadSt = 12'b001101010111,
+ IntegDigFinSt = 12'b011011100101,
+ IntegDigWaitSt = 12'b100011110010,
+ CnstyReadSt = 12'b000001101011,
+ CnstyReadWaitSt = 12'b101001111100,
+ ErrorSt = 12'b010110111110
+ } state_e;
+
+ typedef enum logic {
+ ScrmblData,
+ OtpData
+ } data_sel_e;
+
+ typedef enum logic {
+ PartOffset,
+ DigOffset
+ } base_sel_e;
+
+ state_e state_d, state_q;
+ otp_err_e error_d, error_q;
+ data_sel_e data_sel;
+ base_sel_e base_sel;
+ mubi8_t dout_locked_d, dout_locked_q;
+ logic [CntWidth-1:0] cnt;
+ logic cnt_en, cnt_clr, cnt_err;
+ logic ecc_err;
+ logic buffer_reg_en;
+ logic [ScrmblBlockWidth-1:0] data_mux;
+
+ // Output partition error state.
+ assign error_o = error_q;
+
+ // This partition cannot do any write accesses, hence we tie this
+ // constantly off.
+ assign otp_wdata_o = '0;
+ // Depending on the partition configuration, the wrapper is instructed to ignore integrity
+ // calculations and checks. To be on the safe side, the partition filters error responses at this
+ // point and does not report any integrity errors if integrity is disabled.
+ otp_err_e otp_err;
+ if (Info.integrity) begin : gen_integrity
+ assign otp_cmd_o = caliptra_prim_otp_pkg::Read;
+ assign otp_err = otp_err_e'(otp_err_i);
+ end else begin : gen_no_integrity
+ assign otp_cmd_o = caliptra_prim_otp_pkg::ReadRaw;
+ always_comb begin
+ if (otp_err_e'(otp_err_i) inside {MacroEccCorrError, MacroEccUncorrError}) begin
+ otp_err = NoError;
+ end else begin
+ otp_err = otp_err_e'(otp_err_i);
+ end
+ end
+ end
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+
+ // Redundantly encoded lock signal for buffer regs.
+ dout_locked_d = dout_locked_q;
+
+ // OTP signals
+ otp_req_o = 1'b0;
+
+ // Scrambling mutex
+ scrmbl_mtx_req_o = 1'b0;
+
+ // Scrambling datapath
+ scrmbl_cmd_o = LoadShadow;
+ scrmbl_sel_o = CnstyDigest;
+ scrmbl_mode_o = StandardMode;
+ scrmbl_valid_o = 1'b0;
+
+ // Counter
+ cnt_en = 1'b0;
+ cnt_clr = 1'b0;
+ base_sel = PartOffset;
+
+ // Buffer register
+ buffer_reg_en = 1'b0;
+ data_sel = OtpData;
+
+ // Error Register
+ error_d = error_q;
+ fsm_err_o = 1'b0;
+
+ // Integrity/Consistency check responses
+ cnsty_chk_ack_o = 1'b0;
+ integ_chk_ack_o = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // State right after reset. Wait here until we get a an
+ // initialization request.
+ ResetSt: begin
+ if (init_req_i) begin
+ state_d = InitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Initialization reads out the digest only in unbuffered
+ // partitions. Wait here until the OTP request has been granted.
+ // And then wait until the OTP word comes back.
+ InitSt: begin
+ otp_req_o = 1'b1;
+ if (otp_gnt_i) begin
+ state_d = InitWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and write to buffer register, then go to
+ // descrambling state. In case an OTP transaction fails, latch the
+ // OTP error code and jump to a
+ // terminal error state.
+ InitWaitSt: begin
+ if (otp_rvalid_i) begin
+ buffer_reg_en = 1'b1;
+ if (otp_err inside {NoError, MacroEccCorrError}) begin
+ // Once we've read and descrambled the whole partition, we can go to integrity
+ // verification. Note that the last block is the digest value, which does not
+ // have to be descrambled.
+ if (cnt == LastScrmblBlock) begin
+ state_d = IntegDigClrSt;
+ // Only need to descramble if this is a scrambled partition.
+ // Otherwise, we can just go back to InitSt and read the next block.
+ end else if (Info.secret) begin
+ state_d = InitDescrSt;
+ end else begin
+ state_d = InitSt;
+ cnt_en = 1'b1;
+ end
+ // At this point the only error that we could have gotten are correctable ECC errors.
+ if (otp_err != NoError) begin
+ error_d = MacroEccCorrError;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Descrambling state. This first acquires the scrambling
+ // datapath mutex. Note that once the mutex is acquired, we have
+ // exclusive access to the scrambling datapath until we release
+ // the mutex by deasserting scrmbl_mtx_req_o.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ InitDescrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Decrypt;
+ scrmbl_sel_o = Info.key_sel;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = InitDescrWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the descrambled data to return. Note that we release
+ // the mutex lock upon leaving this state.
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ InitDescrWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_sel_o = Info.key_sel;
+ data_sel = ScrmblData;
+ if (scrmbl_valid_i) begin
+ state_d = InitSt;
+ buffer_reg_en = 1'b1;
+ cnt_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Idle state. We basically wait for integrity and consistency check
+ // triggers in this state.
+ IdleSt: begin
+ if (integ_chk_req_i) begin
+ if (Info.hw_digest) begin
+ state_d = IntegDigClrSt;
+ // In case there is nothing to check we can just
+ // acknowledge the request right away, without going to the
+ // integrity check.
+ end else begin
+ integ_chk_ack_o = 1'b1;
+ end
+ end else if (cnsty_chk_req_i) begin
+ state_d = CnstyReadSt;
+ cnt_clr = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Read the digest. Wait here until the OTP request has been granted.
+ // And then wait until the OTP word comes back.
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ CnstyReadSt: begin
+ otp_req_o = 1'b1;
+ // In case this partition has a hardware digest, we only have to read
+ // and compare the digest value. In that case we select the digest offset here.
+ // Otherwise we have to read and compare the whole partition, in which case we
+ // select the partition offset, which is the default assignment of base_sel.
+ if (Info.hw_digest) begin
+ base_sel = DigOffset;
+ end
+ if (otp_gnt_i) begin
+ state_d = CnstyReadWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and compare the digest. In case there is
+ // a mismatch, lock down the partition and go into the terminal error
+ // state. In case an OTP transaction fails, latch the OTP error code
+ // and jump to a terminal error state.
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ CnstyReadWaitSt: begin
+ if (otp_rvalid_i) begin
+ if (otp_err inside {NoError, MacroEccCorrError}) begin
+ // Check whether we need to compare the digest or the full partition
+ // contents here.
+ if (Info.hw_digest) begin
+ // Note that we ignore this check if the digest is still blank.
+ if (digest_o == data_mux || digest_o == '0) begin
+ state_d = IdleSt;
+ cnsty_chk_ack_o = 1'b1;
+ // Error out and lock the partition if this check fails.
+ end else begin
+ state_d = ErrorSt;
+ error_d = CheckFailError;
+ // The check has finished and found an error.
+ cnsty_chk_ack_o = 1'b1;
+ end
+ end else begin
+ // Check whether the read data corresponds with the data buffered in regs.
+ // Note that this particular check can be bypassed in case a transition is ongoing.
+ if (scrmbl_data_o == data_mux ||
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(check_byp_en_i)) begin
+ // Can go back to idle and acknowledge the
+ // request if this is the last block.
+ if (cnt == LastScrmblBlock) begin
+ state_d = IdleSt;
+ cnsty_chk_ack_o = 1'b1;
+ // Need to go back and read out more blocks.
+ end else begin
+ state_d = CnstyReadSt;
+ cnt_en = 1'b1;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = CheckFailError;
+ // The check has finished and found an error.
+ cnsty_chk_ack_o = 1'b1;
+ end
+ end
+ // At this point the only error that we could have gotten are correctable ECC errors.
+ if (otp_err != NoError) begin
+ error_d = MacroEccCorrError;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ // The check has finished and found an error.
+ cnsty_chk_ack_o = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // First, acquire the mutex for the digest and clear the digest state.
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegDigClrSt: begin
+ // Check whether this partition requires checking at all.
+ if (Info.hw_digest) begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ cnt_clr = 1'b1;
+ // Need to reset the digest state and set it to chained
+ // mode if this partition is scrambled.
+ scrmbl_cmd_o = DigestInit;
+ if (Info.secret) begin
+ scrmbl_mode_o = ChainedMode;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = IntegScrSt;
+ end
+ // If this partition is not scrambled, we can just directly
+ // jump to the digest state.
+ end else begin
+ scrmbl_mode_o = StandardMode;
+ if (scrmbl_mtx_gnt_i && scrmbl_ready_i) begin
+ state_d = IntegDigSt;
+ end
+ end
+ // Otherwise, if this partition is not digest protected,
+ // we can just go to idle, since there is nothing to check.
+ // Note that we do not come back to this state in case there is no
+ // digest, and hence it is safe to unlock the buffer regs at this point.
+ // This is the only way the buffer regs can get unlocked.
+ end else begin
+ state_d = IdleSt;
+ if (mubi8_test_true_strict(dout_locked_q)) begin
+ dout_locked_d = MuBi8False;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Scramble buffered data (which is held in plaintext form).
+ // This moves the previous scrambling result into the shadow reg
+ // for later use.
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegScrSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Encrypt;
+ scrmbl_sel_o = Info.key_sel;
+ if (scrmbl_ready_i) begin
+ state_d = IntegScrWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the scrambled data to return.
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegScrWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_sel_o = Info.key_sel;
+ if (scrmbl_valid_i) begin
+ state_d = IntegDigSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Push the word read into the scrambling datapath. The last
+ // block is repeated in case the number blocks in this partition
+ // is odd.
+ // SEC_CM: PART.MEM.DIGEST
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegDigSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ if (scrmbl_ready_i) begin
+ cnt_en = 1'b1;
+ // No need to digest the digest value itself
+ if (cnt == PenultimateScrmblBlock) begin
+ // Note that the digest operates on 128bit blocks since the data is fed in via the
+ // PRESENT key input. Therefore, we only trigger a digest update on every second
+ // 64bit block that is pushed into the scrambling datapath.
+ if (cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ state_d = IntegDigFinSt;
+ end else begin
+ state_d = IntegDigPadSt;
+ cnt_en = 1'b0;
+ end
+ end else begin
+ // Trigger digest round in case this is the second block in a row.
+ if (cnt[0]) begin
+ scrmbl_cmd_o = Digest;
+ end
+ // Go back and scramble the next data block if this is
+ // a scrambled partition. Otherwise just stay here.
+ if (Info.secret) begin
+ state_d = IntegScrSt;
+ end
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Padding state. When we get here, we've copied the last encryption
+ // result into the shadow register such that we've effectively
+ // repeated the last block twice in order to pad the data to 128bit.
+ // SEC_CM: PART.MEM.DIGEST
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegDigPadSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = Digest;
+ if (scrmbl_ready_i) begin
+ state_d = IntegDigFinSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Trigger digest finalization and go wait for the result.
+ // SEC_CM: PART.MEM.DIGEST
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegDigFinSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ scrmbl_valid_o = 1'b1;
+ scrmbl_cmd_o = DigestFinalize;
+ if (scrmbl_ready_i) begin
+ state_d = IntegDigWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for the digest to return, and double check whether the digest
+ // matches. If yes, unlock the partition. Otherwise, go into the terminal
+ // error state, where the partition will be locked down.
+ // SEC_CM: PART.MEM.DIGEST
+ // SEC_CM: PART.DATA_REG.BKGN_CHK
+ IntegDigWaitSt: begin
+ scrmbl_mtx_req_o = 1'b1;
+ data_sel = ScrmblData;
+ if (scrmbl_valid_i) begin
+ // This is the only way the buffer regs can get unlocked.
+ // Note that we ignore this check if the digest is still blank.
+ if (digest_o == data_mux || digest_o == '0) begin
+ state_d = IdleSt;
+ // If the partition is still locked, this is the first integrity check after
+ // initialization. This is the only way the buffer regs can get unlocked.
+ if (mubi8_test_true_strict(dout_locked_q)) begin
+ dout_locked_d = MuBi8False;
+ // Otherwise, this integrity check has requested by the LFSR timer, and we have
+ // to acknowledge its completion.
+ end else begin
+ integ_chk_ack_o = 1'b1;
+ end
+ // Error out and lock the partition if this check fails.
+ end else begin
+ state_d = ErrorSt;
+ error_d = CheckFailError;
+ // The check has finished and found an error.
+ integ_chk_ack_o = 1'b1;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal Error State. This locks access to the partition.
+ // Make sure the partition signals an error state if no error
+ // code has been latched so far, and lock the buffer regs down.
+ ErrorSt: begin
+ dout_locked_d = MuBi8True;
+ if (error_q == NoError) begin
+ error_d = FsmStateError;
+ end
+ // If we are in error state, we cannot execute the checks anymore.
+ // Hence the acknowledgements are returned immediately.
+ cnsty_chk_ack_o = 1'b1;
+ integ_chk_ack_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // We should never get here. If we do (e.g. via a malicious
+ // glitch), error out immediately.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+
+ // Unconditionally jump into the terminal error state in case of
+ // an ECC error or escalation, and lock access to the partition down.
+ // SEC_CM: PART.FSM.LOCAL_ESC
+ if (ecc_err) begin
+ state_d = ErrorSt;
+ if (state_q != ErrorSt) begin
+ error_d = CheckFailError;
+ end
+ end
+ // SEC_CM: PART.FSM.LOCAL_ESC, PART.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i) || cnt_err) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ if (state_q != ErrorSt) begin
+ error_d = FsmStateError;
+ end
+ end
+ end
+
+ ////////////////////////////
+ // Address Calc and Muxes //
+ ////////////////////////////
+
+ // Address counter - this is only used for computing a digest, hence the increment is
+ // fixed to 8 byte.
+ // SEC_CM: PART.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(cnt),
+ .cnt_after_commit_o(),
+ .err_o(cnt_err)
+ );
+
+ logic [OtpByteAddrWidth-1:0] addr_base;
+ assign addr_base = (base_sel == DigOffset) ? DigestOffset : Info.offset;
+
+ // Note that OTP works on halfword (16bit) addresses, hence need to
+ // shift the addresses appropriately.
+ logic [OtpByteAddrWidth-1:0] addr_calc;
+ assign addr_calc = OtpByteAddrWidth'({cnt, {$clog2(ScrmblBlockWidth/8){1'b0}}}) + addr_base;
+ assign otp_addr_o = addr_calc[OtpByteAddrWidth-1:OtpAddrShift];
+
+ if (OtpAddrShift > 0) begin : gen_unused
+ logic unused_bits;
+ assign unused_bits = ^addr_calc[OtpAddrShift-1:0];
+ end
+
+ // Always transfer 64bit blocks.
+ assign otp_size_o = OtpSizeWidth'(unsigned'(ScrmblBlockWidth / OtpWidth) - 1);
+
+ assign data_mux = (data_sel == ScrmblData) ? scrmbl_data_i : otp_rdata_i;
+
+ /////////////////
+ // Buffer Regs //
+ /////////////////
+
+ // SEC_CM: PART.DATA_REG.INTEGRITY
+ logic [Info.size*8-1:0] data;
+ otp_ctrl_ecc_reg #(
+ .Width ( ScrmblBlockWidth ),
+ .Depth ( NumScrmblBlocks )
+ ) u_otp_ctrl_ecc_reg (
+ .clk_i,
+ .rst_ni,
+ .wren_i ( buffer_reg_en ),
+ .addr_i ( cnt ),
+ .wdata_i ( data_mux ),
+ .rdata_o ( scrmbl_data_o ),
+ .data_o ( data ),
+ .ecc_err_o ( ecc_err )
+ );
+
+ // We have successfully initialized the partition once it has been unlocked.
+ assign init_done_o = mubi8_test_false_strict(dout_locked_q);
+ // Hardware output gating.
+ // Note that this is decoupled from the DAI access rules further below.
+ assign data_o = (init_done_o) ? data : DataDefault;
+ // The digest does not have to be gated.
+ assign digest_o = data[$high(data_o) -: ScrmblBlockWidth];
+
+ ////////////////////////
+ // DAI Access Control //
+ ////////////////////////
+
+ // Aggregate all possible DAI write /readlocks. The partition is also locked when uninitialized.
+ // Note that the locks are redundantly encoded values.
+ part_access_t access_pre;
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_write_lock_pre (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(dout_locked_q, access_i.write_lock)),
+ .mubi_o(access_pre.write_lock)
+ );
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_read_lock_pre (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(dout_locked_q, access_i.read_lock)),
+ .mubi_o(access_pre.read_lock)
+ );
+
+ // SEC_CM: PART.MEM.SW_UNWRITABLE
+ if (Info.write_lock) begin : gen_digest_write_lock
+ mubi8_t digest_locked;
+ assign digest_locked = (digest_o != '0) ? MuBi8True : MuBi8False;
+
+ // This prevents the synthesis tool from optimizing the multibit signal.
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_write_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(access_pre.write_lock, digest_locked)),
+ .mubi_o(access_o.write_lock)
+ );
+
+ `CALIPTRA_ASSERT(DigestWriteLocksPartition_A, digest_o |-> mubi8_test_true_loose(access_o.write_lock))
+ end else begin : gen_no_digest_write_lock
+ assign access_o.write_lock = access_pre.write_lock;
+ end
+
+ // SEC_CM: PART.MEM.SW_UNREADABLE
+ if (Info.read_lock) begin : gen_digest_read_lock
+ mubi8_t digest_locked;
+ assign digest_locked = (digest_o != '0) ? MuBi8True : MuBi8False;
+
+ // This prevents the synthesis tool from optimizing the multibit signal.
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_read_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(access_pre.read_lock, digest_locked)),
+ .mubi_o(access_o.read_lock)
+ );
+
+ `CALIPTRA_ASSERT(DigestReadLocksPartition_A, digest_o |-> mubi8_test_true_loose(access_o.read_lock))
+ end else begin : gen_no_digest_read_lock
+ assign access_o.read_lock = access_pre.read_lock;
+ end
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ error_q <= NoError;
+ // data output is locked by default
+ dout_locked_q <= MuBi8True;
+ end else begin
+ error_q <= error_d;
+ dout_locked_q <= dout_locked_d;
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Known assertions
+ `CALIPTRA_ASSERT_KNOWN(InitDoneKnown_A, init_done_o)
+ `CALIPTRA_ASSERT_KNOWN(IntegChkAckKnown_A, integ_chk_ack_o)
+ `CALIPTRA_ASSERT_KNOWN(CnstyChkAckKnown_A, cnsty_chk_ack_o)
+ `CALIPTRA_ASSERT_KNOWN(ErrorKnown_A, error_o)
+ `CALIPTRA_ASSERT_KNOWN(AccessKnown_A, access_o)
+ `CALIPTRA_ASSERT_KNOWN(DigestKnown_A, digest_o)
+ `CALIPTRA_ASSERT_KNOWN(DataKnown_A, data_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpReqKnown_A, otp_req_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpCmdKnown_A, otp_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpSizeKnown_A, otp_size_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpWdataKnown_A, otp_wdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpAddrKnown_A, otp_addr_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblMtxReqKnown_A, scrmbl_mtx_req_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblCmdKnown_A, scrmbl_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblModeKnown_A, scrmbl_mode_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblSelKnown_A, scrmbl_sel_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblDataKnown_A, scrmbl_data_o)
+ `CALIPTRA_ASSERT_KNOWN(ScrmblValidKnown_A, scrmbl_valid_o)
+
+ // Uninitialized partitions should always be locked, no matter what.
+ `CALIPTRA_ASSERT(InitWriteLocksPartition_A,
+ mubi8_test_true_loose(dout_locked_q)
+ |->
+ mubi8_test_true_loose(access_o.write_lock))
+ `CALIPTRA_ASSERT(InitReadLocksPartition_A,
+ mubi8_test_true_loose(dout_locked_q)
+ |->
+ mubi8_test_true_loose(access_o.read_lock))
+ // Incoming Lock propagation
+ `CALIPTRA_ASSERT(WriteLockPropagation_A,
+ mubi8_test_true_loose(access_i.write_lock)
+ |->
+ mubi8_test_true_loose(access_o.write_lock))
+ `CALIPTRA_ASSERT(ReadLockPropagation_A,
+ mubi8_test_true_loose(access_i.read_lock)
+ |->
+ mubi8_test_true_loose(access_o.read_lock))
+ // ECC error in buffer regs
+ `CALIPTRA_ASSERT(EccErrorState_A,
+ ecc_err
+ |=>
+ state_q == ErrorSt)
+ // OTP error response
+ `CALIPTRA_ASSERT(OtpErrorState_A,
+ state_q inside {InitWaitSt, CnstyReadWaitSt} && otp_rvalid_i &&
+ !(otp_err inside {NoError, MacroEccCorrError}) && !ecc_err
+ |=>
+ state_q == ErrorSt && error_o == $past(otp_err))
+
+ // The partition size must be greater than one scrambling block for the address calculation
+ // and muxing to work correctly.
+ `CALIPTRA_ASSERT_INIT(OtpPartBufSize_A, Info.size > (ScrmblBlockWidth/8))
+
+endmodule : otp_ctrl_part_buf
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_part_pkg.sv b/src/fuse_ctrl/rtl/otp_ctrl_part_pkg.sv
new file mode 100644
index 0000000..ccd9e8e
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_part_pkg.sv
@@ -0,0 +1,682 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Package partition metadata.
+//
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+package otp_ctrl_part_pkg;
+
+ import caliptra_prim_util_pkg::vbits;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_pkg::*;
+
+ ////////////////////////////////////
+ // Scrambling Constants and Types //
+ ////////////////////////////////////
+
+ parameter int NumScrmblKeys = 3;
+ parameter int NumDigestSets = 4;
+
+ parameter int ScrmblKeySelWidth = vbits(NumScrmblKeys);
+ parameter int DigestSetSelWidth = vbits(NumDigestSets);
+ parameter int ConstSelWidth = (ScrmblKeySelWidth > DigestSetSelWidth) ?
+ ScrmblKeySelWidth :
+ DigestSetSelWidth;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+ StandardMode,
+ ChainedMode
+ } digest_mode_e;
+
+ typedef logic [NumScrmblKeys-1:0][ScrmblKeyWidth-1:0] key_array_t;
+ typedef logic [NumDigestSets-1:0][ScrmblKeyWidth-1:0] digest_const_array_t;
+ typedef logic [NumDigestSets-1:0][ScrmblBlockWidth-1:0] digest_iv_array_t;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+ Secret0Key,
+ Secret1Key,
+ Secret2Key
+ } key_sel_e;
+
+ typedef enum logic [ConstSelWidth-1:0] {
+ CnstyDigest,
+ FlashDataKey,
+ FlashAddrKey,
+ SramDataKey
+ } digest_sel_e;
+
+ // SEC_CM: SECRET.MEM.SCRAMBLE
+ parameter key_array_t RndCnstKey = {
+ 128'h85A9E830BC059BA9286D6E2856A05CC3,
+ 128'hEFFA6D736C5EFF49AE7B70F9C46E5A62,
+ 128'h3BA121C5E097DDEB7768B4C666E9C3DA
+ };
+
+ // SEC_CM: PART.MEM.DIGEST
+ // Note: digest set 0 is used for computing the partition digests. Constants at
+ // higher indices are used to compute the scrambling keys.
+ // [anjpar]: Added *Default parameter as we are not running topgen script
+ parameter digest_const_array_t RndCnstDigestConst= {
+ 128'h4A22D4B78FE0266FBEE3958332F2939B,
+ 128'hD60822E1FAEC5C7290C7F21F6224F027,
+ 128'h277195FC471E4B26B6641214B61D1B43,
+ 128'hE95F517CB98955B4D5A89AA9109294A
+ };
+
+ parameter digest_const_array_t RndCnstDigestConstDefault = {
+ 128'h4A22D4B78FE0266FBEE3958332F2939B,
+ 128'hD60822E1FAEC5C7290C7F21F6224F027,
+ 128'h277195FC471E4B26B6641214B61D1B43,
+ 128'hE95F517CB98955B4D5A89AA9109294A
+ };
+
+ parameter digest_iv_array_t RndCnstDigestIV = {
+ 64'hF98C48B1F9377284,
+ 64'hB7474D640F8A7F5,
+ 64'hE048B657396B4B83,
+ 64'hBEAD91D5FA4E0915
+ };
+
+ parameter digest_iv_array_t RndCnstDigestIVDefault = {
+ 64'hF98C48B1F9377284,
+ 64'hB7474D640F8A7F5,
+ 64'hE048B657396B4B83,
+ 64'hBEAD91D5FA4E0915
+ };
+
+
+ /////////////////////////////////////
+ // Typedefs for Partition Metadata //
+ /////////////////////////////////////
+
+ typedef enum logic [1:0] {
+ Unbuffered,
+ Buffered,
+ LifeCycle
+ } part_variant_e;
+
+ typedef struct packed {
+ part_variant_e variant;
+ // Offset and size within the OTP array, in Bytes.
+ logic [OtpByteAddrWidth-1:0] offset;
+ logic [OtpByteAddrWidth-1:0] size;
+ // Key index to use for scrambling.
+ key_sel_e key_sel;
+ // Attributes
+ logic secret; // Whether the partition is secret (and hence scrambled)
+ logic sw_digest; // Whether the partition has a software digest
+ logic hw_digest; // Whether the partition has a hardware digest
+ logic write_lock; // Whether the partition is write lockable (via digest)
+ logic read_lock; // Whether the partition is read lockable (via digest)
+ logic integrity; // Whether the partition is integrity protected
+ logic iskeymgr_creator; // Whether the partition has any creator key material
+ logic iskeymgr_owner; // Whether the partition has any owner key material
+ } part_info_t;
+
+ parameter part_info_t PartInfoDefault = '{
+ variant: Unbuffered,
+ offset: '0,
+ size: OtpByteAddrWidth'('hFF),
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b0,
+ hw_digest: 1'b0,
+ write_lock: 1'b0,
+ read_lock: 1'b0,
+ integrity: 1'b0,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ };
+
+ ////////////////////////
+ // Partition Metadata //
+ ////////////////////////
+
+ localparam part_info_t PartInfo [NumPart] = '{
+ // VENDOR_TEST
+ '{
+ variant: Unbuffered,
+ offset: 11'd0,
+ size: 64,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b1,
+ hw_digest: 1'b0,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b0,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // CREATOR_SW_CFG
+ '{
+ variant: Unbuffered,
+ offset: 11'd64,
+ size: 368,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b1,
+ hw_digest: 1'b0,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // OWNER_SW_CFG
+ '{
+ variant: Unbuffered,
+ offset: 11'd432,
+ size: 712,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b1,
+ hw_digest: 1'b0,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // ROT_CREATOR_AUTH_CODESIGN
+ '{
+ variant: Unbuffered,
+ offset: 11'd1144,
+ size: 472,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b1,
+ hw_digest: 1'b0,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // ROT_CREATOR_AUTH_STATE
+ '{
+ variant: Unbuffered,
+ offset: 11'd1616,
+ size: 40,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b1,
+ hw_digest: 1'b0,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // HW_CFG0
+ '{
+ variant: Buffered,
+ offset: 11'd1656,
+ size: 72,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b0,
+ hw_digest: 1'b1,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // HW_CFG1
+ '{
+ variant: Buffered,
+ offset: 11'd1728,
+ size: 16,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b0,
+ hw_digest: 1'b1,
+ write_lock: 1'b1,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // SECRET0
+ '{
+ variant: Buffered,
+ offset: 11'd1744,
+ size: 40,
+ key_sel: Secret0Key,
+ secret: 1'b1,
+ sw_digest: 1'b0,
+ hw_digest: 1'b1,
+ write_lock: 1'b1,
+ read_lock: 1'b1,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // SECRET1
+ '{
+ variant: Buffered,
+ offset: 11'd1784,
+ size: 88,
+ key_sel: Secret1Key,
+ secret: 1'b1,
+ sw_digest: 1'b0,
+ hw_digest: 1'b1,
+ write_lock: 1'b1,
+ read_lock: 1'b1,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ },
+ // SECRET2
+ '{
+ variant: Buffered,
+ offset: 11'd1872,
+ size: 88,
+ key_sel: Secret2Key,
+ secret: 1'b1,
+ sw_digest: 1'b0,
+ hw_digest: 1'b1,
+ write_lock: 1'b1,
+ read_lock: 1'b1,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b1,
+ iskeymgr_owner: 1'b0
+ },
+ // LIFE_CYCLE
+ '{
+ variant: LifeCycle,
+ offset: 11'd1960,
+ size: 88,
+ key_sel: key_sel_e'('0),
+ secret: 1'b0,
+ sw_digest: 1'b0,
+ hw_digest: 1'b0,
+ write_lock: 1'b0,
+ read_lock: 1'b0,
+ integrity: 1'b1,
+ iskeymgr_creator: 1'b0,
+ iskeymgr_owner: 1'b0
+ }
+ };
+
+ typedef enum {
+ VendorTestIdx,
+ CreatorSwCfgIdx,
+ OwnerSwCfgIdx,
+ RotCreatorAuthCodesignIdx,
+ RotCreatorAuthStateIdx,
+ HwCfg0Idx,
+ HwCfg1Idx,
+ Secret0Idx,
+ Secret1Idx,
+ Secret2Idx,
+ LifeCycleIdx,
+ // These are not "real partitions", but in terms of implementation it is convenient to
+ // add these at the end of certain arrays.
+ DaiIdx,
+ LciIdx,
+ KdiIdx,
+ // Number of agents is the last idx+1.
+ NumAgentsIdx
+ } part_idx_e;
+
+ parameter int NumAgents = int'(NumAgentsIdx);
+
+ // Breakout types for easier access of individual items.
+ typedef struct packed {
+ logic [63:0] hw_cfg0_digest;
+ logic [255:0] manuf_state;
+ logic [255:0] device_id;
+ } otp_hw_cfg0_data_t;
+
+ // default value used for intermodule
+ parameter otp_hw_cfg0_data_t OTP_HW_CFG0_DATA_DEFAULT = '{
+ hw_cfg0_digest: 64'hF87BED95CFBA3727,
+ manuf_state: 256'hDF3888886BD10DC67ABB319BDA0529AE40119A3C6E63CDF358840E458E4029A6,
+ device_id: 256'h63B9485A3856C417CF7A50A9A91EF7F7B3A5B4421F462370FFF698183664DC7E
+ };
+ typedef struct packed {
+ logic [63:0] hw_cfg1_digest;
+ logic [39:0] unallocated;
+ caliptra_prim_mubi_pkg::mubi8_t dis_rv_dm_late_debug;
+ caliptra_prim_mubi_pkg::mubi8_t en_csrng_sw_app_read;
+ caliptra_prim_mubi_pkg::mubi8_t en_sram_ifetch;
+ } otp_hw_cfg1_data_t;
+
+ // default value used for intermodule
+ parameter otp_hw_cfg1_data_t OTP_HW_CFG1_DATA_DEFAULT = '{
+ hw_cfg1_digest: 64'hBBF4A76885E754F2,
+ unallocated: 40'h0,
+ dis_rv_dm_late_debug: caliptra_prim_mubi_pkg::mubi8_t'(8'h69),
+ en_csrng_sw_app_read: caliptra_prim_mubi_pkg::mubi8_t'(8'h69),
+ en_sram_ifetch: caliptra_prim_mubi_pkg::mubi8_t'(8'h69)
+ };
+ typedef struct packed {
+ // This reuses the same encoding as the life cycle signals for indicating valid status.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t valid;
+ otp_hw_cfg1_data_t hw_cfg1_data;
+ otp_hw_cfg0_data_t hw_cfg0_data;
+ } otp_broadcast_t;
+
+ // default value for intermodule
+ parameter otp_broadcast_t OTP_BROADCAST_DEFAULT = '{
+ valid: caliptra_ss_lc_ctrl_pkg::Off,
+ hw_cfg1_data: OTP_HW_CFG1_DATA_DEFAULT,
+ hw_cfg0_data: OTP_HW_CFG0_DATA_DEFAULT
+ };
+
+
+ // OTP invalid partition default for buffered partitions.
+ parameter logic [16383:0] PartInvDefault = 16384'({
+ 704'({
+ 320'h93B61DE417B9FB339605F051E74379CBCC6596C7174EBA643E725E464F593C87A445C3C29F71A256,
+ 384'hA0D1E90E8C9FDDFA01E46311FD36D95401136C663A36C3E3E817E760B27AE937BFCDF15A3429452A851B80674A2B6FBE
+ }),
+ 704'({
+ 64'h8CBBAD02BB4CA928,
+ 256'hD68C96F0B3D1FEED688098A43C33459F0279FC51CC7C626E315FD2B871D88819,
+ 256'hD0BAC511D08ECE0E2C0DBDDEDF7A854D5E58D0AA97A0F8F6D3D58610F4851667,
+ 128'h94CD3DED94B578192A4D8B51F5D41C8A
+ }),
+ 704'({
+ 64'hC469C593E5DC0DA8,
+ 128'hE00E9680BD9B70291C752824C7DDC896,
+ 256'h105733EAA3880C5A234729143F97B62A55D0320379A0D260426D99D374E699CA,
+ 256'hDBC827839FE2DCC27E17D06B5D4E0DDDDBB9844327F20FB5D396D1CE085BDC31
+ }),
+ 320'({
+ 64'hBE193854E9CA60A0,
+ 128'h711D135F59A50322B6711DB6F5D40A37,
+ 128'hB5AC1F53D00A08C3B28B5C0FEE5F4C02
+ }),
+ 128'({
+ 64'hBBF4A76885E754F2,
+ 40'h0, // unallocated space
+ 8'h69,
+ 8'h69,
+ 8'h69
+ }),
+ 576'({
+ 64'hF87BED95CFBA3727,
+ 256'hDF3888886BD10DC67ABB319BDA0529AE40119A3C6E63CDF358840E458E4029A6,
+ 256'h63B9485A3856C417CF7A50A9A91EF7F7B3A5B4421F462370FFF698183664DC7E
+ }),
+ 320'({
+ 64'h20440F25BB053FB5,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0
+ }),
+ 3776'({
+ 64'h15F164D7930C9D19,
+ 256'h0,
+ 32'h0,
+ 256'h0,
+ 32'h0,
+ 32'h0,
+ 256'h0,
+ 32'h0,
+ 32'h0,
+ 256'h0,
+ 32'h0,
+ 32'h0,
+ 256'h0,
+ 32'h0,
+ 512'h0,
+ 32'h0,
+ 512'h0,
+ 32'h0,
+ 512'h0,
+ 32'h0,
+ 512'h0,
+ 32'h0
+ }),
+ 5696'({
+ 64'hE29749216775E8A5,
+ 96'h0, // unallocated space
+ 1024'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 96'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 512'h0,
+ 128'h0,
+ 128'h0,
+ 512'h0,
+ 2560'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0
+ }),
+ 2944'({
+ 64'h340A5B93BB19342,
+ 96'h0, // unallocated space
+ 256'h0,
+ 256'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 32'h0,
+ 1248'h0
+ }),
+ 512'({
+ 64'h4947DD361344767A,
+ 448'h0
+ })});
+
+ ///////////////////////////////////////////////
+ // Parameterized Assignment Helper Functions //
+ ///////////////////////////////////////////////
+
+ function automatic otp_ctrl_core_hw2reg_t named_reg_assign(
+ logic [NumPart-1:0][ScrmblBlockWidth-1:0] part_digest);
+ otp_ctrl_core_hw2reg_t hw2reg;
+ logic unused_sigs;
+ unused_sigs = ^part_digest;
+ hw2reg = '0;
+ hw2reg.vendor_test_digest = part_digest[VendorTestIdx];
+ hw2reg.creator_sw_cfg_digest = part_digest[CreatorSwCfgIdx];
+ hw2reg.owner_sw_cfg_digest = part_digest[OwnerSwCfgIdx];
+ hw2reg.rot_creator_auth_codesign_digest = part_digest[RotCreatorAuthCodesignIdx];
+ hw2reg.rot_creator_auth_state_digest = part_digest[RotCreatorAuthStateIdx];
+ hw2reg.hw_cfg0_digest = part_digest[HwCfg0Idx];
+ hw2reg.hw_cfg1_digest = part_digest[HwCfg1Idx];
+ hw2reg.secret0_digest = part_digest[Secret0Idx];
+ hw2reg.secret1_digest = part_digest[Secret1Idx];
+ hw2reg.secret2_digest = part_digest[Secret2Idx];
+ return hw2reg;
+ endfunction : named_reg_assign
+
+ function automatic part_access_t [NumPart-1:0] named_part_access_pre(
+ otp_ctrl_core_reg2hw_t reg2hw);
+ part_access_t [NumPart-1:0] part_access_pre;
+ logic unused_sigs;
+ unused_sigs = ^reg2hw;
+ // Default (this will be overridden by partition-internal settings).
+ part_access_pre = {{32'(2*NumPart)}{caliptra_prim_mubi_pkg::MuBi8False}};
+ // Note: these could be made a MuBi CSRs in the future.
+ // The main thing that is missing right now is proper support for W0C.
+ // VENDOR_TEST
+ if (!reg2hw.vendor_test_read_lock) begin
+ part_access_pre[VendorTestIdx].read_lock = caliptra_prim_mubi_pkg::MuBi8True;
+ end
+ // CREATOR_SW_CFG
+ if (!reg2hw.creator_sw_cfg_read_lock) begin
+ part_access_pre[CreatorSwCfgIdx].read_lock = caliptra_prim_mubi_pkg::MuBi8True;
+ end
+ // OWNER_SW_CFG
+ if (!reg2hw.owner_sw_cfg_read_lock) begin
+ part_access_pre[OwnerSwCfgIdx].read_lock = caliptra_prim_mubi_pkg::MuBi8True;
+ end
+ // ROT_CREATOR_AUTH_CODESIGN
+ if (!reg2hw.rot_creator_auth_codesign_read_lock) begin
+ part_access_pre[RotCreatorAuthCodesignIdx].read_lock = caliptra_prim_mubi_pkg::MuBi8True;
+ end
+ // ROT_CREATOR_AUTH_STATE
+ if (!reg2hw.rot_creator_auth_state_read_lock) begin
+ part_access_pre[RotCreatorAuthStateIdx].read_lock = caliptra_prim_mubi_pkg::MuBi8True;
+ end
+ return part_access_pre;
+ endfunction : named_part_access_pre
+
+ function automatic otp_broadcast_t named_broadcast_assign(
+ logic [NumPart-1:0] part_init_done,
+ logic [$bits(PartInvDefault)/8-1:0][7:0] part_buf_data);
+ otp_broadcast_t otp_broadcast;
+ logic valid, unused;
+ unused = 1'b0;
+ valid = 1'b1;
+ // VENDOR_TEST
+ unused ^= ^{part_init_done[VendorTestIdx],
+ part_buf_data[VendorTestOffset +: VendorTestSize]};
+ // CREATOR_SW_CFG
+ unused ^= ^{part_init_done[CreatorSwCfgIdx],
+ part_buf_data[CreatorSwCfgOffset +: CreatorSwCfgSize]};
+ // OWNER_SW_CFG
+ unused ^= ^{part_init_done[OwnerSwCfgIdx],
+ part_buf_data[OwnerSwCfgOffset +: OwnerSwCfgSize]};
+ // ROT_CREATOR_AUTH_CODESIGN
+ unused ^= ^{part_init_done[RotCreatorAuthCodesignIdx],
+ part_buf_data[RotCreatorAuthCodesignOffset +: RotCreatorAuthCodesignSize]};
+ // ROT_CREATOR_AUTH_STATE
+ unused ^= ^{part_init_done[RotCreatorAuthStateIdx],
+ part_buf_data[RotCreatorAuthStateOffset +: RotCreatorAuthStateSize]};
+ // HW_CFG0
+ valid &= part_init_done[HwCfg0Idx];
+ otp_broadcast.hw_cfg0_data = otp_hw_cfg0_data_t'(part_buf_data[HwCfg0Offset +: HwCfg0Size]);
+ // HW_CFG1
+ valid &= part_init_done[HwCfg1Idx];
+ otp_broadcast.hw_cfg1_data = otp_hw_cfg1_data_t'(part_buf_data[HwCfg1Offset +: HwCfg1Size]);
+ // SECRET0
+ unused ^= ^{part_init_done[Secret0Idx],
+ part_buf_data[Secret0Offset +: Secret0Size]};
+ // SECRET1
+ unused ^= ^{part_init_done[Secret1Idx],
+ part_buf_data[Secret1Offset +: Secret1Size]};
+ // SECRET2
+ unused ^= ^{part_init_done[Secret2Idx],
+ part_buf_data[Secret2Offset +: Secret2Size]};
+ // LIFE_CYCLE
+ unused ^= ^{part_init_done[LifeCycleIdx],
+ part_buf_data[LifeCycleOffset +: LifeCycleSize]};
+ otp_broadcast.valid = caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_bool_to_caliptra_ss_lc_tx(valid);
+ return otp_broadcast;
+ endfunction : named_broadcast_assign
+
+ function automatic otp_keymgr_key_t named_keymgr_key_assign(
+ logic [NumPart-1:0][ScrmblBlockWidth-1:0] part_digest,
+ logic [$bits(PartInvDefault)/8-1:0][7:0] part_buf_data,
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t caliptra_ss_lc_seed_hw_rd_en);
+ otp_keymgr_key_t otp_keymgr_key;
+ logic valid, unused;
+ unused = 1'b0;
+ // For now we use a fixed struct type here so that the
+ // interface to the keymgr remains stable. The type contains
+ // a superset of all options, so we have to initialize it to '0 here.
+ otp_keymgr_key = '0;
+ // VENDOR_TEST
+ unused ^= ^{part_digest[VendorTestIdx],
+ part_buf_data[VendorTestOffset +: VendorTestSize]};
+ // CREATOR_SW_CFG
+ unused ^= ^{part_digest[CreatorSwCfgIdx],
+ part_buf_data[CreatorSwCfgOffset +: CreatorSwCfgSize]};
+ // OWNER_SW_CFG
+ unused ^= ^{part_digest[OwnerSwCfgIdx],
+ part_buf_data[OwnerSwCfgOffset +: OwnerSwCfgSize]};
+ // ROT_CREATOR_AUTH_CODESIGN
+ unused ^= ^{part_digest[RotCreatorAuthCodesignIdx],
+ part_buf_data[RotCreatorAuthCodesignOffset +: RotCreatorAuthCodesignSize]};
+ // ROT_CREATOR_AUTH_STATE
+ unused ^= ^{part_digest[RotCreatorAuthStateIdx],
+ part_buf_data[RotCreatorAuthStateOffset +: RotCreatorAuthStateSize]};
+ // HW_CFG0
+ unused ^= ^{part_digest[HwCfg0Idx],
+ part_buf_data[HwCfg0Offset +: HwCfg0Size]};
+ // HW_CFG1
+ unused ^= ^{part_digest[HwCfg1Idx],
+ part_buf_data[HwCfg1Offset +: HwCfg1Size]};
+ // SECRET0
+ unused ^= ^{part_digest[Secret0Idx],
+ part_buf_data[Secret0Offset +: Secret0Size]};
+ // SECRET1
+ unused ^= ^{part_digest[Secret1Idx],
+ part_buf_data[Secret1Offset +: Secret1Size]};
+ // SECRET2
+ valid = (part_digest[Secret2Idx] != 0);
+ unused ^= ^part_buf_data[RmaTokenOffset +: RmaTokenSize];
+ otp_keymgr_key.creator_root_key_share0_valid = valid;
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_seed_hw_rd_en)) begin
+ otp_keymgr_key.creator_root_key_share0 =
+ part_buf_data[CreatorRootKeyShare0Offset +: CreatorRootKeyShare0Size];
+ end else begin
+ otp_keymgr_key.creator_root_key_share0 =
+ PartInvDefault[CreatorRootKeyShare0Offset*8 +: CreatorRootKeyShare0Size*8];
+ end
+ otp_keymgr_key.creator_root_key_share1_valid = valid;
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_strict(caliptra_ss_lc_seed_hw_rd_en)) begin
+ otp_keymgr_key.creator_root_key_share1 =
+ part_buf_data[CreatorRootKeyShare1Offset +: CreatorRootKeyShare1Size];
+ end else begin
+ otp_keymgr_key.creator_root_key_share1 =
+ PartInvDefault[CreatorRootKeyShare1Offset*8 +: CreatorRootKeyShare1Size*8];
+ end
+ // This is not used since we consume the
+ // ungated digest values from the part_digest array.
+ unused ^= ^part_buf_data[Secret2DigestOffset +: Secret2DigestSize];
+ // LIFE_CYCLE
+ unused ^= ^{part_digest[LifeCycleIdx],
+ part_buf_data[LifeCycleOffset +: LifeCycleSize]};
+ unused ^= valid;
+ return otp_keymgr_key;
+ endfunction : named_keymgr_key_assign
+
+endpackage : otp_ctrl_part_pkg
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_part_unbuf.sv b/src/fuse_ctrl/rtl/otp_ctrl_part_unbuf.sv
new file mode 100644
index 0000000..5e4b7f5
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_part_unbuf.sv
@@ -0,0 +1,531 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Unbuffered partition for OTP controller.
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_part_unbuf
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+#(
+ // Partition information.
+ parameter part_info_t Info = PartInfoDefault
+) (
+ input clk_i,
+ input rst_ni,
+ // Pulse to start partition initialisation (required once per power cycle).
+ input init_req_i,
+ output logic init_done_o,
+ // Escalation input. This moves the FSM into a terminal state and locks down
+ // the partition.
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ // Output error state of partition, to be consumed by OTP error/alert logic.
+ // Note that most errors are not recoverable and move the partition FSM into
+ // a terminal error state.
+ output otp_err_e error_o,
+ // This error signal is pulsed high if the FSM has been glitched into an invalid state.
+ // Although it is somewhat redundant with the error code in error_o above, it is
+ // meant to cover cases where we already latched an error code while the FSM is
+ // glitched into an invalid state (since in that case, the error code will not be
+ // overridden with the FSM error code so that the original error code is still
+ // discoverable).
+ output logic fsm_err_o,
+ // Access/lock status
+ // SEC_CM: ACCESS.CTRL.MUBI
+ input part_access_t access_i, // runtime lock from CSRs
+ output part_access_t access_o,
+ // Buffered 64bit digest output.
+ output logic [ScrmblBlockWidth-1:0] digest_o,
+ // Interface to TL-UL adapter
+ input logic tlul_req_i,
+ output logic tlul_gnt_o,
+ input [SwWindowAddrWidth-1:0] tlul_addr_i,
+ output logic [1:0] tlul_rerror_o,
+ output logic tlul_rvalid_o,
+ output logic [31:0] tlul_rdata_o,
+ // OTP interface
+ output logic otp_req_o,
+ output caliptra_prim_otp_pkg::cmd_e otp_cmd_o,
+ output logic [OtpSizeWidth-1:0] otp_size_o,
+ output logic [OtpIfWidth-1:0] otp_wdata_o,
+ output logic [OtpAddrWidth-1:0] otp_addr_o,
+ input otp_gnt_i,
+ input otp_rvalid_i,
+ input [ScrmblBlockWidth-1:0] otp_rdata_i,
+ input caliptra_prim_otp_pkg::err_e otp_err_i
+);
+
+ ////////////////////////
+ // Integration Checks //
+ ////////////////////////
+
+ import caliptra_prim_mubi_pkg::*;
+ import caliptra_prim_util_pkg::vbits;
+
+ localparam logic [OtpByteAddrWidth:0] PartEnd = (OtpByteAddrWidth+1)'(Info.offset) +
+ (OtpByteAddrWidth+1)'(Info.size);
+ localparam int unsigned DigestOffsetInt = int'(PartEnd) - ScrmblBlockWidth/8;
+
+ localparam bit [OtpByteAddrWidth-1:0] DigestOffset = DigestOffsetInt[OtpByteAddrWidth-1:0];
+
+ // Integration checks for parameters.
+ `CALIPTRA_ASSERT_INIT(OffsetMustBeBlockAligned_A, (Info.offset % (ScrmblBlockWidth/8)) == 0)
+ `CALIPTRA_ASSERT_INIT(SizeMustBeBlockAligned_A, (Info.size % (ScrmblBlockWidth/8)) == 0)
+ `CALIPTRA_ASSERT_INIT(DigestOffsetMustBeRepresentable_A, DigestOffsetInt == int'(DigestOffset))
+
+ ///////////////////////
+ // OTP Partition FSM //
+ ///////////////////////
+
+ // SEC_CM: PART.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 7 -n 10 \
+ // -s 4247417884 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (52.38%)
+ // 6: |||||||||||| (33.33%)
+ // 7: | (4.76%)
+ // 8: ||| (9.52%)
+ // 9: --
+ // 10: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 8
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 9
+ //
+ localparam int StateWidth = 10;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 10'b1010110110,
+ InitSt = 10'b0100010011,
+ InitWaitSt = 10'b0001011000,
+ IdleSt = 10'b1011101001,
+ ReadSt = 10'b0101101110,
+ ReadWaitSt = 10'b0110100101,
+ ErrorSt = 10'b1111011111
+ } state_e;
+
+ typedef enum logic {
+ DigestAddrSel = 1'b0,
+ DataAddrSel = 1'b1
+ } addr_sel_e;
+
+ state_e state_d, state_q;
+ addr_sel_e otp_addr_sel;
+ otp_err_e error_d, error_q;
+
+ logic digest_reg_en;
+ logic ecc_err;
+
+ logic tlul_addr_in_range;
+ logic [SwWindowAddrWidth-1:0] tlul_addr_d, tlul_addr_q;
+
+ // This is only used to return bus errors when the FSM is in ErrorSt.
+ logic pending_tlul_error_d, pending_tlul_error_q;
+
+ // Output partition error state.
+ assign error_o = error_q;
+
+ // This partition cannot do any write accesses, hence we tie this
+ // constantly off.
+ assign otp_wdata_o = '0;
+ // Depending on the partition configuration, the wrapper is instructed to ignore integrity
+ // calculations and checks. To be on the safe side, the partition filters error responses at this
+ // point and does not report any integrity errors if integrity is disabled.
+ otp_err_e otp_err;
+ if (Info.integrity) begin : gen_integrity
+ assign otp_cmd_o = caliptra_prim_otp_pkg::Read;
+ assign otp_err = otp_err_e'(otp_err_i);
+ end else begin : gen_no_integrity
+ assign otp_cmd_o = caliptra_prim_otp_pkg::ReadRaw;
+ always_comb begin
+ if (otp_err_e'(otp_err_i) inside {MacroEccCorrError, MacroEccUncorrError}) begin
+ otp_err = NoError;
+ end else begin
+ otp_err = otp_err_e'(otp_err_i);
+ end
+ end
+ end
+
+ `CALIPTRA_ASSERT_KNOWN(FsmStateKnown_A, state_q)
+ always_comb begin : p_fsm
+ // Default assignments
+ state_d = state_q;
+
+ // Response to init request
+ init_done_o = 1'b0;
+
+ // OTP signals
+ otp_req_o = 1'b0;
+ otp_addr_sel = DigestAddrSel;
+
+ // TL-UL signals
+ tlul_gnt_o = 1'b0;
+ tlul_rvalid_o = 1'b0;
+ tlul_rerror_o = '0;
+
+ // Enable for buffered digest register
+ digest_reg_en = 1'b0;
+
+ // Error Register
+ error_d = error_q;
+ pending_tlul_error_d = 1'b0;
+ fsm_err_o = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // State right after reset. Wait here until we get a an
+ // initialization request.
+ ResetSt: begin
+ if (init_req_i) begin
+ // If the partition does not have a digest, no initialization is necessary.
+ if (Info.sw_digest) begin
+ state_d = InitSt;
+ end else begin
+ state_d = IdleSt;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Initialization reads out the digest only in unbuffered
+ // partitions. Wait here until the OTP request has been granted.
+ // And then wait until the OTP word comes back.
+ InitSt: begin
+ otp_req_o = 1'b1;
+ if (otp_gnt_i) begin
+ state_d = InitWaitSt;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and write to digest buffer register. In
+ // case an OTP transaction fails, latch the OTP error code and
+ // jump to a terminal error state.
+ InitWaitSt: begin
+ if (otp_rvalid_i) begin
+ digest_reg_en = 1'b1;
+ if (otp_err inside {NoError, MacroEccCorrError}) begin
+ state_d = IdleSt;
+ // At this point the only error that we could have gotten are correctable ECC errors.
+ if (otp_err != NoError) begin
+ error_d = MacroEccCorrError;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for TL-UL requests coming in.
+ // Then latch address and go to readout state.
+ IdleSt: begin
+ init_done_o = 1'b1;
+ if (tlul_req_i) begin
+ error_d = NoError; // clear recoverable soft errors.
+ state_d = ReadSt;
+ tlul_gnt_o = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // If the address is out of bounds, or if the partition is
+ // locked, signal back a bus error. Note that such an error does
+ // not cause the partition to go into error state. Otherwise if
+ // these checks pass, an OTP word is requested.
+ ReadSt: begin
+ init_done_o = 1'b1;
+ // Double check the address range.
+ if (tlul_addr_in_range && mubi8_test_false_strict(access_o.read_lock)) begin
+ otp_req_o = 1'b1;
+ otp_addr_sel = DataAddrSel;
+ if (otp_gnt_i) begin
+ state_d = ReadWaitSt;
+ end
+ end else begin
+ state_d = IdleSt;
+ error_d = AccessError; // Signal this error, but do not go into terminal error state.
+ tlul_rvalid_o = 1'b1;
+ tlul_rerror_o = 2'b11; // This causes the TL-UL adapter to return a bus error.
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Wait for OTP response and release the TL-UL response. In
+ // case an OTP transaction fails, latch the OTP error code,
+ // signal a TL-Ul bus error and jump to a terminal error state.
+ ReadWaitSt: begin
+ init_done_o = 1'b1;
+ if (otp_rvalid_i) begin
+ tlul_rvalid_o = 1'b1;
+ if (otp_err inside {NoError, MacroEccCorrError}) begin
+ state_d = IdleSt;
+ // At this point the only error that we could have gotten are correctable ECC errors.
+ if (otp_err != NoError) begin
+ error_d = MacroEccCorrError;
+ end
+ end else begin
+ state_d = ErrorSt;
+ error_d = otp_err;
+ // This causes the TL-UL adapter to return a bus error.
+ tlul_rerror_o = 2'b11;
+ end
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal Error State. This locks access to the partition.
+ // Make sure the partition signals an error state if no error
+ // code has been latched so far.
+ ErrorSt: begin
+ if (error_q == NoError) begin
+ error_d = FsmStateError;
+ end
+
+ // Return bus errors if there are pending TL-UL requests.
+ if (pending_tlul_error_q) begin
+ tlul_rerror_o = 2'b11;
+ tlul_rvalid_o = 1'b1;
+ end else if (tlul_req_i) begin
+ tlul_gnt_o = 1'b1;
+ pending_tlul_error_d = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // We should never get here. If we do (e.g. via a malicious
+ // glitch), error out immediately.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of
+ // an ECC error or escalation, and lock access to the partition down.
+ // SEC_CM: PART.FSM.LOCAL_ESC
+ if (ecc_err) begin
+ state_d = ErrorSt;
+ if (state_q != ErrorSt) begin
+ error_d = CheckFailError;
+ end
+ end
+ // SEC_CM: PART.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i)) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ if (state_q != ErrorSt) begin
+ error_d = FsmStateError;
+ end
+ end
+ end
+
+ ///////////////////////////////////
+ // Signals to/from TL-UL Adapter //
+ ///////////////////////////////////
+
+ assign tlul_addr_d = tlul_addr_i;
+ // Do not forward data in case of an error.
+ assign tlul_rdata_o = (tlul_rvalid_o && tlul_rerror_o == '0) ? otp_rdata_i[31:0] : '0;
+
+ if (Info.offset == 0) begin : gen_zero_offset
+ assign tlul_addr_in_range = {1'b0, tlul_addr_q, 2'b00} < PartEnd;
+
+ end else begin : gen_nonzero_offset
+ assign tlul_addr_in_range = {tlul_addr_q, 2'b00} >= Info.offset &&
+ {1'b0, tlul_addr_q, 2'b00} < PartEnd;
+ end
+
+ // Note that OTP works on halfword (16bit) addresses, hence need to
+ // shift the addresses appropriately.
+ logic [OtpByteAddrWidth-1:0] addr_calc;
+ assign addr_calc = (otp_addr_sel == DigestAddrSel) ? DigestOffset : {tlul_addr_q, 2'b00};
+ assign otp_addr_o = addr_calc[OtpByteAddrWidth-1:OtpAddrShift];
+
+ if (OtpAddrShift > 0) begin : gen_unused
+ logic unused_bits;
+ assign unused_bits = ^addr_calc[OtpAddrShift-1:0];
+ end
+
+ // Request 32bit except in case of the digest.
+ assign otp_size_o = (otp_addr_sel == DigestAddrSel) ?
+ OtpSizeWidth'(unsigned'(ScrmblBlockWidth / OtpWidth - 1)) :
+ OtpSizeWidth'(unsigned'(32 / OtpWidth - 1));
+
+ ////////////////
+ // Digest Reg //
+ ////////////////
+
+ if (Info.sw_digest) begin : gen_ecc_reg
+ // SEC_CM: PART.DATA_REG.INTEGRITY
+ otp_ctrl_ecc_reg #(
+ .Width ( ScrmblBlockWidth ),
+ .Depth ( 1 )
+ ) u_otp_ctrl_ecc_reg (
+ .clk_i,
+ .rst_ni,
+ .wren_i ( digest_reg_en ),
+ .addr_i ( '0 ),
+ .wdata_i ( otp_rdata_i ),
+ .rdata_o ( ),
+ .data_o ( digest_o ),
+ .ecc_err_o ( ecc_err )
+ );
+ end else begin : gen_no_ecc_reg
+ logic unused_digest_reg_en;
+ logic unused_rdata;
+ assign unused_digest_reg_en = digest_reg_en;
+ assign unused_rdata = ^otp_rdata_i[32 +: 32]; // Upper word is not connected in this case.
+ assign digest_o = '0;
+ assign ecc_err = 1'b0;
+ end
+
+ ////////////////////////
+ // DAI Access Control //
+ ////////////////////////
+
+ mubi8_t init_locked;
+ assign init_locked = (~init_done_o) ? MuBi8True : MuBi8False;
+
+ // Aggregate all possible DAI write locks. The partition is also locked when uninitialized.
+ // Note that the locks are redundantly encoded values.
+ part_access_t access_pre;
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_write_lock_pre (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(init_locked, access_i.write_lock)),
+ .mubi_o(access_pre.write_lock)
+ );
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_read_lock_pre (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(init_locked, access_i.read_lock)),
+ .mubi_o(access_pre.read_lock)
+ );
+
+ // SEC_CM: PART.MEM.SW_UNWRITABLE
+ if (Info.write_lock) begin : gen_digest_write_lock
+ mubi8_t digest_locked;
+ assign digest_locked = (digest_o != '0) ? MuBi8True : MuBi8False;
+
+ // This prevents the synthesis tool from optimizing the multibit signal.
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_write_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(access_pre.write_lock, digest_locked)),
+ .mubi_o(access_o.write_lock)
+ );
+
+ `CALIPTRA_ASSERT(DigestWriteLocksPartition_A, digest_o |-> mubi8_test_true_loose(access_o.write_lock))
+ end else begin : gen_no_digest_write_lock
+ assign access_o.write_lock = access_pre.write_lock;
+ end
+
+ // SEC_CM: PART.MEM.SW_UNREADABLE
+ if (Info.read_lock) begin : gen_digest_read_lock
+ mubi8_t digest_locked;
+ assign digest_locked = (digest_o != '0) ? MuBi8True : MuBi8False;
+
+ // This prevents the synthesis tool from optimizing the multibit signal.
+ caliptra_prim_mubi8_sender #(
+ .AsyncOn(0)
+ ) u_prim_mubi8_sender_read_lock (
+ .clk_i,
+ .rst_ni,
+ .mubi_i(mubi8_and_lo(access_pre.read_lock, digest_locked)),
+ .mubi_o(access_o.read_lock)
+ );
+
+ `CALIPTRA_ASSERT(DigestReadLocksPartition_A, digest_o |-> mubi8_test_true_loose(access_o.read_lock))
+ end else begin : gen_no_digest_read_lock
+ assign access_o.read_lock = access_pre.read_lock;
+ end
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ error_q <= NoError;
+ tlul_addr_q <= '0;
+ pending_tlul_error_q <= 1'b0;
+ end else begin
+ error_q <= error_d;
+ pending_tlul_error_q <= pending_tlul_error_d;
+ if (tlul_gnt_o) begin
+ tlul_addr_q <= tlul_addr_d;
+ end
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Known assertions
+ `CALIPTRA_ASSERT_KNOWN(InitDoneKnown_A, init_done_o)
+ `CALIPTRA_ASSERT_KNOWN(ErrorKnown_A, error_o)
+ `CALIPTRA_ASSERT_KNOWN(AccessKnown_A, access_o)
+ `CALIPTRA_ASSERT_KNOWN(DigestKnown_A, digest_o)
+ `CALIPTRA_ASSERT_KNOWN(TlulGntKnown_A, tlul_gnt_o)
+ `CALIPTRA_ASSERT_KNOWN(TlulRerrorKnown_A, tlul_rerror_o)
+ `CALIPTRA_ASSERT_KNOWN(TlulRvalidKnown_A, tlul_rvalid_o)
+ `CALIPTRA_ASSERT_KNOWN(TlulRdataKnown_A, tlul_rdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpReqKnown_A, otp_req_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpCmdKnown_A, otp_cmd_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpSizeKnown_A, otp_size_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpWdataKnown_A, otp_wdata_o)
+ `CALIPTRA_ASSERT_KNOWN(OtpAddrKnown_A, otp_addr_o)
+
+ // Uninitialized partitions should always be locked, no matter what.
+ `CALIPTRA_ASSERT(InitWriteLocksPartition_A,
+ ~init_done_o
+ |->
+ mubi8_test_true_loose(access_o.write_lock))
+ `CALIPTRA_ASSERT(InitReadLocksPartition_A,
+ ~init_done_o
+ |->
+ mubi8_test_true_loose(access_o.read_lock))
+ // Incoming Lock propagation
+ `CALIPTRA_ASSERT(WriteLockPropagation_A,
+ mubi8_test_true_loose(access_i.write_lock)
+ |->
+ mubi8_test_true_loose(access_o.write_lock))
+ `CALIPTRA_ASSERT(ReadLockPropagation_A,
+ mubi8_test_true_loose(access_i.read_lock)
+ |->
+ mubi8_test_true_loose(access_o.read_lock))
+ // If the partition is read locked, the TL-UL access must error out
+ `CALIPTRA_ASSERT(TlulReadOnReadLock_A,
+ tlul_req_i && tlul_gnt_o ##1 mubi8_test_true_loose(access_o.read_lock)
+ |->
+ tlul_rerror_o > '0 && tlul_rvalid_o)
+ // ECC error in buffer regs.
+ `CALIPTRA_ASSERT(EccErrorState_A,
+ ecc_err
+ |=>
+ state_q == ErrorSt)
+ // OTP error response
+ `CALIPTRA_ASSERT(OtpErrorState_A,
+ state_q inside {InitWaitSt, ReadWaitSt} && otp_rvalid_i &&
+ !(otp_err inside {NoError, MacroEccCorrError}) && !ecc_err
+ |=>
+ state_q == ErrorSt && error_o == $past(otp_err))
+
+endmodule : otp_ctrl_part_unbuf
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_pkg.sv b/src/fuse_ctrl/rtl/otp_ctrl_pkg.sv
new file mode 100644
index 0000000..50c4158
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_pkg.sv
@@ -0,0 +1,327 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+
+package otp_ctrl_pkg;
+
+ import caliptra_prim_util_pkg::vbits;
+ import otp_ctrl_reg_pkg::*;
+
+ ////////////////////////
+ // General Parameters //
+ ////////////////////////
+
+ // Number of vendor-specific test CSR bits coming from and going to
+ // the life cycle TAP registers.
+ parameter int OtpTestCtrlWidth = 32;
+ parameter int OtpTestStatusWidth = 32;
+ parameter int OtpTestVectWidth = 8;
+
+ // Width of entropy input
+ parameter int EdnDataWidth = 64;
+
+ parameter int NumPartWidth = vbits(NumPart);
+
+ parameter int SwWindowAddrWidth = vbits(NumSwCfgWindowWords);
+
+ // Background check timer LFSR width.
+ parameter int LfsrWidth = 40;
+ // The LFSR will be reseeded once LfsrUsageThreshold
+ // values have been drawn from it.
+ parameter int LfsrUsageThreshold = 16;
+
+ // Redundantly encoded and complementary values are used to for signalling to the partition
+ // controller FSMs and the DAI whether a partition is locked or not. Any other value than
+ // "Mubi8Lo" is interpreted as "Locked" in those FSMs.
+ typedef struct packed {
+ caliptra_prim_mubi_pkg::mubi8_t read_lock;
+ caliptra_prim_mubi_pkg::mubi8_t write_lock;
+ } part_access_t;
+
+ parameter int DaiCmdWidth = 3;
+ typedef enum logic [DaiCmdWidth-1:0] {
+ DaiRead = 3'b001,
+ DaiWrite = 3'b010,
+ DaiDigest = 3'b100
+ } dai_cmd_e;
+
+ parameter int DeviceIdWidth = 256;
+ typedef logic [DeviceIdWidth-1:0] otp_device_id_t;
+
+ parameter int ManufStateWidth = 256;
+ typedef logic [ManufStateWidth-1:0] otp_manuf_state_t;
+
+ //////////////////////////////////////
+ // Typedefs for OTP Macro Interface //
+ //////////////////////////////////////
+
+ // OTP-macro specific
+ parameter int OtpWidth = 16;
+ parameter int OtpAddrWidth = OtpByteAddrWidth - $clog2(OtpWidth/8);
+ parameter int OtpDepth = 2**OtpAddrWidth;
+ parameter int OtpSizeWidth = 2; // Allows to transfer up to 4 native OTP words at once.
+ parameter int OtpErrWidth = 3;
+ parameter int OtpPwrSeqWidth = 2;
+ parameter int OtpIfWidth = 2**OtpSizeWidth*OtpWidth;
+ // Number of Byte address bits to cut off in order to get the native OTP word address.
+ parameter int OtpAddrShift = OtpByteAddrWidth - OtpAddrWidth;
+
+ typedef enum logic [OtpErrWidth-1:0] {
+ NoError = 3'h0,
+ MacroError = 3'h1,
+ MacroEccCorrError = 3'h2,
+ MacroEccUncorrError = 3'h3,
+ MacroWriteBlankError = 3'h4,
+ AccessError = 3'h5,
+ CheckFailError = 3'h6,
+ FsmStateError = 3'h7
+ } otp_err_e;
+
+ /////////////////////////////////
+ // Typedefs for OTP Scrambling //
+ /////////////////////////////////
+
+ parameter int ScrmblKeyWidth = 128;
+ parameter int ScrmblBlockWidth = 64;
+
+ parameter int NumPresentRounds = 31;
+ parameter int ScrmblBlockHalfWords = ScrmblBlockWidth / OtpWidth;
+
+ typedef enum logic [2:0] {
+ Decrypt,
+ Encrypt,
+ LoadShadow,
+ Digest,
+ DigestInit,
+ DigestFinalize
+ } otp_scrmbl_cmd_e;
+
+ ///////////////////////////////
+ // Typedefs for LC Interface //
+ ///////////////////////////////
+
+ // The tokens below are all hash post-images
+ typedef struct packed {
+ logic valid;
+ logic error;
+ // Use caliptra_ss_lc_state_t and caliptra_ss_lc_cnt_t here as very wide enumerations ( > 64 bits )
+ // are not supported for virtual interfaces by Excelium yet
+ // https://github.com/lowRISC/opentitan/issues/8884 (Cadence issue: cds_46570160)
+ // The enumeration types caliptra_ss_lc_state_e and caliptra_ss_lc_cnt_e are still ok in other circumstances
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_state_t state;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_cnt_t count;
+ // This is set to "On" if the partition containing the
+ // root secrets have been locked. In that case, the device
+ // is considered "personalized".
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t secrets_valid;
+ // This is set to "On" if the partition containing the
+ // test tokens has been locked.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t test_tokens_valid;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t test_unlock_token;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t test_exit_token;
+ // This is set to "On" if the partition containing the
+ // rma token has been locked.
+ caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t rma_token_valid;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t rma_token;
+ } otp_caliptra_ss_lc_data_t;
+
+ // Default for dangling connection.
+ // Note that we put the life cycle into
+ // TEST_UNLOCKED0 by default such that top levels without
+ // the OTP controller can still function.
+ parameter otp_caliptra_ss_lc_data_t OTP_LC_DATA_DEFAULT = '{
+ valid: 1'b1,
+ error: 1'b0,
+ state: caliptra_ss_lc_ctrl_state_pkg::LcStTestUnlocked0,
+ count: caliptra_ss_lc_ctrl_state_pkg::LcCnt1,
+ secrets_valid: caliptra_ss_lc_ctrl_pkg::Off,
+ test_tokens_valid: caliptra_ss_lc_ctrl_pkg::Off,
+ test_unlock_token: '0,
+ test_exit_token: '0,
+ rma_token_valid: caliptra_ss_lc_ctrl_pkg::Off,
+ rma_token: '0
+ };
+
+ typedef struct packed {
+ logic req;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_state_e state;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_cnt_e count;
+ } caliptra_ss_lc_otp_program_req_t;
+
+ typedef struct packed {
+ logic err;
+ logic ack;
+ } caliptra_ss_lc_otp_program_rsp_t;
+
+ // RAW unlock token hashing request.
+ typedef struct packed {
+ logic req;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t token_input;
+ } caliptra_ss_lc_otp_token_req_t;
+
+ typedef struct packed {
+ logic ack;
+ caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t hashed_token;
+ } caliptra_ss_lc_otp_token_rsp_t;
+
+ typedef struct packed {
+ logic [OtpTestCtrlWidth-1:0] ctrl;
+ } caliptra_ss_lc_otp_vendor_test_req_t;
+
+ typedef struct packed {
+ logic [OtpTestStatusWidth-1:0] status;
+ } caliptra_ss_lc_otp_vendor_test_rsp_t;
+
+ ////////////////////////////////
+ // Typedefs for Key Broadcast //
+ ////////////////////////////////
+
+ parameter int FlashKeySeedWidth = 256;
+ parameter int SramKeySeedWidth = 128;
+ parameter int KeyMgrKeyWidth = 256;
+ parameter int FlashKeyWidth = 128;
+ parameter int SramKeyWidth = 128;
+ parameter int SramNonceWidth = 128;
+ parameter int OtbnKeyWidth = 128;
+ parameter int OtbnNonceWidth = 64;
+
+ typedef logic [SramKeyWidth-1:0] sram_key_t;
+ typedef logic [SramNonceWidth-1:0] sram_nonce_t;
+ typedef logic [OtbnKeyWidth-1:0] otbn_key_t;
+ typedef logic [OtbnNonceWidth-1:0] otbn_nonce_t;
+
+ localparam int OtbnNonceSel = OtbnNonceWidth / ScrmblBlockWidth;
+ localparam int FlashNonceSel = FlashKeyWidth / ScrmblBlockWidth;
+ localparam int SramNonceSel = SramNonceWidth / ScrmblBlockWidth;
+
+ // Get maximum nonce width
+ localparam int NumNonceChunks =
+ (OtbnNonceWidth > FlashKeyWidth) ?
+ ((OtbnNonceWidth > SramNonceSel) ? OtbnNonceSel : SramNonceSel) :
+ ((FlashKeyWidth > SramNonceSel) ? FlashNonceSel : SramNonceSel);
+
+ typedef struct packed {
+ logic [KeyMgrKeyWidth-1:0] creator_root_key_share0;
+ logic creator_root_key_share0_valid;
+ logic [KeyMgrKeyWidth-1:0] creator_root_key_share1;
+ logic creator_root_key_share1_valid;
+ logic [KeyMgrKeyWidth-1:0] creator_seed;
+ logic creator_seed_valid;
+ logic [KeyMgrKeyWidth-1:0] owner_seed;
+ logic owner_seed_valid;
+ } otp_keymgr_key_t;
+
+ parameter otp_keymgr_key_t OTP_KEYMGR_KEY_DEFAULT = '{
+ creator_root_key_share0: 256'hefb7ea7ee90093cf4affd9aaa2d6c0ec446cfdf5f2d5a0bfd7e2d93edc63a102,
+ creator_root_key_share0_valid: 1'b1,
+ creator_root_key_share1: 256'h56d24a00181de99e0f690b447a8dde2a1ffb8bc306707107aa6e2410f15cfc37,
+ creator_root_key_share1_valid: 1'b1,
+ creator_seed: 256'hc7c50b38655cc87f821e5b07fed85d2c07e222a9e00bef308b3eccba0ba406fa,
+ creator_seed_valid: 1'b1,
+ owner_seed: 256'hf5052c0f14782d8b066be9f49c0b2000d3643ff3723ea7db972f69cd3e2e3e68,
+ owner_seed_valid: 1'b1
+ };
+
+ typedef struct packed {
+ logic data_req; // Requests static key for data scrambling.
+ logic addr_req; // Requests static key for address scrambling.
+ } flash_otp_key_req_t;
+
+ typedef struct packed {
+ logic req; // Requests ephemeral scrambling key and nonce.
+ } sram_otp_key_req_t;
+
+ typedef struct packed {
+ logic req; // Requests ephemeral scrambling key and nonce.
+ } otbn_otp_key_req_t;
+
+ typedef struct packed {
+ logic data_ack; // Ack for data key.
+ logic addr_ack; // Ack for address key.
+ logic [FlashKeyWidth-1:0] key; // 128bit static scrambling key.
+ logic [FlashKeyWidth-1:0] rand_key;
+ logic seed_valid; // Set to 1 if the key seed has been provisioned and is
+ // valid.
+ } flash_otp_key_rsp_t;
+
+ // Default for dangling connection
+ parameter flash_otp_key_rsp_t FLASH_OTP_KEY_RSP_DEFAULT = '{
+ data_ack: 1'b1,
+ addr_ack: 1'b1,
+ key: '0,
+ rand_key: '0,
+ seed_valid: 1'b1
+ };
+
+ typedef struct packed {
+ logic ack; // Ack for key.
+ sram_key_t key; // 128bit ephemeral scrambling key.
+ sram_nonce_t nonce; // 128bit nonce.
+ logic seed_valid; // Set to 1 if the key seed has been provisioned and is valid.
+ } sram_otp_key_rsp_t;
+
+ // Default for dangling connection
+ parameter sram_otp_key_rsp_t SRAM_OTP_KEY_RSP_DEFAULT = '{
+ ack: 1'b1,
+ key: '0,
+ nonce: '0,
+ seed_valid: 1'b1
+ };
+
+ typedef struct packed {
+ logic ack; // Ack for key.
+ otbn_key_t key; // 128bit ephemeral scrambling key.
+ otbn_nonce_t nonce; // 256bit nonce.
+ logic seed_valid; // Set to 1 if the key seed has been provisioned and is valid.
+ } otbn_otp_key_rsp_t;
+
+ ////////////////////////////////
+ // Power/Reset Ctrl Interface //
+ ////////////////////////////////
+
+ typedef struct packed {
+ logic init;
+ } pwr_otp_init_req_t;
+
+ typedef struct packed {
+ logic done;
+ } pwr_otp_init_rsp_t;
+
+ typedef struct packed {
+ logic idle;
+ } otp_pwr_state_t;
+
+
+ ///////////////////
+ // AST Interface //
+ ///////////////////
+
+ typedef struct packed {
+ logic [OtpPwrSeqWidth-1:0] pwr_seq;
+ } otp_ast_req_t;
+
+ typedef struct packed {
+ logic [OtpPwrSeqWidth-1:0] pwr_seq_h;
+ } otp_ast_rsp_t;
+
+ ///////////////////////////////////////////
+ // Defaults for random netlist constants //
+ ///////////////////////////////////////////
+
+ // These LFSR parameters have been generated with
+ // $ util/design/gen-lfsr-seed.py --width 40 --seed 4247488366
+ typedef logic [LfsrWidth-1:0] lfsr_seed_t;
+ typedef logic [LfsrWidth-1:0][$clog2(LfsrWidth)-1:0] lfsr_perm_t;
+ localparam lfsr_seed_t RndCnstLfsrSeedDefault = 40'h453d28ea98;
+ localparam lfsr_perm_t RndCnstLfsrPermDefault =
+ 240'h4235171482c225f79289b32181a0163a760355d3447063d16661e44c12a5;
+
+ typedef struct packed {
+ sram_key_t key;
+ sram_nonce_t nonce;
+ } scrmbl_key_init_t;
+ localparam scrmbl_key_init_t RndCnstScrmblKeyInitDefault =
+ 256'hcebeb96ffe0eced795f8b2cfe23c1e519e4fa08047a6bcfb811b04f0a479006e;
+
+endpackage : otp_ctrl_pkg
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_prim_reg_top.sv b/src/fuse_ctrl/rtl/otp_ctrl_prim_reg_top.sv
new file mode 100644
index 0000000..6cf2915
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_prim_reg_top.sv
@@ -0,0 +1,1467 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Top module auto-generated by `reggen`
+
+`include "caliptra_prim_assert.sv"
+
+module otp_ctrl_prim_reg_top (
+ input clk_i,
+ input rst_ni,
+ input tlul_pkg::tl_h2d_t tl_i,
+ output tlul_pkg::tl_d2h_t tl_o,
+ // To HW
+ output otp_ctrl_reg_pkg::otp_ctrl_prim_reg2hw_t reg2hw, // Write
+ input otp_ctrl_reg_pkg::otp_ctrl_prim_hw2reg_t hw2reg, // Read
+
+ // Integrity check errors
+ output logic intg_err_o
+);
+
+ import otp_ctrl_reg_pkg::* ;
+
+ localparam int AW = 5;
+ localparam int DW = 32;
+ localparam int DBW = DW/8; // Byte Width
+
+ // register signals
+ logic reg_we;
+ logic reg_re;
+ logic [AW-1:0] reg_addr;
+ logic [DW-1:0] reg_wdata;
+ logic [DBW-1:0] reg_be;
+ logic [DW-1:0] reg_rdata;
+ logic reg_error;
+
+ logic addrmiss, wr_err;
+
+ logic [DW-1:0] reg_rdata_next;
+ logic reg_busy;
+
+ tlul_pkg::tl_h2d_t tl_reg_h2d;
+ tlul_pkg::tl_d2h_t tl_reg_d2h;
+
+
+ // incoming payload check
+ logic intg_err;
+ tlul_cmd_intg_chk u_chk (
+ .tl_i(tl_i),
+ .err_o(intg_err)
+ );
+
+ // also check for spurious write enables
+ logic reg_we_err;
+ logic [7:0] reg_we_check;
+ caliptra_prim_reg_we_check #(
+ .OneHotWidth(8)
+ ) u_caliptra_prim_reg_we_check (
+ .clk_i(clk_i),
+ .rst_ni(rst_ni),
+ .oh_i (reg_we_check),
+ .en_i (reg_we && !addrmiss),
+ .err_o (reg_we_err)
+ );
+
+ logic err_q;
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ err_q <= '0;
+ end else if (intg_err || reg_we_err) begin
+ err_q <= 1'b1;
+ end
+ end
+
+ // integrity error output is permanent and should be used for alert generation
+ // register errors are transactional
+ assign intg_err_o = err_q | intg_err | reg_we_err;
+
+ // outgoing integrity generation
+ tlul_pkg::tl_d2h_t tl_o_pre;
+ tlul_rsp_intg_gen #(
+ .EnableRspIntgGen(1),
+ .EnableDataIntgGen(1)
+ ) u_rsp_intg_gen (
+ .tl_i(tl_o_pre),
+ .tl_o(tl_o)
+ );
+
+ assign tl_reg_h2d = tl_i;
+ assign tl_o_pre = tl_reg_d2h;
+
+ tlul_adapter_reg #(
+ .RegAw(AW),
+ .RegDw(DW),
+ .EnableDataIntgGen(0)
+ ) u_reg_if (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ .tl_i (tl_reg_h2d),
+ .tl_o (tl_reg_d2h),
+
+ .en_ifetch_i(caliptra_prim_mubi_pkg::MuBi4False),
+ .intg_error_o(),
+
+ .we_o (reg_we),
+ .re_o (reg_re),
+ .addr_o (reg_addr),
+ .wdata_o (reg_wdata),
+ .be_o (reg_be),
+ .busy_i (reg_busy),
+ .rdata_i (reg_rdata),
+ .error_i (reg_error)
+ );
+
+ // cdc oversampling signals
+
+ assign reg_rdata = reg_rdata_next ;
+ assign reg_error = addrmiss | wr_err | intg_err;
+
+ // Define SW related signals
+ // Format: __{wd|we|qs}
+ // or _{wd|we|qs} if field == 1 or 0
+ logic csr0_we;
+ logic csr0_field0_qs;
+ logic csr0_field0_wd;
+ logic csr0_field1_qs;
+ logic csr0_field1_wd;
+ logic csr0_field2_qs;
+ logic csr0_field2_wd;
+ logic [9:0] csr0_field3_qs;
+ logic [9:0] csr0_field3_wd;
+ logic [10:0] csr0_field4_qs;
+ logic [10:0] csr0_field4_wd;
+ logic csr1_we;
+ logic [6:0] csr1_field0_qs;
+ logic [6:0] csr1_field0_wd;
+ logic csr1_field1_qs;
+ logic csr1_field1_wd;
+ logic [6:0] csr1_field2_qs;
+ logic [6:0] csr1_field2_wd;
+ logic csr1_field3_qs;
+ logic csr1_field3_wd;
+ logic [15:0] csr1_field4_qs;
+ logic [15:0] csr1_field4_wd;
+ logic csr2_we;
+ logic csr2_qs;
+ logic csr2_wd;
+ logic csr3_we;
+ logic [2:0] csr3_field0_qs;
+ logic [2:0] csr3_field0_wd;
+ logic [9:0] csr3_field1_qs;
+ logic [9:0] csr3_field1_wd;
+ logic csr3_field2_qs;
+ logic csr3_field2_wd;
+ logic csr3_field3_qs;
+ logic csr3_field4_qs;
+ logic csr3_field5_qs;
+ logic csr3_field6_qs;
+ logic csr3_field7_qs;
+ logic csr3_field8_qs;
+ logic csr4_we;
+ logic [9:0] csr4_field0_qs;
+ logic [9:0] csr4_field0_wd;
+ logic csr4_field1_qs;
+ logic csr4_field1_wd;
+ logic csr4_field2_qs;
+ logic csr4_field2_wd;
+ logic csr4_field3_qs;
+ logic csr4_field3_wd;
+ logic csr5_we;
+ logic [5:0] csr5_field0_qs;
+ logic [5:0] csr5_field0_wd;
+ logic [1:0] csr5_field1_qs;
+ logic [1:0] csr5_field1_wd;
+ logic csr5_field2_qs;
+ logic [2:0] csr5_field3_qs;
+ logic csr5_field4_qs;
+ logic csr5_field5_qs;
+ logic [15:0] csr5_field6_qs;
+ logic [15:0] csr5_field6_wd;
+ logic csr6_we;
+ logic [9:0] csr6_field0_qs;
+ logic [9:0] csr6_field0_wd;
+ logic csr6_field1_qs;
+ logic csr6_field1_wd;
+ logic csr6_field2_qs;
+ logic csr6_field2_wd;
+ logic [15:0] csr6_field3_qs;
+ logic [15:0] csr6_field3_wd;
+ logic [5:0] csr7_field0_qs;
+ logic [2:0] csr7_field1_qs;
+ logic csr7_field2_qs;
+ logic csr7_field3_qs;
+
+ // Register instances
+ // R[csr0]: V(False)
+ // F[field0]: 0:0
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr0_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr0_we),
+ .wd (csr0_field0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr0.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr0_field0_qs)
+ );
+
+ // F[field1]: 1:1
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr0_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr0_we),
+ .wd (csr0_field1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr0.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr0_field1_qs)
+ );
+
+ // F[field2]: 2:2
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr0_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr0_we),
+ .wd (csr0_field2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr0.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr0_field2_qs)
+ );
+
+ // F[field3]: 13:4
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_csr0_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr0_we),
+ .wd (csr0_field3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr0.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr0_field3_qs)
+ );
+
+ // F[field4]: 26:16
+ caliptra_prim_subreg #(
+ .DW (11),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (11'h0),
+ .Mubi (1'b0)
+ ) u_csr0_field4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr0_we),
+ .wd (csr0_field4_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr0.field4.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr0_field4_qs)
+ );
+
+
+ // R[csr1]: V(False)
+ // F[field0]: 6:0
+ caliptra_prim_subreg #(
+ .DW (7),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (7'h0),
+ .Mubi (1'b0)
+ ) u_csr1_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr1_we),
+ .wd (csr1_field0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr1.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr1_field0_qs)
+ );
+
+ // F[field1]: 7:7
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr1_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr1_we),
+ .wd (csr1_field1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr1.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr1_field1_qs)
+ );
+
+ // F[field2]: 14:8
+ caliptra_prim_subreg #(
+ .DW (7),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (7'h0),
+ .Mubi (1'b0)
+ ) u_csr1_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr1_we),
+ .wd (csr1_field2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr1.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr1_field2_qs)
+ );
+
+ // F[field3]: 15:15
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr1_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr1_we),
+ .wd (csr1_field3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr1.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr1_field3_qs)
+ );
+
+ // F[field4]: 31:16
+ caliptra_prim_subreg #(
+ .DW (16),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (16'h0),
+ .Mubi (1'b0)
+ ) u_csr1_field4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr1_we),
+ .wd (csr1_field4_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr1.field4.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr1_field4_qs)
+ );
+
+
+ // R[csr2]: V(False)
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr2_we),
+ .wd (csr2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr2_qs)
+ );
+
+
+ // R[csr3]: V(False)
+ // F[field0]: 2:0
+ caliptra_prim_subreg #(
+ .DW (3),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (3'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr3_we),
+ .wd (csr3_field0_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field0.de),
+ .d (hw2reg.csr3.field0.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field0_qs)
+ );
+
+ // F[field1]: 13:4
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr3_we),
+ .wd (csr3_field1_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field1.de),
+ .d (hw2reg.csr3.field1.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field1_qs)
+ );
+
+ // F[field2]: 16:16
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessW1C),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr3_we),
+ .wd (csr3_field2_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field2.de),
+ .d (hw2reg.csr3.field2.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field2_qs)
+ );
+
+ // F[field3]: 17:17
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field3.de),
+ .d (hw2reg.csr3.field3.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field3_qs)
+ );
+
+ // F[field4]: 18:18
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field4.de),
+ .d (hw2reg.csr3.field4.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field4.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field4_qs)
+ );
+
+ // F[field5]: 19:19
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field5 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field5.de),
+ .d (hw2reg.csr3.field5.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field5.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field5_qs)
+ );
+
+ // F[field6]: 20:20
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field6 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field6.de),
+ .d (hw2reg.csr3.field6.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field6.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field6_qs)
+ );
+
+ // F[field7]: 21:21
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field7 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field7.de),
+ .d (hw2reg.csr3.field7.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field7.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field7_qs)
+ );
+
+ // F[field8]: 22:22
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr3_field8 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr3.field8.de),
+ .d (hw2reg.csr3.field8.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr3.field8.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr3_field8_qs)
+ );
+
+
+ // R[csr4]: V(False)
+ // F[field0]: 9:0
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_csr4_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr4_we),
+ .wd (csr4_field0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr4.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr4_field0_qs)
+ );
+
+ // F[field1]: 12:12
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr4_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr4_we),
+ .wd (csr4_field1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr4.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr4_field1_qs)
+ );
+
+ // F[field2]: 13:13
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr4_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr4_we),
+ .wd (csr4_field2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr4.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr4_field2_qs)
+ );
+
+ // F[field3]: 14:14
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr4_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr4_we),
+ .wd (csr4_field3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr4.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr4_field3_qs)
+ );
+
+
+ // R[csr5]: V(False)
+ // F[field0]: 5:0
+ caliptra_prim_subreg #(
+ .DW (6),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (6'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr5_we),
+ .wd (csr5_field0_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field0.de),
+ .d (hw2reg.csr5.field0.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field0_qs)
+ );
+
+ // F[field1]: 7:6
+ caliptra_prim_subreg #(
+ .DW (2),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (2'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr5_we),
+ .wd (csr5_field1_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field1.de),
+ .d (hw2reg.csr5.field1.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field1_qs)
+ );
+
+ // F[field2]: 8:8
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field2.de),
+ .d (hw2reg.csr5.field2.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field2_qs)
+ );
+
+ // F[field3]: 11:9
+ caliptra_prim_subreg #(
+ .DW (3),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (3'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field3.de),
+ .d (hw2reg.csr5.field3.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field3_qs)
+ );
+
+ // F[field4]: 12:12
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field4 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field4.de),
+ .d (hw2reg.csr5.field4.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field4.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field4_qs)
+ );
+
+ // F[field5]: 13:13
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field5 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field5.de),
+ .d (hw2reg.csr5.field5.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field5.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field5_qs)
+ );
+
+ // F[field6]: 31:16
+ caliptra_prim_subreg #(
+ .DW (16),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (16'h0),
+ .Mubi (1'b0)
+ ) u_csr5_field6 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr5_we),
+ .wd (csr5_field6_wd),
+
+ // from internal hardware
+ .de (hw2reg.csr5.field6.de),
+ .d (hw2reg.csr5.field6.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr5.field6.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr5_field6_qs)
+ );
+
+
+ // R[csr6]: V(False)
+ // F[field0]: 9:0
+ caliptra_prim_subreg #(
+ .DW (10),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (10'h0),
+ .Mubi (1'b0)
+ ) u_csr6_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr6_we),
+ .wd (csr6_field0_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr6.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr6_field0_qs)
+ );
+
+ // F[field1]: 11:11
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr6_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr6_we),
+ .wd (csr6_field1_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr6.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr6_field1_qs)
+ );
+
+ // F[field2]: 12:12
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr6_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr6_we),
+ .wd (csr6_field2_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr6.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr6_field2_qs)
+ );
+
+ // F[field3]: 31:16
+ caliptra_prim_subreg #(
+ .DW (16),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRW),
+ .RESVAL (16'h0),
+ .Mubi (1'b0)
+ ) u_csr6_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (csr6_we),
+ .wd (csr6_field3_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr6.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr6_field3_qs)
+ );
+
+
+ // R[csr7]: V(False)
+ // F[field0]: 5:0
+ caliptra_prim_subreg #(
+ .DW (6),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (6'h0),
+ .Mubi (1'b0)
+ ) u_csr7_field0 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr7.field0.de),
+ .d (hw2reg.csr7.field0.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr7.field0.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr7_field0_qs)
+ );
+
+ // F[field1]: 10:8
+ caliptra_prim_subreg #(
+ .DW (3),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (3'h0),
+ .Mubi (1'b0)
+ ) u_csr7_field1 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr7.field1.de),
+ .d (hw2reg.csr7.field1.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr7.field1.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr7_field1_qs)
+ );
+
+ // F[field2]: 14:14
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr7_field2 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr7.field2.de),
+ .d (hw2reg.csr7.field2.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr7.field2.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr7_field2_qs)
+ );
+
+ // F[field3]: 15:15
+ caliptra_prim_subreg #(
+ .DW (1),
+ .SwAccess(caliptra_prim_subreg_pkg::SwAccessRO),
+ .RESVAL (1'h0),
+ .Mubi (1'b0)
+ ) u_csr7_field3 (
+ .clk_i (clk_i),
+ .rst_ni (rst_ni),
+
+ // from register interface
+ .we (1'b0),
+ .wd ('0),
+
+ // from internal hardware
+ .de (hw2reg.csr7.field3.de),
+ .d (hw2reg.csr7.field3.d),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.csr7.field3.q),
+ .ds (),
+
+ // to register interface (read)
+ .qs (csr7_field3_qs)
+ );
+
+
+
+ logic [7:0] addr_hit;
+ always_comb begin
+ addr_hit = '0;
+ addr_hit[0] = (reg_addr == OTP_CTRL_CSR0_OFFSET);
+ addr_hit[1] = (reg_addr == OTP_CTRL_CSR1_OFFSET);
+ addr_hit[2] = (reg_addr == OTP_CTRL_CSR2_OFFSET);
+ addr_hit[3] = (reg_addr == OTP_CTRL_CSR3_OFFSET);
+ addr_hit[4] = (reg_addr == OTP_CTRL_CSR4_OFFSET);
+ addr_hit[5] = (reg_addr == OTP_CTRL_CSR5_OFFSET);
+ addr_hit[6] = (reg_addr == OTP_CTRL_CSR6_OFFSET);
+ addr_hit[7] = (reg_addr == OTP_CTRL_CSR7_OFFSET);
+ end
+
+ assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
+
+ // Check sub-word write is permitted
+ always_comb begin
+ wr_err = (reg_we &
+ ((addr_hit[0] & (|(OTP_CTRL_PRIM_PERMIT[0] & ~reg_be))) |
+ (addr_hit[1] & (|(OTP_CTRL_PRIM_PERMIT[1] & ~reg_be))) |
+ (addr_hit[2] & (|(OTP_CTRL_PRIM_PERMIT[2] & ~reg_be))) |
+ (addr_hit[3] & (|(OTP_CTRL_PRIM_PERMIT[3] & ~reg_be))) |
+ (addr_hit[4] & (|(OTP_CTRL_PRIM_PERMIT[4] & ~reg_be))) |
+ (addr_hit[5] & (|(OTP_CTRL_PRIM_PERMIT[5] & ~reg_be))) |
+ (addr_hit[6] & (|(OTP_CTRL_PRIM_PERMIT[6] & ~reg_be))) |
+ (addr_hit[7] & (|(OTP_CTRL_PRIM_PERMIT[7] & ~reg_be)))));
+ end
+
+ // Generate write-enables
+ assign csr0_we = addr_hit[0] & reg_we & !reg_error;
+
+ assign csr0_field0_wd = reg_wdata[0];
+
+ assign csr0_field1_wd = reg_wdata[1];
+
+ assign csr0_field2_wd = reg_wdata[2];
+
+ assign csr0_field3_wd = reg_wdata[13:4];
+
+ assign csr0_field4_wd = reg_wdata[26:16];
+ assign csr1_we = addr_hit[1] & reg_we & !reg_error;
+
+ assign csr1_field0_wd = reg_wdata[6:0];
+
+ assign csr1_field1_wd = reg_wdata[7];
+
+ assign csr1_field2_wd = reg_wdata[14:8];
+
+ assign csr1_field3_wd = reg_wdata[15];
+
+ assign csr1_field4_wd = reg_wdata[31:16];
+ assign csr2_we = addr_hit[2] & reg_we & !reg_error;
+
+ assign csr2_wd = reg_wdata[0];
+ assign csr3_we = addr_hit[3] & reg_we & !reg_error;
+
+ assign csr3_field0_wd = reg_wdata[2:0];
+
+ assign csr3_field1_wd = reg_wdata[13:4];
+
+ assign csr3_field2_wd = reg_wdata[16];
+ assign csr4_we = addr_hit[4] & reg_we & !reg_error;
+
+ assign csr4_field0_wd = reg_wdata[9:0];
+
+ assign csr4_field1_wd = reg_wdata[12];
+
+ assign csr4_field2_wd = reg_wdata[13];
+
+ assign csr4_field3_wd = reg_wdata[14];
+ assign csr5_we = addr_hit[5] & reg_we & !reg_error;
+
+ assign csr5_field0_wd = reg_wdata[5:0];
+
+ assign csr5_field1_wd = reg_wdata[7:6];
+
+ assign csr5_field6_wd = reg_wdata[31:16];
+ assign csr6_we = addr_hit[6] & reg_we & !reg_error;
+
+ assign csr6_field0_wd = reg_wdata[9:0];
+
+ assign csr6_field1_wd = reg_wdata[11];
+
+ assign csr6_field2_wd = reg_wdata[12];
+
+ assign csr6_field3_wd = reg_wdata[31:16];
+
+ // Assign write-enables to checker logic vector.
+ always_comb begin
+ reg_we_check = '0;
+ reg_we_check[0] = csr0_we;
+ reg_we_check[1] = csr1_we;
+ reg_we_check[2] = csr2_we;
+ reg_we_check[3] = csr3_we;
+ reg_we_check[4] = csr4_we;
+ reg_we_check[5] = csr5_we;
+ reg_we_check[6] = csr6_we;
+ reg_we_check[7] = 1'b0;
+ end
+
+ // Read data return
+ always_comb begin
+ reg_rdata_next = '0;
+ unique case (1'b1)
+ addr_hit[0]: begin
+ reg_rdata_next[0] = csr0_field0_qs;
+ reg_rdata_next[1] = csr0_field1_qs;
+ reg_rdata_next[2] = csr0_field2_qs;
+ reg_rdata_next[13:4] = csr0_field3_qs;
+ reg_rdata_next[26:16] = csr0_field4_qs;
+ end
+
+ addr_hit[1]: begin
+ reg_rdata_next[6:0] = csr1_field0_qs;
+ reg_rdata_next[7] = csr1_field1_qs;
+ reg_rdata_next[14:8] = csr1_field2_qs;
+ reg_rdata_next[15] = csr1_field3_qs;
+ reg_rdata_next[31:16] = csr1_field4_qs;
+ end
+
+ addr_hit[2]: begin
+ reg_rdata_next[0] = csr2_qs;
+ end
+
+ addr_hit[3]: begin
+ reg_rdata_next[2:0] = csr3_field0_qs;
+ reg_rdata_next[13:4] = csr3_field1_qs;
+ reg_rdata_next[16] = csr3_field2_qs;
+ reg_rdata_next[17] = csr3_field3_qs;
+ reg_rdata_next[18] = csr3_field4_qs;
+ reg_rdata_next[19] = csr3_field5_qs;
+ reg_rdata_next[20] = csr3_field6_qs;
+ reg_rdata_next[21] = csr3_field7_qs;
+ reg_rdata_next[22] = csr3_field8_qs;
+ end
+
+ addr_hit[4]: begin
+ reg_rdata_next[9:0] = csr4_field0_qs;
+ reg_rdata_next[12] = csr4_field1_qs;
+ reg_rdata_next[13] = csr4_field2_qs;
+ reg_rdata_next[14] = csr4_field3_qs;
+ end
+
+ addr_hit[5]: begin
+ reg_rdata_next[5:0] = csr5_field0_qs;
+ reg_rdata_next[7:6] = csr5_field1_qs;
+ reg_rdata_next[8] = csr5_field2_qs;
+ reg_rdata_next[11:9] = csr5_field3_qs;
+ reg_rdata_next[12] = csr5_field4_qs;
+ reg_rdata_next[13] = csr5_field5_qs;
+ reg_rdata_next[31:16] = csr5_field6_qs;
+ end
+
+ addr_hit[6]: begin
+ reg_rdata_next[9:0] = csr6_field0_qs;
+ reg_rdata_next[11] = csr6_field1_qs;
+ reg_rdata_next[12] = csr6_field2_qs;
+ reg_rdata_next[31:16] = csr6_field3_qs;
+ end
+
+ addr_hit[7]: begin
+ reg_rdata_next[5:0] = csr7_field0_qs;
+ reg_rdata_next[10:8] = csr7_field1_qs;
+ reg_rdata_next[14] = csr7_field2_qs;
+ reg_rdata_next[15] = csr7_field3_qs;
+ end
+
+ default: begin
+ reg_rdata_next = '1;
+ end
+ endcase
+ end
+
+ // shadow busy
+ logic shadow_busy;
+ assign shadow_busy = 1'b0;
+
+ // register busy
+ assign reg_busy = shadow_busy;
+
+ // Unused signal tieoff
+
+ // wdata / byte enable are not always fully used
+ // add a blanket unused statement to handle lint waivers
+ logic unused_wdata;
+ logic unused_be;
+ assign unused_wdata = ^reg_wdata;
+ assign unused_be = ^reg_be;
+
+ // Assertions for Register Interface
+ `CALIPTRA_ASSERT_PULSE(wePulse, reg_we, clk_i, !rst_ni)
+ `CALIPTRA_ASSERT_PULSE(rePulse, reg_re, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(reAfterRv, $rose(reg_re || reg_we) |=> tl_o_pre.d_valid, clk_i, !rst_ni)
+
+ `CALIPTRA_ASSERT(en2addrHit, (reg_we || reg_re) |-> $onehot0(addr_hit), clk_i, !rst_ni)
+
+ // this is formulated as an assumption such that the FPV testbenches do disprove this
+ // property by mistake
+ //`ASSUME(reqParity, tl_reg_h2d.a_valid |-> tl_reg_h2d.a_user.chk_en == tlul_pkg::CheckDis)
+
+endmodule
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_reg_pkg.sv b/src/fuse_ctrl/rtl/otp_ctrl_reg_pkg.sv
new file mode 100644
index 0000000..f03c323
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_reg_pkg.sv
@@ -0,0 +1,1161 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+//
+// Register Package auto-generated by `reggen` containing data structure
+
+package otp_ctrl_reg_pkg;
+
+ // Param list
+ parameter int NumSramKeyReqSlots = 4;
+ parameter int OtpByteAddrWidth = 11;
+ parameter int NumErrorEntries = 13;
+ parameter int NumDaiWords = 2;
+ parameter int NumDigestWords = 2;
+ parameter int NumSwCfgWindowWords = 512;
+ parameter int NumPart = 11;
+ parameter int NumPartUnbuf = 5;
+ parameter int NumPartBuf = 6;
+ parameter int VendorTestOffset = 0;
+ parameter int VendorTestSize = 64;
+ parameter int ScratchOffset = 0;
+ parameter int ScratchSize = 56;
+ parameter int VendorTestDigestOffset = 56;
+ parameter int VendorTestDigestSize = 8;
+ parameter int CreatorSwCfgOffset = 64;
+ parameter int CreatorSwCfgSize = 368;
+ parameter int CreatorSwCfgAstCfgOffset = 64;
+ parameter int CreatorSwCfgAstCfgSize = 156;
+ parameter int CreatorSwCfgAstInitEnOffset = 220;
+ parameter int CreatorSwCfgAstInitEnSize = 4;
+ parameter int CreatorSwCfgRomExtSkuOffset = 224;
+ parameter int CreatorSwCfgRomExtSkuSize = 4;
+ parameter int CreatorSwCfgSigverifySpxEnOffset = 228;
+ parameter int CreatorSwCfgSigverifySpxEnSize = 4;
+ parameter int CreatorSwCfgFlashDataDefaultCfgOffset = 232;
+ parameter int CreatorSwCfgFlashDataDefaultCfgSize = 4;
+ parameter int CreatorSwCfgFlashInfoBootDataCfgOffset = 236;
+ parameter int CreatorSwCfgFlashInfoBootDataCfgSize = 4;
+ parameter int CreatorSwCfgFlashHwInfoCfgOverrideOffset = 240;
+ parameter int CreatorSwCfgFlashHwInfoCfgOverrideSize = 4;
+ parameter int CreatorSwCfgRngEnOffset = 244;
+ parameter int CreatorSwCfgRngEnSize = 4;
+ parameter int CreatorSwCfgJitterEnOffset = 248;
+ parameter int CreatorSwCfgJitterEnSize = 4;
+ parameter int CreatorSwCfgRetRamResetMaskOffset = 252;
+ parameter int CreatorSwCfgRetRamResetMaskSize = 4;
+ parameter int CreatorSwCfgManufStateOffset = 256;
+ parameter int CreatorSwCfgManufStateSize = 4;
+ parameter int CreatorSwCfgRomExecEnOffset = 260;
+ parameter int CreatorSwCfgRomExecEnSize = 4;
+ parameter int CreatorSwCfgCpuctrlOffset = 264;
+ parameter int CreatorSwCfgCpuctrlSize = 4;
+ parameter int CreatorSwCfgMinSecVerRomExtOffset = 268;
+ parameter int CreatorSwCfgMinSecVerRomExtSize = 4;
+ parameter int CreatorSwCfgMinSecVerBl0Offset = 272;
+ parameter int CreatorSwCfgMinSecVerBl0Size = 4;
+ parameter int CreatorSwCfgDefaultBootDataInProdEnOffset = 276;
+ parameter int CreatorSwCfgDefaultBootDataInProdEnSize = 4;
+ parameter int CreatorSwCfgRmaSpinEnOffset = 280;
+ parameter int CreatorSwCfgRmaSpinEnSize = 4;
+ parameter int CreatorSwCfgRmaSpinCyclesOffset = 284;
+ parameter int CreatorSwCfgRmaSpinCyclesSize = 4;
+ parameter int CreatorSwCfgRngRepcntThresholdsOffset = 288;
+ parameter int CreatorSwCfgRngRepcntThresholdsSize = 4;
+ parameter int CreatorSwCfgRngRepcntsThresholdsOffset = 292;
+ parameter int CreatorSwCfgRngRepcntsThresholdsSize = 4;
+ parameter int CreatorSwCfgRngAdaptpHiThresholdsOffset = 296;
+ parameter int CreatorSwCfgRngAdaptpHiThresholdsSize = 4;
+ parameter int CreatorSwCfgRngAdaptpLoThresholdsOffset = 300;
+ parameter int CreatorSwCfgRngAdaptpLoThresholdsSize = 4;
+ parameter int CreatorSwCfgRngBucketThresholdsOffset = 304;
+ parameter int CreatorSwCfgRngBucketThresholdsSize = 4;
+ parameter int CreatorSwCfgRngMarkovHiThresholdsOffset = 308;
+ parameter int CreatorSwCfgRngMarkovHiThresholdsSize = 4;
+ parameter int CreatorSwCfgRngMarkovLoThresholdsOffset = 312;
+ parameter int CreatorSwCfgRngMarkovLoThresholdsSize = 4;
+ parameter int CreatorSwCfgRngExthtHiThresholdsOffset = 316;
+ parameter int CreatorSwCfgRngExthtHiThresholdsSize = 4;
+ parameter int CreatorSwCfgRngExthtLoThresholdsOffset = 320;
+ parameter int CreatorSwCfgRngExthtLoThresholdsSize = 4;
+ parameter int CreatorSwCfgRngAlertThresholdOffset = 324;
+ parameter int CreatorSwCfgRngAlertThresholdSize = 4;
+ parameter int CreatorSwCfgRngHealthConfigDigestOffset = 328;
+ parameter int CreatorSwCfgRngHealthConfigDigestSize = 4;
+ parameter int CreatorSwCfgSramKeyRenewEnOffset = 332;
+ parameter int CreatorSwCfgSramKeyRenewEnSize = 4;
+ parameter int CreatorSwCfgImmutableRomExtEnOffset = 336;
+ parameter int CreatorSwCfgImmutableRomExtEnSize = 4;
+ parameter int CreatorSwCfgImmutableRomExtStartOffsetOffset = 340;
+ parameter int CreatorSwCfgImmutableRomExtStartOffsetSize = 4;
+ parameter int CreatorSwCfgImmutableRomExtLengthOffset = 344;
+ parameter int CreatorSwCfgImmutableRomExtLengthSize = 4;
+ parameter int CreatorSwCfgImmutableRomExtSha256HashOffset = 348;
+ parameter int CreatorSwCfgImmutableRomExtSha256HashSize = 32;
+ parameter int CreatorSwCfgReservedOffset = 380;
+ parameter int CreatorSwCfgReservedSize = 32;
+ parameter int CreatorSwCfgDigestOffset = 424;
+ parameter int CreatorSwCfgDigestSize = 8;
+ parameter int OwnerSwCfgOffset = 432;
+ parameter int OwnerSwCfgSize = 712;
+ parameter int OwnerSwCfgRomErrorReportingOffset = 432;
+ parameter int OwnerSwCfgRomErrorReportingSize = 4;
+ parameter int OwnerSwCfgRomBootstrapDisOffset = 436;
+ parameter int OwnerSwCfgRomBootstrapDisSize = 4;
+ parameter int OwnerSwCfgRomAlertClassEnOffset = 440;
+ parameter int OwnerSwCfgRomAlertClassEnSize = 4;
+ parameter int OwnerSwCfgRomAlertEscalationOffset = 444;
+ parameter int OwnerSwCfgRomAlertEscalationSize = 4;
+ parameter int OwnerSwCfgRomAlertClassificationOffset = 448;
+ parameter int OwnerSwCfgRomAlertClassificationSize = 320;
+ parameter int OwnerSwCfgRomLocalAlertClassificationOffset = 768;
+ parameter int OwnerSwCfgRomLocalAlertClassificationSize = 64;
+ parameter int OwnerSwCfgRomAlertAccumThreshOffset = 832;
+ parameter int OwnerSwCfgRomAlertAccumThreshSize = 16;
+ parameter int OwnerSwCfgRomAlertTimeoutCyclesOffset = 848;
+ parameter int OwnerSwCfgRomAlertTimeoutCyclesSize = 16;
+ parameter int OwnerSwCfgRomAlertPhaseCyclesOffset = 864;
+ parameter int OwnerSwCfgRomAlertPhaseCyclesSize = 64;
+ parameter int OwnerSwCfgRomAlertDigestProdOffset = 928;
+ parameter int OwnerSwCfgRomAlertDigestProdSize = 4;
+ parameter int OwnerSwCfgRomAlertDigestProdEndOffset = 932;
+ parameter int OwnerSwCfgRomAlertDigestProdEndSize = 4;
+ parameter int OwnerSwCfgRomAlertDigestDevOffset = 936;
+ parameter int OwnerSwCfgRomAlertDigestDevSize = 4;
+ parameter int OwnerSwCfgRomAlertDigestRmaOffset = 940;
+ parameter int OwnerSwCfgRomAlertDigestRmaSize = 4;
+ parameter int OwnerSwCfgRomWatchdogBiteThresholdCyclesOffset = 944;
+ parameter int OwnerSwCfgRomWatchdogBiteThresholdCyclesSize = 4;
+ parameter int OwnerSwCfgRomKeymgrOtpMeasEnOffset = 948;
+ parameter int OwnerSwCfgRomKeymgrOtpMeasEnSize = 4;
+ parameter int OwnerSwCfgManufStateOffset = 952;
+ parameter int OwnerSwCfgManufStateSize = 4;
+ parameter int OwnerSwCfgRomRstmgrInfoEnOffset = 956;
+ parameter int OwnerSwCfgRomRstmgrInfoEnSize = 4;
+ parameter int OwnerSwCfgRomExtBootstrapEnOffset = 960;
+ parameter int OwnerSwCfgRomExtBootstrapEnSize = 4;
+ parameter int OwnerSwCfgRomSensorCtrlAlertCfgOffset = 964;
+ parameter int OwnerSwCfgRomSensorCtrlAlertCfgSize = 12;
+ parameter int OwnerSwCfgRomSramReadbackEnOffset = 976;
+ parameter int OwnerSwCfgRomSramReadbackEnSize = 4;
+ parameter int OwnerSwCfgRomPreserveResetReasonEnOffset = 980;
+ parameter int OwnerSwCfgRomPreserveResetReasonEnSize = 4;
+ parameter int OwnerSwCfgRomResetReasonCheckValueOffset = 984;
+ parameter int OwnerSwCfgRomResetReasonCheckValueSize = 4;
+ parameter int OwnerSwCfgRomBannerEnOffset = 988;
+ parameter int OwnerSwCfgRomBannerEnSize = 4;
+ parameter int OwnerSwCfgRomFlashEccExcHandlerEnOffset = 992;
+ parameter int OwnerSwCfgRomFlashEccExcHandlerEnSize = 4;
+ parameter int OwnerSwCfgReservedOffset = 996;
+ parameter int OwnerSwCfgReservedSize = 128;
+ parameter int OwnerSwCfgDigestOffset = 1136;
+ parameter int OwnerSwCfgDigestSize = 8;
+ parameter int RotCreatorAuthCodesignOffset = 1144;
+ parameter int RotCreatorAuthCodesignSize = 472;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType0Offset = 1144;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType0Size = 4;
+ parameter int RotCreatorAuthCodesignEcdsaKey0Offset = 1148;
+ parameter int RotCreatorAuthCodesignEcdsaKey0Size = 64;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType1Offset = 1212;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType1Size = 4;
+ parameter int RotCreatorAuthCodesignEcdsaKey1Offset = 1216;
+ parameter int RotCreatorAuthCodesignEcdsaKey1Size = 64;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType2Offset = 1280;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType2Size = 4;
+ parameter int RotCreatorAuthCodesignEcdsaKey2Offset = 1284;
+ parameter int RotCreatorAuthCodesignEcdsaKey2Size = 64;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType3Offset = 1348;
+ parameter int RotCreatorAuthCodesignEcdsaKeyType3Size = 4;
+ parameter int RotCreatorAuthCodesignEcdsaKey3Offset = 1352;
+ parameter int RotCreatorAuthCodesignEcdsaKey3Size = 64;
+ parameter int RotCreatorAuthCodesignSpxKeyType0Offset = 1416;
+ parameter int RotCreatorAuthCodesignSpxKeyType0Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKey0Offset = 1420;
+ parameter int RotCreatorAuthCodesignSpxKey0Size = 32;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig0Offset = 1452;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig0Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKeyType1Offset = 1456;
+ parameter int RotCreatorAuthCodesignSpxKeyType1Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKey1Offset = 1460;
+ parameter int RotCreatorAuthCodesignSpxKey1Size = 32;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig1Offset = 1492;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig1Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKeyType2Offset = 1496;
+ parameter int RotCreatorAuthCodesignSpxKeyType2Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKey2Offset = 1500;
+ parameter int RotCreatorAuthCodesignSpxKey2Size = 32;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig2Offset = 1532;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig2Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKeyType3Offset = 1536;
+ parameter int RotCreatorAuthCodesignSpxKeyType3Size = 4;
+ parameter int RotCreatorAuthCodesignSpxKey3Offset = 1540;
+ parameter int RotCreatorAuthCodesignSpxKey3Size = 32;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig3Offset = 1572;
+ parameter int RotCreatorAuthCodesignSpxKeyConfig3Size = 4;
+ parameter int RotCreatorAuthCodesignBlockSha2_256HashOffset = 1576;
+ parameter int RotCreatorAuthCodesignBlockSha2_256HashSize = 32;
+ parameter int RotCreatorAuthCodesignDigestOffset = 1608;
+ parameter int RotCreatorAuthCodesignDigestSize = 8;
+ parameter int RotCreatorAuthStateOffset = 1616;
+ parameter int RotCreatorAuthStateSize = 40;
+ parameter int RotCreatorAuthStateEcdsaKey0Offset = 1616;
+ parameter int RotCreatorAuthStateEcdsaKey0Size = 4;
+ parameter int RotCreatorAuthStateEcdsaKey1Offset = 1620;
+ parameter int RotCreatorAuthStateEcdsaKey1Size = 4;
+ parameter int RotCreatorAuthStateEcdsaKey2Offset = 1624;
+ parameter int RotCreatorAuthStateEcdsaKey2Size = 4;
+ parameter int RotCreatorAuthStateEcdsaKey3Offset = 1628;
+ parameter int RotCreatorAuthStateEcdsaKey3Size = 4;
+ parameter int RotCreatorAuthStateSpxKey0Offset = 1632;
+ parameter int RotCreatorAuthStateSpxKey0Size = 4;
+ parameter int RotCreatorAuthStateSpxKey1Offset = 1636;
+ parameter int RotCreatorAuthStateSpxKey1Size = 4;
+ parameter int RotCreatorAuthStateSpxKey2Offset = 1640;
+ parameter int RotCreatorAuthStateSpxKey2Size = 4;
+ parameter int RotCreatorAuthStateSpxKey3Offset = 1644;
+ parameter int RotCreatorAuthStateSpxKey3Size = 4;
+ parameter int RotCreatorAuthStateDigestOffset = 1648;
+ parameter int RotCreatorAuthStateDigestSize = 8;
+ parameter int HwCfg0Offset = 1656;
+ parameter int HwCfg0Size = 72;
+ parameter int DeviceIdOffset = 1656;
+ parameter int DeviceIdSize = 32;
+ parameter int ManufStateOffset = 1688;
+ parameter int ManufStateSize = 32;
+ parameter int HwCfg0DigestOffset = 1720;
+ parameter int HwCfg0DigestSize = 8;
+ parameter int HwCfg1Offset = 1728;
+ parameter int HwCfg1Size = 16;
+ parameter int EnSramIfetchOffset = 1728;
+ parameter int EnSramIfetchSize = 1;
+ parameter int EnCsrngSwAppReadOffset = 1729;
+ parameter int EnCsrngSwAppReadSize = 1;
+ parameter int DisRvDmLateDebugOffset = 1730;
+ parameter int DisRvDmLateDebugSize = 1;
+ parameter int HwCfg1DigestOffset = 1736;
+ parameter int HwCfg1DigestSize = 8;
+ parameter int Secret0Offset = 1744;
+ parameter int Secret0Size = 40;
+ parameter int TestUnlockTokenOffset = 1744;
+ parameter int TestUnlockTokenSize = 16;
+ parameter int TestExitTokenOffset = 1760;
+ parameter int TestExitTokenSize = 16;
+ parameter int Secret0DigestOffset = 1776;
+ parameter int Secret0DigestSize = 8;
+ parameter int Secret1Offset = 1784;
+ parameter int Secret1Size = 88;
+ parameter int FlashAddrKeySeedOffset = 1784;
+ parameter int FlashAddrKeySeedSize = 32;
+ parameter int FlashDataKeySeedOffset = 1816;
+ parameter int FlashDataKeySeedSize = 32;
+ parameter int SramDataKeySeedOffset = 1848;
+ parameter int SramDataKeySeedSize = 16;
+ parameter int Secret1DigestOffset = 1864;
+ parameter int Secret1DigestSize = 8;
+ parameter int Secret2Offset = 1872;
+ parameter int Secret2Size = 88;
+ parameter int RmaTokenOffset = 1872;
+ parameter int RmaTokenSize = 16;
+ parameter int CreatorRootKeyShare0Offset = 1888;
+ parameter int CreatorRootKeyShare0Size = 32;
+ parameter int CreatorRootKeyShare1Offset = 1920;
+ parameter int CreatorRootKeyShare1Size = 32;
+ parameter int Secret2DigestOffset = 1952;
+ parameter int Secret2DigestSize = 8;
+ parameter int LifeCycleOffset = 1960;
+ parameter int LifeCycleSize = 88;
+ parameter int LcTransitionCntOffset = 1960;
+ parameter int LcTransitionCntSize = 48;
+ parameter int LcStateOffset = 2008;
+ parameter int LcStateSize = 40;
+ parameter int NumAlerts = 5;
+
+ // Address widths within the block
+ parameter int CoreAw = 12;
+ parameter int PrimAw = 5;
+
+ ///////////////////////////////////////////////
+ // Typedefs for registers for core interface //
+ ///////////////////////////////////////////////
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } otp_error;
+ struct packed {
+ logic q;
+ } otp_operation_done;
+ } otp_ctrl_reg2hw_intr_state_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } otp_error;
+ struct packed {
+ logic q;
+ } otp_operation_done;
+ } otp_ctrl_reg2hw_intr_enable_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } otp_error;
+ struct packed {
+ logic q;
+ logic qe;
+ } otp_operation_done;
+ } otp_ctrl_reg2hw_intr_test_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } recov_prim_otp_alert;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_prim_otp_alert;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_bus_integ_error;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_check_error;
+ struct packed {
+ logic q;
+ logic qe;
+ } fatal_macro_error;
+ } otp_ctrl_reg2hw_alert_test_reg_t;
+
+ typedef struct packed {
+ logic q;
+ logic qe;
+ } otp_ctrl_reg2hw_direct_access_regwen_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } digest;
+ struct packed {
+ logic q;
+ logic qe;
+ } wr;
+ struct packed {
+ logic q;
+ logic qe;
+ } rd;
+ } otp_ctrl_reg2hw_direct_access_cmd_reg_t;
+
+ typedef struct packed {
+ logic [10:0] q;
+ } otp_ctrl_reg2hw_direct_access_address_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } otp_ctrl_reg2hw_direct_access_wdata_mreg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ logic qe;
+ } consistency;
+ struct packed {
+ logic q;
+ logic qe;
+ } integrity;
+ } otp_ctrl_reg2hw_check_trigger_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } otp_ctrl_reg2hw_check_timeout_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } otp_ctrl_reg2hw_integrity_check_period_reg_t;
+
+ typedef struct packed {
+ logic [31:0] q;
+ } otp_ctrl_reg2hw_consistency_check_period_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_vendor_test_read_lock_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_creator_sw_cfg_read_lock_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_owner_sw_cfg_read_lock_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_rot_creator_auth_codesign_read_lock_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_rot_creator_auth_state_read_lock_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ logic de;
+ } otp_operation_done;
+ struct packed {
+ logic d;
+ logic de;
+ } otp_error;
+ } otp_ctrl_hw2reg_intr_state_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
+ } vendor_test_error;
+ struct packed {
+ logic d;
+ } creator_sw_cfg_error;
+ struct packed {
+ logic d;
+ } owner_sw_cfg_error;
+ struct packed {
+ logic d;
+ } rot_creator_auth_codesign_error;
+ struct packed {
+ logic d;
+ } rot_creator_auth_state_error;
+ struct packed {
+ logic d;
+ } hw_cfg0_error;
+ struct packed {
+ logic d;
+ } hw_cfg1_error;
+ struct packed {
+ logic d;
+ } secret0_error;
+ struct packed {
+ logic d;
+ } secret1_error;
+ struct packed {
+ logic d;
+ } secret2_error;
+ struct packed {
+ logic d;
+ } life_cycle_error;
+ struct packed {
+ logic d;
+ } dai_error;
+ struct packed {
+ logic d;
+ } lci_error;
+ struct packed {
+ logic d;
+ } timeout_error;
+ struct packed {
+ logic d;
+ } lfsr_fsm_error;
+ struct packed {
+ logic d;
+ } scrambling_fsm_error;
+ struct packed {
+ logic d;
+ } key_deriv_fsm_error;
+ struct packed {
+ logic d;
+ } bus_integ_error;
+ struct packed {
+ logic d;
+ } dai_idle;
+ struct packed {
+ logic d;
+ } check_pending;
+ } otp_ctrl_hw2reg_status_reg_t;
+
+ typedef struct packed {
+ logic [2:0] d;
+ } otp_ctrl_hw2reg_err_code_mreg_t;
+
+ typedef struct packed {
+ logic d;
+ } otp_ctrl_hw2reg_direct_access_regwen_reg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_direct_access_rdata_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_vendor_test_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_creator_sw_cfg_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_owner_sw_cfg_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_rot_creator_auth_codesign_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_rot_creator_auth_state_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_hw_cfg0_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_hw_cfg1_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_secret0_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_secret1_digest_mreg_t;
+
+ typedef struct packed {
+ logic [31:0] d;
+ } otp_ctrl_hw2reg_secret2_digest_mreg_t;
+
+ // Register -> HW type for core interface
+ typedef struct packed {
+ otp_ctrl_reg2hw_intr_state_reg_t intr_state; // [205:204]
+ otp_ctrl_reg2hw_intr_enable_reg_t intr_enable; // [203:202]
+ otp_ctrl_reg2hw_intr_test_reg_t intr_test; // [201:198]
+ otp_ctrl_reg2hw_alert_test_reg_t alert_test; // [197:188]
+ otp_ctrl_reg2hw_direct_access_regwen_reg_t direct_access_regwen; // [187:186]
+ otp_ctrl_reg2hw_direct_access_cmd_reg_t direct_access_cmd; // [185:180]
+ otp_ctrl_reg2hw_direct_access_address_reg_t direct_access_address; // [179:169]
+ otp_ctrl_reg2hw_direct_access_wdata_mreg_t [1:0] direct_access_wdata; // [168:105]
+ otp_ctrl_reg2hw_check_trigger_reg_t check_trigger; // [104:101]
+ otp_ctrl_reg2hw_check_timeout_reg_t check_timeout; // [100:69]
+ otp_ctrl_reg2hw_integrity_check_period_reg_t integrity_check_period; // [68:37]
+ otp_ctrl_reg2hw_consistency_check_period_reg_t consistency_check_period; // [36:5]
+ otp_ctrl_reg2hw_vendor_test_read_lock_reg_t vendor_test_read_lock; // [4:4]
+ otp_ctrl_reg2hw_creator_sw_cfg_read_lock_reg_t creator_sw_cfg_read_lock; // [3:3]
+ otp_ctrl_reg2hw_owner_sw_cfg_read_lock_reg_t owner_sw_cfg_read_lock; // [2:2]
+ otp_ctrl_reg2hw_rot_creator_auth_codesign_read_lock_reg_t
+ rot_creator_auth_codesign_read_lock; // [1:1]
+ otp_ctrl_reg2hw_rot_creator_auth_state_read_lock_reg_t
+ rot_creator_auth_state_read_lock; // [0:0]
+ } otp_ctrl_core_reg2hw_t;
+
+ // HW -> register type for core interface
+ typedef struct packed {
+ otp_ctrl_hw2reg_intr_state_reg_t intr_state; // [767:764]
+ otp_ctrl_hw2reg_status_reg_t status; // [763:744]
+ otp_ctrl_hw2reg_err_code_mreg_t [12:0] err_code; // [743:705]
+ otp_ctrl_hw2reg_direct_access_regwen_reg_t direct_access_regwen; // [704:704]
+ otp_ctrl_hw2reg_direct_access_rdata_mreg_t [1:0] direct_access_rdata; // [703:640]
+ otp_ctrl_hw2reg_vendor_test_digest_mreg_t [1:0] vendor_test_digest; // [639:576]
+ otp_ctrl_hw2reg_creator_sw_cfg_digest_mreg_t [1:0] creator_sw_cfg_digest; // [575:512]
+ otp_ctrl_hw2reg_owner_sw_cfg_digest_mreg_t [1:0] owner_sw_cfg_digest; // [511:448]
+ otp_ctrl_hw2reg_rot_creator_auth_codesign_digest_mreg_t [1:0]
+ rot_creator_auth_codesign_digest; // [447:384]
+ otp_ctrl_hw2reg_rot_creator_auth_state_digest_mreg_t [1:0]
+ rot_creator_auth_state_digest; // [383:320]
+ otp_ctrl_hw2reg_hw_cfg0_digest_mreg_t [1:0] hw_cfg0_digest; // [319:256]
+ otp_ctrl_hw2reg_hw_cfg1_digest_mreg_t [1:0] hw_cfg1_digest; // [255:192]
+ otp_ctrl_hw2reg_secret0_digest_mreg_t [1:0] secret0_digest; // [191:128]
+ otp_ctrl_hw2reg_secret1_digest_mreg_t [1:0] secret1_digest; // [127:64]
+ otp_ctrl_hw2reg_secret2_digest_mreg_t [1:0] secret2_digest; // [63:0]
+ } otp_ctrl_core_hw2reg_t;
+
+ // Register offsets for core interface
+ parameter logic [CoreAw-1:0] OTP_CTRL_INTR_STATE_OFFSET = 12'h 0;
+ parameter logic [CoreAw-1:0] OTP_CTRL_INTR_ENABLE_OFFSET = 12'h 4;
+ parameter logic [CoreAw-1:0] OTP_CTRL_INTR_TEST_OFFSET = 12'h 8;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ALERT_TEST_OFFSET = 12'h c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_STATUS_OFFSET = 12'h 10;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_0_OFFSET = 12'h 14;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_1_OFFSET = 12'h 18;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_2_OFFSET = 12'h 1c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_3_OFFSET = 12'h 20;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_4_OFFSET = 12'h 24;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_5_OFFSET = 12'h 28;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_6_OFFSET = 12'h 2c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_7_OFFSET = 12'h 30;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_8_OFFSET = 12'h 34;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_9_OFFSET = 12'h 38;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_10_OFFSET = 12'h 3c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_11_OFFSET = 12'h 40;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ERR_CODE_12_OFFSET = 12'h 44;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET = 12'h 48;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET = 12'h 4c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET = 12'h 50;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET = 12'h 54;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET = 12'h 58;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET = 12'h 5c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET = 12'h 60;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET = 12'h 64;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TRIGGER_OFFSET = 12'h 68;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_REGWEN_OFFSET = 12'h 6c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CHECK_TIMEOUT_OFFSET = 12'h 70;
+ parameter logic [CoreAw-1:0] OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET = 12'h 74;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET = 12'h 78;
+ parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET = 12'h 7c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_READ_LOCK_OFFSET = 12'h 80;
+ parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_READ_LOCK_OFFSET = 12'h 84;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_READ_LOCK_OFFSET = 12'h 88;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_STATE_READ_LOCK_OFFSET = 12'h 8c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET = 12'h 90;
+ parameter logic [CoreAw-1:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET = 12'h 94;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_OFFSET = 12'h 98;
+ parameter logic [CoreAw-1:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_OFFSET = 12'h 9c;
+ parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_OFFSET = 12'h a0;
+ parameter logic [CoreAw-1:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_OFFSET = 12'h a4;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0_OFFSET = 12'h a8;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1_OFFSET = 12'h ac;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0_OFFSET = 12'h b0;
+ parameter logic [CoreAw-1:0] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1_OFFSET = 12'h b4;
+ parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG0_DIGEST_0_OFFSET = 12'h b8;
+ parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG0_DIGEST_1_OFFSET = 12'h bc;
+ parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG1_DIGEST_0_OFFSET = 12'h c0;
+ parameter logic [CoreAw-1:0] OTP_CTRL_HW_CFG1_DIGEST_1_OFFSET = 12'h c4;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET0_DIGEST_0_OFFSET = 12'h c8;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET0_DIGEST_1_OFFSET = 12'h cc;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET1_DIGEST_0_OFFSET = 12'h d0;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET1_DIGEST_1_OFFSET = 12'h d4;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET2_DIGEST_0_OFFSET = 12'h d8;
+ parameter logic [CoreAw-1:0] OTP_CTRL_SECRET2_DIGEST_1_OFFSET = 12'h dc;
+
+ // Reset values for hwext registers and their fields for core interface
+ parameter logic [1:0] OTP_CTRL_INTR_TEST_RESVAL = 2'h 0;
+ parameter logic [0:0] OTP_CTRL_INTR_TEST_OTP_OPERATION_DONE_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_INTR_TEST_OTP_ERROR_RESVAL = 1'h 0;
+ parameter logic [4:0] OTP_CTRL_ALERT_TEST_RESVAL = 5'h 0;
+ parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_MACRO_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_CHECK_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_BUS_INTEG_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_ALERT_TEST_FATAL_PRIM_OTP_ALERT_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_ALERT_TEST_RECOV_PRIM_OTP_ALERT_RESVAL = 1'h 0;
+ parameter logic [19:0] OTP_CTRL_STATUS_RESVAL = 20'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_VENDOR_TEST_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_CREATOR_SW_CFG_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_OWNER_SW_CFG_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_ROT_CREATOR_AUTH_CODESIGN_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_ROT_CREATOR_AUTH_STATE_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_HW_CFG0_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_HW_CFG1_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_SECRET0_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_SECRET1_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_SECRET2_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_LIFE_CYCLE_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_DAI_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_LCI_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_TIMEOUT_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_LFSR_FSM_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_SCRAMBLING_FSM_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_KEY_DERIV_FSM_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_BUS_INTEG_ERROR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_DAI_IDLE_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_STATUS_CHECK_PENDING_RESVAL = 1'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_0_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_0_ERR_CODE_0_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_1_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_1_ERR_CODE_1_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_2_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_2_ERR_CODE_2_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_3_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_3_ERR_CODE_3_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_4_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_4_ERR_CODE_4_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_5_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_5_ERR_CODE_5_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_6_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_6_ERR_CODE_6_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_7_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_7_ERR_CODE_7_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_8_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_8_ERR_CODE_8_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_9_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_9_ERR_CODE_9_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_10_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_10_ERR_CODE_10_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_11_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_11_ERR_CODE_11_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_12_RESVAL = 3'h 0;
+ parameter logic [2:0] OTP_CTRL_ERR_CODE_12_ERR_CODE_12_RESVAL = 3'h 0;
+ parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_RESVAL = 1'h 1;
+ parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_REGWEN_DIRECT_ACCESS_REGWEN_RESVAL = 1'h 1;
+ parameter logic [2:0] OTP_CTRL_DIRECT_ACCESS_CMD_RESVAL = 3'h 0;
+ parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_RD_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_WR_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_DIRECT_ACCESS_CMD_DIGEST_RESVAL = 1'h 0;
+ parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_0_DIRECT_ACCESS_RDATA_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_DIRECT_ACCESS_RDATA_1_DIRECT_ACCESS_RDATA_1_RESVAL = 32'h 0;
+ parameter logic [1:0] OTP_CTRL_CHECK_TRIGGER_RESVAL = 2'h 0;
+ parameter logic [0:0] OTP_CTRL_CHECK_TRIGGER_INTEGRITY_RESVAL = 1'h 0;
+ parameter logic [0:0] OTP_CTRL_CHECK_TRIGGER_CONSISTENCY_RESVAL = 1'h 0;
+ parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_0_VENDOR_TEST_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_VENDOR_TEST_DIGEST_1_VENDOR_TEST_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0_CREATOR_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1_CREATOR_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_0_OWNER_SW_CFG_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_OWNER_SW_CFG_DIGEST_1_OWNER_SW_CFG_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0]
+ OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0_RESVAL =
+ 32'h 0;
+ parameter logic [31:0] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0]
+ OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1_RESVAL =
+ 32'h 0;
+ parameter logic [31:0] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0]
+ OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0_ROT_CREATOR_AUTH_STATE_DIGEST_0_RESVAL =
+ 32'h 0;
+ parameter logic [31:0] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0]
+ OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1_ROT_CREATOR_AUTH_STATE_DIGEST_1_RESVAL =
+ 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG0_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG0_DIGEST_0_HW_CFG0_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG0_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG0_DIGEST_1_HW_CFG0_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG1_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG1_DIGEST_0_HW_CFG1_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG1_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_HW_CFG1_DIGEST_1_HW_CFG1_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_0_SECRET0_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET0_DIGEST_1_SECRET0_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_0_SECRET1_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET1_DIGEST_1_SECRET1_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_0_SECRET2_DIGEST_0_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_1_RESVAL = 32'h 0;
+ parameter logic [31:0] OTP_CTRL_SECRET2_DIGEST_1_SECRET2_DIGEST_1_RESVAL = 32'h 0;
+
+ // Window parameters for core interface
+ parameter logic [CoreAw-1:0] OTP_CTRL_SW_CFG_WINDOW_OFFSET = 12'h 800;
+ parameter int unsigned OTP_CTRL_SW_CFG_WINDOW_SIZE = 'h 800;
+ parameter int unsigned OTP_CTRL_SW_CFG_WINDOW_IDX = 0;
+
+ // Register index for core interface
+ typedef enum int {
+ OTP_CTRL_INTR_STATE,
+ OTP_CTRL_INTR_ENABLE,
+ OTP_CTRL_INTR_TEST,
+ OTP_CTRL_ALERT_TEST,
+ OTP_CTRL_STATUS,
+ OTP_CTRL_ERR_CODE_0,
+ OTP_CTRL_ERR_CODE_1,
+ OTP_CTRL_ERR_CODE_2,
+ OTP_CTRL_ERR_CODE_3,
+ OTP_CTRL_ERR_CODE_4,
+ OTP_CTRL_ERR_CODE_5,
+ OTP_CTRL_ERR_CODE_6,
+ OTP_CTRL_ERR_CODE_7,
+ OTP_CTRL_ERR_CODE_8,
+ OTP_CTRL_ERR_CODE_9,
+ OTP_CTRL_ERR_CODE_10,
+ OTP_CTRL_ERR_CODE_11,
+ OTP_CTRL_ERR_CODE_12,
+ OTP_CTRL_DIRECT_ACCESS_REGWEN,
+ OTP_CTRL_DIRECT_ACCESS_CMD,
+ OTP_CTRL_DIRECT_ACCESS_ADDRESS,
+ OTP_CTRL_DIRECT_ACCESS_WDATA_0,
+ OTP_CTRL_DIRECT_ACCESS_WDATA_1,
+ OTP_CTRL_DIRECT_ACCESS_RDATA_0,
+ OTP_CTRL_DIRECT_ACCESS_RDATA_1,
+ OTP_CTRL_CHECK_TRIGGER_REGWEN,
+ OTP_CTRL_CHECK_TRIGGER,
+ OTP_CTRL_CHECK_REGWEN,
+ OTP_CTRL_CHECK_TIMEOUT,
+ OTP_CTRL_INTEGRITY_CHECK_PERIOD,
+ OTP_CTRL_CONSISTENCY_CHECK_PERIOD,
+ OTP_CTRL_VENDOR_TEST_READ_LOCK,
+ OTP_CTRL_CREATOR_SW_CFG_READ_LOCK,
+ OTP_CTRL_OWNER_SW_CFG_READ_LOCK,
+ OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_READ_LOCK,
+ OTP_CTRL_ROT_CREATOR_AUTH_STATE_READ_LOCK,
+ OTP_CTRL_VENDOR_TEST_DIGEST_0,
+ OTP_CTRL_VENDOR_TEST_DIGEST_1,
+ OTP_CTRL_CREATOR_SW_CFG_DIGEST_0,
+ OTP_CTRL_CREATOR_SW_CFG_DIGEST_1,
+ OTP_CTRL_OWNER_SW_CFG_DIGEST_0,
+ OTP_CTRL_OWNER_SW_CFG_DIGEST_1,
+ OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0,
+ OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1,
+ OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0,
+ OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1,
+ OTP_CTRL_HW_CFG0_DIGEST_0,
+ OTP_CTRL_HW_CFG0_DIGEST_1,
+ OTP_CTRL_HW_CFG1_DIGEST_0,
+ OTP_CTRL_HW_CFG1_DIGEST_1,
+ OTP_CTRL_SECRET0_DIGEST_0,
+ OTP_CTRL_SECRET0_DIGEST_1,
+ OTP_CTRL_SECRET1_DIGEST_0,
+ OTP_CTRL_SECRET1_DIGEST_1,
+ OTP_CTRL_SECRET2_DIGEST_0,
+ OTP_CTRL_SECRET2_DIGEST_1
+ } otp_ctrl_core_id_e;
+
+ // Register width information to check illegal writes for core interface
+ parameter logic [3:0] OTP_CTRL_CORE_PERMIT [56] = '{
+ 4'b 0001, // index[ 0] OTP_CTRL_INTR_STATE
+ 4'b 0001, // index[ 1] OTP_CTRL_INTR_ENABLE
+ 4'b 0001, // index[ 2] OTP_CTRL_INTR_TEST
+ 4'b 0001, // index[ 3] OTP_CTRL_ALERT_TEST
+ 4'b 0111, // index[ 4] OTP_CTRL_STATUS
+ 4'b 0001, // index[ 5] OTP_CTRL_ERR_CODE_0
+ 4'b 0001, // index[ 6] OTP_CTRL_ERR_CODE_1
+ 4'b 0001, // index[ 7] OTP_CTRL_ERR_CODE_2
+ 4'b 0001, // index[ 8] OTP_CTRL_ERR_CODE_3
+ 4'b 0001, // index[ 9] OTP_CTRL_ERR_CODE_4
+ 4'b 0001, // index[10] OTP_CTRL_ERR_CODE_5
+ 4'b 0001, // index[11] OTP_CTRL_ERR_CODE_6
+ 4'b 0001, // index[12] OTP_CTRL_ERR_CODE_7
+ 4'b 0001, // index[13] OTP_CTRL_ERR_CODE_8
+ 4'b 0001, // index[14] OTP_CTRL_ERR_CODE_9
+ 4'b 0001, // index[15] OTP_CTRL_ERR_CODE_10
+ 4'b 0001, // index[16] OTP_CTRL_ERR_CODE_11
+ 4'b 0001, // index[17] OTP_CTRL_ERR_CODE_12
+ 4'b 0001, // index[18] OTP_CTRL_DIRECT_ACCESS_REGWEN
+ 4'b 0001, // index[19] OTP_CTRL_DIRECT_ACCESS_CMD
+ 4'b 0011, // index[20] OTP_CTRL_DIRECT_ACCESS_ADDRESS
+ 4'b 1111, // index[21] OTP_CTRL_DIRECT_ACCESS_WDATA_0
+ 4'b 1111, // index[22] OTP_CTRL_DIRECT_ACCESS_WDATA_1
+ 4'b 1111, // index[23] OTP_CTRL_DIRECT_ACCESS_RDATA_0
+ 4'b 1111, // index[24] OTP_CTRL_DIRECT_ACCESS_RDATA_1
+ 4'b 0001, // index[25] OTP_CTRL_CHECK_TRIGGER_REGWEN
+ 4'b 0001, // index[26] OTP_CTRL_CHECK_TRIGGER
+ 4'b 0001, // index[27] OTP_CTRL_CHECK_REGWEN
+ 4'b 1111, // index[28] OTP_CTRL_CHECK_TIMEOUT
+ 4'b 1111, // index[29] OTP_CTRL_INTEGRITY_CHECK_PERIOD
+ 4'b 1111, // index[30] OTP_CTRL_CONSISTENCY_CHECK_PERIOD
+ 4'b 0001, // index[31] OTP_CTRL_VENDOR_TEST_READ_LOCK
+ 4'b 0001, // index[32] OTP_CTRL_CREATOR_SW_CFG_READ_LOCK
+ 4'b 0001, // index[33] OTP_CTRL_OWNER_SW_CFG_READ_LOCK
+ 4'b 0001, // index[34] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_READ_LOCK
+ 4'b 0001, // index[35] OTP_CTRL_ROT_CREATOR_AUTH_STATE_READ_LOCK
+ 4'b 1111, // index[36] OTP_CTRL_VENDOR_TEST_DIGEST_0
+ 4'b 1111, // index[37] OTP_CTRL_VENDOR_TEST_DIGEST_1
+ 4'b 1111, // index[38] OTP_CTRL_CREATOR_SW_CFG_DIGEST_0
+ 4'b 1111, // index[39] OTP_CTRL_CREATOR_SW_CFG_DIGEST_1
+ 4'b 1111, // index[40] OTP_CTRL_OWNER_SW_CFG_DIGEST_0
+ 4'b 1111, // index[41] OTP_CTRL_OWNER_SW_CFG_DIGEST_1
+ 4'b 1111, // index[42] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_0
+ 4'b 1111, // index[43] OTP_CTRL_ROT_CREATOR_AUTH_CODESIGN_DIGEST_1
+ 4'b 1111, // index[44] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_0
+ 4'b 1111, // index[45] OTP_CTRL_ROT_CREATOR_AUTH_STATE_DIGEST_1
+ 4'b 1111, // index[46] OTP_CTRL_HW_CFG0_DIGEST_0
+ 4'b 1111, // index[47] OTP_CTRL_HW_CFG0_DIGEST_1
+ 4'b 1111, // index[48] OTP_CTRL_HW_CFG1_DIGEST_0
+ 4'b 1111, // index[49] OTP_CTRL_HW_CFG1_DIGEST_1
+ 4'b 1111, // index[50] OTP_CTRL_SECRET0_DIGEST_0
+ 4'b 1111, // index[51] OTP_CTRL_SECRET0_DIGEST_1
+ 4'b 1111, // index[52] OTP_CTRL_SECRET1_DIGEST_0
+ 4'b 1111, // index[53] OTP_CTRL_SECRET1_DIGEST_1
+ 4'b 1111, // index[54] OTP_CTRL_SECRET2_DIGEST_0
+ 4'b 1111 // index[55] OTP_CTRL_SECRET2_DIGEST_1
+ };
+
+ ///////////////////////////////////////////////
+ // Typedefs for registers for prim interface //
+ ///////////////////////////////////////////////
+
+ typedef struct packed {
+ struct packed {
+ logic [10:0] q;
+ } field4;
+ struct packed {
+ logic [9:0] q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic q;
+ } field1;
+ struct packed {
+ logic q;
+ } field0;
+ } otp_ctrl_reg2hw_csr0_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [15:0] q;
+ } field4;
+ struct packed {
+ logic q;
+ } field3;
+ struct packed {
+ logic [6:0] q;
+ } field2;
+ struct packed {
+ logic q;
+ } field1;
+ struct packed {
+ logic [6:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr1_reg_t;
+
+ typedef struct packed {
+ logic q;
+ } otp_ctrl_reg2hw_csr2_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } field8;
+ struct packed {
+ logic q;
+ } field7;
+ struct packed {
+ logic q;
+ } field6;
+ struct packed {
+ logic q;
+ } field5;
+ struct packed {
+ logic q;
+ } field4;
+ struct packed {
+ logic q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic [9:0] q;
+ } field1;
+ struct packed {
+ logic [2:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr3_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic q;
+ } field1;
+ struct packed {
+ logic [9:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr4_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [15:0] q;
+ } field6;
+ struct packed {
+ logic q;
+ } field5;
+ struct packed {
+ logic q;
+ } field4;
+ struct packed {
+ logic [2:0] q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic [1:0] q;
+ } field1;
+ struct packed {
+ logic [5:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr5_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [15:0] q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic q;
+ } field1;
+ struct packed {
+ logic [9:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr6_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic q;
+ } field3;
+ struct packed {
+ logic q;
+ } field2;
+ struct packed {
+ logic [2:0] q;
+ } field1;
+ struct packed {
+ logic [5:0] q;
+ } field0;
+ } otp_ctrl_reg2hw_csr7_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [2:0] d;
+ logic de;
+ } field0;
+ struct packed {
+ logic [9:0] d;
+ logic de;
+ } field1;
+ struct packed {
+ logic d;
+ logic de;
+ } field2;
+ struct packed {
+ logic d;
+ logic de;
+ } field3;
+ struct packed {
+ logic d;
+ logic de;
+ } field4;
+ struct packed {
+ logic d;
+ logic de;
+ } field5;
+ struct packed {
+ logic d;
+ logic de;
+ } field6;
+ struct packed {
+ logic d;
+ logic de;
+ } field7;
+ struct packed {
+ logic d;
+ logic de;
+ } field8;
+ } otp_ctrl_hw2reg_csr3_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [5:0] d;
+ logic de;
+ } field0;
+ struct packed {
+ logic [1:0] d;
+ logic de;
+ } field1;
+ struct packed {
+ logic d;
+ logic de;
+ } field2;
+ struct packed {
+ logic [2:0] d;
+ logic de;
+ } field3;
+ struct packed {
+ logic d;
+ logic de;
+ } field4;
+ struct packed {
+ logic d;
+ logic de;
+ } field5;
+ struct packed {
+ logic [15:0] d;
+ logic de;
+ } field6;
+ } otp_ctrl_hw2reg_csr5_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic [5:0] d;
+ logic de;
+ } field0;
+ struct packed {
+ logic [2:0] d;
+ logic de;
+ } field1;
+ struct packed {
+ logic d;
+ logic de;
+ } field2;
+ struct packed {
+ logic d;
+ logic de;
+ } field3;
+ } otp_ctrl_hw2reg_csr7_reg_t;
+
+ // Register -> HW type for prim interface
+ typedef struct packed {
+ otp_ctrl_reg2hw_csr0_reg_t csr0; // [158:135]
+ otp_ctrl_reg2hw_csr1_reg_t csr1; // [134:103]
+ otp_ctrl_reg2hw_csr2_reg_t csr2; // [102:102]
+ otp_ctrl_reg2hw_csr3_reg_t csr3; // [101:82]
+ otp_ctrl_reg2hw_csr4_reg_t csr4; // [81:69]
+ otp_ctrl_reg2hw_csr5_reg_t csr5; // [68:39]
+ otp_ctrl_reg2hw_csr6_reg_t csr6; // [38:11]
+ otp_ctrl_reg2hw_csr7_reg_t csr7; // [10:0]
+ } otp_ctrl_prim_reg2hw_t;
+
+ // HW -> register type for prim interface
+ typedef struct packed {
+ otp_ctrl_hw2reg_csr3_reg_t csr3; // [80:52]
+ otp_ctrl_hw2reg_csr5_reg_t csr5; // [51:15]
+ otp_ctrl_hw2reg_csr7_reg_t csr7; // [14:0]
+ } otp_ctrl_prim_hw2reg_t;
+
+ // Register offsets for prim interface
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR0_OFFSET = 5'h 0;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR1_OFFSET = 5'h 4;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR2_OFFSET = 5'h 8;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR3_OFFSET = 5'h c;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR4_OFFSET = 5'h 10;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR5_OFFSET = 5'h 14;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR6_OFFSET = 5'h 18;
+ parameter logic [PrimAw-1:0] OTP_CTRL_CSR7_OFFSET = 5'h 1c;
+
+ // Register index for prim interface
+ typedef enum int {
+ OTP_CTRL_CSR0,
+ OTP_CTRL_CSR1,
+ OTP_CTRL_CSR2,
+ OTP_CTRL_CSR3,
+ OTP_CTRL_CSR4,
+ OTP_CTRL_CSR5,
+ OTP_CTRL_CSR6,
+ OTP_CTRL_CSR7
+ } otp_ctrl_prim_id_e;
+
+ // Register width information to check illegal writes for prim interface
+ parameter logic [3:0] OTP_CTRL_PRIM_PERMIT [8] = '{
+ 4'b 1111, // index[0] OTP_CTRL_CSR0
+ 4'b 1111, // index[1] OTP_CTRL_CSR1
+ 4'b 0001, // index[2] OTP_CTRL_CSR2
+ 4'b 0111, // index[3] OTP_CTRL_CSR3
+ 4'b 0011, // index[4] OTP_CTRL_CSR4
+ 4'b 1111, // index[5] OTP_CTRL_CSR5
+ 4'b 1111, // index[6] OTP_CTRL_CSR6
+ 4'b 0011 // index[7] OTP_CTRL_CSR7
+ };
+
+endpackage
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_scrmbl.sv b/src/fuse_ctrl/rtl/otp_ctrl_scrmbl.sv
new file mode 100644
index 0000000..6a4ab22
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_scrmbl.sv
@@ -0,0 +1,510 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// This module contains the scrambling datapath for the OTP controller. It basically consists of
+// two single-round PRESENT primitives (one for encryption and one for decryption mode), a counter
+// with a simple FSM and four working registers, as listed below.
+//
+// key_state_q (128bit): working register to hold the round key (needed for the key schedule).
+//
+// data_state_q (64bit): working register to hold the data state in between rounds.
+//
+// data_shadow_q (64bit): shadow register for holding a second 64bit block of input data. This is
+// used to form a 128bit data block for the digest mode, which has a block
+// size of 128bit.
+//
+// digest_state_q (64bit): register to hold the digest state in between digest updates. Technically,
+// this is not needed when the data for the digest is fed into this block
+// back-to-back. However, the partition integrity checks require that it is
+// possible to interleave encryption operations and digest update steps,
+// hence an additional state register is needed, as otherwise the digest
+// state would be lost.
+//
+// The scrambling datapath is arranged such that it can also be used for calculating a digest using
+// the encryption primitive in a Merkle-Damgard construction. To that end, the PRESENT block cipher
+// is turned into a one way function according to the Davies-Meyer scheme. Note however that this
+// makes the digest block size 128bit wide, since the Merkle-Damgard construction leverages the
+// cipher key input to ingest data.
+//
+// The scrambling datapath exposes a few simple commands and the FSM hides the complexity
+// of steering the appropriate muxes and keeping track of the cipher rounds. These commands are
+// briefly explained below.
+//
+// Decrypt: This decrypts the data block provided via data_i with the key at index sel_i.
+//
+// Encrypt: This encrypts the data block provided via data_i with the key at index sel_i.
+// In addition, this command copies the prvious result into a shadow register before
+// the first encryption round for later use in the digest (see description further below).
+// This enables interleaved encrypt/digest operation needed for the integrity checks of
+// the secret partitions.
+//
+// LoadShadow: In "StandardMode", the LoadShadow command loads the data provided via data_i into a
+// shadow register that is mapped to the lower 64bit of the 128bit digest input data
+// block. In "ChainedMode", this command copies the contents of the data state register
+// into the shadow register.
+//
+// DigestInit: This ensures that the digest initialization vector (IV) is selected upon the next
+// call of the Digest command. Also, mode_i can be used to set the digest mode. If
+// mode_i is set to "StandardMode", the data to be digested has to be provided via
+// data_i and LoadShadow. If mode_i is set to "ChainedMode", the digest input is formed
+// by concatenating the results of the revious two encryption commands.
+//
+// Digest: In "StandardMode", this command concatenates the data input supplied via data_i with
+// the shadow register in order to form a 128bit block ({data_i, data_shadow_q}). This block
+// is then used to encrypt the digest state. In "ChainedMode" digest mode, the 128bit block
+// to be digested is formed by concatenating {data_state_q, data_shadow_q}. If a DigestInit
+// command has been executed right before calling Digest, the IV selected with sel_i is
+// used to initialize the state.
+//
+// DigestFinalize: This command encrypts the digest state with the finalization constant selected
+// by sel_i in order to form the final digest.
+//
+// References: - https://docs.opentitan.org/hw/ip/otp_ctrl/doc/index.html#design-details
+// - https://docs.opentitan.org/hw/ip/prim/doc/prim_present/
+// - https://en.wikipedia.org/wiki/Merkle-Damgard_construction
+// - https://en.wikipedia.org/wiki/One-way_compression_function#Davies%E2%80%93Meyer
+// - https://en.wikipedia.org/wiki/PRESENT
+// - http://www.lightweightcrypto.org/present/present_ches2007.pdf
+//
+
+`include "caliptra_prim_flop_macros.sv"
+
+module otp_ctrl_scrmbl
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_part_pkg::*;
+(
+ input clk_i,
+ input rst_ni,
+ // input data and command
+ input otp_scrmbl_cmd_e cmd_i,
+ input digest_mode_e mode_i,
+ input [ConstSelWidth-1:0] sel_i,
+ input [ScrmblBlockWidth-1:0] data_i,
+ input valid_i,
+ output logic ready_o,
+ // output data
+ output logic [ScrmblBlockWidth-1:0] data_o,
+ output logic valid_o,
+ // escalation input and FSM error indication
+ input caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_t escalate_en_i,
+ output logic fsm_err_o
+);
+
+ import caliptra_prim_util_pkg::vbits;
+
+ ////////////////////////
+ // Decryption Key LUT //
+ ////////////////////////
+
+ // Anchor keys, constants and IVs
+ key_array_t rnd_cnst_key_anchor;
+ digest_const_array_t rnd_cnst_digest_anchor;
+ digest_iv_array_t rnd_cnst_digest_iv_anchor;
+
+ for (genvar i = 0; i < NumScrmblKeys; i++) begin : gen_anchor_keys
+ caliptra_prim_sec_anchor_buf #(
+ .Width(ScrmblKeyWidth)
+ ) u_key_anchor_buf (
+ .in_i(RndCnstKey[i]),
+ .out_o(rnd_cnst_key_anchor[i])
+ );
+ end
+
+ for (genvar i = 0; i < NumDigestSets; i++) begin : gen_anchor_digests
+ caliptra_prim_sec_anchor_buf #(
+ .Width(ScrmblKeyWidth)
+ ) u_const_anchor_buf (
+ .in_i(RndCnstDigestConst[i]),
+ .out_o(rnd_cnst_digest_anchor[i])
+ );
+
+ caliptra_prim_sec_anchor_buf #(
+ .Width(ScrmblBlockWidth)
+ ) u_iv_anchor_buf (
+ .in_i(RndCnstDigestIV[i]),
+ .out_o(rnd_cnst_digest_iv_anchor[i])
+ );
+ end
+
+
+ // Align these arrays to power of 2's to prevent X's in the muxing operations further below.
+ logic [2**$clog2(NumScrmblKeys)-1:0][ScrmblKeyWidth-1:0] otp_enc_key_lut;
+ logic [2**$clog2(NumScrmblKeys)-1:0][ScrmblKeyWidth-1:0] otp_dec_key_lut;
+ logic [2**$clog2(NumDigestSets)-1:0][ScrmblKeyWidth-1:0] digest_const_lut;
+ logic [2**$clog2(NumDigestSets)-1:0][ScrmblBlockWidth-1:0] digest_iv_lut;
+
+ // This pre-calculates the inverse scrambling keys at elab time.
+ `CALIPTRA_ASSERT_INIT(NumMaxPresentRounds_A, NumPresentRounds <= 31)
+
+ always_comb begin : p_luts
+ otp_enc_key_lut = '0;
+ otp_dec_key_lut = '0;
+ digest_const_lut = '0;
+ digest_iv_lut = '0;
+
+ for (int k = 0; k < NumScrmblKeys; k++) begin
+ localparam logic [4:0] NumRounds = 5'(unsigned'(NumPresentRounds));
+ otp_enc_key_lut[k] = rnd_cnst_key_anchor[k];
+ // Due to the PRESENT key schedule, we have to step the key schedule function by
+ // NumPresentRounds forwards to get the decryption key.
+ otp_dec_key_lut[k] =
+ caliptra_prim_cipher_pkg::present_get_dec_key128(rnd_cnst_key_anchor[k], NumRounds);
+ end
+
+ for (int k = 0; k < NumDigestSets; k++) begin
+ digest_const_lut[k] = rnd_cnst_digest_anchor[k];
+ digest_iv_lut[k] = rnd_cnst_digest_iv_anchor[k];
+ end
+ end
+ `CALIPTRA_ASSERT_KNOWN(EncKeyLutKnown_A, otp_enc_key_lut)
+ `CALIPTRA_ASSERT_KNOWN(DecKeyLutKnown_A, otp_dec_key_lut)
+ `CALIPTRA_ASSERT_KNOWN(DigestConstLutKnown_A, digest_const_lut)
+ `CALIPTRA_ASSERT_KNOWN(DigestIvLutKnown_A, digest_iv_lut)
+
+ //////////////
+ // Datapath //
+ //////////////
+
+ logic [4:0] idx_state_d, idx_state_q;
+ logic [ScrmblKeyWidth-1:0] key_state_d, key_state_q;
+ logic [ScrmblBlockWidth-1:0] data_state_d, data_state_q, data_shadow_q;
+ logic [ScrmblBlockWidth-1:0] digest_state_d, digest_state_q;
+ logic [ScrmblBlockWidth-1:0] enc_data_out, enc_data_out_xor, dec_data_out;
+ logic [ScrmblKeyWidth-1:0] dec_key_out, enc_key_out;
+ logic [4:0] dec_idx_out, enc_idx_out;
+ logic [ScrmblKeyWidth-1:0] otp_digest_const_mux, otp_enc_key_mux, otp_dec_key_mux;
+ logic [ScrmblBlockWidth-1:0] otp_digest_iv_mux;
+
+ typedef enum logic [2:0] {SelEncDataOut,
+ SelDecDataOut,
+ SelDigestState,
+ SelEncDataOutXor,
+ SelDataInput} data_state_sel_e;
+
+ typedef enum logic [2:0] {SelDecKeyOut,
+ SelEncKeyOut,
+ SelDecKeyInit,
+ SelEncKeyInit,
+ SelDigestConst,
+ SelDigestInput,
+ SelDigestChained} key_state_sel_e;
+
+ logic digest_init;
+ data_state_sel_e data_state_sel;
+ key_state_sel_e key_state_sel;
+ logic data_state_en, data_shadow_copy, data_shadow_load, digest_state_en, key_state_en;
+ digest_mode_e digest_mode_d, digest_mode_q;
+
+ assign otp_enc_key_mux = otp_enc_key_lut[ScrmblKeySelWidth'(sel_i)];
+ assign otp_dec_key_mux = otp_dec_key_lut[ScrmblKeySelWidth'(sel_i)];
+ assign otp_digest_const_mux = digest_const_lut[DigestSetSelWidth'(sel_i)];
+ assign otp_digest_iv_mux = digest_iv_lut[DigestSetSelWidth'(sel_i)];
+
+ // Make sure we always select a valid key / digest constant.
+ `CALIPTRA_ASSERT(CheckNumEncKeys_A, key_state_sel == SelEncKeyInit |-> sel_i < NumScrmblKeys)
+ `CALIPTRA_ASSERT(CheckNumDecKeys_A, key_state_sel == SelDecKeyInit |-> sel_i < NumScrmblKeys)
+ `CALIPTRA_ASSERT(CheckNumDigest1_A, key_state_sel == SelDigestConst |-> sel_i < NumDigestSets)
+
+ assign data_state_d = (data_state_sel == SelEncDataOut) ? enc_data_out :
+ (data_state_sel == SelDecDataOut) ? dec_data_out :
+ (data_state_sel == SelDigestState) ? digest_state_q :
+ (data_state_sel == SelEncDataOutXor) ? enc_data_out_xor :
+ data_i;
+
+ assign key_state_d = (key_state_sel == SelDecKeyOut) ? dec_key_out :
+ (key_state_sel == SelEncKeyOut) ? enc_key_out :
+ (key_state_sel == SelDecKeyInit) ? otp_dec_key_mux :
+ (key_state_sel == SelEncKeyInit) ? otp_enc_key_mux :
+ (key_state_sel == SelDigestConst) ? otp_digest_const_mux :
+ (key_state_sel == SelDigestChained) ? {data_state_q, data_shadow_q} :
+ {data_i, data_shadow_q};
+
+ // Initialize the round index state with 1 in all cases, except for the decrypt operation.
+ assign idx_state_d = (key_state_sel == SelDecKeyOut) ? dec_idx_out :
+ (key_state_sel == SelEncKeyOut) ? enc_idx_out :
+ (key_state_sel == SelDecKeyInit) ? unsigned'(5'(NumPresentRounds)) :
+ 5'd1;
+
+ // The XOR is for the Davies-Mayer one-way function construction.
+ assign enc_data_out_xor = enc_data_out ^ digest_state_q;
+ assign digest_state_d = (digest_init) ? otp_digest_iv_mux : enc_data_out_xor;
+
+ logic valid_q; //valid_d defined below
+ assign data_o = (valid_q) ? data_state_q : 0;
+
+ /////////
+ // FSM //
+ /////////
+
+ // SEC_CM: SCRMBL.FSM.SPARSE
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 5 -n 9 \
+ // -s 2193087944 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (60.00%)
+ // 6: ||||||||||||| (40.00%)
+ // 7: --
+ // 8: --
+ // 9: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 6
+ // Minimum Hamming weight: 4
+ // Maximum Hamming weight: 7
+ //
+ localparam int StateWidth = 9;
+ typedef enum logic [StateWidth-1:0] {
+ IdleSt = 9'b100011001,
+ DecryptSt = 9'b101101111,
+ EncryptSt = 9'b010010111,
+ DigestSt = 9'b111000010,
+ ErrorSt = 9'b011111000
+ } state_e;
+
+ localparam int CntWidth = $clog2(NumPresentRounds+1);
+ localparam int unsigned LastPresentRoundInt = NumPresentRounds - 1;
+ localparam bit [CntWidth-1:0] LastPresentRound = LastPresentRoundInt[CntWidth-1:0];
+
+ state_e state_d, state_q;
+ logic [CntWidth-1:0] cnt;
+ logic cnt_clr, cnt_en, cnt_err;
+ logic valid_d; //valid_q defined above
+
+ assign valid_o = valid_q;
+
+ // SEC_CM: SCRMBL.CTR.REDUN
+ caliptra_prim_count #(
+ .Width(CntWidth)
+ ) u_prim_count (
+ .clk_i,
+ .rst_ni,
+ .clr_i(cnt_clr),
+ .set_i(1'b0),
+ .set_cnt_i('0),
+ .incr_en_i(cnt_en),
+ .decr_en_i(1'b0),
+ .step_i(CntWidth'(1)),
+ .commit_i(1'b1),
+ .cnt_o(cnt),
+ .cnt_after_commit_o(),
+ .err_o(cnt_err)
+ );
+
+ always_comb begin : p_fsm
+ state_d = state_q;
+ digest_mode_d = digest_mode_q;
+ data_state_sel = SelDataInput;
+ key_state_sel = SelDigestInput;
+ digest_init = 1'b0;
+ data_state_en = 1'b0;
+ data_shadow_copy = 1'b0;
+ data_shadow_load = 1'b0;
+ key_state_en = 1'b0;
+ digest_state_en = 1'b0;
+ cnt_en = 1'b0;
+ cnt_clr = 1'b0;
+ valid_d = 1'b0;
+ ready_o = 1'b0;
+ fsm_err_o = 1'b0;
+
+ unique case (state_q)
+ ///////////////////////////////////////////////////////////////////
+ // Idle State: decode command and
+ // load working regs accordingly
+ IdleSt: begin
+ cnt_clr = 1'b1;
+ ready_o = 1'b1;
+
+ if (valid_i) begin
+ unique case (cmd_i)
+ Decrypt: begin
+ state_d = DecryptSt;
+ key_state_sel = SelDecKeyInit;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ end
+ Encrypt: begin
+ state_d = EncryptSt;
+ key_state_sel = SelEncKeyInit;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ end
+ LoadShadow: begin
+ if (digest_mode_q == ChainedMode) begin
+ data_shadow_copy = 1'b1;
+ end else begin
+ data_shadow_load = 1'b1;
+ end
+ end
+ Digest: begin
+ state_d = DigestSt;
+ data_state_sel = SelDigestState;
+ key_state_sel = (digest_mode_q == ChainedMode) ? SelDigestChained : SelDigestInput;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ end
+ DigestInit: begin
+ digest_mode_d = mode_i;
+ digest_init = 1'b1;
+ digest_state_en = 1'b1;
+ end
+ DigestFinalize: begin
+ state_d = DigestSt;
+ data_state_sel = SelDigestState;
+ key_state_sel = SelDigestConst;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ digest_mode_d = StandardMode;
+ end
+ default: ; // ignore
+ endcase // cmd_i
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Perform decrypt rounds.
+ DecryptSt: begin
+ data_state_sel = SelDecDataOut;
+ key_state_sel = SelDecKeyOut;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ cnt_en = 1'b1;
+ if (cnt == LastPresentRound) begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Perform encrypt rounds.
+ EncryptSt: begin
+ data_state_sel = SelEncDataOut;
+ key_state_sel = SelEncKeyOut;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ cnt_en = 1'b1;
+ if (cnt == LastPresentRound) begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // The digest is calculated with a Merkle-Damgard construction that
+ // employs the PRESENT encryption datapath.
+ DigestSt: begin
+ data_state_sel = SelEncDataOut;
+ key_state_sel = SelEncKeyOut;
+ data_state_en = 1'b1;
+ key_state_en = 1'b1;
+ cnt_en = 1'b1;
+ if (cnt == LastPresentRound) begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ // Apply XOR for Davies-Meyer construction.
+ data_state_sel = SelEncDataOutXor;
+ // Backup digest state for next round of updates. We can't keep this state in the
+ // data state register as a digest may be calculated together with encryption
+ // operations in an interleaved way.
+ digest_state_en = 1'b1;
+ end
+ end
+ ///////////////////////////////////////////////////////////////////
+ // Terminal error state. This raises an alert.
+ ErrorSt: begin
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ // This should never happen, hence we directly jump into the
+ // error state, where an alert will be triggered.
+ default: begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ ///////////////////////////////////////////////////////////////////
+ endcase // state_q
+
+ // Unconditionally jump into the terminal error state in case of escalation.
+ // SEC_CM: SCRMBL.FSM.LOCAL_ESC, SCRMBL.FSM.GLOBAL_ESC
+ if (caliptra_ss_lc_ctrl_pkg::caliptra_ss_lc_tx_test_true_loose(escalate_en_i) || cnt_err) begin
+ state_d = ErrorSt;
+ fsm_err_o = 1'b1;
+ end
+ end
+
+ /////////////////////////////
+ // PRESENT DEC/ENC Modules //
+ /////////////////////////////
+
+ caliptra_prim_present #(
+ .KeyWidth(128),
+ .NumRounds(NumPresentRounds),
+ .NumPhysRounds(1)
+ ) u_prim_present_enc (
+ .data_i ( data_state_q ),
+ .key_i ( key_state_q ),
+ .idx_i ( idx_state_q ),
+ .data_o ( enc_data_out ),
+ .key_o ( enc_key_out ),
+ .idx_o ( enc_idx_out )
+ );
+
+ caliptra_prim_present #(
+ .KeyWidth(128),
+ // We are using an iterative full-round implementation here.
+ .NumRounds(NumPresentRounds),
+ .NumPhysRounds(1),
+ .Decrypt(1)
+ ) u_prim_present_dec (
+ .data_i ( data_state_q ),
+ .key_i ( key_state_q ),
+ .idx_i ( idx_state_q ),
+ .data_o ( dec_data_out ),
+ .key_o ( dec_key_out ),
+ .idx_o ( dec_idx_out )
+ );
+
+ ///////////////
+ // Registers //
+ ///////////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, IdleSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ key_state_q <= '0;
+ idx_state_q <= '0;
+ data_state_q <= '0;
+ data_shadow_q <= '0;
+ digest_state_q <= '0;
+ valid_q <= 1'b0;
+ digest_mode_q <= StandardMode;
+ end else begin
+ valid_q <= valid_d;
+ digest_mode_q <= digest_mode_d;
+
+ // enable regs
+ if (key_state_en) begin
+ key_state_q <= key_state_d;
+ idx_state_q <= idx_state_d;
+ end
+ if (data_state_en) begin
+ data_state_q <= data_state_d;
+ end
+ if (data_shadow_copy) begin
+ data_shadow_q <= data_state_q;
+ end else if (data_shadow_load) begin
+ data_shadow_q <= data_state_d;
+ end
+ if (digest_state_en) begin
+ digest_state_q <= digest_state_d;
+ end
+ end
+ end
+
+endmodule : otp_ctrl_scrmbl
diff --git a/src/fuse_ctrl/rtl/otp_ctrl_token_const.sv b/src/fuse_ctrl/rtl/otp_ctrl_token_const.sv
new file mode 100644
index 0000000..f9fd7ca
--- /dev/null
+++ b/src/fuse_ctrl/rtl/otp_ctrl_token_const.sv
@@ -0,0 +1,70 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// This module contains the hash post-image constants for the all-zero and raw unlock tokens.
+// This implementation relies on constant propagation to precompute these constants from the
+// random netlist constants at compile time, and hence does not contain any "real" logic.
+
+module otp_ctrl_token_const
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ #(
+ // Compile time random constants, to be overriden by topgen.
+ parameter digest_const_array_t RndCnstDigestConst = RndCnstDigestConstDefault,
+ parameter digest_iv_array_t RndCnstDigestIV = RndCnstDigestIVDefault,
+ parameter caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t RndCnstRawUnlockToken = caliptra_ss_lc_ctrl_state_pkg::RndCnstRawUnlockTokenDefault
+) (
+ output caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t all_zero_token_hashed_o,
+ output caliptra_ss_lc_ctrl_state_pkg::caliptra_ss_lc_token_t raw_unlock_token_hashed_o
+);
+
+ localparam int NumHashes = 2;
+ localparam int AllZeroIdx = 0;
+ localparam int RawUnlockIdx = 1;
+ //[anjpar] Adding localpram LcRawDigest and initializing to 0
+ localparam int LcRawDigest = 0;
+
+ logic [NumHashes-1:0][1:0][ScrmblKeyWidth-1:0] data;
+ logic [NumHashes-1:0][4:0][ScrmblBlockWidth-1:0] state;
+
+ // First digest is for the all zero token, the second is for the raw unlock token.
+ assign data[AllZeroIdx][0] = '0;
+ assign data[RawUnlockIdx][0] = RndCnstRawUnlockToken;
+
+ // Repeat for all precomputed hashes.
+ for (genvar j = 0; j < NumHashes; j++) begin : gen_hashes
+ // Initialize all hashes with digest IV.
+ assign state[j][0] = RndCnstDigestIV[LcRawDigest];
+ // Second data block is always the digest finalization constant.
+ assign data[j][1] = RndCnstDigestConst[LcRawDigest];
+
+ // Each hash takes four invocations, see diagram c) on
+ // https://docs.opentitan.org/hw/ip/otp_ctrl/doc/index.html#scrambling-datapath
+ for (genvar k = 0; k < 4; k++) begin : gen_invocations
+ logic [ScrmblBlockWidth-1:0] next_state;
+
+ // This relies on constant propagation to
+ // statically precompute the hashed token values.
+ caliptra_prim_present #(
+ .KeyWidth(128),
+ .NumRounds(NumPresentRounds)
+ ) u_prim_present_enc_0 (
+ .data_i ( state[j][k] ),
+ .key_i ( data[j][k%2] ),
+ .idx_i ( 5'h1 ),
+ .data_o ( next_state ),
+ .key_o ( ),
+ .idx_o ( )
+ );
+
+ // XOR in last state according to the Davies-Meyer scheme.
+ assign state[j][k+1] = next_state ^ state[j][k];
+ end
+ end
+
+ // Concatenate the two 64bit hash results to form the final digests.
+ assign all_zero_token_hashed_o = {state[AllZeroIdx][4], state[AllZeroIdx][2]};
+ assign raw_unlock_token_hashed_o = {state[RawUnlockIdx][4], state[RawUnlockIdx][2]};
+
+endmodule : otp_ctrl_token_const
diff --git a/src/fuse_ctrl/rtl/prim_generic_otp.sv b/src/fuse_ctrl/rtl/prim_generic_otp.sv
new file mode 100644
index 0000000..167e651
--- /dev/null
+++ b/src/fuse_ctrl/rtl/prim_generic_otp.sv
@@ -0,0 +1,435 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+module prim_generic_otp
+ import caliptra_prim_otp_pkg::*;
+#(
+ // Native OTP word size. This determines the size_i granule.
+ parameter int Width = 16,
+ parameter int Depth = 1024,
+ // This determines the maximum number of native words that
+ // can be transferred accross the interface in one cycle.
+ parameter int SizeWidth = 2,
+ // Width of the power sequencing signal.
+ parameter int PwrSeqWidth = 2,
+ // Width of vendor-specific test control signal
+ parameter int TestCtrlWidth = 32,
+ parameter int TestStatusWidth = 32,
+ parameter int TestVectWidth = 8,
+ // Derived parameters
+ localparam int AddrWidth = caliptra_prim_util_pkg::vbits(Depth),
+ localparam int IfWidth = 2**SizeWidth*Width,
+ // VMEM file to initialize the memory with
+ parameter MemInitFile = "",
+ // Vendor test partition offset and size (both in bytes)
+ parameter int VendorTestOffset = 0,
+ parameter int VendorTestSize = 0
+) (
+ input clk_i,
+ input rst_ni,
+ // Observability
+ input ast_pkg::ast_obs_ctrl_t obs_ctrl_i,
+ output logic [7:0] otp_obs_o,
+ // Macro-specific power sequencing signals to/from AST
+ output logic [PwrSeqWidth-1:0] pwr_seq_o,
+ input [PwrSeqWidth-1:0] pwr_seq_h_i,
+ // External programming voltage
+ inout wire ext_voltage_io,
+ // Test interfaces
+ input [TestCtrlWidth-1:0] test_ctrl_i,
+ output logic [TestStatusWidth-1:0] test_status_o,
+ output logic [TestVectWidth-1:0] test_vect_o,
+ input tlul_pkg::tl_h2d_t test_tl_i,
+ output tlul_pkg::tl_d2h_t test_tl_o,
+ // Other DFT signals
+ input caliptra_prim_mubi_pkg::mubi4_t scanmode_i, // Scan Mode input
+ input scan_en_i, // Scan Shift
+ input scan_rst_ni, // Scan Reset
+ // Alert indication (to be connected to alert sender in the instantiating IP)
+ output logic fatal_alert_o,
+ output logic recov_alert_o,
+ // Ready valid handshake for read/write command
+ output logic ready_o,
+ input valid_i,
+ // #(Native words)-1, e.g. size == 0 for 1 native word.
+ input [SizeWidth-1:0] size_i,
+ // See prim_otp_pkg for the command encoding.
+ input cmd_e cmd_i,
+ input [AddrWidth-1:0] addr_i,
+ input [IfWidth-1:0] wdata_i,
+ // Response channel
+ output logic valid_o,
+ output logic [IfWidth-1:0] rdata_o,
+ output err_e err_o
+);
+
+ import caliptra_prim_mubi_pkg::MuBi4False;
+
+ // This is only restricted by the supported ECC poly further
+ // below, and is straightforward to extend, if needed.
+ localparam int EccWidth = 6;
+ `CALIPTRA_ASSERT_INIT(SecDecWidth_A, Width == 16)
+
+ // Not supported in open-source emulation model.
+ logic [PwrSeqWidth-1:0] unused_pwr_seq_h;
+ assign unused_pwr_seq_h = pwr_seq_h_i;
+ assign pwr_seq_o = '0;
+
+ logic unused_obs;
+ assign unused_obs = |obs_ctrl_i;
+ assign otp_obs_o = '0;
+
+ wire unused_ext_voltage;
+ assign unused_ext_voltage = ext_voltage_io;
+ logic unused_test_ctrl_i;
+ assign unused_test_ctrl_i = ^test_ctrl_i;
+
+ logic unused_scan;
+ assign unused_scan = ^{scanmode_i, scan_en_i, scan_rst_ni};
+
+ logic intg_err, fsm_err;
+ assign fatal_alert_o = intg_err || fsm_err;
+ assign recov_alert_o = 1'b0;
+
+ assign test_vect_o = '0;
+ assign test_status_o = '0;
+
+ ////////////////////////////////////
+ // TL-UL Test Interface Emulation //
+ ////////////////////////////////////
+
+ otp_ctrl_reg_pkg::otp_ctrl_prim_reg2hw_t reg2hw;
+ otp_ctrl_reg_pkg::otp_ctrl_prim_hw2reg_t hw2reg;
+ otp_ctrl_prim_reg_top u_reg_top (
+ .clk_i,
+ .rst_ni,
+ .tl_i (test_tl_i ),
+ .tl_o (test_tl_o ),
+ .reg2hw (reg2hw ),
+ .hw2reg (hw2reg ),
+ .intg_err_o(intg_err )
+ );
+
+ logic unused_reg_sig;
+ assign unused_reg_sig = ^reg2hw;
+ assign hw2reg = '0;
+
+ ///////////////////
+ // Control logic //
+ ///////////////////
+
+ // Encoding generated with:
+ // $ ./util/design/sparse-fsm-encode.py -d 5 -m 9 -n 10 \
+ // -s 2599950981 --language=sv
+ //
+ // Hamming distance histogram:
+ //
+ // 0: --
+ // 1: --
+ // 2: --
+ // 3: --
+ // 4: --
+ // 5: |||||||||||||||||||| (52.78%)
+ // 6: ||||||||||||||| (41.67%)
+ // 7: | (2.78%)
+ // 8: | (2.78%)
+ // 9: --
+ // 10: --
+ //
+ // Minimum Hamming distance: 5
+ // Maximum Hamming distance: 8
+ // Minimum Hamming weight: 3
+ // Maximum Hamming weight: 8
+ //
+ localparam int StateWidth = 10;
+ typedef enum logic [StateWidth-1:0] {
+ ResetSt = 10'b1100000110,
+ InitSt = 10'b1000110011,
+ IdleSt = 10'b0101110000,
+ ReadSt = 10'b0010011111,
+ ReadWaitSt = 10'b1001001101,
+ WriteCheckSt = 10'b1111101011,
+ WriteWaitSt = 10'b0011000010,
+ WriteSt = 10'b0110100101,
+ ErrorSt = 10'b1110011000
+ } state_e;
+
+ state_e state_d, state_q;
+ err_e err_d, err_q;
+ logic valid_d, valid_q;
+ logic integrity_en_d, integrity_en_q;
+ logic req, wren, rvalid;
+ logic [1:0] rerror;
+ logic [AddrWidth-1:0] addr_q;
+ logic [SizeWidth-1:0] size_q;
+ logic [SizeWidth-1:0] cnt_d, cnt_q;
+ logic cnt_clr, cnt_en;
+ logic read_ecc_on, write_ecc_on;
+ logic wdata_inconsistent;
+
+
+ assign cnt_d = (cnt_clr) ? '0 :
+ (cnt_en) ? cnt_q + 1'b1 : cnt_q;
+
+ assign valid_o = valid_q;
+ assign err_o = err_q;
+
+ always_comb begin : p_fsm
+ // Default
+ state_d = state_q;
+ ready_o = 1'b0;
+ valid_d = 1'b0;
+ err_d = err_q;
+ req = 1'b0;
+ wren = 1'b0;
+ cnt_clr = 1'b0;
+ cnt_en = 1'b0;
+ read_ecc_on = 1'b1;
+ write_ecc_on = 1'b1;
+ fsm_err = 1'b0;
+ integrity_en_d = integrity_en_q;
+
+ unique case (state_q)
+ // Wait here until we receive an initialization command.
+ ResetSt: begin
+ err_d = NoError;
+ ready_o = 1'b1;
+ if (valid_i) begin
+ if (cmd_i == Init) begin
+ state_d = InitSt;
+ end
+ end
+ end
+ // Wait for some time until the OTP macro is ready.
+ InitSt: begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ err_d = NoError;
+ end
+ // In the idle state, we basically wait for read or write commands.
+ IdleSt: begin
+ ready_o = 1'b1;
+ err_d = NoError;
+ if (valid_i) begin
+ cnt_clr = 1'b1;
+ err_d = NoError;
+ unique case (cmd_i)
+ Read: begin
+ state_d = ReadSt;
+ integrity_en_d = 1'b1;
+ end
+ Write: begin
+ state_d = WriteCheckSt;
+ integrity_en_d = 1'b1;
+ end
+ ReadRaw: begin
+ state_d = ReadSt;
+ integrity_en_d = 1'b0;
+ end
+ WriteRaw: begin
+ state_d = WriteCheckSt;
+ integrity_en_d = 1'b0;
+ end
+ default: ;
+ endcase // cmd_i
+ end
+ end
+ // Issue a read command to the macro.
+ ReadSt: begin
+ state_d = ReadWaitSt;
+ req = 1'b1;
+ // Suppress ECC correction if needed.
+ read_ecc_on = integrity_en_q;
+ end
+ // Wait for response from macro.
+ ReadWaitSt: begin
+ // Suppress ECC correction if needed.
+ read_ecc_on = integrity_en_q;
+ if (rvalid) begin
+ cnt_en = 1'b1;
+ // Uncorrectable error, bail out.
+ if (rerror[1] && integrity_en_q) begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ err_d = MacroEccUncorrError;
+ end else begin
+ if (cnt_q == size_q) begin
+ state_d = IdleSt;
+ valid_d = 1'b1;
+ end else begin
+ state_d = ReadSt;
+ end
+ // Correctable error, carry on but signal back.
+ if (rerror[0] && integrity_en_q) begin
+ err_d = MacroEccCorrError;
+ end
+ end
+ end
+ end
+ // First, read out to perform the write blank check and
+ // read-modify-write operation.
+ WriteCheckSt: begin
+ state_d = WriteWaitSt;
+ req = 1'b1;
+ // Register raw memory contents without correction so that we can
+ // perform the read-modify-write correctly.
+ read_ecc_on = 1'b0;
+ end
+ // Wait for readout to complete first.
+ WriteWaitSt: begin
+ // Register raw memory contents without correction so that we can
+ // perform the read-modify-write correctly.
+ read_ecc_on = 1'b0;
+ if (rvalid) begin
+ cnt_en = 1'b1;
+
+ if (cnt_q == size_q) begin
+ cnt_clr = 1'b1;
+ state_d = WriteSt;
+ end else begin
+ state_d = WriteCheckSt;
+ end
+ end
+ end
+ // If the write data attempts to clear an already programmed bit,
+ // the MacroWriteBlankError needs to be asserted.
+ WriteSt: begin
+ req = 1'b1;
+ wren = 1'b1;
+ cnt_en = 1'b1;
+ // Suppress ECC calculation if needed.
+ write_ecc_on = integrity_en_q;
+
+ if (wdata_inconsistent) begin
+ err_d = MacroWriteBlankError;
+ end
+
+ if (cnt_q == size_q) begin
+ valid_d = 1'b1;
+ state_d = IdleSt;
+ end
+ end
+ // If the FSM is glitched into an invalid state.
+ ErrorSt: begin
+ fsm_err = 1'b1;
+ end
+ default: begin
+ state_d = ErrorSt;
+ fsm_err = 1'b1;
+ end
+ endcase // state_q
+ end
+
+ ///////////////////////////////////////////
+ // Emulate using ECC protected Block RAM //
+ ///////////////////////////////////////////
+
+ logic [AddrWidth-1:0] addr;
+ assign addr = addr_q + AddrWidth'(cnt_q);
+
+ logic [Width-1:0] rdata_corr;
+ logic [Width+EccWidth-1:0] rdata_d, wdata_ecc, rdata_ecc, wdata_rmw;
+ logic [2**SizeWidth-1:0][Width-1:0] wdata_q, rdata_reshaped;
+ logic [2**SizeWidth-1:0][Width+EccWidth-1:0] rdata_q;
+
+ // Use a standard Hamming ECC for OTP.
+ caliptra_prim_secded_hamming_22_16_enc u_enc (
+ .data_i(wdata_q[cnt_q]),
+ .data_o(wdata_ecc)
+ );
+
+ caliptra_prim_secded_hamming_22_16_dec u_dec (
+ .data_i (rdata_ecc),
+ .data_o (rdata_corr),
+ .syndrome_o ( ),
+ .err_o (rerror)
+ );
+
+ assign rdata_d = (read_ecc_on) ? {{EccWidth{1'b0}}, rdata_corr}
+ : rdata_ecc;
+
+ // Read-modify-write (OTP can only set bits to 1, but not clear to 0).
+ assign wdata_rmw = (write_ecc_on) ? wdata_ecc | rdata_q[cnt_q]
+ : {{EccWidth{1'b0}}, wdata_q[cnt_q]} | rdata_q[cnt_q];
+
+ // This indicates if the write data is inconsistent (i.e., if the operation attempts to
+ // clear an already programmed bit to zero).
+ assign wdata_inconsistent = (rdata_q[cnt_q] & wdata_ecc) != rdata_q[cnt_q];
+
+ // Output data without ECC bits.
+ always_comb begin : p_output_map
+ for (int k = 0; k < 2**SizeWidth; k++) begin
+ rdata_reshaped[k] = rdata_q[k][Width-1:0];
+ end
+ rdata_o = rdata_reshaped;
+ end
+
+ caliptra_prim_ram_1p_adv #(
+ .Depth (Depth),
+ .Width (Width + EccWidth),
+ .MemInitFile (MemInitFile),
+ .EnableInputPipeline (1),
+ .EnableOutputPipeline (1)
+ ) u_prim_ram_1p_adv (
+ .clk_i,
+ .rst_ni,
+ .req_i ( req ),
+ .write_i ( wren ),
+ .addr_i ( addr ),
+ .wdata_i ( wdata_rmw ),
+ .wmask_i ( {Width+EccWidth{1'b1}} ),
+ .rdata_o ( rdata_ecc ),
+ .rvalid_o ( rvalid ),
+ .rerror_o ( ),
+ .cfg_i ( '0 )
+ );
+
+
+
+ // Currently it is assumed that no wrap arounds can occur.
+ `CALIPTRA_ASSERT(NoWrapArounds_A, req |-> (addr >= addr_q))
+
+ //////////
+ // Regs //
+ //////////
+
+ `CALIPTRA_PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, ResetSt)
+
+ always_ff @(posedge clk_i or negedge rst_ni) begin : p_regs
+ if (!rst_ni) begin
+ valid_q <= '0;
+ err_q <= NoError;
+ addr_q <= '0;
+ wdata_q <= '0;
+ rdata_q <= '0;
+ cnt_q <= '0;
+ size_q <= '0;
+ integrity_en_q <= 1'b0;
+ end else begin
+ valid_q <= valid_d;
+ err_q <= err_d;
+ cnt_q <= cnt_d;
+ integrity_en_q <= integrity_en_d;
+ if (ready_o && valid_i) begin
+ addr_q <= addr_i;
+ wdata_q <= wdata_i;
+ size_q <= size_i;
+ end
+ if (rvalid) begin
+ rdata_q[cnt_q] <= rdata_d;
+ end
+ end
+ end
+
+ ////////////////
+ // Assertions //
+ ////////////////
+
+ // Check that the otp_ctrl FSMs only issue legal commands to the wrapper.
+ `CALIPTRA_ASSERT(CheckCommands0_A, state_q == ResetSt && valid_i && ready_o |-> cmd_i == Init)
+ `CALIPTRA_ASSERT(CheckCommands1_A, state_q != ResetSt && valid_i && ready_o
+ |-> cmd_i inside {Read, ReadRaw, Write, WriteRaw})
+
+
+endmodule : prim_generic_otp
diff --git a/src/fuse_ctrl/stimulus/tests/directed/fuse_ctrl_sign_of_life_test.yml b/src/fuse_ctrl/stimulus/tests/directed/fuse_ctrl_sign_of_life_test.yml
new file mode 100644
index 0000000..1f1ca99
--- /dev/null
+++ b/src/fuse_ctrl/stimulus/tests/directed/fuse_ctrl_sign_of_life_test.yml
@@ -0,0 +1,17 @@
+# SPDX-License-Identifier: Apache-2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+---
+testname: fuse_ctrl_sign_of_life_test
+seed: 1
\ No newline at end of file
diff --git a/src/fuse_ctrl/tb/otp_ctrl_if.sv b/src/fuse_ctrl/tb/otp_ctrl_if.sv
new file mode 100755
index 0000000..febedfe
--- /dev/null
+++ b/src/fuse_ctrl/tb/otp_ctrl_if.sv
@@ -0,0 +1,327 @@
+// Copyright lowRISC contributors (OpenTitan project).
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+// DO NOT EDIT THIS FILE DIRECTLY.
+// It has been generated with ./util/design/gen-otp-mmap.py
+
+// This interface collect the broadcast output data from OTP,
+// and drive input requests coming into OTP.
+`define ECC_REG_PATH gen_ecc_reg.u_otp_ctrl_ecc_reg.gen_ecc_dec[0].u_prim_secded_inv_72_64_dec
+
+// This only supports buffered partitions.
+`define BUF_PART_OTP_CMD_PATH(i) \
+ tb.dut.gen_partitions[``i``].gen_buffered.u_part_buf.otp_cmd_o
+
+`define LC_PART_OTP_CMD_PATH \
+ tb.dut.gen_partitions[LifeCycleIdx].gen_lifecycle.u_part_buf.otp_cmd_o
+
+`define FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(i) \
+ if (forced_part_access_sel[``i``].read_lock) begin \
+ force tb.dut.part_access[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ force tb.dut.part_access_dai[``i``].read_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ end \
+ if (forced_part_access_sel[``i``].write_lock) begin \
+ force tb.dut.part_access[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ force tb.dut.part_access_dai[``i``].write_lock = get_rand_mubi8_val(.t_weight(0), .f_weight(0)); \
+ end
+
+`ifndef PRIM_GENERIC_OTP_PATH
+ `define PRIM_GENERIC_OTP_PATH\
+ tb.dut.u_otp
+`endif
+
+`ifndef PRIM_GENERIC_OTP_CMD_I_PATH
+ `define PRIM_GENERIC_OTP_CMD_I_PATH \
+ `PRIM_GENERIC_OTP_PATH.gen_generic.u_impl_generic.cmd_i
+`endif
+
+interface otp_ctrl_if(input clk_i, input rst_ni);
+ import uvm_pkg::*;
+ import otp_ctrl_env_pkg::*;
+ import otp_ctrl_pkg::*;
+ import otp_ctrl_reg_pkg::*;
+ import otp_ctrl_part_pkg::*;
+ import cip_base_pkg::*;
+
+ // Output from DUT
+ otp_broadcast_t otp_broadcast_o;
+ otp_keymgr_key_t keymgr_key_o;
+ otp_lc_data_t lc_data_o;
+ logic pwr_otp_done_o, pwr_otp_idle_o;
+
+ // Inputs to DUT
+ logic pwr_otp_init_i, scan_en_i, scan_rst_ni, ext_voltage_h_io;
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i, lc_escalate_en_i, lc_check_byp_en_i,
+ lc_creator_seed_sw_rw_en_i, lc_owner_seed_sw_rw_en_i,
+ lc_seed_hw_rd_en_i;
+ prim_mubi_pkg::mubi4_t scanmode_i;
+ otp_ast_rsp_t otp_ast_pwr_seq_h_i;
+ ast_pkg::ast_obs_ctrl_t obs_ctrl_i;
+
+ // Unused in prim_generic_otp memory.
+ logic [OtpTestCtrlWidth-1:0] otp_vendor_test_ctrl_i;
+ logic [OtpTestStatusWidth-1:0] otp_vendor_test_status_o;
+ logic [OtpTestVectWidth-1:0] cio_test_o;
+ logic [OtpTestVectWidth-1:0] cio_test_en_o;
+
+ // Connect with lc_prog push_pull interface.
+ logic lc_prog_req, lc_prog_err;
+ logic lc_prog_err_dly1, lc_prog_no_sta_check;
+
+ // Connect push_pull interfaces ack signals for assertion checks.
+ logic otbn_ack, lc_prog_ack;
+ logic [1:0] flash_acks;
+ logic [NumSramKeyReqSlots-1:0] sram_acks;
+
+ // Variables for internal interface logic.
+ // `lc_escalate_en` is async, take two clock cycles to synchronize.
+ lc_ctrl_pkg::lc_tx_t lc_esc_dly1, lc_esc_dly2;
+
+ // Variable for scoreboard.
+ // For `lc_escalate_en`, any value that is not `Off` is a `On`.
+ bit lc_esc_on;
+
+ // Probe design signal for alert request.
+ logic alert_reqs;
+
+ // Usually the `lc_check_byp_en` will be automatically set to `On` when LC program request is
+ // issued, and stays `On` until reset is issued.
+ // Set this variable to 0 after a LC program request might cause otp checks to fail.
+ bit lc_check_byp_en = 1;
+
+ // Internal veriable to track which sw partitions have ECC reg error.
+ bit [NumPartUnbuf-1:0] force_sw_parts_ecc_reg;
+
+ // DUT configuration object
+ otp_ctrl_ast_inputs_cfg dut_cfg;
+
+ // for DV macros ID
+ string msg_id = "otp_ctrl_if";
+
+ // Lc_err could trigger during LC program, so check intr and status after lc_req is finished.
+ // Lc_err takes one clock cycle to propogate to intr signal. So avoid intr check if it happens
+ // during the transition.
+ always_ff @(posedge clk_i or negedge rst_ni) begin
+ if (!rst_ni) begin
+ lc_prog_err_dly1 <= 0;
+ lc_esc_dly1 <= lc_ctrl_pkg::Off;
+ lc_esc_dly2 <= lc_ctrl_pkg::Off;
+ lc_check_byp_en_i <= get_rand_lc_tx_val();
+ lc_esc_on <= 0;
+ end else begin
+ lc_prog_err_dly1 <= lc_prog_err;
+ lc_esc_dly1 <= lc_escalate_en_i;
+ lc_esc_dly2 <= lc_esc_dly1;
+ if (lc_prog_req) begin
+ lc_check_byp_en_i <= lc_check_byp_en ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off;
+ end
+ if (lc_esc_dly2 != lc_ctrl_pkg::Off && !lc_esc_on) begin
+ lc_esc_on <= 1;
+ end
+ end
+ end
+
+ assign lc_prog_no_sta_check = lc_prog_err | lc_prog_err_dly1 | lc_prog_req | lc_esc_on;
+
+ function automatic void drive_pwr_otp_init(logic val);
+ pwr_otp_init_i = val;
+ endfunction
+
+ function automatic void drive_ext_voltage_h_io(logic val);
+ ext_voltage_h_io = val;
+ endfunction
+
+ function automatic void drive_lc_creator_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_creator_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_owner_seed_sw_rw_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_owner_seed_sw_rw_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_dft_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_dft_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_escalate_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_escalate_en_i = val;
+ endfunction
+
+ function automatic void drive_lc_seed_hw_rd_en(lc_ctrl_pkg::lc_tx_t val);
+ lc_seed_hw_rd_en_i = val;
+ endfunction
+
+ function automatic bit under_error_states();
+ return lc_esc_on | alert_reqs;
+ endfunction
+
+ // SW partitions do not have any internal checks.
+ // Here we force internal ECC check to fail.
+ task automatic force_sw_check_fail(
+ bit[NumPartUnbuf-1:0] fail_idx = $urandom_range(1, (1'b1 << NumPartUnbuf) - 1));
+ @(posedge clk_i);
+ if (fail_idx[VendorTestIdx]) begin
+ force tb.dut.gen_partitions[VendorTestIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[VendorTestIdx] = 1;
+ end
+ if (fail_idx[NonSecretFusesIdx]) begin
+ force tb.dut.gen_partitions[NonSecretFusesIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0] = 1;
+ force_sw_parts_ecc_reg[NonSecretFusesIdx] = 1;
+ end
+ endtask
+
+ task automatic release_sw_check_fail();
+ @(posedge clk_i);
+ if (force_sw_parts_ecc_reg[VendorTestIdx]) begin
+ release tb.dut.gen_partitions[VendorTestIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[VendorTestIdx] = 0;
+ end
+ if (force_sw_parts_ecc_reg[NonSecretFusesIdx]) begin
+ release tb.dut.gen_partitions[NonSecretFusesIdx].gen_unbuffered.
+ u_part_unbuf.`ECC_REG_PATH.data_i[0];
+ force_sw_parts_ecc_reg[NonSecretFusesIdx] = 0;
+ end
+ endtask
+
+ // Force prim_generic_otp input cmd_i to a invalid value.
+ task automatic force_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ force `PRIM_GENERIC_OTP_CMD_I_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ endtask
+
+ task automatic release_invalid_otp_cmd_i();
+ @(posedge clk_i);
+ release `PRIM_GENERIC_OTP_CMD_I_PATH;
+ endtask
+
+ // Force part_buf partitions output otp_cmd_o to a invalid value.
+ task automatic force_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+ Secret0Idx: force `BUF_PART_OTP_CMD_PATH(Secret0Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ Secret1Idx: force `BUF_PART_OTP_CMD_PATH(Secret1Idx) = prim_otp_pkg::cmd_e'(2'b10);
+ LifeCycleIdx: force `LC_PART_OTP_CMD_PATH = prim_otp_pkg::cmd_e'(2'b10);
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("force invalid otp_cmd_o only supports buffered partitions: %0d", part_idx))
+ end
+ endcase
+ endtask
+
+ task automatic release_invalid_part_cmd_o(int part_idx);
+ @(posedge clk_i);
+ case (part_idx)
+ Secret0Idx: release `BUF_PART_OTP_CMD_PATH(Secret0Idx);
+ Secret1Idx: release `BUF_PART_OTP_CMD_PATH(Secret1Idx);
+ LifeCycleIdx: release `LC_PART_OTP_CMD_PATH;
+ default: begin
+ `uvm_fatal("otp_ctrl_if",
+ $sformatf("release invalid otp_cmd_o only supports buffered partitions: %0d",
+ part_idx))
+ end
+ endcase
+ endtask
+
+ // This task forces otp_ctrl's internal mubi signals to values that are not mubi::true or mubi::
+ // false. Then scb will check if design treats these values as locking the partition access.
+ task automatic force_part_access_mubi(otp_part_access_lock_t forced_part_access_sel[NumPart-1]);
+ @(posedge clk_i);
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(VendorTestIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(NonSecretFusesIdx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(Secret0Idx)
+ `FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL(Secret1Idx)
+ endtask
+
+ task automatic release_part_access_mubi();
+ @(posedge clk_i);
+ release tb.dut.part_access;
+ release tb.dut.part_access_dai;
+ endtask
+
+ // Connectivity assertions for test related I/Os.
+ `ASSERT(LcOtpTestStatusO_A, otp_vendor_test_status_o == `PRIM_GENERIC_OTP_PATH.test_status_o)
+ `ASSERT(LcOtpTestCtrlI_A, otp_vendor_test_ctrl_i == `PRIM_GENERIC_OTP_PATH.test_ctrl_i)
+
+ `ASSERT(CioTestOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |->
+ ##[2:3] cio_test_o == `PRIM_GENERIC_OTP_PATH.test_vect_o)
+ `ASSERT(CioTestOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_o == 0)
+ `ASSERT(CioTestEnOWithDftOn_A, lc_dft_en_i == lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == '1)
+ `ASSERT(CioTestEnOWithDftOff_A, lc_dft_en_i != lc_ctrl_pkg::On |-> ##[2:3] cio_test_en_o == 0)
+
+
+ `define OTP_ASSERT_WO_LC_ESC(NAME, SEQ) \
+ `ASSERT(NAME, SEQ, clk_i, !rst_ni || lc_esc_on || alert_reqs)
+
+ // If pwr_otp_idle is set only if pwr_otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpPwrDoneWhenIdle_A, pwr_otp_idle_o |-> pwr_otp_done_o)
+
+ // otp_broadcast_o is valid only when otp init is done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOn_A, pwr_otp_done_o |->
+ otp_broadcast_o.valid == lc_ctrl_pkg::On)
+ // If otp_broadcast is Off, then hw partition is not finished calculation,
+ // then otp init is not done
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgValidOff_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off |->
+ pwr_otp_done_o == 0)
+ // Once OTP init is done, otp_broadcast_o output value stays stable until next power cycle
+ `OTP_ASSERT_WO_LC_ESC(OtpHwCfgStable_A, otp_broadcast_o.valid == lc_ctrl_pkg::On |=>
+ $stable(otp_broadcast_o))
+
+ // Otp_keymgr valid is related to part_digest, should not be changed after otp_pwr_init
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable0_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share0_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable1_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_root_key_share1_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable2_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.creator_seed_valid))
+ `OTP_ASSERT_WO_LC_ESC(OtpKeymgrValidStable3_A, pwr_otp_done_o |->
+ $stable(keymgr_key_o.owner_seed_valid))
+
+ // During lc_prog_req, either otp_idle will be reset or lc_error is set
+ `OTP_ASSERT_WO_LC_ESC(LcProgReq_A, $rose(lc_prog_req) |=>
+ (pwr_otp_idle_o == 0 || $rose(lc_prog_err)) within lc_prog_req[*1:$])
+
+ // During fatal alert, check if otp outputs revert back to default value.
+ // Wait three clock cycles until error propogates to each FSM states and regs.
+ `define OTP_FATAL_ERR_ASSERT(NAME, SEQ) \
+ `ASSERT(FatalErr``NAME``, alert_reqs |-> ##3 SEQ)
+
+ `OTP_FATAL_ERR_ASSERT(LcDataValid_A, lc_data_o.valid == 0 && lc_data_o.error == 1)
+ `OTP_FATAL_ERR_ASSERT(LcDataState_A, lc_data_o.state ==
+ PartInvDefault[LcStateOffset*8+:LcStateSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataCount_A, lc_data_o.count ==
+ PartInvDefault[LcTransitionCntOffset*8+:LcTransitionCntSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestUnlockToken_A, lc_data_o.test_unlock_token ==
+ PartInvDefault[TestUnlockTokenOffset*8+:TestUnlockTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataTestExitToken_A, lc_data_o.test_exit_token ==
+ PartInvDefault[TestExitTokenOffset*8+:TestExitTokenSize*8])
+ `OTP_FATAL_ERR_ASSERT(LcDataRmaToken_A, lc_data_o.rma_token ==
+ PartInvDefault[RmaTokenOffset*8+:RmaTokenSize*8])
+
+ `OTP_FATAL_ERR_ASSERT(KeymgrKeyData_A, keymgr_key_o.creator_root_key_share0 ==
+ PartInvDefault[CreatorRootKeyShare0Offset*8+:CreatorRootKeyShare0Size*8] &&
+ keymgr_key_o.creator_root_key_share1 ==
+ PartInvDefault[CreatorRootKeyShare1Offset*8+:CreatorRootKeyShare1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(HwCfgOValid_A, otp_broadcast_o.valid == lc_ctrl_pkg::Off)
+ `OTP_FATAL_ERR_ASSERT(HwCfg0OData_A, otp_broadcast_o.hw_cfg0_data ==
+ PartInvDefault[HwCfg0Offset*8+:HwCfg0Size*8])
+ `OTP_FATAL_ERR_ASSERT(HwCfg1OData_A, otp_broadcast_o.hw_cfg1_data ==
+ PartInvDefault[HwCfg1Offset*8+:HwCfg1Size*8])
+
+ `OTP_FATAL_ERR_ASSERT(LcProgAck_A, lc_prog_ack == 0)
+ `OTP_FATAL_ERR_ASSERT(FlashAcks_A, flash_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(SramAcks_A, sram_acks == 0)
+ `OTP_FATAL_ERR_ASSERT(OtbnAck_A, otbn_ack == 0)
+
+ `undef OTP_ASSERT_WO_LC_ESC
+ `undef OTP_FATAL_ERR_ASSERT
+ `undef ECC_REG_PATH
+ `undef BUF_PART_OTP_CMD_PATH
+ `undef LC_PART_OTP_CMD_PATH
+ `undef PRIM_GENERIC_OTP_PATH
+ `undef PRIM_GENERIC_OTP_CMD_I_PATH
+ `undef FORCE_OTP_PART_LOCK_WITH_RAND_NON_MUBI_VAL
+endinterface
diff --git a/src/fuse_ctrl/tb/otp_ctrl_top_tb.sv b/src/fuse_ctrl/tb/otp_ctrl_top_tb.sv
new file mode 100644
index 0000000..1df653d
--- /dev/null
+++ b/src/fuse_ctrl/tb/otp_ctrl_top_tb.sv
@@ -0,0 +1,589 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+
+// -------------------------------------------------------------------------
+// FUSE CTRL Testbench for basic/initial testing
+// -------------------------------------------------------------------------
+
+module otp_ctrl_top_tb
+ import axi_pkg::*;
+ import caliptra_otp_ctrl_pkg::*;
+ import caliptra_otp_ctrl_reg_pkg::*;
+ import caliptra_otp_ctrl_part_pkg::*;
+ import otp_ctrl_top_tb_pkg::*;
+ (
+ `ifdef VERILATOR
+ input bit clk_tb
+ `endif
+ );
+
+ //----------------------------------------------------------------
+ // Internal constant and parameter definitions.
+ //----------------------------------------------------------------
+ parameter DEBUG = 0;
+
+ parameter CLK_HALF_PERIOD = 2;
+
+ parameter MemInitFile = "/home/ws/caliptra/anjpar/ws1/chipsalliance/caliptra-rtl/src/fuse_ctrl/data/otp-img.2048.vmem";
+
+ //----------------------------------------------------------------
+ // Register and Wire declarations.
+ //----------------------------------------------------------------
+ reg [31 : 0] cycle_ctr;
+ reg [31 : 0] error_ctr;
+ reg [31 : 0] tc_ctr;
+
+ `ifndef VERILATOR
+ reg clk_tb;
+ `endif
+ reg reset_n_tb;
+
+ logic edn_clk;
+ logic edn_rst_n;
+
+ edn_pkg::edn_req_t edn_o;
+ edn_pkg::edn_rsp_t edn_i;
+
+ logic intr_otp_operation_done;
+ logic intr_otp_error;
+
+ caliptra_prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i;
+ caliptra_prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o;
+ // Observability to AST
+ ast_pkg::ast_obs_ctrl_t obs_ctrl_i;
+ logic [7:0] otp_obs_o;
+ // Macro-specific power sequencing signals to/from AST.
+ otp_ast_req_t otp_ast_pwr_seq_o;
+ otp_ast_rsp_t otp_ast_pwr_seq_h_i;
+ // Power manager interface (inputs are synced to OTP clock domain)
+ //pwrmgr_pkg::pwr_otp_req_t pwr_otp_i;
+ logic pwr_otp_init_i;
+ pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o;
+ // Macro-specific test registers going to lifecycle TAP
+ lc_otp_vendor_test_req_t lc_otp_vendor_test_i;
+ lc_otp_vendor_test_rsp_t lc_otp_vendor_test_o;
+ // Lifecycle transition command interface
+ lc_otp_program_req_t lc_otp_program_i;
+ lc_otp_program_rsp_t lc_otp_program_o;
+ // Lifecycle broadcast inputs
+ // SEC_CM: LC_CTRL.INTERSIG.MUBI
+
+ //lc_ctrl_pkg::lc_tx_t lc_creator_seed_sw_rw_en_i;
+ //lc_ctrl_pkg::lc_tx_t lc_owner_seed_sw_rw_en_i;
+ //lc_ctrl_pkg::lc_tx_t lc_seed_hw_rd_en_i;
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i;
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_i;
+ lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i;
+
+ otp_lc_data_t otp_lc_data_o;
+ otp_broadcast_t otp_broadcast_o;
+ wire otp_ext_voltage_h_io;
+ logic scan_en_i;
+ logic scan_rst_ni;
+ caliptra_prim_mubi_pkg::mubi4_t scanmode_i;
+ logic [OtpTestVectWidth-1:0] cio_test_o;
+ logic [OtpTestVectWidth-1:0] cio_test_en_o;
+
+ localparam ADDR_WIDTH = 32;
+ localparam DATA_WIDTH = 32;
+ localparam USER_WIDTH = 32;
+ localparam ID_WIDTH = 1;
+
+ // Register offsets for core interface
+ parameter int CoreAw = 13;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_STATE_OFFSET = 13'h 0;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_ENABLE_OFFSET = 13'h 4;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_TEST_OFFSET = 13'h 8;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET = 13'h c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_STATUS_OFFSET = 13'h 10;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_0_OFFSET = 13'h 14;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_1_OFFSET = 13'h 18;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_2_OFFSET = 13'h 1c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_3_OFFSET = 13'h 20;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_4_OFFSET = 13'h 24;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_5_OFFSET = 13'h 28;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_6_OFFSET = 13'h 2c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_7_OFFSET = 13'h 30;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_8_OFFSET = 13'h 34;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET = 13'h 38;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET = 13'h 3c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET = 13'h 40;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET = 13'h 44;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET = 13'h 48;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET = 13'h 4c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET = 13'h 50;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET = 13'h 54;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TRIGGER_OFFSET = 13'h 58;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_REGWEN_OFFSET = 13'h 5c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TIMEOUT_OFFSET = 13'h 60;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET = 13'h 64;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET = 13'h 68;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET = 13'h 6c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_READ_LOCK_OFFSET = 13'h 70;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET = 13'h 74;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET = 13'h 78;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_0_OFFSET = 13'h 7c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_1_OFFSET = 13'h 80;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET0_DIGEST_0_OFFSET = 13'h 84;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET0_DIGEST_1_OFFSET = 13'h 88;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET1_DIGEST_0_OFFSET = 13'h 8c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET1_DIGEST_1_OFFSET = 13'h 90;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET2_DIGEST_0_OFFSET = 13'h 94;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET2_DIGEST_1_OFFSET = 13'h 98;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET3_DIGEST_0_OFFSET = 13'h 9c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET3_DIGEST_1_OFFSET = 13'h a0;
+
+ // AXI Core Interface
+ axi_if #(
+ .AW (ADDR_WIDTH),
+ .DW (DATA_WIDTH),
+ .IW (ID_WIDTH),
+ .UW (USER_WIDTH)
+ ) axi_core_if (
+ .clk (clk_tb),
+ .rst_n (reset_n_tb)
+ );
+
+ // AXI Prim Interface
+ axi_if #(
+ .AW (ADDR_WIDTH),
+ .DW (DATA_WIDTH),
+ .IW (ID_WIDTH),
+ .UW (USER_WIDTH)
+ ) axi_prim_if (
+ .clk (clk_tb),
+ .rst_n (reset_n_tb)
+ );
+
+ // AXI Secret Reg Interface
+ axi_if #(
+ .AW (ADDR_WIDTH),
+ .DW (DATA_WIDTH),
+ .IW (ID_WIDTH),
+ .UW (USER_WIDTH)
+ ) axi_secreg_if (
+ .clk (clk_tb),
+ .rst_n (reset_n_tb)
+ );
+
+ // dut
+ otp_ctrl_top #(
+ .MemInitFile (MemInitFile)
+ ) dut (
+ .clk_i (clk_tb ),
+ .rst_ni (reset_n_tb ),
+ // edn
+ .clk_edn_i (edn_clk ),
+ .rst_edn_ni (edn_rst_n ),
+ .edn_o (edn_o), //(edn_if[0].req ),
+ .edn_i (edn_i), //({edn_if[0].ack, edn_if[0].d_data}),
+ // AXI interface
+ .s_core_axi_r_if (axi_core_if.r_sub),
+ .s_core_axi_w_if (axi_core_if.w_sub),
+ .s_prim_axi_r_if (axi_prim_if.r_sub),
+ .s_prim_axi_w_if (axi_prim_if.w_sub),
+ .s_secreg_axi_r_if (axi_secreg_if.r_sub),
+ // interrupt
+ .intr_otp_operation_done_o (intr_otp_operation_done),
+ .intr_otp_error_o (intr_otp_error),
+ // alert
+ .alert_rx_i (alert_rx_i ), //(alert_rx parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET = 13'h c;
+ .alert_tx_o (alert_tx_o ), //(alert_tx ),
+ // ast
+ .obs_ctrl_i (obs_ctrl_i), //(otp_ctrl_if.obs_ctrl_i),
+ .otp_obs_o (otp_obs_o),
+ .otp_ast_pwr_seq_o (otp_ast_pwr_seq_o), //(ast_req),
+ .otp_ast_pwr_seq_h_i (otp_ast_pwr_seq_h_i), //(otp_ctrl_if.otp_ast_pwr_seq_h_i),
+ // pwrmgr
+ .pwr_otp_i (pwr_otp_init_i), //(otp_ctrl_if.pwr_otp_init_i),
+ .pwr_otp_o (pwr_otp_o), //({otp_ctrl_if.pwr_otp_done_o, otp_ctrl_if.pwr_otp_idle_o}),
+ // lc
+ .lc_otp_vendor_test_i (lc_otp_vendor_test_i), //(otp_ctrl_if.otp_vendor_test_ctrl_i),
+ .lc_otp_vendor_test_o (lc_otp_vendor_test_o), //(otp_ctrl_if.otp_vendor_test_status_o),
+ .lc_otp_program_i (lc_otp_program_i), //({lc_prog_if.req, lc_prog_if.h_data}),
+ .lc_otp_program_o (lc_otp_program_o), //({lc_prog_if.d_data, lc_prog_if.ack}),
+ //.lc_creator_seed_sw_rw_en_i (lc_creator_seed_sw_rw_en_i), //(otp_ctrl_if.lc_creator_seed_sw_rw_en_i),
+ //.lc_owner_seed_sw_rw_en_i (lc_owner_seed_sw_rw_en_i), //(otp_ctrl_if.lc_owner_seed_sw_rw_en_i),
+ //.lc_seed_hw_rd_en_i (lc_seed_hw_rd_en_i), //(otp_ctrl_if.lc_seed_hw_rd_en_i),
+ .lc_dft_en_i (lc_dft_en_i), //(otp_ctrl_if.lc_dft_en_i),
+ .lc_escalate_en_i (lc_escalate_en_i), //(otp_ctrl_if.lc_escalate_en_i),
+ .lc_check_byp_en_i (lc_check_byp_en_i), //(otp_ctrl_if.lc_check_byp_en_i),
+ .otp_lc_data_o (otp_lc_data_o), //(otp_ctrl_if.lc_data_o),
+
+
+ .otp_broadcast_o (otp_broadcast_o), //(otp_ctrl_if.otp_broadcast_o),
+ .otp_ext_voltage_h_io (otp_ext_voltage_h_io),
+
+ //scan
+ .scan_en_i (scan_en_i), //(otp_ctrl_if.scan_en_i),
+ .scan_rst_ni (scan_rst_ni), //(otp_ctrl_if.scan_rst_ni),
+ .scanmode_i (scanmode_i), //(otp_ctrl_if.scanmode_i),
+
+ // Test-related GPIO output
+ .cio_test_o (cio_test_o), //(otp_ctrl_if.cio_test_o),
+ .cio_test_en_o (cio_test_en_o) //(otp_ctrl_if.cio_test_en_o)
+ );
+
+ //----------------------------------------------------------------
+ // clk_gen
+ //
+ // Clock generator process.
+ //----------------------------------------------------------------
+ `ifndef VERILATOR
+ always
+ begin : clk_gen
+ #CLK_HALF_PERIOD
+ clk_tb = !clk_tb;
+ end // clk_gen
+ `endif
+
+ //----------------------------------------------------------------
+ // sys_monitor
+ //
+ // Generates a cycle counter and displays information about
+ // the dut as needed.
+ //----------------------------------------------------------------
+ always @(posedge clk_tb) begin : sys_monitor
+ cycle_ctr = (!reset_n_tb) ? 32'h0 : cycle_ctr + 1;
+ end
+
+ //----------------------------------------------------------------
+ // reset_dut()
+ //
+ // Toggles reset to force the DUT into a well defined state.
+ //----------------------------------------------------------------
+ task reset_dut;
+ begin
+ $display("*** Toggle reset.");
+ reset_n_tb = 0;
+
+ repeat (2) @(posedge clk_tb);
+ reset_n_tb = 1;
+
+ repeat (2) @(posedge clk_tb);
+
+ $display("");
+ end
+ endtask // reset_dut
+
+ //----------------------------------------------------------------
+ // init_sim()
+ //
+ // Initialize all counters and testbed functionality as well
+ // as setting the DUT inputs to defined values.
+ //----------------------------------------------------------------
+ task init_sim;
+ begin
+ `ifndef VERILATOR
+ clk_tb = 0;
+ `endif
+ reset_n_tb = 1;
+
+ axi_core_if.araddr = '0;
+ axi_core_if.arburst = '0;
+ axi_core_if.arlen = '0;
+ axi_core_if.arlock = 0;
+ axi_core_if.arsize = '0;
+ axi_core_if.arid = 0;
+ axi_core_if.aruser = '0;
+ axi_core_if.arvalid = 0;
+ axi_core_if.rready = 0;
+
+ axi_core_if.awaddr = '0;
+ axi_core_if.awid = '0;
+ axi_core_if.awburst = '0;
+ axi_core_if.awlen = '0;
+ axi_core_if.awlock = 0;
+ axi_core_if.awsize = '0;
+ axi_core_if.awuser = '0;
+ axi_core_if.awvalid = 0;
+ axi_core_if.wdata = '0;
+ axi_core_if.wvalid = 0;
+ axi_core_if.wlast = 0;
+ axi_core_if.wstrb = '0;
+ axi_core_if.bready = 0;
+
+ axi_prim_if.araddr = '0;
+ axi_prim_if.arburst = '0;
+ axi_prim_if.arlen = '0;
+ axi_prim_if.arlock = 0;
+ axi_prim_if.arsize = '0;
+ axi_prim_if.arid = 0;
+ axi_prim_if.aruser = '0;
+ axi_prim_if.arvalid = 0;
+ axi_prim_if.rready = 0;
+
+ axi_prim_if.awaddr = '0;
+ axi_prim_if.awid = '0;
+ axi_prim_if.awburst = '0;
+ axi_prim_if.awlen = '0;
+ axi_prim_if.awlock = 0;
+ axi_prim_if.awsize = '0;
+ axi_prim_if.awuser = '0;
+ axi_prim_if.awvalid = 0;
+ axi_prim_if.wdata = '0;
+ axi_prim_if.wvalid = 0;
+ axi_prim_if.wlast = 0;
+ axi_prim_if.wstrb = '0;
+ axi_prim_if.bready = 0;
+
+ axi_secreg_if.araddr = '0;
+ axi_secreg_if.arburst = '0;
+ axi_secreg_if.arlen = '0;
+ axi_secreg_if.arlock = 0;
+ axi_secreg_if.arsize = '0;
+ axi_secreg_if.aruser = '0;
+ axi_secreg_if.arvalid = 0;
+ axi_secreg_if.rready = 0;
+
+ //lc_creator_seed_sw_rw_en_i = lc_ctrl_pkg::Off;;
+ //lc_owner_seed_sw_rw_en_i = lc_ctrl_pkg::Off;;
+ //lc_seed_hw_rd_en_i = lc_ctrl_pkg::Off;;
+ lc_dft_en_i = lc_ctrl_pkg::Off;;
+ lc_escalate_en_i = lc_ctrl_pkg::Off;;
+ lc_check_byp_en_i = lc_ctrl_pkg::Off;;
+
+ pwr_otp_init_i = 0;
+ end
+ endtask
+
+ //----------------------------------------------------------------
+ // display_test_result()
+ //
+ // Display the accumulated test results.
+ //----------------------------------------------------------------
+ task display_test_result;
+ begin
+ if (error_ctr == 0) begin
+ $display("*** All %02d test cases completed successfully.", tc_ctr);
+ $display("* TESTCASE PASSED");
+ end
+ else begin
+ $display("*** %02d test cases completed.", tc_ctr);
+ $display("*** %02d errors detected during testing.", error_ctr);
+ $display("* TESTCASE FAILED");
+ end
+ end
+ endtask // display_test_result
+
+ //-----------------------------------------------------------------
+ // init_parition()
+ //
+ // Initialize partitions and wait for initialization complete.
+ //-----------------------------------------------------------------
+ task init_partition;
+ begin
+ $display("*** TEST: Initialize OTP partitions.");
+ pwr_otp_init_i = 1;
+ repeat (5) @(posedge clk_tb);
+ pwr_otp_init_i = 0;
+
+ while (!otp_lc_data_o.valid) begin
+ @(posedge clk_tb);
+ end
+
+ $display("*** TEST PASS - OTP partition initialization complete");
+ end
+ endtask
+
+ //-----------------------------------------------------------------
+ // read_csr()
+ //
+ // Read a CSR over AXI interface (via AXI2TLUL gasket).
+ //-----------------------------------------------------------------
+ task read_csr (
+ input string csr_name,
+ input logic [12:0] csr_addr,
+ input logic [31:0] user,
+ input logic id
+ );
+ begin
+ logic [31:0] read_addr;
+ logic [31:0] read_data;
+ axi_pkg::axi_resp_e read_rsp;
+
+ $display("*** Read CSR %s", csr_name);
+
+ read_addr = {{19{1'b0}}, csr_addr};
+ //user = 32'h00000001;
+ //id = 1'b1;
+ $display(" DEBUG: read_addr = 0x%x", read_addr);
+ axi_core_if.axi_read_single(read_addr, user, id, clk_tb, read_data, read_rsp);
+ $display("DEBUG: Issued axi read command");
+ @(posedge clk_tb);
+ if (read_rsp == axi_pkg::AXI_RESP_OKAY) begin
+ $display(" *** TEST PASS: CSR %s = 0x%x\n", csr_name, read_data);
+ end
+ else begin
+ $display(" TEST FAIL: Failed to read CSR %s. Read Response = %s", csr_name, read_rsp);
+ end
+ end
+ endtask
+
+ //-----------------------------------------------------------------
+ // read_all_csrs()
+ //
+ // Read all CSRs back to back CSRs over AXI interface (via AXI2TLUL gasket).
+ //-----------------------------------------------------------------
+ task read_all_csrs;
+ begin
+ logic [CoreAw-1:0] csr_addr;
+ string csr_reg_name;
+ logic [31:0] user;
+ logic id;
+
+ user = 32'h00000001;
+ id = 1'b1;
+
+ $display("*** \n\nTEST: Read all CSRs");
+
+ foreach (csr_registers[i]) begin
+ csr_reg_name = csr_registers[i];
+ csr_addr = get_addr(csr_reg_name);
+ read_csr(csr_reg_name, csr_addr, user, id);
+ end
+
+ $display("*** TEST Read all CSRs compelete!!");
+ end
+ endtask
+
+ //----------------------------------------------------------------
+ // write_csr()
+ //
+ // Write a CSR over AXI itnerface (via AXI2TLUL gasket)
+ //----------------------------------------------------------------
+ task write_csr(
+ input string csr_name,
+ input logic [12:0] csr_addr,
+ input logic [31:0] csr_write_data,
+ input logic [31:0] user,
+ input logic id
+ );
+ begin
+ logic [31:0] write_addr;
+ logic [31:0] read_data;
+ axi_pkg::axi_resp_e write_rsp;
+ axi_pkg::axi_resp_e read_rsp;
+ write_addr = {{19{1'b0}}, csr_addr};
+ $display(" DEBUG: write_addr = 0x%x", write_addr);
+ axi_core_if.axi_write_single(write_addr, user, id, clk_tb, csr_write_data, write_rsp);
+ @(posedge clk_tb);
+ if (write_rsp != AXI_RESP_OKAY) begin
+ $display("*** FAIL: Write to CSR %s (addr 0x%x) unsuccessful. Response = %s", csr_name, write_addr, write_rsp);
+ end
+ read_csr(csr_name, write_addr, user, id);
+ end
+ endtask
+
+ //----------------------------------------------------------------
+ // write_all_csrs()
+ //
+ // Write all CSRs back to back over AXI interface (via AXI2TLUL gasket)
+ //----------------------------------------------------------------
+ task write_all_csrs;
+ begin
+ logic [CoreAw-1:0] csr_addr;
+ string csr_reg_name;
+ logic [31:0] csr_write_data;
+ logic [31:0] user;
+ logic id;
+
+ user = 32'h00000001;
+ id = 1'b1;
+
+ $display("*** \n\nTEST: Write all CSRs");
+
+ foreach (csr_registers[i]) begin
+ csr_reg_name = csr_registers[i];
+ csr_addr = get_addr(csr_reg_name);
+ csr_write_data = $random;
+ write_csr(csr_reg_name, csr_addr, csr_write_data, user, id);
+ end
+
+ $display("*** TEST Write all CSRs compelete!!");
+ end
+ endtask
+
+ //----------------------------------------------------------------
+ // write_dai_regs()
+ //
+ // Write DAI registers over AXI interface (via AXI2TLUL gasket)
+ //----------------------------------------------------------------
+ task write_dai_regs;
+ begin
+ logic [CoreAw-1:0] csr_addr;
+ string cur_dai_reg;
+ logic [31:0] user;
+ logic id;
+ logic [31:0] write_data;
+ strq_t dai_regs;
+ axi_resp_e write_rsp;
+ $display("*** TEST: Write to DAI registers");
+
+ dai_regs = get_dai_regnames();
+
+ // Write to DAI WDATA_0 register
+ foreach (dai_regs[i]) begin
+ cur_dai_reg = dai_regs[i];
+ if (str_find(cur_dai_reg, "WDATA_0"))
+ break;
+ end
+ csr_addr = get_addr(cur_dai_reg);
+ write_data = 32'h11223344; // reset value is 0x1; Write 0 to clear
+ user = 32'h1;
+ id = 1'b1;
+ write_csr(cur_dai_reg, csr_addr, write_data, user, id);
+
+ end
+ endtask
+
+
+ //----------------------------------------------------------------
+ // The main test functionality.
+ //----------------------------------------------------------------
+ initial begin : main
+ fork
+ begin
+ $display(" -- Testbench for fuse_ctrl started. --");
+
+ init_sim();
+ reset_dut();
+
+ init_partition();
+ read_all_csrs();
+ write_all_csrs();
+ //write_dai_regs();
+
+ $display(" -- Testbench for fuse_ctrl done. --");
+ $finish;
+ end
+
+ begin
+ repeat (100000) @(posedge clk_tb);
+ $display("*** Test timed out!!!");
+ $finish;
+ end
+ join_any
+ disable fork;
+ end
+
+endmodule // otp_ctrl_top_tb
+
+//======================================================================
+// EOF otp_ctrl_top_tb.sv
+//======================================================================
+
+
diff --git a/src/fuse_ctrl/tb/otp_ctrl_top_tb_pkg.sv b/src/fuse_ctrl/tb/otp_ctrl_top_tb_pkg.sv
new file mode 100644
index 0000000..43490bd
--- /dev/null
+++ b/src/fuse_ctrl/tb/otp_ctrl_top_tb_pkg.sv
@@ -0,0 +1,206 @@
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//======================================================================
+
+`ifndef OTP_CTRL_TOP_TB_PKG
+`define OTP_CTRL_TOP_TB_PKG
+
+package otp_ctrl_top_tb_pkg;
+
+ localparam int CoreAw = 13;
+
+ localparam CSR_BASE = 0;
+
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_STATE_OFFSET = 13'h 0;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_ENABLE_OFFSET = 13'h 4;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTR_TEST_OFFSET = 13'h 8;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET = 13'h c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_STATUS_OFFSET = 13'h 10;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_0_OFFSET = 13'h 14;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_1_OFFSET = 13'h 18;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_2_OFFSET = 13'h 1c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_3_OFFSET = 13'h 20;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_4_OFFSET = 13'h 24;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_5_OFFSET = 13'h 28;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_6_OFFSET = 13'h 2c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_7_OFFSET = 13'h 30;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ERR_CODE_8_OFFSET = 13'h 34;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET = 13'h 38;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET = 13'h 3c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET = 13'h 40;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET = 13'h 44;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET = 13'h 48;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET = 13'h 4c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET = 13'h 50;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET = 13'h 54;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TRIGGER_OFFSET = 13'h 58;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_REGWEN_OFFSET = 13'h 5c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CHECK_TIMEOUT_OFFSET = 13'h 60;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET = 13'h 64;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET = 13'h 68;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET = 13'h 6c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_READ_LOCK_OFFSET = 13'h 70;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET = 13'h 74;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET = 13'h 78;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_0_OFFSET = 13'h 7c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_1_OFFSET = 13'h 80;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET0_DIGEST_0_OFFSET = 13'h 84;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET0_DIGEST_1_OFFSET = 13'h 88;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET1_DIGEST_0_OFFSET = 13'h 8c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET1_DIGEST_1_OFFSET = 13'h 90;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET2_DIGEST_0_OFFSET = 13'h 94;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET2_DIGEST_1_OFFSET = 13'h 98;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET3_DIGEST_0_OFFSET = 13'h 9c;
+ parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_SECRET3_DIGEST_1_OFFSET = 13'h a0;
+
+ typedef logic [CoreAw-1:0] word_addr_t;
+
+ typedef string strq_t [$];
+
+ strq_t csr_registers = '{
+ "CALIPTRA_OTP_CTRL_INTR_STATE_OFFSET",
+ "CALIPTRA_OTP_CTRL_INTR_ENABLE_OFFSET",
+ "CALIPTRA_OTP_CTRL_INTR_TEST_OFFSET",
+ "CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET",
+ "CALIPTRA_OTP_CTRL_STATUS_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_2_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_3_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_4_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_5_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_6_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_7_OFFSET",
+ "CALIPTRA_OTP_CTRL_ERR_CODE_8_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET",
+ "CALIPTRA_OTP_CTRL_CHECK_TRIGGER_OFFSET",
+ "CALIPTRA_OTP_CTRL_CHECK_REGWEN_OFFSET",
+ "CALIPTRA_OTP_CTRL_CHECK_TIMEOUT_OFFSET",
+ "CALIPTRA_OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET",
+ "CALIPTRA_OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET",
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET",
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_READ_LOCK_OFFSET",
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET0_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET0_DIGEST_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET1_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET1_DIGEST_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET2_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET2_DIGEST_1_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET3_DIGEST_0_OFFSET",
+ "CALIPTRA_OTP_CTRL_SECRET3_DIGEST_1_OFFSET"
+ };
+
+ word_addr_t _csr_register_dict [string] = {
+ "CALIPTRA_OTP_CTRL_INTR_STATE_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_INTR_STATE_OFFSET, // 0x00 Interrupt State
+ "CALIPTRA_OTP_CTRL_INTR_ENABLE_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_INTR_ENABLE_OFFSET, // 0x04 Interrupt Enable
+ "CALIPTRA_OTP_CTRL_INTR_TEST_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_INTR_TEST_OFFSET, // 0x08 Interrupt Test
+ "CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET, // 0x0C Alert Test
+ "CALIPTRA_OTP_CTRL_STATUS_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_STATUS_OFFSET, // 0x10 Status
+ "CALIPTRA_OTP_CTRL_ERR_CODE_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_0_OFFSET, // 0x14 Error Code 0
+ "CALIPTRA_OTP_CTRL_ERR_CODE_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_1_OFFSET, // 0x18 Error Code 1
+ "CALIPTRA_OTP_CTRL_ERR_CODE_2_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_2_OFFSET, // 0x1C Error Code 2
+ "CALIPTRA_OTP_CTRL_ERR_CODE_3_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_3_OFFSET, // 0x20 Error Code 3
+ "CALIPTRA_OTP_CTRL_ERR_CODE_4_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_4_OFFSET, // 0x24 Error Code 4
+ "CALIPTRA_OTP_CTRL_ERR_CODE_5_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_5_OFFSET, // 0x28 Error Code 5
+ "CALIPTRA_OTP_CTRL_ERR_CODE_6_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_6_OFFSET, // 0x2C Error Code 6
+ "CALIPTRA_OTP_CTRL_ERR_CODE_7_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_7_OFFSET, // 0x30 Error Code 7
+ "CALIPTRA_OTP_CTRL_ERR_CODE_8_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_ERR_CODE_8_OFFSET, // 0x34 Error Code 8
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_REGWEN_OFFSET, // 0x38 Direct Access Register Write Enable
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_CMD_OFFSET, // 0x3C Direct Access Command
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_ADDRESS_OFFSET, // 040x Direct Access Address
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_0_OFFSET, // 0x44 Direct Access Write Data 0
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_WDATA_1_OFFSET, // 0x48 Direct Access Write Data 1
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_0_OFFSET, // 0x4C Direct Access Read Data 0
+ "CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_DIRECT_ACCESS_RDATA_1_OFFSET, // 0x50 Direct Access Read Data 1
+ "CALIPTRA_OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_CHECK_TRIGGER_REGWEN_OFFSET, // 0x54 Check Trigger Register Write Enable
+ "CALIPTRA_OTP_CTRL_CHECK_TRIGGER_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_CHECK_TRIGGER_OFFSET, // 0x58 Check Trigger
+ "CALIPTRA_OTP_CTRL_CHECK_REGWEN_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_CHECK_REGWEN_OFFSET, // 0x5C Check Register Write Enable
+ "CALIPTRA_OTP_CTRL_CHECK_TIMEOUT_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_CHECK_TIMEOUT_OFFSET, // 0x60 Check Timeout
+ "CALIPTRA_OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_INTEGRITY_CHECK_PERIOD_OFFSET, // 0x64 Integrity Check Period
+ "CALIPTRA_OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_CONSISTENCY_CHECK_PERIOD_OFFSET, // 0x68 Consistency Check Period
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_VENDOR_TEST_READ_LOCK_OFFSET, // 0x6C Vendor Test Read Lock
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_READ_LOCK_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_READ_LOCK_OFFSET, // 0x70 Non Secret Fuses Read Lock
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_0_OFFSET, // 0x74 Vendor Test Digest 0
+ "CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_VENDOR_TEST_DIGEST_1_OFFSET, // 0x78 Vendor Test Digest 1
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_0_OFFSET, // 0x7C Non Secret Fuses Digest 0
+ "CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_NON_SECRET_FUSES_DIGEST_1_OFFSET, // 0x80 Non Secret Fuses Digest 1
+ "CALIPTRA_OTP_CTRL_SECRET0_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET0_DIGEST_0_OFFSET, // 0x84 Secret 0 Digest 0
+ "CALIPTRA_OTP_CTRL_SECRET0_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET0_DIGEST_1_OFFSET, // 0x88 Secret 0 Digest 1
+ "CALIPTRA_OTP_CTRL_SECRET1_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET1_DIGEST_0_OFFSET, // 0x8C Secret 1 Digest 0
+ "CALIPTRA_OTP_CTRL_SECRET1_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET1_DIGEST_1_OFFSET, // 0x90 Secret 1 Digest 1
+ "CALIPTRA_OTP_CTRL_SECRET2_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET2_DIGEST_0_OFFSET, // 0x94 Secret 2 Digest 0
+ "CALIPTRA_OTP_CTRL_SECRET2_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET2_DIGEST_1_OFFSET, // 0x98 Secret 2 Digest 1
+ "CALIPTRA_OTP_CTRL_SECRET3_DIGEST_0_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET3_DIGEST_0_OFFSET, // 0x9C Secret 3 Digest 0
+ "CALIPTRA_OTP_CTRL_SECRET3_DIGEST_1_OFFSET" : CSR_BASE + CALIPTRA_OTP_CTRL_SECRET3_DIGEST_1_OFFSET // 0xA0 Secret 3 Digest 1
+ };
+
+ function word_addr_t get_addr(string name);
+ if (_csr_register_dict.exists(name))
+ return _csr_register_dict[name];
+ else begin
+ $display("TB WARNING. Address %s is not found in csr reg name -> address map. Returning 0", name);
+ return 0;
+ end
+ endfunction // get_addr
+
+ function strq_t get_dai_regnames();
+ strq_t dai_regs;
+ string csr_reg_name;
+
+ foreach (csr_registers[i]) begin
+ csr_reg_name = csr_registers[i];
+ if (csr_reg_name.substr(18, 23) == "DIRECT")
+ dai_regs.push_back(csr_reg_name);
+ end
+
+ return dai_regs;
+ endfunction
+
+ function bit str_find (string reg_name, string substr);
+ int i;
+ bit found;
+ for (i = 0; i <= reg_name.len() - substr.len(); i++) begin
+ $display(reg_name, i);
+ //$display(reg_name[i], reg_name[i+1], reg_name[i+2], reg_name[i+3], reg_name[i+4], reg_name[i+5]);
+ $display(reg_name.substr(i, substr.len()-1));
+ if (reg_name.substr(i, (i + substr.len()-1)) == substr) begin
+ //$display("Substring '%s' found at index %0d", substr, i);
+ found = 1;
+ break;
+ end
+ end
+ if (!found) begin
+ $display("Substring '%s' not found", substr);
+ end
+ return found;
+ endfunction
+
+
+
+
+endpackage
+
+`endif
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/config/compile.yml b/src/fuse_ctrl/uvmf_fuse_ctrl/config/compile.yml
new file mode 100644
index 0000000..7540076
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/config/compile.yml
@@ -0,0 +1,162 @@
+---
+provides: [uvmf_fuse_ctrl]
+schema_version: 2.4.0
+requires:
+ - uvmf_lib
+ - fuse_ctrl
+targets:
+ tb:
+ directories:
+ - ${COMPILE_ROOT}/../rtl
+ - ${COMPILE_ROOT}/../../libs/rtl
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/tests
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench
+ files:
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/src/fuse_ctrl_rst_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/src/fuse_ctrl_rst_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/src/fuse_ctrl_rst_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/src/fuse_ctrl_rst_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/src/fuse_ctrl_rst_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/src/fuse_ctrl_rst_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/src/fuse_ctrl_prim_axi_write_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/src/fuse_ctrl_prim_axi_write_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/src/fuse_ctrl_prim_axi_write_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/src/fuse_ctrl_prim_axi_write_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/src/fuse_ctrl_prim_axi_write_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/src/fuse_ctrl_prim_axi_write_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/src/fuse_ctrl_secreg_axi_read_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/src/fuse_ctrl_secreg_axi_read_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/src/fuse_ctrl_secreg_axi_read_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/src/fuse_ctrl_secreg_axi_read_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/src/fuse_ctrl_secreg_axi_read_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/src/fuse_ctrl_secreg_axi_read_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_if.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor_bfm.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.sv
+ - ${COMPILE_ROOT}/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.sv
+ tops:
+ - hdl_top
+ - hvl_top
+global:
+ tool:
+ vcs:
+ default:
+ - '-assert svaext'
+ - '-noinherit_timescale=1ns/1ps'
+ #sim:
+ #- '-ucli -i dump.ucli'
+ # Suppress a warning due to calling $fgets as task instead of function
+ # i.e. discarding the return value. This is in auto-generated code.
+ - '+warn=noRVOSFD'
+ # Suppress NOTE about repeated package imports within the same
+ # package (each .svh file included in the auto-generated UVM _pkg.sv
+ # files imports the same dependencies)
+ - '-suppress=SV-LCM-PPWI'
+ elab:
+ # Suppress warnings about too few port connections - auto-generated interfaces
+ # declare all signals as inout, but are driven at a lower layer than the
+ # instantiation, so they will always flag this
+ - '-suppress=TFIPC'
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_bench.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_bench.yaml
new file mode 100644
index 0000000..c7d7461
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_bench.yaml
@@ -0,0 +1,51 @@
+uvmf:
+ benches:
+ fuse_ctrl:
+
+ active_passive:
+ - bfm_name: fuse_ctrl_rst_in_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_rst_out_agent
+ value: PASSIVE
+ ############# WRITE AGENTS ##########
+ - bfm_name: fuse_ctrl_core_axi_write_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_core_axi_write_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_prim_axi_write_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_prim_axi_write_out_if_agent
+ value: PASSIVE
+ ############# READ AGENTS ###########
+ - bfm_name: fuse_ctrl_core_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_core_axi_read_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_prim_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_prim_axi_read_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_secreg_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_secreg_axi_read_out_if_agent
+ value: PASSIVE
+ ############ OTHER AGENTS ###########
+ - bfm_name: fuse_ctrl_lc_otp_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_lc_otp_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_out_if_agent
+ value: PASSIVE
+
+
+ clock_half_period: 5ns
+ clock_phase_offset: 0ns
+
+ interface_params: []
+
+ reset_assertion_level: 'False'
+ reset_duration: 200ns
+
+ top_env: fuse_ctrl
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_environment.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_environment.yaml
new file mode 100644
index 0000000..2395735
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_environment.yaml
@@ -0,0 +1,102 @@
+uvmf:
+ environments:
+ fuse_ctrl:
+ agents:
+ - name: fuse_ctrl_rst_in_agent
+ type: fuse_ctrl_rst_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_rst_out_agent
+ type: fuse_ctrl_rst_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_core_axi_write_in_if_agent
+ type: fuse_ctrl_core_axi_write_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_core_axi_write_out_if_agent
+ type: fuse_ctrl_core_axi_write_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_prim_axi_write_in_if_agent
+ type: fuse_ctrl_prim_axi_write_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_prim_axi_write_out_if_agent
+ type: fuse_ctrl_prim_axi_write_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_core_axi_read_in_if_agent
+ type: fuse_ctrl_core_axi_read_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_core_axi_read_out_if_agent
+ type: fuse_ctrl_core_axi_read_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_prim_axi_read_in_if_agent
+ type: fuse_ctrl_prim_axi_read_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_prim_axi_read_out_if_agent
+ type: fuse_ctrl_prim_axi_read_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_secreg_axi_read_in_if_agent
+ type: fuse_ctrl_secreg_axi_read_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_secreg_axi_read_out_if_agent
+ type: fuse_ctrl_secreg_axi_read_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_lc_otp_in_if_agent
+ type: fuse_ctrl_lc_otp_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_lc_otp_out_if_agent
+ type: fuse_ctrl_lc_otp_out
+ initiator_responder: "RESPONDER"
+ - name: fuse_ctrl_in_if_agent
+ type: fuse_ctrl_in
+ initiator_responder: "INITIATOR"
+ - name: fuse_ctrl_out_if_agent
+ type: fuse_ctrl_out
+ initiator_responder: "RESPONDER"
+
+ analysis_components:
+ - name: fuse_ctrl_pred
+ type: fuse_ctrl_predictor
+ - name: fuse_ctrl_sb
+ type: fuse_ctrl_scoreboard
+
+ analysis_ports: []
+
+ config_constraints: []
+ config_vars: []
+
+ parameters: []
+
+ scoreboards: []
+
+ subenvs: []
+
+ tlm_connections:
+ - driver: fuse_ctrl_rst_in_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_rst_in_agent_ae
+ - driver: fuse_ctrl_core_axi_write_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_core_axi_write_in_agent_ae
+ - driver: fuse_ctrl_core_axi_write_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_core_axi_write_in_agent_ae # Updated
+ - driver: fuse_ctrl_core_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_core_axi_read_in_agent_ae
+ - driver: fuse_ctrl_core_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_core_axi_read_in_agent_ae # Updated
+ - driver: fuse_ctrl_prim_axi_write_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_prim_axi_write_in_agent_ae
+ - driver: fuse_ctrl_prim_axi_write_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_prim_axi_write_in_agent_ae # Updated
+ - driver: fuse_ctrl_prim_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_prim_axi_read_in_agent_ae
+ - driver: fuse_ctrl_prim_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_prim_axi_read_in_agent_ae # Updated
+ - driver: fuse_ctrl_secreg_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_secreg_axi_read_in_agent_ae
+ - driver: fuse_ctrl_secreg_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_secreg_axi_read_in_agent_ae # Updated
+ - driver: fuse_ctrl_lc_otp_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_lc_otp_in_agent_ae
+ - driver: fuse_ctrl_lc_otp_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_lc_otp_in_agent_ae # Updated
+ - driver: fuse_ctrl_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_in_agent_ae
+ - driver: fuse_ctrl_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_in_agent_ae # Updated
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_global.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_global.yaml
new file mode 100644
index 0000000..562413a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_global.yaml
@@ -0,0 +1,16 @@
+uvmf :
+ global:
+ header: |
+ // SPDX-License-Identifier: Apache-2.0
+ //
+ // Licensed under the Apache License, Version 2.0 (the "License");
+ // you may not use this file except in compliance with the License.
+ // You may obtain a copy of the License at
+ //
+ // http://www.apache.org/licenses/LICENSE-2.0
+ //
+ // Unless required by applicable law or agreed to in writing, software
+ // distributed under the License is distributed on an "AS IS" BASIS,
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ // See the License for the specific language governing permissions and
+ // limitations under the License.
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_in_interfaces.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_in_interfaces.yaml
new file mode 100644
index 0000000..8a5d2ec
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_in_interfaces.yaml
@@ -0,0 +1,699 @@
+uvmf:
+ interfaces:
+ ####################################################
+ ############### RESET INTERFACE ####################
+ ####################################################
+ "fuse_ctrl_rst_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ ports:
+ # Power manager interface
+ - name: pwr_otp_i
+ dir: output
+ width: [$bits(pwrmgr_pkg::pwr_otp_req_t)]
+ # External voltage for OTP
+ - name: otp_ext_voltage_h_io
+ dir: inout
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: assert_rst
+ type: bit
+ iscompare: 'False'
+ isrand: 'False'
+ - name: assert_otp_pwr_init
+ type: bit
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### CORE AXI WRITE #####################
+ ####################################################
+ "fuse_ctrl_core_axi_write_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Channel Write Address
+ - name: awaddr
+ dir: output
+ width: [AW]
+ # Burst
+ - name: awburst
+ dir: output
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # size
+ - name: awsize
+ dir: output
+ width: '3'
+ # Length:
+ - name: awlen
+ dir: output
+ width: '8'
+ # User
+ - name: awuser
+ dir: output
+ width: [UW]
+ # ID
+ - name: awid
+ dir: output
+ width: [UW]
+ # Lock
+ - name: awlock
+ dir: output
+ width: '1'
+ # Write request valid
+ - name: awvalid
+ dir: output
+ width: '1'
+ # Write data
+ - name: wdata
+ dir: output
+ width: [DW]
+ # Write strobe
+ - name: wstrb
+ dir: output
+ width: [DW/8]
+ # Write data valid
+ - name: wvalid
+ dir: output
+ width: '1'
+ # Write last
+ - name: wlast
+ dir: output
+ width: '1'
+ # Ready for write
+ - name: bready
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: core_awaddr
+ type: logic [AW-1:0]
+ iscompare: 'False'
+ isrand: 'True'
+ - name: core_awvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awsize
+ type: logic [2:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awlen
+ type: logic [7:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awuser
+ type: logic [UW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awid
+ type: logic [IW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_awlock
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_wdata
+ type: logic [DW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_wstrb
+ type: logic [DW/8 - 1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_wvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_wlast
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_bready
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### CORE AXI READ ######################
+ ####################################################
+ "fuse_ctrl_core_axi_read_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Channel Read Address
+ - name: araddr
+ dir: output
+ width: [AW]
+ # Burst
+ - name: arburst
+ dir: output
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # Size
+ - name: arsize
+ dir: output
+ width: '3'
+ # Length:
+ - name: arlen
+ dir: output
+ width: '8'
+ # User:
+ - name: aruser
+ dir: output
+ width: [UW]
+ # Id
+ - name: arid
+ dir: output
+ width: [IW]
+ # Lock
+ - name: arlock
+ dir: output
+ width: '1'
+ # Address valid
+ - name: arvalid
+ dir: output
+ width: '1'
+ # Device ready
+ - name: rready
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: core_araddr
+ type: logic [AW-1:0]
+ iscompare: 'False'
+ isrand: 'True'
+ - name: core_arvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_arburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_arsize
+ type: logic [2:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_arlen
+ type: logic [7:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_aruser
+ type: logic [UW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_arid
+ type: logic [IW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_arlock
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: core_rready
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### PRIM AXI WRITE #####################
+ ####################################################
+ "fuse_ctrl_prim_axi_write_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Channel Write Address
+ - name: awaddr
+ dir: output
+ width: [AW]
+ # Burst
+ - name: awburst
+ dir: output
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # size
+ - name: awsize
+ dir: output
+ width: '3'
+ # Length:
+ - name: awlen
+ dir: output
+ width: '8'
+ # User
+ - name: awuser
+ dir: output
+ width: [UW]
+ # ID
+ - name: awid
+ dir: output
+ width: [UW]
+ # Lock
+ - name: awlock
+ dir: output
+ width: '1'
+ # Write request valid
+ - name: awvalid
+ dir: output
+ width: '1'
+ # Write data
+ - name: wdata
+ dir: output
+ width: [DW]
+ # Write strobe
+ - name: wstrb
+ dir: output
+ width: [DW/8]
+ # Write data valid
+ - name: wvalid
+ dir: output
+ width: '1'
+ # Write last
+ - name: wlast
+ dir: output
+ width: '1'
+ # Ready for write
+ - name: bready
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: prim_awaddr
+ type: logic [AW-1:0]
+ iscompare: 'False'
+ isrand: 'True'
+ - name: prim_awvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awsize
+ type: logic [2:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awlen
+ type: logic [7:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awuser
+ type: logic [UW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awid
+ type: logic [IW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_awlock
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_wdata
+ type: logic [DW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_wstrb
+ type: logic [DW/8 - 1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_wvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_wlast
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_bready
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### PRIM AXI READ ######################
+ ####################################################
+ "fuse_ctrl_prim_axi_read_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Channel Read Address
+ - name: araddr
+ dir: output
+ width: [AW]
+ # Burst
+ - name: arburst
+ dir: output
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # Size
+ - name: arsize
+ dir: output
+ width: '3'
+ # Length:
+ - name: arlen
+ dir: output
+ width: '8'
+ # User:
+ - name: aruser
+ dir: output
+ width: [UW]
+ # Id
+ - name: arid
+ dir: output
+ width: [IW]
+ # Lock
+ - name: arlock
+ dir: output
+ width: '1'
+ # Address valid
+ - name: arvalid
+ dir: output
+ width: '1'
+ # Device ready
+ - name: rready
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: prim_araddr
+ type: logic [AW-1:0]
+ iscompare: 'False'
+ isrand: 'True'
+ - name: prim_arvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_arburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_arsize
+ type: logic [2:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_arlen
+ type: logic [7:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_aruser
+ type: logic [UW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_arid
+ type: logic [IW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_arlock
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: prim_rready
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### SECREG AXI READ ####################
+ ####################################################
+ "fuse_ctrl_secreg_axi_read_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Channel Read Address
+ - name: araddr
+ dir: output
+ width: [AW]
+ # Burst
+ - name: arburst
+ dir: output
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # Size
+ - name: arsize
+ dir: output
+ width: '3'
+ # Length:
+ - name: arlen
+ dir: output
+ width: '8'
+ # User:
+ - name: aruser
+ dir: output
+ width: [UW]
+ # Id
+ - name: arid
+ dir: output
+ width: [IW]
+ # Lock
+ - name: arlock
+ dir: output
+ width: '1'
+ # Address valid
+ - name: arvalid
+ dir: output
+ width: '1'
+ # Device ready
+ - name: rready
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: secreg_araddr
+ type: logic [AW-1:0]
+ iscompare: 'False'
+ isrand: 'True'
+ - name: secreg_arvalid
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_arburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_arsize
+ type: logic [2:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_arlen
+ type: logic [7:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_aruser
+ type: logic [UW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_arid
+ type: logic [IW-1:0]
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_arlock
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+ - name: secreg_rready
+ type: logic
+ iscompare: 'False'
+ isrand: 'False'
+
+ ####################################################
+ ############### FUSE CTRL IF #######################
+ ####################################################
+ "fuse_ctrl_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AlertSyncOn
+ type: int
+ value: '3'
+ - name: RndConstLfrSeed
+ type: caliptra_otp_ctrl_pkg::lfsr_seed_t
+ value: 'caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault'
+ - name: RndCnstLfsrPerm
+ type: caliptra_otp_ctrl_pkg::lfsr_perm_t
+ value: 'caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault'
+ - name: MemInitFile
+ type: string
+ value: "\"\""
+ #value: "\"/home/ws/caliptra/anjpar/ws1/chipsalliance/caliptra-rtl/src/fuse_ctrl/data/otp-img.2048.vmem\""
+
+ ports:
+ # EDN interface
+ - name: edn_i
+ dir: output
+ width: [$bits(edn_pkg::edn_req_t)]
+ # Alerts
+ - name: alert_rx_i
+ dir: output
+ width: [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)]
+ # Observability to AST
+ - name: obs_ctrl_i
+ dir: output
+ width: [$bits(ast_pkg::ast_obs_ctrl_t)]
+ # macro-specific power sequencing signal from AST
+ - name: otp_ast_pwr_seq_h_i
+ dir: output
+ width: [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)]
+ # Scan
+ - name: scan_en_i
+ dir: output
+ width: '1'
+ - name: scan_rst_ni
+ dir: output
+ width: '1'
+ - name: scanmode_i
+ dir: output
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: set_alert_rx_i
+ type: caliptra_prim_alert_pkg::alert_rx_t
+ iscompare: 'False'
+ isrand: 'False'
+
+
+ ####################################################
+ ################## OTP LC IF #######################
+ ####################################################
+ "fuse_ctrl_lc_otp_in":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ ports:
+ # macro specific test register from LC TAP
+ - name: lc_otp_vendor_test_i
+ dir: output
+ width: [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)]
+ # LC transition command interface
+ - name: lc_otp_program_i
+ dir: output
+ width: [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)]
+ # LC Broadcast inputs
+ - name: lc_dft_en_i
+ dir: output
+ width: [$bits(lc_ctrl_pkg::lc_tx_t)]
+ - name: lc_escalate_en_i
+ dir: output
+ width: [$bits(lc_ctrl_pkg::lc_tx_t)]
+ - name: lc_check_byp_en_i
+ dir: output
+ width: [$bits(lc_ctrl_pkg::lc_tx_t)]
+
+ response_info:
+ data: []
+ operation: 1'b0
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: lc_dft_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ iscompare: 'False'
+ isrand: 'False'
+ - name: lc_escalate_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ iscompare: 'False'
+ isrand: 'False'
+ - name: lc_check_byp_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ iscompare: 'False'
+ isrand: 'False'
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_out_interfaces.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_out_interfaces.yaml
new file mode 100644
index 0000000..314d9ea
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_out_interfaces.yaml
@@ -0,0 +1,471 @@
+uvmf:
+ interfaces:
+ "fuse_ctrl_rst_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ ports:
+ # Power manager interface
+ - name: pwr_otp_o
+ dir: input
+ width: [$bits(pwrmgr_pkg::pwr_otp_rsp_t)]
+ # External voltage for OTP
+ - name: otp_ext_voltage_h_io
+ dir: inout
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: pwr_otp_o
+ type: pwrmgr_pkg::pwr_otp_rsp_t
+ isrand: 'False'
+ iscompare: 'True'
+
+ "fuse_ctrl_core_axi_write_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Write Channel Ready
+ - name: awready
+ dir: input
+ width: '1'
+ # Write Ready
+ - name: wready
+ dir: input
+ width: '1'
+ # Write Response
+ - name: bresp
+ dir: input
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # Write Response ID
+ - name: bid
+ dir: input
+ width: '1'
+ # Write Response Valid
+ - name: bvalid
+ dir: input
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: core_awready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_wready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_bresp
+ type: axi_pkg::axi_burst_e
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_bid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_bvalid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+
+ "fuse_ctrl_core_axi_read_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Read Channel Ready
+ - name: arready
+ dir: input
+ width: '1'
+ # Read Data
+ - name: rdata
+ dir: input
+ width: "DW"
+ # Read Response
+ - name: rresp
+ dir: input
+ width: '1'
+ # Read ID
+ - name: rid
+ dir: input
+ width: '1'
+ # Read Last
+ - name: rlast
+ dir: input
+ width: '1'
+ # Read Data Valid
+ - name: rvalid
+ dir: input
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: core_arready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_rdata
+ type: logic [DW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_rresp
+ type: axi_pkg::axi_burst_e
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_rid
+ type: logic [IW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_rlast
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: core_rvalid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+
+ "fuse_ctrl_prim_axi_write_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Write Channel Ready
+ - name: awready
+ dir: input
+ width: '1'
+ # Write Ready
+ - name: wready
+ dir: input
+ width: '1'
+ # Write Response
+ - name: bresp
+ dir: input
+ width: [$bits(axi_pkg::axi_burst_e)]
+ # Write Response ID
+ - name: bid
+ dir: input
+ width: '1'
+ # Write Response Valid
+ - name: bvalid
+ dir: input
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: prim_awready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_wready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_bresp
+ type: axi_pkg::axi_burst_e
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_bid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_bvalid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+
+
+ "fuse_ctrl_prim_axi_read_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Read Channel Ready
+ - name: arready
+ dir: input
+ width: '1'
+ # Read Data
+ - name: rdata
+ dir: input
+ width: "DW"
+ # Read Response
+ - name: rresp
+ dir: input
+ width: '1'
+ # Read ID
+ - name: rid
+ dir: input
+ width: '1'
+ # Read Last
+ - name: rlast
+ dir: input
+ width: '1'
+ # Read Data Valid
+ - name: rvalid
+ dir: input
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: prim_arready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_rdata
+ type: logic [DW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_rresp
+ type: axi_pkg::axi_burst_e
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_rid
+ type: logic [IW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_rlast
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: prim_rvalid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+
+ "fuse_ctrl_secreg_axi_read_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+
+ ports:
+ # Address Read Channel Ready
+ - name: arready
+ dir: input
+ width: '1'
+ # Read Data
+ - name: rdata
+ dir: input
+ width: "DW"
+ # Read Response
+ - name: rresp
+ dir: input
+ width: '1'
+ # Read ID
+ - name: rid
+ dir: input
+ width: '1'
+ # Read Last
+ - name: rlast
+ dir: input
+ width: '1'
+ # Read Data Valid
+ - name: rvalid
+ dir: input
+ width: '1'
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: secreg_arready
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: secreg_rdata
+ type: logic [DW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: secreg_rresp
+ type: axi_pkg::axi_burst_e
+ iscompare: 'True'
+ isrand: 'False'
+ - name: secreg_rid
+ type: logic [IW-1:0]
+ iscompare: 'True'
+ isrand: 'False'
+ - name: secreg_rlast
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+ - name: secreg_rvalid
+ type: logic
+ iscompare: 'True'
+ isrand: 'False'
+
+ "fuse_ctrl_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ parameters:
+ - name: AlertSyncOn
+ type: int
+ value: '3'
+ - name: RndConstLfrSeed
+ type: caliptra_otp_ctrl_pkg::lfsr_seed_t
+ value: 'caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault'
+ - name: RndCnstLfsrPerm
+ type: caliptra_otp_ctrl_pkg::lfsr_perm_t
+ value: 'caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault'
+ - name: MemInitFile
+ type: string
+ value: "\"\""
+ #value: "\"/home/ws/caliptra/anjpar/ws1/chipsalliance/caliptra-rtl/src/fuse_ctrl/data/otp-img.2048.vmem\""
+
+ ports:
+ # EDN interface
+ - name: edn_o
+ dir: input
+ width: [$bits(edn_pkg::edn_req_t)]
+ # Interrupt Requests
+ - name: intr_otp_operation_done_o
+ dir: input
+ width: '1'
+ - name: intr_otp_error_o
+ dir: input
+ width: '1'
+ # Alerts
+ - name: alert_tx_o
+ dir: input
+ width: [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)]
+ # Observability to AST
+ - name: otp_obs_o
+ dir: input
+ width: '8'
+ # Macro-specific power sequencing signal to AST
+ - name: otp_ast_pwr_seq_o
+ dir: input
+ width: [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)]
+
+ # Hardware config bits
+ - name: otp_broadcast_o
+ dir: input
+ width: [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)]
+
+ # Test-related GPIO output
+ - name: cio_test_o
+ dir: input
+ width: [caliptra_otp_ctrl_pkg::OtpTestVectWidth]
+ - name: cio_test_en_o
+ dir: input
+ width: [caliptra_otp_ctrl_pkg::OtpTestVectWidth]
+
+ response_info:
+ data: []
+ operation: 1'b0
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: pwr_otp_o
+ type: pwrmgr_pkg::pwr_otp_rsp_t
+ iscompare: 'True'
+ isrand: 'False'
+
+ "fuse_ctrl_lc_otp_out":
+ clock: "clk_i"
+ reset: "rst_ni"
+ reset_assertion_level: "False"
+
+ ports:
+ # Test register to Life Cycle TAP
+ - name: lc_otp_vendor_test_o
+ dir: input
+ width: [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)]
+ # LC transition interface
+ - name: lc_otp_program_o
+ dir: input
+ width: [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)]
+ # OTP broadcast output
+ - name: otp_lc_data_o
+ dir: input
+ width: [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)]
+
+ response_info:
+ data: []
+ operation: 1'b0
+
+ transaction_constraints: []
+ transaction_vars:
+ - name: otp_lc_data_o
+ type: caliptra_otp_ctrl_pkg::otp_lc_data_t
+ iscompare: 'True'
+ isrand: 'False'
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_predictor.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_predictor.yaml
new file mode 100644
index 0000000..108b3d9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_predictor.yaml
@@ -0,0 +1,64 @@
+uvmf:
+ util_components:
+ fuse_ctrl_predictor:
+ type: predictor
+ analysis_exports:
+ # RST
+ - name: fuse_ctrl_rst_in_agent_ae
+ type: 'fuse_ctrl_rst_in_transaction'
+
+ # Writes
+ - name: fuse_ctrl_core_axi_write_in_agent_ae
+ type: 'fuse_ctrl_core_axi_write_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_write_in_agent_ae
+ type: 'fuse_ctrl_prim_axi_write_in_transaction'
+
+ # Reads
+ - name: fuse_ctrl_core_axi_read_in_agent_ae
+ type: 'fuse_ctrl_core_axi_read_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_read_in_agent_ae
+ type: 'fuse_ctrl_prim_axi_read_in_transaction'
+
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ae
+ type: 'fuse_ctrl_secreg_axi_read_in_transaction'
+
+ # OTP LC IF
+ - name: fuse_ctrl_lc_otp_in_agent_ae
+ type: 'fuse_ctrl_lc_otp_in_transaction'
+
+ # OTP IF
+ - name: fuse_ctrl_in_agent_ae
+ type: 'fuse_ctrl_in_transaction'
+
+ analysis_ports:
+ # Rst
+ - name: fuse_ctrl_rst_in_agent_ap
+ type: 'fuse_ctrl_rst_in_transaction'
+
+ # Writes
+ - name: fuse_ctrl_core_axi_write_in_agent_ap
+ type: 'fuse_ctrl_core_axi_write_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_write_in_agent_ap
+ type: 'fuse_ctrl_prim_axi_write_in_transaction'
+
+ # Reads
+ - name: fuse_ctrl_core_axi_read_in_agent_ap
+ type: 'fuse_ctrl_core_axi_read_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_read_in_agent_ap
+ type: 'fuse_ctrl_prim_axi_read_in_transaction'
+
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ap
+ type: 'fuse_ctrl_secreg_axi_read_in_transaction'
+
+ # OTP LC IF
+ - name: fuse_ctrl_lc_otp_in_agent_ap
+ type: 'fuse_ctrl_lc_otp_in_transaction'
+
+ # OTP IF
+ - name: fuse_ctrl_in_agent_ap
+ type: 'fuse_ctrl_in_transaction'
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_scoreboard.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_scoreboard.yaml
new file mode 100644
index 0000000..6b440af
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/fuse_ctrl_util_comp_scoreboard.yaml
@@ -0,0 +1,56 @@
+uvmf:
+ util_components:
+ fuse_ctrl_scoreboard:
+ type: scoreboard
+# # Default APs
+ analysis_exports:
+ - name: fuse_ctrl_rst_in_agent_ae
+ type: 'fuse_ctrl_rst_in_transaction'
+
+ - name: fuse_ctrl_core_axi_write_in_agent_ae
+ type: 'fuse_ctrl_core_axi_write_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_write_in_agent_ae
+ type: 'fuse_ctrl_prim_axi_write_in_transaction'
+
+ - name: fuse_ctrl_core_axi_read_in_agent_ae
+ type: 'fuse_ctrl_core_axi_read_in_transaction'
+
+ - name: fuse_ctrl_prim_axi_read_in_agent_ae
+ type: 'fuse_ctrl_prim_axi_read_in_transaction'
+
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ae
+ type: 'fuse_ctrl_secreg_axi_read_in_transaction'
+
+ - name: fuse_ctrl_lc_otp_in_agent_ae
+ type: 'fuse_ctrl_lc_otp_in_transaction'
+
+ - name: fuse_ctrl_in_agent_ae
+ type: 'fuse_ctrl_in_transaction'
+ #qvip_analysis_exports:
+ #- name: expected_ahb_analysis_export
+ # type: 'ahb_master_burst_transfer #(ahb_lite_slave_0_params::AHB_NUM_MASTERS,
+ # ahb_lite_slave_0_params::AHB_NUM_MASTER_BITS,
+ # ahb_lite_slave_0_params::AHB_NUM_SLAVES,
+ # ahb_lite_slave_0_params::AHB_ADDRESS_WIDTH,
+ # ahb_lite_slave_0_params::AHB_WDATA_WIDTH,
+ # ahb_lite_slave_0_params::AHB_RDATA_WIDTH)'
+ # - name: expected_apb_analysis_export
+ # type: 'apb3_host_apb3_transaction #(apb5_master_0_params::APB3_SLAVE_COUNT,
+ # apb5_master_0_params::APB3_PADDR_BIT_WIDTH,
+ # apb5_master_0_params::APB3_PWDATA_BIT_WIDTH,
+ # apb5_master_0_params::APB3_PRDATA_BIT_WIDTH)'
+ #- name: actual_ahb_analysis_export
+ # # type: 'mvc_sequence_item_base'
+ # type: 'ahb_master_burst_transfer #(ahb_lite_slave_0_params::AHB_NUM_MASTERS,
+ # ahb_lite_slave_0_params::AHB_NUM_MASTER_BITS,
+ # ahb_lite_slave_0_params::AHB_NUM_SLAVES,
+ # ahb_lite_slave_0_params::AHB_ADDRESS_WIDTH,
+ # ahb_lite_slave_0_params::AHB_WDATA_WIDTH,
+ # ahb_lite_slave_0_params::AHB_RDATA_WIDTH)'
+ # - name: actual_apb_analysis_export
+ # type: 'mvc_sequence_item_base'
+# type: 'apb3_host_apb3_transaction #(apb5_master_0_params::APB3_SLAVE_COUNT,
+# apb5_master_0_params::APB3_PADDR_BIT_WIDTH,
+# apb5_master_0_params::APB3_PWDATA_BIT_WIDTH,
+# apb5_master_0_params::APB3_PRDATA_BIT_WIDTH)'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/run_yaml_uvmf_scripts.sh b/src/fuse_ctrl/uvmf_fuse_ctrl/run_yaml_uvmf_scripts.sh
new file mode 100755
index 0000000..dedf0f3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/run_yaml_uvmf_scripts.sh
@@ -0,0 +1,12 @@
+#export UVMF_HOME='/home/cad/tools/mentor/uvmf/UVMF_2022.3'
+python ${UVMF_HOME}/scripts/yaml2uvmf.py --merge_source uvmf_template_output \
+ --merge_skip_missing_blocks \
+ fuse_ctrl_global.yaml \
+ fuse_ctrl_in_interfaces.yaml \
+ fuse_ctrl_out_interfaces.yaml \
+ fuse_ctrl_util_comp_predictor.yaml \
+ fuse_ctrl_util_comp_scoreboard.yaml \
+ fuse_ctrl_environment.yaml \
+ fuse_ctrl_bench.yaml \
+ -d uvmf_template_output_merged
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.project
new file mode 100644
index 0000000..1462dce
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.project
@@ -0,0 +1,37 @@
+
+
+ fuse_ctrl
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ verification_ip
+ 2
+ UVMF_VIP_LIBRARY_HOME
+
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D/verification_ip
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.svproject
new file mode 100644
index 0000000..9e84acf
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/docs/interfaces.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/docs/interfaces.csv
new file mode 100644
index 0000000..d783ccf
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/docs/interfaces.csv
@@ -0,0 +1,42 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+,
+Interface Description, Interface Type, Interface Transaction, Interface Name,
+fuse_ctrl_rst_in_agent, fuse_ctrl_rst_in_driver_bfm fuse_ctrl_rst_in_monitor_bfm, fuse_ctrl_rst_in_transaction, fuse_ctrl_rst_in_pkg_fuse_ctrl_rst_in_agent_BFM,
+fuse_ctrl_rst_out_agent, fuse_ctrl_rst_out_driver_bfm fuse_ctrl_rst_out_monitor_bfm, fuse_ctrl_rst_out_transaction, fuse_ctrl_rst_out_pkg_fuse_ctrl_rst_out_agent_BFM,
+fuse_ctrl_core_axi_write_in_if_agent, fuse_ctrl_core_axi_write_in_driver_bfm fuse_ctrl_core_axi_write_in_monitor_bfm, fuse_ctrl_core_axi_write_in_transaction, fuse_ctrl_core_axi_write_in_pkg_fuse_ctrl_core_axi_write_in_if_agent_BFM,
+fuse_ctrl_core_axi_write_out_if_agent, fuse_ctrl_core_axi_write_out_driver_bfm fuse_ctrl_core_axi_write_out_monitor_bfm, fuse_ctrl_core_axi_write_out_transaction, fuse_ctrl_core_axi_write_out_pkg_fuse_ctrl_core_axi_write_out_if_agent_BFM,
+fuse_ctrl_prim_axi_write_in_if_agent, fuse_ctrl_prim_axi_write_in_driver_bfm fuse_ctrl_prim_axi_write_in_monitor_bfm, fuse_ctrl_prim_axi_write_in_transaction, fuse_ctrl_prim_axi_write_in_pkg_fuse_ctrl_prim_axi_write_in_if_agent_BFM,
+fuse_ctrl_prim_axi_write_out_if_agent, fuse_ctrl_prim_axi_write_out_driver_bfm fuse_ctrl_prim_axi_write_out_monitor_bfm, fuse_ctrl_prim_axi_write_out_transaction, fuse_ctrl_prim_axi_write_out_pkg_fuse_ctrl_prim_axi_write_out_if_agent_BFM,
+fuse_ctrl_core_axi_read_in_if_agent, fuse_ctrl_core_axi_read_in_driver_bfm fuse_ctrl_core_axi_read_in_monitor_bfm, fuse_ctrl_core_axi_read_in_transaction, fuse_ctrl_core_axi_read_in_pkg_fuse_ctrl_core_axi_read_in_if_agent_BFM,
+fuse_ctrl_core_axi_read_out_if_agent, fuse_ctrl_core_axi_read_out_driver_bfm fuse_ctrl_core_axi_read_out_monitor_bfm, fuse_ctrl_core_axi_read_out_transaction, fuse_ctrl_core_axi_read_out_pkg_fuse_ctrl_core_axi_read_out_if_agent_BFM,
+fuse_ctrl_prim_axi_read_in_if_agent, fuse_ctrl_prim_axi_read_in_driver_bfm fuse_ctrl_prim_axi_read_in_monitor_bfm, fuse_ctrl_prim_axi_read_in_transaction, fuse_ctrl_prim_axi_read_in_pkg_fuse_ctrl_prim_axi_read_in_if_agent_BFM,
+fuse_ctrl_prim_axi_read_out_if_agent, fuse_ctrl_prim_axi_read_out_driver_bfm fuse_ctrl_prim_axi_read_out_monitor_bfm, fuse_ctrl_prim_axi_read_out_transaction, fuse_ctrl_prim_axi_read_out_pkg_fuse_ctrl_prim_axi_read_out_if_agent_BFM,
+fuse_ctrl_secreg_axi_read_in_if_agent, fuse_ctrl_secreg_axi_read_in_driver_bfm fuse_ctrl_secreg_axi_read_in_monitor_bfm, fuse_ctrl_secreg_axi_read_in_transaction, fuse_ctrl_secreg_axi_read_in_pkg_fuse_ctrl_secreg_axi_read_in_if_agent_BFM,
+fuse_ctrl_secreg_axi_read_out_if_agent, fuse_ctrl_secreg_axi_read_out_driver_bfm fuse_ctrl_secreg_axi_read_out_monitor_bfm, fuse_ctrl_secreg_axi_read_out_transaction, fuse_ctrl_secreg_axi_read_out_pkg_fuse_ctrl_secreg_axi_read_out_if_agent_BFM,
+fuse_ctrl_lc_otp_in_if_agent, fuse_ctrl_lc_otp_in_driver_bfm fuse_ctrl_lc_otp_in_monitor_bfm, fuse_ctrl_lc_otp_in_transaction, fuse_ctrl_lc_otp_in_pkg_fuse_ctrl_lc_otp_in_if_agent_BFM,
+fuse_ctrl_lc_otp_out_if_agent, fuse_ctrl_lc_otp_out_driver_bfm fuse_ctrl_lc_otp_out_monitor_bfm, fuse_ctrl_lc_otp_out_transaction, fuse_ctrl_lc_otp_out_pkg_fuse_ctrl_lc_otp_out_if_agent_BFM,
+fuse_ctrl_in_if_agent, fuse_ctrl_in_driver_bfm fuse_ctrl_in_monitor_bfm, fuse_ctrl_in_transaction, fuse_ctrl_in_pkg_fuse_ctrl_in_if_agent_BFM,
+fuse_ctrl_out_if_agent, fuse_ctrl_out_driver_bfm fuse_ctrl_out_monitor_bfm, fuse_ctrl_out_transaction, fuse_ctrl_out_pkg_fuse_ctrl_out_if_agent_BFM,
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/fuse_ctrl_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/fuse_ctrl_sve.F
new file mode 100644
index 0000000..37457d7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/fuse_ctrl_sve.F
@@ -0,0 +1,42 @@
+
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
+// BFM Files
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_sve.F
+-F ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_sve.F
+
+// Environment Files
+-F ${UVMF_VIP_LIBRARY_HOME}/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg_sve.F
+
+// Bench Files
++incdir+./tb/tests
+./tb/tests/fuse_ctrl_tests_pkg.sv
+
++incdir+./tb/sequences
+./tb/sequences/fuse_ctrl_sequences_pkg.sv
+
++incdir+./tb/parameters
+./tb/parameters/fuse_ctrl_parameters_pkg.sv
+
+./tb/testbench/hdl_top.sv
+./tb/testbench/hvl_top.sv
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/dut.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/dut.compile
new file mode 100644
index 0000000..9b0008f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/dut.compile
@@ -0,0 +1,6 @@
+
+# pragma uvmf custom dut_compile_info begin
+src:
+ - ./vhdl/vhdl_dut.vhd
+ - ./verilog/verilog_dut.v
+# pragma uvmf custom dut_compile_info end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.v b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.v
new file mode 100644
index 0000000..9619844
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.v
@@ -0,0 +1,21 @@
+module verilog_dut(clk, rst, in_signal, out_signal);
+
+input clk;
+input rst;
+input in_signal;
+output out_signal;
+
+reg out_signal_o;
+
+always @(posedge clk) begin
+ if (rst) begin
+ out_signal_o <= 0;
+ end
+ else begin
+ out_signal_o <= ~in_signal;
+ end
+ end
+
+assign out_signal = out_signal_o;
+
+endmodule
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.vinfo
new file mode 100644
index 0000000..87e95f3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/verilog/verilog_dut.vinfo
@@ -0,0 +1 @@
+verilog_dut.v
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/vhdl/vhdl_dut.vhd b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/vhdl/vhdl_dut.vhd
new file mode 100644
index 0000000..904aa37
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/rtl/vhdl/vhdl_dut.vhd
@@ -0,0 +1,21 @@
+library ieee;
+use ieee.std_logic_1164.all ;
+
+entity vhdl_dut is
+ port ( clk : in std_logic ;
+ rst : in std_logic ;
+ in_signal : in std_logic ;
+ out_signal :out std_logic
+ );
+end vhdl_dut;
+
+architecture rtl of vhdl_dut is
+ begin
+ P1: process
+ variable out_signal_o : std_logic;
+ begin
+ wait until clk'event and clk = '1';
+ out_signal_o := in_signal;
+ out_signal <= out_signal_o;
+ end process;
+ end rtl;
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/Makefile
new file mode 100644
index 0000000..7ca2e94
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/Makefile
@@ -0,0 +1,213 @@
+
+#
+#----------------------------------------------------------------------
+#
+# DESCRIPTION: This makefile includes the shared makefile and contains
+# bench level make targets.
+#
+#----------------------------------------------------------------------
+
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+# *********************************************************************************************
+# UVMF library directory:
+# This variable points to the UVMF release where uvmf_base_pkg directory resides.
+# This variable points to release code that is not user modified.
+# This variable allows for UVMF release directories to reside independent of project related verification IP and project bench directories.
+# This code below looks "upward" for directory starting with UVMF_* and returns first match for use with the release examples.
+UVMF_HOME ?= ___PLEASE_SET_AN_ENVIRONMENT_VARIABLE_NAMED_UVMF_HOME_TO_POINT_TO_THE_UVMF_INSTALLATION___
+
+# pragma uvmf custom exports begin
+#
+# Project(s) specific verification IP library:
+# Directory where reusable verification packages for interfaces, environments, utilities, etc. reside.
+# This variable allows for your verification IP to reside independent of project bench and UVMF release directories.
+# For examples deployed with UVMF this will be $(UVMF_HOME)//verification_ip
+export UVMF_VIP_LIBRARY_HOME ?= $(PWD)/../../../verification_ip
+#
+# Project specific bench:
+# Directory where bench specific code is located.
+# This variable allows for project_benches to reside independent of verification IP and UVMF release directories.
+# For examples deployed with UVMF this will be $(UVMF_HOME)//project_benches/
+export UVMF_PROJECT_DIR ?= $(PWD)/..
+#
+#
+# pragma uvmf custom exports end
+# *********************************************************************************************
+
+## Check PATH for required vinfo scripts
+PVAL := $(shell command -v make_filelist.py 2> /dev/null)
+ifndef PVAL
+ MFLIST = $(UVMF_HOME)/scripts/make_filelist.py
+else
+ MFLIST = make_filelist.py
+endif
+
+
+# Set test case specific Variables
+TEST_NAME ?= test_top
+
+TEST_SEED ?= random
+UVM_CLI_ARGS =
+
+# Usage of Veloce, etc. to be input by the user (subject to defaults)
+USE_VELOCE ?= 0
+
+# Usage of vinfo flow for generating file list
+USE_VINFO ?= 0
+
+# Usage of Veloce and Questa profilers
+USE_VELOCE_PROFILER ?= 0
+USE_QUESTA_PROFILER ?= 0
+
+
+# Set project Variables
+TEST_PLAN_NAME = fuse_ctrl_TestPlan
+REPORTING_DO_FILE = fuse_ctrl_reports_script
+
+
+# Include makefile that includes targets for UVM_VIP_Library packages
+include $(UVMF_HOME)/scripts/Makefile
+
+
+
+
+# Include all requisite interface package targets for this bench
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_rst_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_rst_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/Makefile
+include $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/Makefile
+
+# Include all requisite environment package targets for this bench
+include $(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg/Makefile
+
+
+
+# Add to default compile/load/run arguments
+VCOM_ARGS +=
+
+# Note: vsim-3009 error can be eliminated by adding -timescale 1ps/1ps to VLOG_ARGS
+
+VLOG_ARGS += $(UVM_DISABLE_FILE_LINE_CMD)
+
+VELANALYZE_ARGS +=
+VELANALYZE_HVL_ARGS +=
+
+BATCH_VOPT_ARGS +=
+DEBUG_VOPT_ARGS +=
+EXTRA_VOPT_TOPS +=
+COMMON_VSIM_ARGS +=
+COMMON_VSIM_ARGS +=
+
+
+BATCH_VSIM_ARGS += #-uvmcontrol=none
+DEBUG_VSIM_ARGS +=
+EXTRA_VSIM_TOPS +=
+
+# pragma uvmf custom additional_args begin
+# pragma uvmf custom additional_args end
+
+
+# Project bench package source
+fuse_ctrl_PARAMETERS_PKG ?=\
+$(UVMF_PROJECT_DIR)/tb/parameters/fuse_ctrl_parameters_pkg.sv
+
+
+fuse_ctrl_SEQUENCES_PKG ?=\
+$(UVMF_PROJECT_DIR)/tb/sequences/fuse_ctrl_sequences_pkg.sv
+
+
+fuse_ctrl_TEST_PKG ?=\
+$(UVMF_PROJECT_DIR)/tb/tests/fuse_ctrl_tests_pkg.sv
+
+# pragma uvmf custom dut_files begin
+# UVMF_CHANGE_ME : Reference Verilog DUT source.
+fuse_ctrl_VERILOG_DUT ?=\
+$(UVMF_PROJECT_DIR)/rtl/verilog/verilog_dut.v
+
+# UVMF_CHANGE_ME : Reference VHDL DUT source.
+fuse_ctrl_VHDL_DUT ?=\
+$(UVMF_PROJECT_DIR)/rtl/vhdl/vhdl_dut.vhd
+# pragma uvmf custom dut_files end
+
+
+# Project bench package targets
+COMP_fuse_ctrl_PARAMETERS_PKG_TGT_0 = q_comp_fuse_ctrl_parameters_pkg
+COMP_fuse_ctrl_PARAMETERS_PKG_TGT_1 = v_comp_fuse_ctrl_parameters_pkg
+COMP_fuse_ctrl_PARAMETERS_PKG_TGT = $(COMP_fuse_ctrl_PARAMETERS_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_parameters_pkg: $(COMP_fuse_ctrl_PARAMETERS_PKG_TGT)
+
+q_comp_fuse_ctrl_parameters_pkg:
+ $(HVL_COMP_CMD) +incdir+$(UVMF_PROJECT_DIR)/tb/parameters $(fuse_ctrl_PARAMETERS_PKG)
+
+v_comp_fuse_ctrl_parameters_pkg: q_comp_fuse_ctrl_parameters_pkg
+ $(HDL_COMP_CMD) +incdir+$(UVMF_PROJECT_DIR)/tb/parameters $(fuse_ctrl_PARAMETERS_PKG)
+
+
+comp_fuse_ctrl_sequence_pkg:
+ $(HVL_COMP_CMD) +incdir+$(UVMF_PROJECT_DIR)/tb/sequences $(fuse_ctrl_SEQUENCES_PKG)
+
+comp_fuse_ctrl_tests_pkg:
+ $(HVL_COMP_CMD) +incdir+$(UVMF_PROJECT_DIR)/tb/tests $(fuse_ctrl_TEST_PKG)
+
+# pragma uvmf custom dut_compile_make_target begin
+# UVMF_CHANGE_ME : Add make target to compile your verilog dut here
+comp_fuse_ctrl_verilog_dut:
+ echo "Compile your verilog DUT here"
+ $(HDL_COMP_CMD) $(fuse_ctrl_VERILOG_DUT)
+
+# UVMF_CHANGE_ME : Add make target to compile your vhdl dut here
+comp_fuse_ctrl_vhdl_dut:
+ echo "Compile your vhdl DUT here"
+ $(HDL_COMP_CMD_VHDL) $(fuse_ctrl_VHDL_DUT)
+
+# UVMF_CHANGE_ME : Add make target to compile your dut here
+comp_fuse_ctrl_dut: comp_fuse_ctrl_vhdl_dut comp_fuse_ctrl_verilog_dut
+# pragma uvmf custom dut_compile_make_target end
+
+
+BUILD_TGT_0 = make_build
+BUILD_TGT_1 = vinfo_build
+BUILD_TGT = $(BUILD_TGT_$(USE_VINFO))
+
+
+comp_hvl : comp_hvl_core
+
+
+comp_hvl_core : \
+ comp_fuse_ctrl_rst_in_pkg comp_fuse_ctrl_rst_out_pkg comp_fuse_ctrl_core_axi_write_in_pkg comp_fuse_ctrl_core_axi_write_out_pkg comp_fuse_ctrl_prim_axi_write_in_pkg comp_fuse_ctrl_prim_axi_write_out_pkg comp_fuse_ctrl_core_axi_read_in_pkg comp_fuse_ctrl_core_axi_read_out_pkg comp_fuse_ctrl_prim_axi_read_in_pkg comp_fuse_ctrl_prim_axi_read_out_pkg comp_fuse_ctrl_secreg_axi_read_in_pkg comp_fuse_ctrl_secreg_axi_read_out_pkg comp_fuse_ctrl_lc_otp_in_pkg comp_fuse_ctrl_lc_otp_out_pkg comp_fuse_ctrl_in_pkg comp_fuse_ctrl_out_pkg \
+ comp_fuse_ctrl_env_pkg \
+ comp_fuse_ctrl_parameters_pkg comp_fuse_ctrl_sequence_pkg comp_fuse_ctrl_tests_pkg
+
+comp_uvmf_core : comp_uvm_pkg comp_uvmf_base_pkg
+
+make_build: comp_fuse_ctrl_dut comp_uvmf_core comp_hvl comp_test_bench
+
+hvl_build: q_comp_fuse_ctrl_rst_in_pkg q_comp_fuse_ctrl_rst_out_pkg q_comp_fuse_ctrl_core_axi_write_in_pkg q_comp_fuse_ctrl_core_axi_write_out_pkg q_comp_fuse_ctrl_prim_axi_write_in_pkg q_comp_fuse_ctrl_prim_axi_write_out_pkg q_comp_fuse_ctrl_core_axi_read_in_pkg q_comp_fuse_ctrl_core_axi_read_out_pkg q_comp_fuse_ctrl_prim_axi_read_in_pkg q_comp_fuse_ctrl_prim_axi_read_out_pkg q_comp_fuse_ctrl_secreg_axi_read_in_pkg q_comp_fuse_ctrl_secreg_axi_read_out_pkg q_comp_fuse_ctrl_lc_otp_in_pkg q_comp_fuse_ctrl_lc_otp_out_pkg q_comp_fuse_ctrl_in_pkg q_comp_fuse_ctrl_out_pkg comp_fuse_ctrl_env_pkg comp_fuse_ctrl_sequence_pkg comp_fuse_ctrl_tests_pkg hvl_comp_testbench link optimize
+
+
+vinfo_build: comp_fuse_ctrl_vhdl_dut build_hdl_vinfo build_hvl_vinfo $(VINFO_TGT)
+
+ $(HDL_COMP_CMD) -F hdl.vf
+ $(VEL_COMP)
+
+build: $(BUILD_TGT)
+
+# pragma uvmf custom additional_targets begin
+# pragma uvmf custom additional_targets end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist
new file mode 100644
index 0000000..4df4567
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist
@@ -0,0 +1,19 @@
+
+
+
+# Test list for use by RMDB file
+# File syntax is
+# TB_INFO { } { }
+# TB ## All subsequent tests will run on this bench until a different "TB" line is seen
+# TEST <1st_seed> ...
+# If not enough seeds are provided then random seeds are used to pad
+# If no repeat count is given, default is 1
+# pragma uvmf custom tb_info begin
+TB_INFO fuse_ctrl { } { }
+# pragma uvmf custom tb_info end
+TB fuse_ctrl
+# pragma uvmf custom regression_suite begin
+TEST test_top 3
+# pragma uvmf custom regression_suite end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist.yaml
new file mode 100644
index 0000000..65b6be0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/bcr_testlist.yaml
@@ -0,0 +1,44 @@
+
+
+
+# YAML test list for use by RMDB file
+# File syntax is
+# uvmf_testlist:
+# testbenches:
+# - name:
+# extra_build_options:
+# extra_run_options:
+# - name:
+# ...
+# - name:
+# tests:
+# - name:
+# uvm_testname: (defaults to test_name)
+# testbench: (defaults to last tb name seen)
+# repeat: (defaults to 1)
+# seeds: [,,...,] (defaults to all random)
+# extra_test_options:
+# - name:
+# ...
+# - name:
+# include:
+# - (relative path reference is to the including YAML file)
+# -
+# ...
+# -
+
+uvmf_testlist:
+ testbenches:
+# pragma uvmf custom tb_info begin
+ - name: fuse_ctrl
+ extra_build_options: ""
+ extra_run_options: ""
+# pragma uvmf custom tb_info end
+ tests:
+ - testbench: fuse_ctrl
+# pragma uvmf custom regression_suite begin
+ - name: test_top
+ repeat: 3
+# pragma uvmf custom regression_suite end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/compile.do
new file mode 100644
index 0000000..c361846
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/compile.do
@@ -0,0 +1,85 @@
+
+
+##################################################################
+## ENVIRONMENT VARIABLES
+##################################################################
+quietly set ::env(UVMF_VIP_LIBRARY_HOME) ../../../verification_ip
+quietly set ::env(UVMF_PROJECT_DIR) ..
+
+## Using VRM means that the build is occuring several more directories deeper underneath
+## the sim directory, need to prepend some more '..'
+if {[info exists ::env(VRM_BUILD)]} {
+ quietly set ::env(UVMF_VIP_LIBRARY_HOME) "../../../../../$::env(UVMF_VIP_LIBRARY_HOME)"
+ quietly set ::env(UVMF_PROJECT_DIR) "../../../../../$::env(UVMF_PROJECT_DIR)"
+}
+quietly set ::env(UVMF_VIP_LIBRARY_HOME) [file normalize $::env(UVMF_VIP_LIBRARY_HOME)]
+quietly set ::env(UVMF_PROJECT_DIR) [file normalize $::env(UVMF_PROJECT_DIR)]
+quietly echo "UVMF_VIP_LIBRARY_HOME = $::env(UVMF_VIP_LIBRARY_HOME)"
+quietly echo "UVMF_PROJECT_DIR = $::env(UVMF_PROJECT_DIR)"
+
+
+###################################################################
+## HOUSEKEEPING : DELETE FILES THAT WILL BE REGENERATED
+###################################################################
+file delete -force *~ *.ucdb vsim.dbg *.vstf *.log work *.mem *.transcript.txt certe_dump.xml *.wlf covhtmlreport VRMDATA
+file delete -force design.bin qwave.db dpiheader.h visualizer*.ses
+file delete -force veloce.med veloce.wave veloce.map tbxbindings.h edsenv velrunopts.ini
+file delete -force sv_connect.*
+
+###################################################################
+## COMPILE DUT SOURCE CODE
+###################################################################
+vlib work
+# pragma uvmf custom dut_compile_dofile_target begin
+# UVMF_CHANGE_ME : Add commands to compile your dut here, replacing the default examples
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 $env(UVMF_PROJECT_DIR)/rtl/verilog/verilog_dut.v
+vcom $env(UVMF_PROJECT_DIR)/rtl/vhdl/vhdl_dut.vhd
+# pragma uvmf custom dut_compile_dofile_target end
+
+###################################################################
+## COMPILE UVMF BASE/COMMON SOURCE CODE
+###################################################################
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_HOME)/uvmf_base_pkg -F $env(UVMF_HOME)/uvmf_base_pkg/uvmf_base_pkg_filelist_hdl.f
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_HOME)/uvmf_base_pkg -F $env(UVMF_HOME)/uvmf_base_pkg/uvmf_base_pkg_filelist_hvl.f
+
+
+###################################################################
+## UVMF INTERFACE COMPILATION
+###################################################################
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_rst_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_rst_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/compile.do
+do $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/compile.do
+
+###################################################################
+## UVMF ENVIRONMENT COMPILATION
+###################################################################
+do $env(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg/compile.do
+
+###################################################################
+## UVMF BENCHES COMPILATION
+###################################################################
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_PROJECT_DIR)/tb/parameters $env(UVMF_PROJECT_DIR)/tb/parameters/fuse_ctrl_parameters_pkg.sv
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_PROJECT_DIR)/tb/sequences $env(UVMF_PROJECT_DIR)/tb/sequences/fuse_ctrl_sequences_pkg.sv
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_PROJECT_DIR)/tb/tests $env(UVMF_PROJECT_DIR)/tb/tests/fuse_ctrl_tests_pkg.sv
+
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_PROJECT_DIR)/tb/testbench -F $env(UVMF_PROJECT_DIR)/tb/testbench/top_filelist_hdl.f
+vlog -sv -timescale 1ps/1ps -suppress 2223 -suppress 2286 +incdir+$env(UVMF_PROJECT_DIR)/tb/testbench -F $env(UVMF_PROJECT_DIR)/tb/testbench/top_filelist_hvl.f
+
+###################################################################
+## OPTIMIZATION
+###################################################################
+vopt hvl_top hdl_top -o optimized_batch_top_tb
+vopt +acc hvl_top hdl_top -o optimized_debug_top_tb
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.compile
new file mode 100644
index 0000000..8e7bd41
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.compile
@@ -0,0 +1,5 @@
+needs:
+# pragma uvmf custom dut_compile_info begin
+ - ../rtl/dut.compile
+# pragma uvmf custom dut_compile_info end
+ - ../tb/testbench/hdl_top.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.vinfo
new file mode 100644
index 0000000..da27ec7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hdl.vinfo
@@ -0,0 +1 @@
+@use $UVMF_PROJECT_DIR/tb/testbench/hdl_top.vinfo
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.compile
new file mode 100644
index 0000000..ce95254
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.compile
@@ -0,0 +1,2 @@
+needs:
+ - ../tb/testbench/hvl_top.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.vinfo
new file mode 100644
index 0000000..d22eff3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/hvl.vinfo
@@ -0,0 +1 @@
+@use $UVMF_PROJECT_DIR/tb/testbench/hvl_top.vinfo
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/run.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/run.do
new file mode 100644
index 0000000..101ddc4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/run.do
@@ -0,0 +1,21 @@
+
+
+quietly set svLibs ""
+quietly set extra_vsim_args ""
+
+###################################################################
+## Check for additional vsim arguments passed using env var $UVMF_EXTRA_VSIM_ARGS
+###################################################################
+if {[info exists ::env(UVMF_EXTRA_VSIM_ARGS)]} {
+ echo "Adding more args to vsim command"
+ quietly set extra_vsim_args $::env(UVMF_EXTRA_VSIM_ARGS)
+}
+
+##################################################################
+## Launch Questa : generate vsim command line and execute
+##################################################################
+# pragma uvmf custom dut_run_dofile_target begin
+# UVMF_CHANGE_ME : Change the UVM_TESTNAME plusarg to run a different test
+quietly set cmd [format "vsim -i -sv_seed random +UVM_TESTNAME=test_top +UVM_VERBOSITY=UVM_HIGH -permit_unmatched_virtual_intf +notimingchecks -suppress 8887 %s %s -uvmcontrol=all -msgmode both -classdebug -assertdebug +uvm_set_config_int=*,enable_transaction_viewing,1 -do { set NoQuitOnFinish 1; onbreak {resume}; run 0; do wave.do; set PrefSource(OpenOnBreak) 0; radix hex showbase; } optimized_debug_top_tb" $svLibs $extra_vsim_args]
+# pragma uvmf custom dut_run_dofile_target end
+eval $cmd
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/tbx.config b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/tbx.config
new file mode 100644
index 0000000..eec5816
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/tbx.config
@@ -0,0 +1,10 @@
+
+
+
+
+
+comp -questa
+velsyn -D1S
+rtlc -allow_4ST
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist
new file mode 100644
index 0000000..0c62297
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist
@@ -0,0 +1,20 @@
+
+
+
+
+# Test list for use by RMDB file
+# File syntax is
+# TB_INFO { } { }
+# TB ## All subsequent tests will run on this bench until a different "TB" line is seen
+# TEST <1st_seed> ...
+# If not enough seeds are provided then random seeds are used to pad
+# If no repeat count is given, default is 1
+# pragma uvmf custom tb_info begin
+TB_INFO fuse_ctrl { UVMF_VIP_LIBRARY_HOME=../../../../../../../../verification_ip UVMF_PROJECT_DIR=../../../../../../../fuse_ctrl } { }
+# pragma uvmf custom tb_info end
+TB fuse_ctrl
+# pragma uvmf custom regression_suite begin
+TEST test_top 3
+# pragma uvmf custom regression_suite end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist.yaml
new file mode 100644
index 0000000..6236cc7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/testlist.yaml
@@ -0,0 +1,44 @@
+
+
+
+# YAML test list for use by RMDB file
+# File syntax is
+# uvmf_testlist:
+# testbenches:
+# - name:
+# extra_build_options:
+# extra_run_options:
+# - name:
+# ...
+# - name:
+# tests:
+# - name:
+# uvm_testname: (defaults to test_name)
+# testbench: (defaults to last tb name seen)
+# repeat: (defaults to 1)
+# seeds: [,,...,] (defaults to all random)
+# extra_test_options:
+# - name:
+# ...
+# - name:
+# include:
+# - (relative path reference is to the including YAML file)
+# -
+# ...
+# -
+
+uvmf_testlist:
+ testbenches:
+# pragma uvmf custom tb_info begin
+ - name: fuse_ctrl
+ extra_build_options: "UVMF_VIP_LIBRARY_HOME=../../../../../../../../verification_ip UVMF_PROJECT_DIR=../../../../../../../fuse_ctrl"
+ extra_run_options: ""
+# pragma uvmf custom tb_info end
+ tests:
+ - testbench: fuse_ctrl
+# pragma uvmf custom regression_suite begin
+ - name: test_top
+ repeat: 3
+# pragma uvmf custom regression_suite end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/top.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/top.compile
new file mode 100644
index 0000000..efd51c0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/top.compile
@@ -0,0 +1,3 @@
+needs:
+ - hvl.compile
+ - hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/veloce.config b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/veloce.config
new file mode 100644
index 0000000..d097515
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/veloce.config
@@ -0,0 +1,26 @@
+
+
+
+
+
+# pragma uvmf custom additional begin
+comp -num_boards 1
+comp -hvl questa
+# Please choose the correct emulator type code for
+# comp -platform command or else velcomp will fail
+# Available types are:
+# - Veloce2 Quattro: D2
+# - Veloce2 Maximus: D2M
+# - Veloce Strato TiL, Ti, and Mi: Strato
+# - Veloce Strato M and Strato T: StratoM
+# - comp -platform
+comp -platform Strato
+
+rtlc -enable_tbx_pragma_checks
+rtlc -allow_4ST
+rtlc -allow_MDR
+rtlc -compile_display
+rtlc -xwave_siglist xwaves.sigs
+# pragma uvmf custom additional end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/viswave.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/viswave.do
new file mode 100644
index 0000000..db43b44
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/viswave.do
@@ -0,0 +1,106 @@
+
+
+onerror resume
+wave tags F0
+wave update off
+
+wave spacer -backgroundcolor Salmon { fuse_ctrl_rst_in_agent }
+wave add uvm_test_top.environment.fuse_ctrl_rst_in_agent.fuse_ctrl_rst_in_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_rst_in_agent_bus
+wave add -group fuse_ctrl_rst_in_agent_bus hdl_top.fuse_ctrl_rst_in_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_rst_in_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_rst_out_agent }
+wave add uvm_test_top.environment.fuse_ctrl_rst_out_agent.fuse_ctrl_rst_out_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_rst_out_agent_bus
+wave add -group fuse_ctrl_rst_out_agent_bus hdl_top.fuse_ctrl_rst_out_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_rst_out_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_core_axi_write_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_core_axi_write_in_if_agent.fuse_ctrl_core_axi_write_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_core_axi_write_in_if_agent_bus
+wave add -group fuse_ctrl_core_axi_write_in_if_agent_bus hdl_top.fuse_ctrl_core_axi_write_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_core_axi_write_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_core_axi_write_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_core_axi_write_out_if_agent.fuse_ctrl_core_axi_write_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_core_axi_write_out_if_agent_bus
+wave add -group fuse_ctrl_core_axi_write_out_if_agent_bus hdl_top.fuse_ctrl_core_axi_write_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_core_axi_write_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_prim_axi_write_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_prim_axi_write_in_if_agent.fuse_ctrl_prim_axi_write_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_prim_axi_write_in_if_agent_bus
+wave add -group fuse_ctrl_prim_axi_write_in_if_agent_bus hdl_top.fuse_ctrl_prim_axi_write_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_prim_axi_write_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_prim_axi_write_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_prim_axi_write_out_if_agent.fuse_ctrl_prim_axi_write_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_prim_axi_write_out_if_agent_bus
+wave add -group fuse_ctrl_prim_axi_write_out_if_agent_bus hdl_top.fuse_ctrl_prim_axi_write_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_prim_axi_write_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_core_axi_read_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_core_axi_read_in_if_agent.fuse_ctrl_core_axi_read_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_core_axi_read_in_if_agent_bus
+wave add -group fuse_ctrl_core_axi_read_in_if_agent_bus hdl_top.fuse_ctrl_core_axi_read_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_core_axi_read_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_core_axi_read_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_core_axi_read_out_if_agent.fuse_ctrl_core_axi_read_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_core_axi_read_out_if_agent_bus
+wave add -group fuse_ctrl_core_axi_read_out_if_agent_bus hdl_top.fuse_ctrl_core_axi_read_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_core_axi_read_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_prim_axi_read_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_prim_axi_read_in_if_agent.fuse_ctrl_prim_axi_read_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_prim_axi_read_in_if_agent_bus
+wave add -group fuse_ctrl_prim_axi_read_in_if_agent_bus hdl_top.fuse_ctrl_prim_axi_read_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_prim_axi_read_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_prim_axi_read_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_prim_axi_read_out_if_agent.fuse_ctrl_prim_axi_read_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_prim_axi_read_out_if_agent_bus
+wave add -group fuse_ctrl_prim_axi_read_out_if_agent_bus hdl_top.fuse_ctrl_prim_axi_read_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_prim_axi_read_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_secreg_axi_read_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_secreg_axi_read_in_if_agent.fuse_ctrl_secreg_axi_read_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_secreg_axi_read_in_if_agent_bus
+wave add -group fuse_ctrl_secreg_axi_read_in_if_agent_bus hdl_top.fuse_ctrl_secreg_axi_read_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_secreg_axi_read_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_secreg_axi_read_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_secreg_axi_read_out_if_agent.fuse_ctrl_secreg_axi_read_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_secreg_axi_read_out_if_agent_bus
+wave add -group fuse_ctrl_secreg_axi_read_out_if_agent_bus hdl_top.fuse_ctrl_secreg_axi_read_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_secreg_axi_read_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_lc_otp_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_lc_otp_in_if_agent.fuse_ctrl_lc_otp_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_lc_otp_in_if_agent_bus
+wave add -group fuse_ctrl_lc_otp_in_if_agent_bus hdl_top.fuse_ctrl_lc_otp_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_lc_otp_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_lc_otp_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_lc_otp_out_if_agent.fuse_ctrl_lc_otp_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_lc_otp_out_if_agent_bus
+wave add -group fuse_ctrl_lc_otp_out_if_agent_bus hdl_top.fuse_ctrl_lc_otp_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_lc_otp_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_in_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_in_if_agent.fuse_ctrl_in_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_in_if_agent_bus
+wave add -group fuse_ctrl_in_if_agent_bus hdl_top.fuse_ctrl_in_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_in_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+wave spacer -backgroundcolor Salmon { fuse_ctrl_out_if_agent }
+wave add uvm_test_top.environment.fuse_ctrl_out_if_agent.fuse_ctrl_out_if_agent_monitor.txn_stream -radix string -tag F0
+wave group fuse_ctrl_out_if_agent_bus
+wave add -group fuse_ctrl_out_if_agent_bus hdl_top.fuse_ctrl_out_if_agent_bus.* -radix hexadecimal -tag F0
+wave group fuse_ctrl_out_if_agent_bus -collapse
+wave insertion [expr [wave index insertpoint] +1]
+
+wave update on
+WaveSetStreamView
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/wave.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/wave.do
new file mode 100644
index 0000000..1ec9959
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/wave.do
@@ -0,0 +1,72 @@
+
+
+onerror {resume}
+quietly WaveActivateNextPane {} 0
+
+add wave -noupdate -divider fuse_ctrl_rst_in_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_rst_in_agent/fuse_ctrl_rst_in_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_rst_in_agent_bus /hdl_top/fuse_ctrl_rst_in_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_rst_out_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_rst_out_agent/fuse_ctrl_rst_out_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_rst_out_agent_bus /hdl_top/fuse_ctrl_rst_out_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_core_axi_write_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_core_axi_write_in_if_agent/fuse_ctrl_core_axi_write_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_core_axi_write_in_if_agent_bus /hdl_top/fuse_ctrl_core_axi_write_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_core_axi_write_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_core_axi_write_out_if_agent/fuse_ctrl_core_axi_write_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_core_axi_write_out_if_agent_bus /hdl_top/fuse_ctrl_core_axi_write_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_prim_axi_write_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_prim_axi_write_in_if_agent/fuse_ctrl_prim_axi_write_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_prim_axi_write_in_if_agent_bus /hdl_top/fuse_ctrl_prim_axi_write_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_prim_axi_write_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_prim_axi_write_out_if_agent/fuse_ctrl_prim_axi_write_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_prim_axi_write_out_if_agent_bus /hdl_top/fuse_ctrl_prim_axi_write_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_core_axi_read_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_core_axi_read_in_if_agent/fuse_ctrl_core_axi_read_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_core_axi_read_in_if_agent_bus /hdl_top/fuse_ctrl_core_axi_read_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_core_axi_read_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_core_axi_read_out_if_agent/fuse_ctrl_core_axi_read_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_core_axi_read_out_if_agent_bus /hdl_top/fuse_ctrl_core_axi_read_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_prim_axi_read_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_prim_axi_read_in_if_agent/fuse_ctrl_prim_axi_read_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_prim_axi_read_in_if_agent_bus /hdl_top/fuse_ctrl_prim_axi_read_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_prim_axi_read_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_prim_axi_read_out_if_agent/fuse_ctrl_prim_axi_read_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_prim_axi_read_out_if_agent_bus /hdl_top/fuse_ctrl_prim_axi_read_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_secreg_axi_read_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_secreg_axi_read_in_if_agent/fuse_ctrl_secreg_axi_read_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_secreg_axi_read_in_if_agent_bus /hdl_top/fuse_ctrl_secreg_axi_read_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_secreg_axi_read_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_secreg_axi_read_out_if_agent/fuse_ctrl_secreg_axi_read_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_secreg_axi_read_out_if_agent_bus /hdl_top/fuse_ctrl_secreg_axi_read_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_lc_otp_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_lc_otp_in_if_agent/fuse_ctrl_lc_otp_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_lc_otp_in_if_agent_bus /hdl_top/fuse_ctrl_lc_otp_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_lc_otp_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_lc_otp_out_if_agent/fuse_ctrl_lc_otp_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_lc_otp_out_if_agent_bus /hdl_top/fuse_ctrl_lc_otp_out_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_in_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_in_if_agent/fuse_ctrl_in_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_in_if_agent_bus /hdl_top/fuse_ctrl_in_if_agent_bus/*
+add wave -noupdate -divider fuse_ctrl_out_if_agent
+add wave -noupdate /uvm_root/uvm_test_top/environment/fuse_ctrl_out_if_agent/fuse_ctrl_out_if_agent_monitor/txn_stream
+add wave -noupdate -group fuse_ctrl_out_if_agent_bus /hdl_top/fuse_ctrl_out_if_agent_bus/*
+
+TreeUpdate [SetDefaultTree]
+quietly wave cursor active 0
+configure wave -namecolwidth 472
+configure wave -valuecolwidth 100
+configure wave -justifyvalue left
+configure wave -signalnamewidth 0
+configure wave -snapdistance 10
+configure wave -datasetprefix 0
+configure wave -rowmargin 4
+configure wave -childrowmargin 2
+configure wave -gridoffset 0
+configure wave -gridperiod 1
+configure wave -griddelta 40
+configure wave -timeline 0
+configure wave -timelineunits ns
+update
+WaveRestoreZoom {27 ns} {168 ns}
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/xwaves.sigs b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/xwaves.sigs
new file mode 100644
index 0000000..d75f0a5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/sim/xwaves.sigs
@@ -0,0 +1,17 @@
+
+
+
+
+
+# pragma uvmf custom additional begin
+
+Group All
+
+#Top level signals
+hdl_top.*
+#Add additional levels or individual signals as needed
+hdl_top.*.*
+
+# pragma uvmf custom additional end
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.compile
new file mode 100644
index 0000000..0c6b841
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.compile
@@ -0,0 +1,4 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+src:
+ - fuse_ctrl_parameters_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.sv
new file mode 100644
index 0000000..df84a8b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.sv
@@ -0,0 +1,66 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This package contains test level parameters
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+package fuse_ctrl_parameters_pkg;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+
+ // These parameters are used to uniquely identify each interface. The monitor_bfm and
+ // driver_bfm are placed into and retrieved from the uvm_config_db using these string
+ // names as the field_name. The parameter is also used to enable transaction viewing
+ // from the command line for selected interfaces using the UVM command line processing.
+ parameter string fuse_ctrl_rst_in_agent_BFM = "fuse_ctrl_rst_in_agent_BFM"; /* [0] */
+ parameter string fuse_ctrl_rst_out_agent_BFM = "fuse_ctrl_rst_out_agent_BFM"; /* [1] */
+ parameter string fuse_ctrl_core_axi_write_in_if_agent_BFM = "fuse_ctrl_core_axi_write_in_if_agent_BFM"; /* [2] */
+ parameter string fuse_ctrl_core_axi_write_out_if_agent_BFM = "fuse_ctrl_core_axi_write_out_if_agent_BFM"; /* [3] */
+ parameter string fuse_ctrl_prim_axi_write_in_if_agent_BFM = "fuse_ctrl_prim_axi_write_in_if_agent_BFM"; /* [4] */
+ parameter string fuse_ctrl_prim_axi_write_out_if_agent_BFM = "fuse_ctrl_prim_axi_write_out_if_agent_BFM"; /* [5] */
+ parameter string fuse_ctrl_core_axi_read_in_if_agent_BFM = "fuse_ctrl_core_axi_read_in_if_agent_BFM"; /* [6] */
+ parameter string fuse_ctrl_core_axi_read_out_if_agent_BFM = "fuse_ctrl_core_axi_read_out_if_agent_BFM"; /* [7] */
+ parameter string fuse_ctrl_prim_axi_read_in_if_agent_BFM = "fuse_ctrl_prim_axi_read_in_if_agent_BFM"; /* [8] */
+ parameter string fuse_ctrl_prim_axi_read_out_if_agent_BFM = "fuse_ctrl_prim_axi_read_out_if_agent_BFM"; /* [9] */
+ parameter string fuse_ctrl_secreg_axi_read_in_if_agent_BFM = "fuse_ctrl_secreg_axi_read_in_if_agent_BFM"; /* [10] */
+ parameter string fuse_ctrl_secreg_axi_read_out_if_agent_BFM = "fuse_ctrl_secreg_axi_read_out_if_agent_BFM"; /* [11] */
+ parameter string fuse_ctrl_lc_otp_in_if_agent_BFM = "fuse_ctrl_lc_otp_in_if_agent_BFM"; /* [12] */
+ parameter string fuse_ctrl_lc_otp_out_if_agent_BFM = "fuse_ctrl_lc_otp_out_if_agent_BFM"; /* [13] */
+ parameter string fuse_ctrl_in_if_agent_BFM = "fuse_ctrl_in_if_agent_BFM"; /* [14] */
+ parameter string fuse_ctrl_out_if_agent_BFM = "fuse_ctrl_out_if_agent_BFM"; /* [15] */
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.vinfo
new file mode 100644
index 0000000..3bd4d7f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/parameters/fuse_ctrl_parameters_pkg.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_parameters_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.compile
new file mode 100644
index 0000000..85c9189
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.compile
@@ -0,0 +1,22 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out.compile
+ - ../../../../verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.compile
+ - ../parameters/fuse_ctrl_parameters_pkg.compile
+src:
+ - fuse_ctrl_sequences_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.sv
new file mode 100644
index 0000000..3ebdc90
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.sv
@@ -0,0 +1,93 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This package includes all high level sequence classes used
+// in the environment. These include utility sequences and top
+// level sequences.
+//
+// CONTAINS:
+// -
+// -
+//
+//----------------------------------------------------------------------
+//
+//----------------------------------------------------------------------
+//
+
+package fuse_ctrl_sequences_pkg;
+ import uvm_pkg::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_rst_in_pkg::*;
+ import fuse_ctrl_rst_in_pkg_hdl::*;
+ import fuse_ctrl_rst_out_pkg::*;
+ import fuse_ctrl_rst_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_in_pkg::*;
+ import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_out_pkg::*;
+ import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_in_pkg::*;
+ import fuse_ctrl_prim_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_out_pkg::*;
+ import fuse_ctrl_prim_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_in_pkg::*;
+ import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_out_pkg::*;
+ import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_in_pkg::*;
+ import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_out_pkg::*;
+ import fuse_ctrl_prim_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_in_pkg::*;
+ import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_out_pkg::*;
+ import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+ import fuse_ctrl_in_pkg::*;
+ import fuse_ctrl_in_pkg_hdl::*;
+ import fuse_ctrl_out_pkg::*;
+ import fuse_ctrl_out_pkg_hdl::*;
+ import fuse_ctrl_parameters_pkg::*;
+ import fuse_ctrl_env_pkg::*;
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ `include "src/fuse_ctrl_bench_sequence_base.svh"
+ `include "src/register_test_sequence.svh"
+ `include "src/example_derived_test_sequence.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the sequence package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.vinfo
new file mode 100644
index 0000000..150eb8c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/fuse_ctrl_sequences_pkg.vinfo
@@ -0,0 +1,21 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.vinfo
+@use $UVMF_PROJECT_DIR/tb/parameters/fuse_ctrl_parameters_pkg.vinfo
++incdir+@vinfodir
+fuse_ctrl_sequences_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/example_derived_test_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/example_derived_test_sequence.svh
new file mode 100644
index 0000000..7566dc5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/example_derived_test_sequence.svh
@@ -0,0 +1,44 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains the top level sequence used in example_derived_test.
+// It is an example of a sequence that is extended from %(benchName)_bench_sequence_base
+// and can override %(benchName)_bench_sequence_base.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class example_derived_test_sequence extends fuse_ctrl_bench_sequence_base;
+
+ `uvm_object_utils( example_derived_test_sequence );
+
+ function new(string name = "" );
+ super.new(name);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/fuse_ctrl_bench_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/fuse_ctrl_bench_sequence_base.svh
new file mode 100644
index 0000000..5b73892
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/fuse_ctrl_bench_sequence_base.svh
@@ -0,0 +1,254 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// Description: This file contains the top level and utility sequences
+// used by test_top. It can be extended to create derivative top
+// level sequences.
+//
+//----------------------------------------------------------------------
+//
+//----------------------------------------------------------------------
+//
+
+
+typedef fuse_ctrl_env_configuration fuse_ctrl_env_configuration_t;
+
+class fuse_ctrl_bench_sequence_base extends uvmf_sequence_base #(uvm_sequence_item);
+
+ `uvm_object_utils( fuse_ctrl_bench_sequence_base );
+
+ // pragma uvmf custom sequences begin
+
+typedef fuse_ctrl_env_sequence_base #(
+ .CONFIG_T(fuse_ctrl_env_configuration_t)
+ )
+ fuse_ctrl_env_sequence_base_t;
+rand fuse_ctrl_env_sequence_base_t fuse_ctrl_env_seq;
+
+
+
+ // UVMF_CHANGE_ME : Instantiate, construct, and start sequences as needed to create stimulus scenarios.
+ // Instantiate sequences here
+ typedef fuse_ctrl_rst_in_random_sequence fuse_ctrl_rst_in_agent_random_seq_t;
+ fuse_ctrl_rst_in_agent_random_seq_t fuse_ctrl_rst_in_agent_random_seq;
+ typedef fuse_ctrl_core_axi_write_in_random_sequence fuse_ctrl_core_axi_write_in_if_agent_random_seq_t;
+ fuse_ctrl_core_axi_write_in_if_agent_random_seq_t fuse_ctrl_core_axi_write_in_if_agent_random_seq;
+ typedef fuse_ctrl_prim_axi_write_in_random_sequence fuse_ctrl_prim_axi_write_in_if_agent_random_seq_t;
+ fuse_ctrl_prim_axi_write_in_if_agent_random_seq_t fuse_ctrl_prim_axi_write_in_if_agent_random_seq;
+ typedef fuse_ctrl_core_axi_read_in_random_sequence fuse_ctrl_core_axi_read_in_if_agent_random_seq_t;
+ fuse_ctrl_core_axi_read_in_if_agent_random_seq_t fuse_ctrl_core_axi_read_in_if_agent_random_seq;
+ typedef fuse_ctrl_prim_axi_read_in_random_sequence fuse_ctrl_prim_axi_read_in_if_agent_random_seq_t;
+ fuse_ctrl_prim_axi_read_in_if_agent_random_seq_t fuse_ctrl_prim_axi_read_in_if_agent_random_seq;
+ typedef fuse_ctrl_secreg_axi_read_in_random_sequence fuse_ctrl_secreg_axi_read_in_if_agent_random_seq_t;
+ fuse_ctrl_secreg_axi_read_in_if_agent_random_seq_t fuse_ctrl_secreg_axi_read_in_if_agent_random_seq;
+ typedef fuse_ctrl_lc_otp_in_random_sequence fuse_ctrl_lc_otp_in_if_agent_random_seq_t;
+ fuse_ctrl_lc_otp_in_if_agent_random_seq_t fuse_ctrl_lc_otp_in_if_agent_random_seq;
+ typedef fuse_ctrl_in_random_sequence fuse_ctrl_in_if_agent_random_seq_t;
+ fuse_ctrl_in_if_agent_random_seq_t fuse_ctrl_in_if_agent_random_seq;
+ // pragma uvmf custom sequences end
+
+ // Sequencer handles for each active interface in the environment
+ typedef fuse_ctrl_rst_in_transaction fuse_ctrl_rst_in_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_rst_in_agent_transaction_t) fuse_ctrl_rst_in_agent_sequencer;
+ typedef fuse_ctrl_core_axi_write_in_transaction fuse_ctrl_core_axi_write_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_core_axi_write_in_if_agent_transaction_t) fuse_ctrl_core_axi_write_in_if_agent_sequencer;
+ typedef fuse_ctrl_prim_axi_write_in_transaction fuse_ctrl_prim_axi_write_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_prim_axi_write_in_if_agent_transaction_t) fuse_ctrl_prim_axi_write_in_if_agent_sequencer;
+ typedef fuse_ctrl_core_axi_read_in_transaction fuse_ctrl_core_axi_read_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_core_axi_read_in_if_agent_transaction_t) fuse_ctrl_core_axi_read_in_if_agent_sequencer;
+ typedef fuse_ctrl_prim_axi_read_in_transaction fuse_ctrl_prim_axi_read_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_prim_axi_read_in_if_agent_transaction_t) fuse_ctrl_prim_axi_read_in_if_agent_sequencer;
+ typedef fuse_ctrl_secreg_axi_read_in_transaction fuse_ctrl_secreg_axi_read_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_secreg_axi_read_in_if_agent_transaction_t) fuse_ctrl_secreg_axi_read_in_if_agent_sequencer;
+ typedef fuse_ctrl_lc_otp_in_transaction fuse_ctrl_lc_otp_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_lc_otp_in_if_agent_transaction_t) fuse_ctrl_lc_otp_in_if_agent_sequencer;
+ typedef fuse_ctrl_in_transaction fuse_ctrl_in_if_agent_transaction_t;
+ uvm_sequencer #(fuse_ctrl_in_if_agent_transaction_t) fuse_ctrl_in_if_agent_sequencer;
+
+
+ // Top level environment configuration handle
+ fuse_ctrl_env_configuration_t top_configuration;
+
+ // Configuration handles to access interface BFM's
+ fuse_ctrl_rst_in_configuration fuse_ctrl_rst_in_agent_config;
+ fuse_ctrl_rst_out_configuration fuse_ctrl_rst_out_agent_config;
+ fuse_ctrl_core_axi_write_in_configuration fuse_ctrl_core_axi_write_in_if_agent_config;
+ fuse_ctrl_core_axi_write_out_configuration fuse_ctrl_core_axi_write_out_if_agent_config;
+ fuse_ctrl_prim_axi_write_in_configuration fuse_ctrl_prim_axi_write_in_if_agent_config;
+ fuse_ctrl_prim_axi_write_out_configuration fuse_ctrl_prim_axi_write_out_if_agent_config;
+ fuse_ctrl_core_axi_read_in_configuration fuse_ctrl_core_axi_read_in_if_agent_config;
+ fuse_ctrl_core_axi_read_out_configuration fuse_ctrl_core_axi_read_out_if_agent_config;
+ fuse_ctrl_prim_axi_read_in_configuration fuse_ctrl_prim_axi_read_in_if_agent_config;
+ fuse_ctrl_prim_axi_read_out_configuration fuse_ctrl_prim_axi_read_out_if_agent_config;
+ fuse_ctrl_secreg_axi_read_in_configuration fuse_ctrl_secreg_axi_read_in_if_agent_config;
+ fuse_ctrl_secreg_axi_read_out_configuration fuse_ctrl_secreg_axi_read_out_if_agent_config;
+ fuse_ctrl_lc_otp_in_configuration fuse_ctrl_lc_otp_in_if_agent_config;
+ fuse_ctrl_lc_otp_out_configuration fuse_ctrl_lc_otp_out_if_agent_config;
+ fuse_ctrl_in_configuration fuse_ctrl_in_if_agent_config;
+ fuse_ctrl_out_configuration fuse_ctrl_out_if_agent_config;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ function new( string name = "" );
+ super.new( name );
+ // Retrieve the configuration handles from the uvm_config_db
+
+ // Retrieve top level configuration handle
+ if ( !uvm_config_db#(fuse_ctrl_env_configuration_t)::get(null,UVMF_CONFIGURATIONS, "TOP_ENV_CONFIG",top_configuration) ) begin
+ `uvm_info("CFG", "*** FATAL *** uvm_config_db::get can not find TOP_ENV_CONFIG. Are you using an older UVMF release than what was used to generate this bench?",UVM_NONE);
+ `uvm_fatal("CFG", "uvm_config_db#(fuse_ctrl_env_configuration_t)::get cannot find resource TOP_ENV_CONFIG");
+ end
+
+ // Retrieve config handles for all agents
+ if( !uvm_config_db #( fuse_ctrl_rst_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_rst_in_agent_BFM , fuse_ctrl_rst_in_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_rst_in_configuration )::get cannot find resource fuse_ctrl_rst_in_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_rst_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_rst_out_agent_BFM , fuse_ctrl_rst_out_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_rst_out_configuration )::get cannot find resource fuse_ctrl_rst_out_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_core_axi_write_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_core_axi_write_in_if_agent_BFM , fuse_ctrl_core_axi_write_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_core_axi_write_in_configuration )::get cannot find resource fuse_ctrl_core_axi_write_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_core_axi_write_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_core_axi_write_out_if_agent_BFM , fuse_ctrl_core_axi_write_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_core_axi_write_out_configuration )::get cannot find resource fuse_ctrl_core_axi_write_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_prim_axi_write_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_prim_axi_write_in_if_agent_BFM , fuse_ctrl_prim_axi_write_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_prim_axi_write_in_configuration )::get cannot find resource fuse_ctrl_prim_axi_write_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_prim_axi_write_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_prim_axi_write_out_if_agent_BFM , fuse_ctrl_prim_axi_write_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_prim_axi_write_out_configuration )::get cannot find resource fuse_ctrl_prim_axi_write_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_core_axi_read_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_core_axi_read_in_if_agent_BFM , fuse_ctrl_core_axi_read_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_core_axi_read_in_configuration )::get cannot find resource fuse_ctrl_core_axi_read_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_core_axi_read_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_core_axi_read_out_if_agent_BFM , fuse_ctrl_core_axi_read_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_core_axi_read_out_configuration )::get cannot find resource fuse_ctrl_core_axi_read_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_prim_axi_read_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_prim_axi_read_in_if_agent_BFM , fuse_ctrl_prim_axi_read_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_prim_axi_read_in_configuration )::get cannot find resource fuse_ctrl_prim_axi_read_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_prim_axi_read_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_prim_axi_read_out_if_agent_BFM , fuse_ctrl_prim_axi_read_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_prim_axi_read_out_configuration )::get cannot find resource fuse_ctrl_prim_axi_read_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_secreg_axi_read_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_secreg_axi_read_in_if_agent_BFM , fuse_ctrl_secreg_axi_read_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_secreg_axi_read_in_configuration )::get cannot find resource fuse_ctrl_secreg_axi_read_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_secreg_axi_read_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_secreg_axi_read_out_if_agent_BFM , fuse_ctrl_secreg_axi_read_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_secreg_axi_read_out_configuration )::get cannot find resource fuse_ctrl_secreg_axi_read_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_lc_otp_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_lc_otp_in_if_agent_BFM , fuse_ctrl_lc_otp_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_lc_otp_in_configuration )::get cannot find resource fuse_ctrl_lc_otp_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_lc_otp_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_lc_otp_out_if_agent_BFM , fuse_ctrl_lc_otp_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_lc_otp_out_configuration )::get cannot find resource fuse_ctrl_lc_otp_out_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_in_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_in_if_agent_BFM , fuse_ctrl_in_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_in_configuration )::get cannot find resource fuse_ctrl_in_if_agent_BFM" )
+ if( !uvm_config_db #( fuse_ctrl_out_configuration )::get( null , UVMF_CONFIGURATIONS , fuse_ctrl_out_if_agent_BFM , fuse_ctrl_out_if_agent_config ) )
+ `uvm_fatal("CFG" , "uvm_config_db #( fuse_ctrl_out_configuration )::get cannot find resource fuse_ctrl_out_if_agent_BFM" )
+
+ // Assign the sequencer handles from the handles within agent configurations
+ fuse_ctrl_rst_in_agent_sequencer = fuse_ctrl_rst_in_agent_config.get_sequencer();
+ fuse_ctrl_core_axi_write_in_if_agent_sequencer = fuse_ctrl_core_axi_write_in_if_agent_config.get_sequencer();
+ fuse_ctrl_prim_axi_write_in_if_agent_sequencer = fuse_ctrl_prim_axi_write_in_if_agent_config.get_sequencer();
+ fuse_ctrl_core_axi_read_in_if_agent_sequencer = fuse_ctrl_core_axi_read_in_if_agent_config.get_sequencer();
+ fuse_ctrl_prim_axi_read_in_if_agent_sequencer = fuse_ctrl_prim_axi_read_in_if_agent_config.get_sequencer();
+ fuse_ctrl_secreg_axi_read_in_if_agent_sequencer = fuse_ctrl_secreg_axi_read_in_if_agent_config.get_sequencer();
+ fuse_ctrl_lc_otp_in_if_agent_sequencer = fuse_ctrl_lc_otp_in_if_agent_config.get_sequencer();
+ fuse_ctrl_in_if_agent_sequencer = fuse_ctrl_in_if_agent_config.get_sequencer();
+
+
+
+ // pragma uvmf custom new begin
+ // pragma uvmf custom new end
+
+ endfunction
+
+ // ****************************************************************************
+ virtual task body();
+ // pragma uvmf custom body begin
+
+ // Construct sequences here
+
+ fuse_ctrl_env_seq = fuse_ctrl_env_sequence_base_t::type_id::create("fuse_ctrl_env_seq");
+
+ fuse_ctrl_rst_in_agent_random_seq = fuse_ctrl_rst_in_agent_random_seq_t::type_id::create("fuse_ctrl_rst_in_agent_random_seq");
+ fuse_ctrl_core_axi_write_in_if_agent_random_seq = fuse_ctrl_core_axi_write_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_core_axi_write_in_if_agent_random_seq");
+ fuse_ctrl_prim_axi_write_in_if_agent_random_seq = fuse_ctrl_prim_axi_write_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_prim_axi_write_in_if_agent_random_seq");
+ fuse_ctrl_core_axi_read_in_if_agent_random_seq = fuse_ctrl_core_axi_read_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_core_axi_read_in_if_agent_random_seq");
+ fuse_ctrl_prim_axi_read_in_if_agent_random_seq = fuse_ctrl_prim_axi_read_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_prim_axi_read_in_if_agent_random_seq");
+ fuse_ctrl_secreg_axi_read_in_if_agent_random_seq = fuse_ctrl_secreg_axi_read_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_secreg_axi_read_in_if_agent_random_seq");
+ fuse_ctrl_lc_otp_in_if_agent_random_seq = fuse_ctrl_lc_otp_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_lc_otp_in_if_agent_random_seq");
+ fuse_ctrl_in_if_agent_random_seq = fuse_ctrl_in_if_agent_random_seq_t::type_id::create("fuse_ctrl_in_if_agent_random_seq");
+ fork
+ fuse_ctrl_rst_in_agent_config.wait_for_reset();
+ fuse_ctrl_rst_out_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_write_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_write_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_write_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_write_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_secreg_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_secreg_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_lc_otp_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_lc_otp_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_out_if_agent_config.wait_for_reset();
+ join
+ // Start RESPONDER sequences here
+ fork
+ join_none
+ // Start INITIATOR sequences here
+ fork
+ repeat (25) fuse_ctrl_rst_in_agent_random_seq.start(fuse_ctrl_rst_in_agent_sequencer);
+ repeat (25) fuse_ctrl_core_axi_write_in_if_agent_random_seq.start(fuse_ctrl_core_axi_write_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_prim_axi_write_in_if_agent_random_seq.start(fuse_ctrl_prim_axi_write_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_core_axi_read_in_if_agent_random_seq.start(fuse_ctrl_core_axi_read_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_prim_axi_read_in_if_agent_random_seq.start(fuse_ctrl_prim_axi_read_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_secreg_axi_read_in_if_agent_random_seq.start(fuse_ctrl_secreg_axi_read_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_lc_otp_in_if_agent_random_seq.start(fuse_ctrl_lc_otp_in_if_agent_sequencer);
+ repeat (25) fuse_ctrl_in_if_agent_random_seq.start(fuse_ctrl_in_if_agent_sequencer);
+ join
+
+fuse_ctrl_env_seq.start(top_configuration.vsqr);
+
+ // UVMF_CHANGE_ME : Extend the simulation XXX number of clocks after
+ // the last sequence to allow for the last sequence item to flow
+ // through the design.
+ fork
+ fuse_ctrl_rst_in_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_rst_out_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_core_axi_write_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_core_axi_write_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_prim_axi_write_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_prim_axi_write_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_core_axi_read_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_core_axi_read_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_prim_axi_read_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_prim_axi_read_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_secreg_axi_read_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_secreg_axi_read_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_lc_otp_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_lc_otp_out_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_in_if_agent_config.wait_for_num_clocks(400);
+ fuse_ctrl_out_if_agent_config.wait_for_num_clocks(400);
+ join
+
+ // pragma uvmf custom body end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/register_test_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/register_test_sequence.svh
new file mode 100644
index 0000000..d863142
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/sequences/src/register_test_sequence.svh
@@ -0,0 +1,85 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains the top level sequence used in register_test.
+// It uses the UVM built in register test. Specific UVM built-in tests can be
+// selected in the body task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class register_test_sequence extends fuse_ctrl_bench_sequence_base;
+
+ `uvm_object_utils( register_test_sequence );
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "" );
+ super.new(name);
+ endfunction
+
+ // ****************************************************************************
+ virtual task body();
+
+ // Reset the DUT
+ fork
+ // pragma uvmf custom register_test_reset begin
+ // UVMF_CHANGE_ME
+ // Select the desired wait_for_reset or provide custom mechanism.
+ // fork-join for this code block may be unnecessary based on your situation.
+ fuse_ctrl_rst_in_agent_config.wait_for_reset();
+ fuse_ctrl_rst_out_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_write_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_write_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_write_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_write_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_core_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_prim_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_secreg_axi_read_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_secreg_axi_read_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_lc_otp_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_lc_otp_out_if_agent_config.wait_for_reset();
+ fuse_ctrl_in_if_agent_config.wait_for_reset();
+ fuse_ctrl_out_if_agent_config.wait_for_reset();
+ // pragma uvmf custom register_test_reset end
+ join
+
+ // pragma uvmf custom register_test_setup begin
+ // UVMF_CHANGE_ME perform potentially necessary operations before running the sequence.
+ // pragma uvmf custom register_test_setup end
+
+ // pragma uvmf custom register_test_operation begin
+ // UVMF_CHANGE_ME Perform your custom register test
+ // pragma uvmf custom register_test_operation end
+
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.compile
new file mode 100644
index 0000000..651edf5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.compile
@@ -0,0 +1,24 @@
+incdir:
+ - ${uvm_path}/src
+ - .
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ../parameters/fuse_ctrl_parameters_pkg.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hdl.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hdl.compile
+src:
+ - hdl_top.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.sv
new file mode 100644
index 0000000..134ef5d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.sv
@@ -0,0 +1,412 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// Description: This top level module instantiates all synthesizable
+// static content. This and tb_top.sv are the two top level modules
+// of the simulation.
+//
+// This module instantiates the following:
+// DUT: The Design Under Test
+// Interfaces: Signal bundles that contain signals connected to DUT
+// Driver BFM's: BFM's that actively drive interface signals
+// Monitor BFM's: BFM's that passively monitor interface signals
+//
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//
+
+module hdl_top;
+
+import fuse_ctrl_parameters_pkg::*;
+import uvmf_base_pkg_hdl::*;
+import axi_pkg::*;
+
+ // pragma attribute hdl_top partition_module_xrtl
+// pragma uvmf custom clock_generator begin
+ bit clk;
+ // Instantiate a clk driver
+ // tbx clkgen
+ initial begin
+ clk = 0;
+ #0ns;
+ forever begin
+ clk = ~clk;
+ #5ns;
+ end
+ end
+// pragma uvmf custom clock_generator end
+
+// pragma uvmf custom reset_generator begin
+ bit rst;
+ // Instantiate a rst driver
+ // tbx clkgen
+ initial begin
+ rst = 0;
+ #200ns;
+ rst = 1;
+ end
+// pragma uvmf custom reset_generator end
+
+ // pragma uvmf custom module_item_additional begin
+ logic edn_clk;
+ logic edn_rst_n;
+
+ localparam MemInitFile = "/home/ws/caliptra/anjpar/ws1/chipsalliance/caliptra-rtl/src/fuse_ctrl/data/otp-img.2048.vmem";
+ // pragma uvmf custom module_item_additional end
+
+ // Instantiate the signal bundle, monitor bfm and driver bfm for each interface.
+ // The signal bundle, _if, contains signals to be connected to the DUT.
+ // The monitor, monitor_bfm, observes the bus, _if, and captures transactions.
+ // The driver, driver_bfm, drives transactions onto the bus, _if.
+ fuse_ctrl_rst_in_if fuse_ctrl_rst_in_agent_bus(
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_bus_connections end
+ );
+ fuse_ctrl_rst_out_if fuse_ctrl_rst_out_agent_bus(
+ // pragma uvmf custom fuse_ctrl_rst_out_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_rst_out_agent_bus_connections end
+ );
+ fuse_ctrl_core_axi_write_in_if fuse_ctrl_core_axi_write_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_core_axi_write_out_if fuse_ctrl_core_axi_write_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_core_axi_write_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_core_axi_write_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_prim_axi_write_in_if fuse_ctrl_prim_axi_write_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_prim_axi_write_out_if fuse_ctrl_prim_axi_write_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_core_axi_read_in_if fuse_ctrl_core_axi_read_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_core_axi_read_out_if fuse_ctrl_core_axi_read_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_core_axi_read_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_core_axi_read_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_prim_axi_read_in_if fuse_ctrl_prim_axi_read_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_prim_axi_read_out_if fuse_ctrl_prim_axi_read_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_secreg_axi_read_in_if fuse_ctrl_secreg_axi_read_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_secreg_axi_read_out_if fuse_ctrl_secreg_axi_read_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_lc_otp_in_if fuse_ctrl_lc_otp_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_lc_otp_out_if fuse_ctrl_lc_otp_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_lc_otp_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_lc_otp_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_in_if fuse_ctrl_in_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_in_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_in_if_agent_bus_connections end
+ );
+ fuse_ctrl_out_if fuse_ctrl_out_if_agent_bus(
+ // pragma uvmf custom fuse_ctrl_out_if_agent_bus_connections begin
+ .clk_i(clk), .rst_ni(rst)
+ // pragma uvmf custom fuse_ctrl_out_if_agent_bus_connections end
+ );
+ fuse_ctrl_rst_in_monitor_bfm fuse_ctrl_rst_in_agent_mon_bfm(fuse_ctrl_rst_in_agent_bus.monitor_port);
+ fuse_ctrl_rst_out_monitor_bfm fuse_ctrl_rst_out_agent_mon_bfm(fuse_ctrl_rst_out_agent_bus.monitor_port);
+ fuse_ctrl_core_axi_write_in_monitor_bfm fuse_ctrl_core_axi_write_in_if_agent_mon_bfm(fuse_ctrl_core_axi_write_in_if_agent_bus.monitor_port);
+ fuse_ctrl_core_axi_write_out_monitor_bfm fuse_ctrl_core_axi_write_out_if_agent_mon_bfm(fuse_ctrl_core_axi_write_out_if_agent_bus.monitor_port);
+ fuse_ctrl_prim_axi_write_in_monitor_bfm fuse_ctrl_prim_axi_write_in_if_agent_mon_bfm(fuse_ctrl_prim_axi_write_in_if_agent_bus.monitor_port);
+ fuse_ctrl_prim_axi_write_out_monitor_bfm fuse_ctrl_prim_axi_write_out_if_agent_mon_bfm(fuse_ctrl_prim_axi_write_out_if_agent_bus.monitor_port);
+ fuse_ctrl_core_axi_read_in_monitor_bfm fuse_ctrl_core_axi_read_in_if_agent_mon_bfm(fuse_ctrl_core_axi_read_in_if_agent_bus.monitor_port);
+ fuse_ctrl_core_axi_read_out_monitor_bfm fuse_ctrl_core_axi_read_out_if_agent_mon_bfm(fuse_ctrl_core_axi_read_out_if_agent_bus.monitor_port);
+ fuse_ctrl_prim_axi_read_in_monitor_bfm fuse_ctrl_prim_axi_read_in_if_agent_mon_bfm(fuse_ctrl_prim_axi_read_in_if_agent_bus.monitor_port);
+ fuse_ctrl_prim_axi_read_out_monitor_bfm fuse_ctrl_prim_axi_read_out_if_agent_mon_bfm(fuse_ctrl_prim_axi_read_out_if_agent_bus.monitor_port);
+ fuse_ctrl_secreg_axi_read_in_monitor_bfm fuse_ctrl_secreg_axi_read_in_if_agent_mon_bfm(fuse_ctrl_secreg_axi_read_in_if_agent_bus.monitor_port);
+ fuse_ctrl_secreg_axi_read_out_monitor_bfm fuse_ctrl_secreg_axi_read_out_if_agent_mon_bfm(fuse_ctrl_secreg_axi_read_out_if_agent_bus.monitor_port);
+ fuse_ctrl_lc_otp_in_monitor_bfm fuse_ctrl_lc_otp_in_if_agent_mon_bfm(fuse_ctrl_lc_otp_in_if_agent_bus.monitor_port);
+ fuse_ctrl_lc_otp_out_monitor_bfm fuse_ctrl_lc_otp_out_if_agent_mon_bfm(fuse_ctrl_lc_otp_out_if_agent_bus.monitor_port);
+ fuse_ctrl_in_monitor_bfm fuse_ctrl_in_if_agent_mon_bfm(fuse_ctrl_in_if_agent_bus.monitor_port);
+ fuse_ctrl_out_monitor_bfm fuse_ctrl_out_if_agent_mon_bfm(fuse_ctrl_out_if_agent_bus.monitor_port);
+ fuse_ctrl_rst_in_driver_bfm fuse_ctrl_rst_in_agent_drv_bfm(fuse_ctrl_rst_in_agent_bus.initiator_port);
+ fuse_ctrl_core_axi_write_in_driver_bfm fuse_ctrl_core_axi_write_in_if_agent_drv_bfm(fuse_ctrl_core_axi_write_in_if_agent_bus.initiator_port);
+ fuse_ctrl_prim_axi_write_in_driver_bfm fuse_ctrl_prim_axi_write_in_if_agent_drv_bfm(fuse_ctrl_prim_axi_write_in_if_agent_bus.initiator_port);
+ fuse_ctrl_core_axi_read_in_driver_bfm fuse_ctrl_core_axi_read_in_if_agent_drv_bfm(fuse_ctrl_core_axi_read_in_if_agent_bus.initiator_port);
+ fuse_ctrl_prim_axi_read_in_driver_bfm fuse_ctrl_prim_axi_read_in_if_agent_drv_bfm(fuse_ctrl_prim_axi_read_in_if_agent_bus.initiator_port);
+ fuse_ctrl_secreg_axi_read_in_driver_bfm fuse_ctrl_secreg_axi_read_in_if_agent_drv_bfm(fuse_ctrl_secreg_axi_read_in_if_agent_bus.initiator_port);
+ fuse_ctrl_lc_otp_in_driver_bfm fuse_ctrl_lc_otp_in_if_agent_drv_bfm(fuse_ctrl_lc_otp_in_if_agent_bus.initiator_port);
+ fuse_ctrl_in_driver_bfm fuse_ctrl_in_if_agent_drv_bfm(fuse_ctrl_in_if_agent_bus.initiator_port);
+
+ // pragma uvmf custom dut_instantiation begin
+ // UVMF_CHANGE_ME : Add DUT and connect to signals in _bus interfaces listed above
+ // Instantiate your DUT here
+ // These DUT's instantiated to show verilog and vhdl instantiation
+ //verilog_dut dut_verilog( .clk(clk), .rst(rst), .in_signal(vhdl_to_verilog_signal), .out_signal(verilog_to_vhdl_signal));
+ //vhdl_dut dut_vhdl ( .clk(clk), .rst(rst), .in_signal(verilog_to_vhdl_signal), .out_signal(vhdl_to_verilog_signal));
+
+ otp_ctrl_top #(
+ .MemInitFile (MemInitFile)
+ ) dut (
+ .clk_i (fuse_ctrl_rst_in_agent_bus.clk_i ),
+ .rst_ni (fuse_ctrl_rst_in_agent_bus.rst_ni ),
+ // edn
+ .clk_edn_i (edn_clk ),
+ .rst_edn_ni (edn_rst_n ),
+ .edn_o (fuse_ctrl_out_if_agent_bus.edn_o), //(edn_if[0].req ),
+ .edn_i (fuse_ctrl_in_if_agent_bus.edn_i), //({edn_if[0].ack, edn_if[0].d_data}),
+ // AXI interface
+ .s_core_axi_r_if (axi_core_if.r_sub),
+ .s_core_axi_w_if (axi_core_if.w_sub),
+ .s_prim_axi_r_if (axi_prim_if.r_sub),
+ .s_prim_axi_w_if (axi_prim_if.w_sub),
+ .s_secreg_axi_r_if (axi_secreg_if.r_sub),
+ // interrupt
+ .intr_otp_operation_done_o (fuse_ctrl_out_if_agent_bus.intr_otp_operation_done_o),
+ .intr_otp_error_o (fuse_ctrl_out_if_agent_bus.intr_otp_error_o),
+ // alert
+ .alert_rx_i (fuse_ctrl_in_if_agent_bus.alert_rx_i ), //(alert_rx parameter logic [CoreAw-1:0] CALIPTRA_OTP_CTRL_ALERT_TEST_OFFSET = 13'h c;
+ .alert_tx_o (fuse_ctrl_out_if_agent_bus.alert_tx_o ), //(alert_tx ),
+ // ast
+ .obs_ctrl_i (fuse_ctrl_in_if_agent_bus.obs_ctrl_i), //(otp_ctrl_if.obs_ctrl_i),
+ .otp_obs_o (fuse_ctrl_out_if_agent_bus.otp_obs_o),
+ .otp_ast_pwr_seq_o (fuse_ctrl_out_if_agent_bus.otp_ast_pwr_seq_o), //(ast_req),
+ .otp_ast_pwr_seq_h_i (fuse_ctrl_in_if_agent_bus.otp_ast_pwr_seq_h_i), //(otp_ctrl_if.otp_ast_pwr_seq_h_i),
+ // pwrmgr
+ .pwr_otp_i (fuse_ctrl_rst_in_agent_bus.pwr_otp_i), //(otp_ctrl_if.pwr_otp_init_i),
+ .pwr_otp_o (fuse_ctrl_rst_out_agent_bus.pwr_otp_o), //({otp_ctrl_if.pwr_otp_done_o, otp_ctrl_if.pwr_otp_idle_o}),
+ // lc
+ .lc_otp_vendor_test_i (fuse_ctrl_lc_otp_in_if_agent_bus.lc_otp_vendor_test_i), //(otp_ctrl_if.otp_vendor_test_ctrl_i),
+ .lc_otp_vendor_test_o (fuse_ctrl_lc_otp_out_if_agent_bus.lc_otp_vendor_test_o), //(otp_ctrl_if.otp_vendor_test_status_o),
+ .lc_otp_program_i (fuse_ctrl_lc_otp_in_if_agent_bus.lc_otp_program_i), //({lc_prog_if.req, lc_prog_if.h_data}),
+ .lc_otp_program_o (fuse_ctrl_lc_otp_out_if_agent_bus.lc_otp_program_o), //({lc_prog_if.d_data, lc_prog_if.ack}),
+ //.lc_creator_seed_sw_rw_en_i (lc_creator_seed_sw_rw_en_i), //(otp_ctrl_if.lc_creator_seed_sw_rw_en_i),
+ //.lc_owner_seed_sw_rw_en_i (lc_owner_seed_sw_rw_en_i), //(otp_ctrl_if.lc_owner_seed_sw_rw_en_i),
+ //.lc_seed_hw_rd_en_i (lc_seed_hw_rd_en_i), //(otp_ctrl_if.lc_seed_hw_rd_en_i),
+ .lc_dft_en_i (fuse_ctrl_lc_otp_in_if_agent_bus.lc_dft_en_i), //(otp_ctrl_if.lc_dft_en_i),
+ .lc_escalate_en_i (fuse_ctrl_lc_otp_in_if_agent_bus.lc_escalate_en_i), //(otp_ctrl_if.lc_escalate_en_i),
+ .lc_check_byp_en_i (fuse_ctrl_lc_otp_in_if_agent_bus.lc_check_byp_en_i), //(otp_ctrl_if.lc_check_byp_en_i),
+ .otp_lc_data_o (fuse_ctrl_lc_otp_out_if_agent_bus.otp_lc_data_o), //(otp_ctrl_if.lc_data_o),
+
+
+ .otp_broadcast_o (fuse_ctrl_out_if_agent_bus.otp_broadcast_o), //(otp_ctrl_if.otp_broadcast_o),
+ .otp_ext_voltage_h_io (fuse_ctrl_rst_in_agent_bus.otp_ext_voltage_h_io),
+ //scan
+ .scan_en_i (fuse_ctrl_in_if_agent_bus.scan_en_i), //(otp_ctrl_if.scan_en_i),
+ .scan_rst_ni (fuse_ctrl_in_if_agent_bus.scan_rst_ni), //(otp_ctrl_if.scan_rst_ni),
+ .scanmode_i (fuse_ctrl_in_if_agent_bus.scanmode_i), //(otp_ctrl_if.scanmode_i),
+
+ // Test-related GPIO output
+ .cio_test_o (fuse_ctrl_out_if_agent_bus.cio_test_o), //(otp_ctrl_if.cio_test_o),
+ .cio_test_en_o (fuse_ctrl_out_if_agent_bus.cio_test_en_o) //(otp_ctrl_if.cio_test_en_o)
+ );
+
+ // AXI Core Interface
+ axi_if #(
+ .AW (AXI_AW),
+ .DW (AXI_DW),
+ .IW (AXI_IW),
+ .UW (AXI_UW)
+ ) axi_core_if (
+ .clk (fuse_ctrl_rst_in_agent_bus.clk_i ),
+ .rst_n (fuse_ctrl_rst_in_agent_bus.rst_ni )
+ );
+
+ // AXI Prim Interface
+ axi_if #(
+ .AW (AXI_AW),
+ .DW (AXI_DW),
+ .IW (AXI_IW),
+ .UW (AXI_UW)
+ ) axi_prim_if (
+ .clk (fuse_ctrl_rst_in_agent_bus.clk_i ),
+ .rst_n (fuse_ctrl_rst_in_agent_bus.rst_ni)
+ );
+
+ // AXI Secret Reg Interface
+ axi_if #(
+ .AW (AXI_AW),
+ .DW (AXI_DW),
+ .IW (AXI_IW),
+ .UW (AXI_UW)
+ ) axi_secreg_if (
+ .clk (fuse_ctrl_rst_in_agent_bus.clk_i ),
+ .rst_n (fuse_ctrl_rst_in_agent_bus.rst_ni)
+ );
+
+ // Core AXI IF
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awaddr = axi_core_if.awaddr;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awburst = axi_core_if.awburst;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awsize = axi_core_if.awsize;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awlen = axi_core_if.awlen;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awuser = axi_core_if.awuser;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awid = axi_core_if.awid;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awlock = axi_core_if.awlock;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.awvalid = axi_core_if.awvalid;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.wdata = axi_core_if.wdata;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.wstrb = axi_core_if.wstrb;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.wlast = axi_core_if.wlast;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.wvalid = axi_core_if.wvalid;
+ assign fuse_ctrl_core_axi_write_in_if_agent_bus.bready = axi_core_if.bready;
+
+ assign fuse_ctrl_core_axi_write_out_if_agent_bus.awready = axi_core_if.awready;
+ assign fuse_ctrl_core_axi_write_out_if_agent_bus.wready = axi_core_if.wready;
+ assign fuse_ctrl_core_axi_write_out_if_agent_bus.bresp = axi_core_if.bresp;
+ assign fuse_ctrl_core_axi_write_out_if_agent_bus.bvalid = axi_core_if.bvalid;
+ assign fuse_ctrl_core_axi_write_out_if_agent_bus.bid = axi_core_if.bid;
+
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.araddr = axi_core_if.araddr;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arburst = axi_core_if.arburst;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arsize = axi_core_if.arsize;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arlen = axi_core_if.arlen;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.aruser = axi_core_if.aruser;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arid = axi_core_if.arid;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arlock = axi_core_if.arlock;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.arvalid = axi_core_if.arvalid;
+ assign fuse_ctrl_core_axi_read_in_if_agent_bus.rready = axi_core_if.rready;
+
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.arready = axi_core_if.arready;
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.rdata = axi_core_if.rdata;
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.rresp = axi_core_if.rresp;
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.rid = axi_core_if.rid;
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.rvalid = axi_core_if.rvalid;
+ assign fuse_ctrl_core_axi_read_out_if_agent_bus.rlast = axi_core_if.rlast;
+
+ // Prim AXI IF
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awaddr = axi_prim_if.awaddr;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awburst = axi_prim_if.awburst;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awsize = axi_prim_if.awsize;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awlen = axi_prim_if.awlen;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awuser = axi_prim_if.awuser;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awid = axi_prim_if.awid;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awlock = axi_prim_if.awlock;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.awvalid = axi_prim_if.awvalid;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.wdata = axi_prim_if.wdata;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.wstrb = axi_prim_if.wstrb;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.wlast = axi_prim_if.wlast;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.wvalid = axi_prim_if.wvalid;
+ assign fuse_ctrl_prim_axi_write_in_if_agent_bus.bready = axi_prim_if.bready;
+ assign fuse_ctrl_prim_axi_write_out_if_agent_bus.awready = axi_prim_if.awready;
+ assign fuse_ctrl_prim_axi_write_out_if_agent_bus.wready = axi_prim_if.wready;
+ assign fuse_ctrl_prim_axi_write_out_if_agent_bus.bresp = axi_prim_if.bresp;
+ assign fuse_ctrl_prim_axi_write_out_if_agent_bus.bvalid = axi_prim_if.bvalid;
+ assign fuse_ctrl_prim_axi_write_out_if_agent_bus.bid = axi_prim_if.bid;
+
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.araddr = axi_prim_if.araddr;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arburst = axi_prim_if.arburst;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arsize = axi_prim_if.arsize;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arlen = axi_prim_if.arlen;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.aruser = axi_prim_if.aruser;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arid = axi_prim_if.arid;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arlock = axi_prim_if.arlock;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.arvalid = axi_prim_if.arvalid;
+ assign fuse_ctrl_prim_axi_read_in_if_agent_bus.rready = axi_prim_if.rready;
+
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.arready = axi_prim_if.arready;
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.rdata = axi_prim_if.rdata;
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.rresp = axi_prim_if.rresp;
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.rid = axi_prim_if.rid;
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.rvalid = axi_prim_if.rvalid;
+ assign fuse_ctrl_prim_axi_read_out_if_agent_bus.rlast = axi_prim_if.rlast;
+
+ // Secreg AXI IF
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.araddr = axi_secreg_if.araddr;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arburst = axi_secreg_if.arburst;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arsize = axi_secreg_if.arsize;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arlen = axi_secreg_if.arlen;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.aruser = axi_secreg_if.aruser;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arid = axi_secreg_if.arid;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arlock = axi_secreg_if.arlock;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.arvalid = axi_secreg_if.arvalid;
+ assign fuse_ctrl_secreg_axi_read_in_if_agent_bus.rready = axi_secreg_if.rready;
+
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.arready = axi_secreg_if.arready;
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.rdata = axi_secreg_if.rdata;
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.rresp = axi_secreg_if.rresp;
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.rid = axi_secreg_if.rid;
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.rvalid = axi_secreg_if.rvalid;
+ assign fuse_ctrl_secreg_axi_read_out_if_agent_bus.rlast = axi_secreg_if.rlast;
+ // pragma uvmf custom dut_instantiation end
+
+ initial begin // tbx vif_binding_block
+ import uvm_pkg::uvm_config_db;
+ // The monitor_bfm and driver_bfm for each interface is placed into the uvm_config_db.
+ // They are placed into the uvm_config_db using the string names defined in the parameters package.
+ // The string names are passed to the agent configurations by test_top through the top level configuration.
+ // They are retrieved by the agents configuration class for use by the agent.
+ uvm_config_db #( virtual fuse_ctrl_rst_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_rst_in_agent_BFM , fuse_ctrl_rst_in_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_rst_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_rst_out_agent_BFM , fuse_ctrl_rst_out_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_write_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_write_in_if_agent_BFM , fuse_ctrl_core_axi_write_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_write_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_write_out_if_agent_BFM , fuse_ctrl_core_axi_write_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_write_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_write_in_if_agent_BFM , fuse_ctrl_prim_axi_write_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_write_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_write_out_if_agent_BFM , fuse_ctrl_prim_axi_write_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_read_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_read_in_if_agent_BFM , fuse_ctrl_core_axi_read_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_read_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_read_out_if_agent_BFM , fuse_ctrl_core_axi_read_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_read_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_read_in_if_agent_BFM , fuse_ctrl_prim_axi_read_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_read_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_read_out_if_agent_BFM , fuse_ctrl_prim_axi_read_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_secreg_axi_read_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_secreg_axi_read_in_if_agent_BFM , fuse_ctrl_secreg_axi_read_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_secreg_axi_read_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_secreg_axi_read_out_if_agent_BFM , fuse_ctrl_secreg_axi_read_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_lc_otp_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_lc_otp_in_if_agent_BFM , fuse_ctrl_lc_otp_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_lc_otp_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_lc_otp_out_if_agent_BFM , fuse_ctrl_lc_otp_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_in_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_in_if_agent_BFM , fuse_ctrl_in_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_out_monitor_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_out_if_agent_BFM , fuse_ctrl_out_if_agent_mon_bfm );
+ uvm_config_db #( virtual fuse_ctrl_rst_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_rst_in_agent_BFM , fuse_ctrl_rst_in_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_write_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_write_in_if_agent_BFM , fuse_ctrl_core_axi_write_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_write_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_write_in_if_agent_BFM , fuse_ctrl_prim_axi_write_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_core_axi_read_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_core_axi_read_in_if_agent_BFM , fuse_ctrl_core_axi_read_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_prim_axi_read_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_prim_axi_read_in_if_agent_BFM , fuse_ctrl_prim_axi_read_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_secreg_axi_read_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_secreg_axi_read_in_if_agent_BFM , fuse_ctrl_secreg_axi_read_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_lc_otp_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_lc_otp_in_if_agent_BFM , fuse_ctrl_lc_otp_in_if_agent_drv_bfm );
+ uvm_config_db #( virtual fuse_ctrl_in_driver_bfm )::set( null , UVMF_VIRTUAL_INTERFACES , fuse_ctrl_in_if_agent_BFM , fuse_ctrl_in_if_agent_drv_bfm );
+ end
+
+endmodule
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.vinfo
new file mode 100644
index 0000000..b39169a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hdl_top.vinfo
@@ -0,0 +1,20 @@
+@use $UVMF_PROJECT_DIR/rtl/verilog/verilog_dut.vinfo
+@use $UVMF_PROJECT_DIR/tb/parameters/fuse_ctrl_parameters_pkg.vinfo
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_bfm.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_bfm.vinfo
+hdl_top.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.compile
new file mode 100644
index 0000000..0404887
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.compile
@@ -0,0 +1,7 @@
+incdir:
+ - ${uvm_path}/src
+ - .
+needs:
+ - ../tests/fuse_ctrl_tests_pkg.compile
+src:
+ - hvl_top.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.sv
new file mode 100644
index 0000000..68e3fc6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.sv
@@ -0,0 +1,47 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This module loads the test package and starts the UVM phases.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+module hvl_top;
+
+import uvm_pkg::*;
+import fuse_ctrl_tests_pkg::*;
+
+ // pragma uvmf custom module_item_additional begin
+ // pragma uvmf custom module_item_additional end
+
+ initial begin
+ $timeformat(-9,3,"ns",5);
+ run_test();
+ end
+
+endmodule
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.vinfo
new file mode 100644
index 0000000..31185e4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/hvl_top.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_PROJECT_DIR/tb/tests/fuse_ctrl_tests_pkg.vinfo
+hvl_top.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hdl.f
new file mode 100644
index 0000000..1e9dab6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hdl.f
@@ -0,0 +1,3 @@
+$UVMF_PROJECT_DIR/tb/testbench/hdl_top.sv
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hvl.f
new file mode 100644
index 0000000..42383ab
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/testbench/top_filelist_hvl.f
@@ -0,0 +1,3 @@
+$UVMF_PROJECT_DIR/tb/testbench/hvl_top.sv
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.compile
new file mode 100644
index 0000000..c755851
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.compile
@@ -0,0 +1,23 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in.compile
+ - ../../../../verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out.compile
+ - ../../../../verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.compile
+ - ../parameters/fuse_ctrl_parameters_pkg.compile
+ - ../sequences/fuse_ctrl_sequences_pkg.compile
+src:
+ - fuse_ctrl_tests_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.sv
new file mode 100644
index 0000000..05f83c5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.sv
@@ -0,0 +1,96 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This package contains all tests currently written for
+// the simulation project. Once compiled, any test can be selected
+// from the vsim command line using +UVM_TESTNAME=yourTestNameHere
+//
+// CONTAINS:
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+package fuse_ctrl_tests_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_parameters_pkg::*;
+ import fuse_ctrl_env_pkg::*;
+ import fuse_ctrl_sequences_pkg::*;
+ import fuse_ctrl_rst_in_pkg::*;
+ import fuse_ctrl_rst_in_pkg_hdl::*;
+ import fuse_ctrl_rst_out_pkg::*;
+ import fuse_ctrl_rst_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_in_pkg::*;
+ import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_out_pkg::*;
+ import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_in_pkg::*;
+ import fuse_ctrl_prim_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_out_pkg::*;
+ import fuse_ctrl_prim_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_in_pkg::*;
+ import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_out_pkg::*;
+ import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_in_pkg::*;
+ import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_out_pkg::*;
+ import fuse_ctrl_prim_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_in_pkg::*;
+ import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_out_pkg::*;
+ import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+ import fuse_ctrl_in_pkg::*;
+ import fuse_ctrl_in_pkg_hdl::*;
+ import fuse_ctrl_out_pkg::*;
+ import fuse_ctrl_out_pkg_hdl::*;
+
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ `include "src/test_top.svh"
+ `include "src/register_test.svh"
+ `include "src/example_derived_test.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new tests to the src directory
+ // be sure to add the test file here so that it will be
+ // compiled as part of the test package. Be sure to place
+ // the new test after any base tests of the new test.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.vinfo
new file mode 100644
index 0000000..651052b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/fuse_ctrl_tests_pkg.vinfo
@@ -0,0 +1,22 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.vinfo
+@use $UVMF_PROJECT_DIR/tb/parameters/fuse_ctrl_parameters_pkg.vinfo
+@use $UVMF_PROJECT_DIR/tb/sequences/fuse_ctrl_sequences_pkg.vinfo
++incdir+@vinfodir
+fuse_ctrl_tests_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/example_derived_test.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/example_derived_test.svh
new file mode 100644
index 0000000..82d6c45
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/example_derived_test.svh
@@ -0,0 +1,57 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This test extends test_top and makes
+// changes to test_top using the UVM factory type_override:
+//
+// Test scenario:
+// This is a template test that can be used to create future tests.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class example_derived_test extends test_top;
+
+ `uvm_component_utils( example_derived_test );
+
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+ virtual function void build_phase(uvm_phase phase);
+ // The factory override below is an example of how to replace the fuse_ctrl_bench_sequence_base
+ // sequence with the example_derived_test_sequence.
+ fuse_ctrl_bench_sequence_base::type_id::set_type_override(example_derived_test_sequence::get_type());
+ // Execute the build_phase of test_top AFTER all factory overrides have been created.
+ super.build_phase(phase);
+ // pragma uvmf custom configuration_settings_post_randomize begin
+ // UVMF_CHANGE_ME Test specific configuration values can be set here.
+ // The configuration structure has already been randomized.
+ // pragma uvmf custom configuration_settings_post_randomize end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/register_test.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/register_test.svh
new file mode 100644
index 0000000..1be7222
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/register_test.svh
@@ -0,0 +1,54 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This test extends test_top and makes
+// changes to test_top using the UVM factory type_override:
+//
+// Test scenario:
+// This is a template test that can be used to create future tests.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class register_test extends test_top;
+
+ `uvm_component_utils( register_test );
+
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+ virtual function void build_phase(uvm_phase phase);
+ // The factory override below replaces the fuse_ctrl_bench_sequence_base
+ // sequence with the register_test_sequence.
+ fuse_ctrl_bench_sequence_base::type_id::set_type_override(register_test_sequence::get_type());
+ // Execute the build_phase of test_top AFTER all factory overrides have been created.
+ super.build_phase(phase);
+ endfunction
+
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/test_top.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/test_top.svh
new file mode 100644
index 0000000..f5b1c3c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/tb/tests/src/test_top.svh
@@ -0,0 +1,120 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+// Description: This top level UVM test is the base class for all
+// future tests created for this project.
+//
+// This test class contains:
+// Configuration: The top level configuration for the project.
+// Environment: The top level environment for the project.
+// Top_level_sequence: The top level sequence for the project.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+typedef fuse_ctrl_env_configuration fuse_ctrl_env_configuration_t;
+typedef fuse_ctrl_environment fuse_ctrl_environment_t;
+
+class test_top extends uvmf_test_base #(.CONFIG_T(fuse_ctrl_env_configuration_t),
+ .ENV_T(fuse_ctrl_environment_t),
+ .TOP_LEVEL_SEQ_T(fuse_ctrl_bench_sequence_base));
+
+ `uvm_component_utils( test_top );
+
+
+
+ string interface_names[] = {
+ fuse_ctrl_rst_in_agent_BFM /* fuse_ctrl_rst_in_agent [0] */ ,
+ fuse_ctrl_rst_out_agent_BFM /* fuse_ctrl_rst_out_agent [1] */ ,
+ fuse_ctrl_core_axi_write_in_if_agent_BFM /* fuse_ctrl_core_axi_write_in_if_agent [2] */ ,
+ fuse_ctrl_core_axi_write_out_if_agent_BFM /* fuse_ctrl_core_axi_write_out_if_agent [3] */ ,
+ fuse_ctrl_prim_axi_write_in_if_agent_BFM /* fuse_ctrl_prim_axi_write_in_if_agent [4] */ ,
+ fuse_ctrl_prim_axi_write_out_if_agent_BFM /* fuse_ctrl_prim_axi_write_out_if_agent [5] */ ,
+ fuse_ctrl_core_axi_read_in_if_agent_BFM /* fuse_ctrl_core_axi_read_in_if_agent [6] */ ,
+ fuse_ctrl_core_axi_read_out_if_agent_BFM /* fuse_ctrl_core_axi_read_out_if_agent [7] */ ,
+ fuse_ctrl_prim_axi_read_in_if_agent_BFM /* fuse_ctrl_prim_axi_read_in_if_agent [8] */ ,
+ fuse_ctrl_prim_axi_read_out_if_agent_BFM /* fuse_ctrl_prim_axi_read_out_if_agent [9] */ ,
+ fuse_ctrl_secreg_axi_read_in_if_agent_BFM /* fuse_ctrl_secreg_axi_read_in_if_agent [10] */ ,
+ fuse_ctrl_secreg_axi_read_out_if_agent_BFM /* fuse_ctrl_secreg_axi_read_out_if_agent [11] */ ,
+ fuse_ctrl_lc_otp_in_if_agent_BFM /* fuse_ctrl_lc_otp_in_if_agent [12] */ ,
+ fuse_ctrl_lc_otp_out_if_agent_BFM /* fuse_ctrl_lc_otp_out_if_agent [13] */ ,
+ fuse_ctrl_in_if_agent_BFM /* fuse_ctrl_in_if_agent [14] */ ,
+ fuse_ctrl_out_if_agent_BFM /* fuse_ctrl_out_if_agent [15] */
+};
+
+uvmf_active_passive_t interface_activities[] = {
+ ACTIVE /* fuse_ctrl_rst_in_agent [0] */ ,
+ PASSIVE /* fuse_ctrl_rst_out_agent [1] */ ,
+ ACTIVE /* fuse_ctrl_core_axi_write_in_if_agent [2] */ ,
+ PASSIVE /* fuse_ctrl_core_axi_write_out_if_agent [3] */ ,
+ ACTIVE /* fuse_ctrl_prim_axi_write_in_if_agent [4] */ ,
+ PASSIVE /* fuse_ctrl_prim_axi_write_out_if_agent [5] */ ,
+ ACTIVE /* fuse_ctrl_core_axi_read_in_if_agent [6] */ ,
+ PASSIVE /* fuse_ctrl_core_axi_read_out_if_agent [7] */ ,
+ ACTIVE /* fuse_ctrl_prim_axi_read_in_if_agent [8] */ ,
+ PASSIVE /* fuse_ctrl_prim_axi_read_out_if_agent [9] */ ,
+ ACTIVE /* fuse_ctrl_secreg_axi_read_in_if_agent [10] */ ,
+ PASSIVE /* fuse_ctrl_secreg_axi_read_out_if_agent [11] */ ,
+ ACTIVE /* fuse_ctrl_lc_otp_in_if_agent [12] */ ,
+ PASSIVE /* fuse_ctrl_lc_otp_out_if_agent [13] */ ,
+ ACTIVE /* fuse_ctrl_in_if_agent [14] */ ,
+ PASSIVE /* fuse_ctrl_out_if_agent [15] */ };
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // FUNCTION: new()
+ // This is the standard systemVerilog constructor. All components are
+ // constructed in the build_phase to allow factory overriding.
+ //
+ function new( string name = "", uvm_component parent = null );
+ super.new( name ,parent );
+ endfunction
+
+
+
+ // ****************************************************************************
+ // FUNCTION: build_phase()
+ // The construction of the configuration and environment classes is done in
+ // the build_phase of uvmf_test_base. Once the configuraton and environment
+ // classes are built then the initialize call is made to perform the
+ // following:
+ // Monitor and driver BFM virtual interface handle passing into agents
+ // Set the active/passive state for each agent
+ // Once this build_phase completes, the build_phase of the environment is
+ // executed which builds the agents.
+ //
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ // pragma uvmf custom configuration_settings_post_randomize begin
+ // pragma uvmf custom configuration_settings_post_randomize end
+ configuration.initialize(NA, "uvm_test_top.environment", interface_names, null, interface_activities);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/yaml/fuse_ctrl_bench.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/yaml/fuse_ctrl_bench.yaml
new file mode 100644
index 0000000..24489d9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/project_benches/fuse_ctrl/yaml/fuse_ctrl_bench.yaml
@@ -0,0 +1,45 @@
+uvmf:
+ benches:
+ fuse_ctrl:
+ active_passive:
+ - bfm_name: fuse_ctrl_rst_in_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_rst_out_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_core_axi_write_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_core_axi_write_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_prim_axi_write_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_prim_axi_write_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_core_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_core_axi_read_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_prim_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_prim_axi_read_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_secreg_axi_read_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_secreg_axi_read_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_lc_otp_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_lc_otp_out_if_agent
+ value: PASSIVE
+ - bfm_name: fuse_ctrl_in_if_agent
+ value: ACTIVE
+ - bfm_name: fuse_ctrl_out_if_agent
+ value: PASSIVE
+ active_passive_default: ACTIVE
+ clock_half_period: 5ns
+ clock_phase_offset: 0ns
+ existing_library_component: 'True'
+ interface_params: []
+ reset_assertion_level: 'False'
+ reset_duration: 200ns
+ top_env: fuse_ctrl
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.project
new file mode 100644
index 0000000..ec64afa
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.project
@@ -0,0 +1,32 @@
+
+
+ fuse_ctrl_env_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.svproject
new file mode 100644
index 0000000..bcfe6ac
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/Makefile
new file mode 100644
index 0000000..4cf61d5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/Makefile
@@ -0,0 +1,56 @@
+# fuse_ctrl environment packages source and make target
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+# Include all requisite sub-environment package targets for this bench
+
+fuse_ctrl_ENV_PKG =\
+ $(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv
+
+COMP_fuse_ctrl_PKG_TGT_0 = q_comp_fuse_ctrl_env_pkg
+COMP_fuse_ctrl_PKG_TGT_1 = v_comp_fuse_ctrl_env_pkg
+COMP_fuse_ctrl_PKG_TGT = $(COMP_fuse_ctrl_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_env_pkg: $(COMP_fuse_ctrl_PKG_TGT)
+
+q_comp_fuse_ctrl_env_pkg:
+ $(HVL_COMP_CMD) +incdir+$(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg $(fuse_ctrl_ENV_PKG)
+
+v_comp_fuse_ctrl_env_pkg: q_comp_fuse_ctrl_env_pkg
+ $(VELANALYZE_HVL_CMD) +incdir+$(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg $(fuse_ctrl_ENV_PKG)
+
+
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_ENV_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/environment_packages/fuse_ctrl_env_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_env_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_env_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_env_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_env_pkg += -I$(fuse_ctrl_ENV_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_env_pkg += $(fuse_ctrl_ENV_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_env_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_env_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Environment C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_env_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_env_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Environment C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_env_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_env_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/compile.do
new file mode 100644
index 0000000..05dca66
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/compile.do
@@ -0,0 +1,12 @@
+# Tcl do file for compile of fuse_ctrl interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+
+quietly set cmd [format "vlog -timescale 1ps/1ps +incdir+%s/environment_packages/fuse_ctrl_env_pkg" $env(UVMF_VIP_LIBRARY_HOME)]
+quietly set cmd [format "%s %s/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv" $cmd $env(UVMF_VIP_LIBRARY_HOME)]
+eval $cmd
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.compile
new file mode 100644
index 0000000..7bd08d6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.compile
@@ -0,0 +1,22 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hvl.compile
+ - ../../../verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hvl.compile
+
+src:
+ - fuse_ctrl_env_pkg.sv
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv
new file mode 100644
index 0000000..a58a3ce
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.sv
@@ -0,0 +1,106 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// environment package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_env_pkg;
+
+ import uvm_pkg::*;
+ `include "uvm_macros.svh"
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_rst_in_pkg::*;
+ import fuse_ctrl_rst_in_pkg_hdl::*;
+ import fuse_ctrl_rst_out_pkg::*;
+ import fuse_ctrl_rst_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_in_pkg::*;
+ import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_write_out_pkg::*;
+ import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_in_pkg::*;
+ import fuse_ctrl_prim_axi_write_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_write_out_pkg::*;
+ import fuse_ctrl_prim_axi_write_out_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_in_pkg::*;
+ import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_core_axi_read_out_pkg::*;
+ import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_in_pkg::*;
+ import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_prim_axi_read_out_pkg::*;
+ import fuse_ctrl_prim_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg::*;
+ import fuse_ctrl_secreg_axi_read_in_pkg_hdl::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg::*;
+ import fuse_ctrl_secreg_axi_read_out_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_in_pkg::*;
+ import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+ import fuse_ctrl_lc_otp_out_pkg::*;
+ import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+ import fuse_ctrl_in_pkg::*;
+ import fuse_ctrl_in_pkg_hdl::*;
+ import fuse_ctrl_out_pkg::*;
+ import fuse_ctrl_out_pkg_hdl::*;
+
+ `uvm_analysis_imp_decl(_fuse_ctrl_lc_otp_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_rst_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_core_axi_write_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_secreg_axi_read_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_prim_axi_write_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_core_axi_read_in_agent_ae)
+ `uvm_analysis_imp_decl(_fuse_ctrl_prim_axi_read_in_agent_ae)
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_env_typedefs.svh"
+ `include "src/fuse_ctrl_env_configuration.svh"
+ `include "src/fuse_ctrl_predictor.svh"
+ `include "src/fuse_ctrl_scoreboard.svh"
+ `include "src/fuse_ctrl_environment.svh"
+ `include "src/fuse_ctrl_env_sequence_base.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new environment level sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the environment package. Be sure to place
+ // the new sequence after any base sequence of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.vinfo
new file mode 100644
index 0000000..f4f985f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg.vinfo
@@ -0,0 +1,19 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_in_pkg/fuse_ctrl_rst_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_rst_out_pkg/fuse_ctrl_rst_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_in_pkg/fuse_ctrl_prim_axi_write_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_write_out_pkg/fuse_ctrl_prim_axi_write_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_in_pkg/fuse_ctrl_secreg_axi_read_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_secreg_axi_read_out_pkg/fuse_ctrl_secreg_axi_read_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo
+@use $UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo
++incdir+@vinfodir
+fuse_ctrl_env_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg_sve.F
new file mode 100644
index 0000000..b40213d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/fuse_ctrl_env_pkg_sve.F
@@ -0,0 +1,12 @@
+
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
+// Sub-Environments
+
++incdir+.
+./fuse_ctrl_env_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_configuration.svh
new file mode 100644
index 0000000..01b71d1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_configuration.svh
@@ -0,0 +1,270 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: THis is the configuration for the fuse_ctrl environment.
+// it contains configuration classes for each agent. It also contains
+// environment level configuration variables.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_env_configuration
+extends uvmf_environment_configuration_base;
+
+ `uvm_object_utils( fuse_ctrl_env_configuration )
+
+
+//Constraints for the configuration variables:
+
+
+ covergroup fuse_ctrl_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+
+ typedef fuse_ctrl_rst_in_configuration fuse_ctrl_rst_in_agent_config_t;
+ rand fuse_ctrl_rst_in_agent_config_t fuse_ctrl_rst_in_agent_config;
+
+ typedef fuse_ctrl_rst_out_configuration fuse_ctrl_rst_out_agent_config_t;
+ rand fuse_ctrl_rst_out_agent_config_t fuse_ctrl_rst_out_agent_config;
+
+ typedef fuse_ctrl_core_axi_write_in_configuration fuse_ctrl_core_axi_write_in_if_agent_config_t;
+ rand fuse_ctrl_core_axi_write_in_if_agent_config_t fuse_ctrl_core_axi_write_in_if_agent_config;
+
+ typedef fuse_ctrl_core_axi_write_out_configuration fuse_ctrl_core_axi_write_out_if_agent_config_t;
+ rand fuse_ctrl_core_axi_write_out_if_agent_config_t fuse_ctrl_core_axi_write_out_if_agent_config;
+
+ typedef fuse_ctrl_prim_axi_write_in_configuration fuse_ctrl_prim_axi_write_in_if_agent_config_t;
+ rand fuse_ctrl_prim_axi_write_in_if_agent_config_t fuse_ctrl_prim_axi_write_in_if_agent_config;
+
+ typedef fuse_ctrl_prim_axi_write_out_configuration fuse_ctrl_prim_axi_write_out_if_agent_config_t;
+ rand fuse_ctrl_prim_axi_write_out_if_agent_config_t fuse_ctrl_prim_axi_write_out_if_agent_config;
+
+ typedef fuse_ctrl_core_axi_read_in_configuration fuse_ctrl_core_axi_read_in_if_agent_config_t;
+ rand fuse_ctrl_core_axi_read_in_if_agent_config_t fuse_ctrl_core_axi_read_in_if_agent_config;
+
+ typedef fuse_ctrl_core_axi_read_out_configuration fuse_ctrl_core_axi_read_out_if_agent_config_t;
+ rand fuse_ctrl_core_axi_read_out_if_agent_config_t fuse_ctrl_core_axi_read_out_if_agent_config;
+
+ typedef fuse_ctrl_prim_axi_read_in_configuration fuse_ctrl_prim_axi_read_in_if_agent_config_t;
+ rand fuse_ctrl_prim_axi_read_in_if_agent_config_t fuse_ctrl_prim_axi_read_in_if_agent_config;
+
+ typedef fuse_ctrl_prim_axi_read_out_configuration fuse_ctrl_prim_axi_read_out_if_agent_config_t;
+ rand fuse_ctrl_prim_axi_read_out_if_agent_config_t fuse_ctrl_prim_axi_read_out_if_agent_config;
+
+ typedef fuse_ctrl_secreg_axi_read_in_configuration fuse_ctrl_secreg_axi_read_in_if_agent_config_t;
+ rand fuse_ctrl_secreg_axi_read_in_if_agent_config_t fuse_ctrl_secreg_axi_read_in_if_agent_config;
+
+ typedef fuse_ctrl_secreg_axi_read_out_configuration fuse_ctrl_secreg_axi_read_out_if_agent_config_t;
+ rand fuse_ctrl_secreg_axi_read_out_if_agent_config_t fuse_ctrl_secreg_axi_read_out_if_agent_config;
+
+ typedef fuse_ctrl_lc_otp_in_configuration fuse_ctrl_lc_otp_in_if_agent_config_t;
+ rand fuse_ctrl_lc_otp_in_if_agent_config_t fuse_ctrl_lc_otp_in_if_agent_config;
+
+ typedef fuse_ctrl_lc_otp_out_configuration fuse_ctrl_lc_otp_out_if_agent_config_t;
+ rand fuse_ctrl_lc_otp_out_if_agent_config_t fuse_ctrl_lc_otp_out_if_agent_config;
+
+ typedef fuse_ctrl_in_configuration fuse_ctrl_in_if_agent_config_t;
+ rand fuse_ctrl_in_if_agent_config_t fuse_ctrl_in_if_agent_config;
+
+ typedef fuse_ctrl_out_configuration fuse_ctrl_out_if_agent_config_t;
+ rand fuse_ctrl_out_if_agent_config_t fuse_ctrl_out_if_agent_config;
+
+
+
+
+ typedef uvmf_virtual_sequencer_base #(.CONFIG_T(fuse_ctrl_env_configuration)) fuse_ctrl_vsqr_t;
+ fuse_ctrl_vsqr_t vsqr;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+// This function constructs the configuration object for each agent in the environment.
+//
+ function new( string name = "" );
+ super.new( name );
+
+
+ fuse_ctrl_rst_in_agent_config = fuse_ctrl_rst_in_agent_config_t::type_id::create("fuse_ctrl_rst_in_agent_config");
+ fuse_ctrl_rst_out_agent_config = fuse_ctrl_rst_out_agent_config_t::type_id::create("fuse_ctrl_rst_out_agent_config");
+ fuse_ctrl_core_axi_write_in_if_agent_config = fuse_ctrl_core_axi_write_in_if_agent_config_t::type_id::create("fuse_ctrl_core_axi_write_in_if_agent_config");
+ fuse_ctrl_core_axi_write_out_if_agent_config = fuse_ctrl_core_axi_write_out_if_agent_config_t::type_id::create("fuse_ctrl_core_axi_write_out_if_agent_config");
+ fuse_ctrl_prim_axi_write_in_if_agent_config = fuse_ctrl_prim_axi_write_in_if_agent_config_t::type_id::create("fuse_ctrl_prim_axi_write_in_if_agent_config");
+ fuse_ctrl_prim_axi_write_out_if_agent_config = fuse_ctrl_prim_axi_write_out_if_agent_config_t::type_id::create("fuse_ctrl_prim_axi_write_out_if_agent_config");
+ fuse_ctrl_core_axi_read_in_if_agent_config = fuse_ctrl_core_axi_read_in_if_agent_config_t::type_id::create("fuse_ctrl_core_axi_read_in_if_agent_config");
+ fuse_ctrl_core_axi_read_out_if_agent_config = fuse_ctrl_core_axi_read_out_if_agent_config_t::type_id::create("fuse_ctrl_core_axi_read_out_if_agent_config");
+ fuse_ctrl_prim_axi_read_in_if_agent_config = fuse_ctrl_prim_axi_read_in_if_agent_config_t::type_id::create("fuse_ctrl_prim_axi_read_in_if_agent_config");
+ fuse_ctrl_prim_axi_read_out_if_agent_config = fuse_ctrl_prim_axi_read_out_if_agent_config_t::type_id::create("fuse_ctrl_prim_axi_read_out_if_agent_config");
+ fuse_ctrl_secreg_axi_read_in_if_agent_config = fuse_ctrl_secreg_axi_read_in_if_agent_config_t::type_id::create("fuse_ctrl_secreg_axi_read_in_if_agent_config");
+ fuse_ctrl_secreg_axi_read_out_if_agent_config = fuse_ctrl_secreg_axi_read_out_if_agent_config_t::type_id::create("fuse_ctrl_secreg_axi_read_out_if_agent_config");
+ fuse_ctrl_lc_otp_in_if_agent_config = fuse_ctrl_lc_otp_in_if_agent_config_t::type_id::create("fuse_ctrl_lc_otp_in_if_agent_config");
+ fuse_ctrl_lc_otp_out_if_agent_config = fuse_ctrl_lc_otp_out_if_agent_config_t::type_id::create("fuse_ctrl_lc_otp_out_if_agent_config");
+ fuse_ctrl_in_if_agent_config = fuse_ctrl_in_if_agent_config_t::type_id::create("fuse_ctrl_in_if_agent_config");
+ fuse_ctrl_out_if_agent_config = fuse_ctrl_out_if_agent_config_t::type_id::create("fuse_ctrl_out_if_agent_config");
+
+
+ fuse_ctrl_configuration_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that configuration variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+
+ // pragma uvmf custom new begin
+ // pragma uvmf custom new end
+ endfunction
+
+// ****************************************************************************
+// FUNCTION : set_vsqr()
+// This function is used to assign the vsqr handle.
+ virtual function void set_vsqr( fuse_ctrl_vsqr_t vsqr);
+ this.vsqr = vsqr;
+ endfunction : set_vsqr
+
+// ****************************************************************************
+// FUNCTION: post_randomize()
+// This function is automatically called after the randomize() function
+// is executed.
+//
+ function void post_randomize();
+ super.post_randomize();
+ // pragma uvmf custom post_randomize begin
+ // pragma uvmf custom post_randomize end
+ endfunction
+
+// ****************************************************************************
+// FUNCTION: convert2string()
+// This function converts all variables in this class to a single string for
+// logfile reporting. This function concatenates the convert2string result for
+// each agent configuration in this configuration class.
+//
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ return {
+
+ "\n", fuse_ctrl_rst_in_agent_config.convert2string,
+ "\n", fuse_ctrl_rst_out_agent_config.convert2string,
+ "\n", fuse_ctrl_core_axi_write_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_core_axi_write_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_prim_axi_write_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_prim_axi_write_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_core_axi_read_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_core_axi_read_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_prim_axi_read_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_prim_axi_read_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_secreg_axi_read_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_secreg_axi_read_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_lc_otp_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_lc_otp_out_if_agent_config.convert2string,
+ "\n", fuse_ctrl_in_if_agent_config.convert2string,
+ "\n", fuse_ctrl_out_if_agent_config.convert2string
+
+
+ };
+ // pragma uvmf custom convert2string end
+ endfunction
+// ****************************************************************************
+// FUNCTION: initialize();
+// This function configures each interface agents configuration class. The
+// sim level determines the active/passive state of the agent. The environment_path
+// identifies the hierarchy down to and including the instantiation name of the
+// environment for this configuration class. Each instance of the environment
+// has its own configuration class. The string interface names are used by
+// the agent configurations to identify the virtual interface handle to pull from
+// the uvm_config_db.
+//
+ function void initialize(uvmf_sim_level_t sim_level,
+ string environment_path,
+ string interface_names[],
+ uvm_reg_block register_model = null,
+ uvmf_active_passive_t interface_activity[] = {}
+ );
+
+ super.initialize(sim_level, environment_path, interface_names, register_model, interface_activity);
+
+
+
+ // Interface initialization for local agents
+ fuse_ctrl_rst_in_agent_config.initialize( interface_activity[0], {environment_path,".fuse_ctrl_rst_in_agent"}, interface_names[0]);
+ fuse_ctrl_rst_in_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_rst_in_agent_config.has_coverage = 1;
+ fuse_ctrl_rst_out_agent_config.initialize( interface_activity[1], {environment_path,".fuse_ctrl_rst_out_agent"}, interface_names[1]);
+ fuse_ctrl_rst_out_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_rst_out_agent_config.has_coverage = 1;
+ fuse_ctrl_core_axi_write_in_if_agent_config.initialize( interface_activity[2], {environment_path,".fuse_ctrl_core_axi_write_in_if_agent"}, interface_names[2]);
+ fuse_ctrl_core_axi_write_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_core_axi_write_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_core_axi_write_out_if_agent_config.initialize( interface_activity[3], {environment_path,".fuse_ctrl_core_axi_write_out_if_agent"}, interface_names[3]);
+ fuse_ctrl_core_axi_write_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_core_axi_write_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_prim_axi_write_in_if_agent_config.initialize( interface_activity[4], {environment_path,".fuse_ctrl_prim_axi_write_in_if_agent"}, interface_names[4]);
+ fuse_ctrl_prim_axi_write_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_prim_axi_write_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_prim_axi_write_out_if_agent_config.initialize( interface_activity[5], {environment_path,".fuse_ctrl_prim_axi_write_out_if_agent"}, interface_names[5]);
+ fuse_ctrl_prim_axi_write_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_prim_axi_write_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_core_axi_read_in_if_agent_config.initialize( interface_activity[6], {environment_path,".fuse_ctrl_core_axi_read_in_if_agent"}, interface_names[6]);
+ fuse_ctrl_core_axi_read_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_core_axi_read_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_core_axi_read_out_if_agent_config.initialize( interface_activity[7], {environment_path,".fuse_ctrl_core_axi_read_out_if_agent"}, interface_names[7]);
+ fuse_ctrl_core_axi_read_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_core_axi_read_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_prim_axi_read_in_if_agent_config.initialize( interface_activity[8], {environment_path,".fuse_ctrl_prim_axi_read_in_if_agent"}, interface_names[8]);
+ fuse_ctrl_prim_axi_read_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_prim_axi_read_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_prim_axi_read_out_if_agent_config.initialize( interface_activity[9], {environment_path,".fuse_ctrl_prim_axi_read_out_if_agent"}, interface_names[9]);
+ fuse_ctrl_prim_axi_read_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_prim_axi_read_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_secreg_axi_read_in_if_agent_config.initialize( interface_activity[10], {environment_path,".fuse_ctrl_secreg_axi_read_in_if_agent"}, interface_names[10]);
+ fuse_ctrl_secreg_axi_read_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_secreg_axi_read_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_secreg_axi_read_out_if_agent_config.initialize( interface_activity[11], {environment_path,".fuse_ctrl_secreg_axi_read_out_if_agent"}, interface_names[11]);
+ fuse_ctrl_secreg_axi_read_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_secreg_axi_read_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_lc_otp_in_if_agent_config.initialize( interface_activity[12], {environment_path,".fuse_ctrl_lc_otp_in_if_agent"}, interface_names[12]);
+ fuse_ctrl_lc_otp_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_lc_otp_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_lc_otp_out_if_agent_config.initialize( interface_activity[13], {environment_path,".fuse_ctrl_lc_otp_out_if_agent"}, interface_names[13]);
+ fuse_ctrl_lc_otp_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_lc_otp_out_if_agent_config.has_coverage = 1;
+ fuse_ctrl_in_if_agent_config.initialize( interface_activity[14], {environment_path,".fuse_ctrl_in_if_agent"}, interface_names[14]);
+ fuse_ctrl_in_if_agent_config.initiator_responder = INITIATOR;
+ // fuse_ctrl_in_if_agent_config.has_coverage = 1;
+ fuse_ctrl_out_if_agent_config.initialize( interface_activity[15], {environment_path,".fuse_ctrl_out_if_agent"}, interface_names[15]);
+ fuse_ctrl_out_if_agent_config.initiator_responder = RESPONDER;
+ // fuse_ctrl_out_if_agent_config.has_coverage = 1;
+
+
+
+
+
+ // pragma uvmf custom initialize begin
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_sequence_base.svh
new file mode 100644
index 0000000..ac7965f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_sequence_base.svh
@@ -0,0 +1,146 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains environment level sequences that will
+// be reused from block to top level simulations.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_env_sequence_base #(
+ type CONFIG_T
+ ) extends uvmf_virtual_sequence_base #(.CONFIG_T(CONFIG_T));
+
+
+ `uvm_object_param_utils( fuse_ctrl_env_sequence_base #(
+ CONFIG_T
+ ) );
+
+
+// This fuse_ctrl_env_sequence_base contains a handle to a fuse_ctrl_env_configuration object
+// named configuration. This configuration variable contains a handle to each
+// sequencer within each agent within this environment and any sub-environments.
+// The configuration object handle is automatically assigned in the pre_body in the
+// base class of this sequence. The configuration handle is retrieved from the
+// virtual sequencer that this sequence is started on.
+// Available sequencer handles within the environment configuration:
+
+ // Initiator agent sequencers in fuse_ctrl_environment:
+ // configuration.fuse_ctrl_rst_in_agent_config.sequencer
+ // configuration.fuse_ctrl_core_axi_write_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_prim_axi_write_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_core_axi_read_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_prim_axi_read_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_secreg_axi_read_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_lc_otp_in_if_agent_config.sequencer
+ // configuration.fuse_ctrl_in_if_agent_config.sequencer
+
+ // Responder agent sequencers in fuse_ctrl_environment:
+ // configuration.fuse_ctrl_rst_out_agent_config.sequencer
+ // configuration.fuse_ctrl_core_axi_write_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_prim_axi_write_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_core_axi_read_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_prim_axi_read_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_secreg_axi_read_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_lc_otp_out_if_agent_config.sequencer
+ // configuration.fuse_ctrl_out_if_agent_config.sequencer
+
+
+ typedef fuse_ctrl_rst_in_random_sequence fuse_ctrl_rst_in_agent_random_sequence_t;
+ fuse_ctrl_rst_in_agent_random_sequence_t fuse_ctrl_rst_in_agent_rand_seq;
+
+
+ typedef fuse_ctrl_core_axi_write_in_random_sequence fuse_ctrl_core_axi_write_in_if_agent_random_sequence_t;
+ fuse_ctrl_core_axi_write_in_if_agent_random_sequence_t fuse_ctrl_core_axi_write_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_prim_axi_write_in_random_sequence fuse_ctrl_prim_axi_write_in_if_agent_random_sequence_t;
+ fuse_ctrl_prim_axi_write_in_if_agent_random_sequence_t fuse_ctrl_prim_axi_write_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_core_axi_read_in_random_sequence fuse_ctrl_core_axi_read_in_if_agent_random_sequence_t;
+ fuse_ctrl_core_axi_read_in_if_agent_random_sequence_t fuse_ctrl_core_axi_read_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_prim_axi_read_in_random_sequence fuse_ctrl_prim_axi_read_in_if_agent_random_sequence_t;
+ fuse_ctrl_prim_axi_read_in_if_agent_random_sequence_t fuse_ctrl_prim_axi_read_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_secreg_axi_read_in_random_sequence fuse_ctrl_secreg_axi_read_in_if_agent_random_sequence_t;
+ fuse_ctrl_secreg_axi_read_in_if_agent_random_sequence_t fuse_ctrl_secreg_axi_read_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_lc_otp_in_random_sequence fuse_ctrl_lc_otp_in_if_agent_random_sequence_t;
+ fuse_ctrl_lc_otp_in_if_agent_random_sequence_t fuse_ctrl_lc_otp_in_if_agent_rand_seq;
+
+
+ typedef fuse_ctrl_in_random_sequence fuse_ctrl_in_if_agent_random_sequence_t;
+ fuse_ctrl_in_if_agent_random_sequence_t fuse_ctrl_in_if_agent_rand_seq;
+
+
+
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "" );
+ super.new(name);
+ fuse_ctrl_rst_in_agent_rand_seq = fuse_ctrl_rst_in_agent_random_sequence_t::type_id::create("fuse_ctrl_rst_in_agent_rand_seq");
+ fuse_ctrl_core_axi_write_in_if_agent_rand_seq = fuse_ctrl_core_axi_write_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_core_axi_write_in_if_agent_rand_seq");
+ fuse_ctrl_prim_axi_write_in_if_agent_rand_seq = fuse_ctrl_prim_axi_write_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_prim_axi_write_in_if_agent_rand_seq");
+ fuse_ctrl_core_axi_read_in_if_agent_rand_seq = fuse_ctrl_core_axi_read_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_core_axi_read_in_if_agent_rand_seq");
+ fuse_ctrl_prim_axi_read_in_if_agent_rand_seq = fuse_ctrl_prim_axi_read_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_prim_axi_read_in_if_agent_rand_seq");
+ fuse_ctrl_secreg_axi_read_in_if_agent_rand_seq = fuse_ctrl_secreg_axi_read_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_secreg_axi_read_in_if_agent_rand_seq");
+ fuse_ctrl_lc_otp_in_if_agent_rand_seq = fuse_ctrl_lc_otp_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_lc_otp_in_if_agent_rand_seq");
+ fuse_ctrl_in_if_agent_rand_seq = fuse_ctrl_in_if_agent_random_sequence_t::type_id::create("fuse_ctrl_in_if_agent_rand_seq");
+
+
+ endfunction
+
+ virtual task body();
+
+ if ( configuration.fuse_ctrl_rst_in_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_rst_in_agent_rand_seq.start(configuration.fuse_ctrl_rst_in_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_core_axi_write_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_core_axi_write_in_if_agent_rand_seq.start(configuration.fuse_ctrl_core_axi_write_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_prim_axi_write_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_prim_axi_write_in_if_agent_rand_seq.start(configuration.fuse_ctrl_prim_axi_write_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_core_axi_read_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_core_axi_read_in_if_agent_rand_seq.start(configuration.fuse_ctrl_core_axi_read_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_prim_axi_read_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_prim_axi_read_in_if_agent_rand_seq.start(configuration.fuse_ctrl_prim_axi_read_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_secreg_axi_read_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_secreg_axi_read_in_if_agent_rand_seq.start(configuration.fuse_ctrl_secreg_axi_read_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_lc_otp_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_lc_otp_in_if_agent_rand_seq.start(configuration.fuse_ctrl_lc_otp_in_if_agent_config.sequencer);
+ if ( configuration.fuse_ctrl_in_if_agent_config.sequencer != null )
+ repeat (25) fuse_ctrl_in_if_agent_rand_seq.start(configuration.fuse_ctrl_in_if_agent_config.sequencer);
+
+
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_typedefs.svh
new file mode 100644
index 0000000..79d1b10
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_env_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the environment package.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+ // pragma uvmf custom additional begin
+ // pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_environment.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_environment.svh
new file mode 100644
index 0000000..660ac5d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_environment.svh
@@ -0,0 +1,217 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This environment contains all agents, predictors and
+// scoreboards required for the block level design.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class fuse_ctrl_environment extends uvmf_environment_base #(
+ .CONFIG_T( fuse_ctrl_env_configuration
+ ));
+ `uvm_component_utils( fuse_ctrl_environment )
+
+
+
+
+
+ typedef fuse_ctrl_rst_in_agent fuse_ctrl_rst_in_agent_t;
+ fuse_ctrl_rst_in_agent_t fuse_ctrl_rst_in_agent;
+
+ typedef fuse_ctrl_rst_out_agent fuse_ctrl_rst_out_agent_t;
+ fuse_ctrl_rst_out_agent_t fuse_ctrl_rst_out_agent;
+
+ typedef fuse_ctrl_core_axi_write_in_agent fuse_ctrl_core_axi_write_in_if_agent_t;
+ fuse_ctrl_core_axi_write_in_if_agent_t fuse_ctrl_core_axi_write_in_if_agent;
+
+ typedef fuse_ctrl_core_axi_write_out_agent fuse_ctrl_core_axi_write_out_if_agent_t;
+ fuse_ctrl_core_axi_write_out_if_agent_t fuse_ctrl_core_axi_write_out_if_agent;
+
+ typedef fuse_ctrl_prim_axi_write_in_agent fuse_ctrl_prim_axi_write_in_if_agent_t;
+ fuse_ctrl_prim_axi_write_in_if_agent_t fuse_ctrl_prim_axi_write_in_if_agent;
+
+ typedef fuse_ctrl_prim_axi_write_out_agent fuse_ctrl_prim_axi_write_out_if_agent_t;
+ fuse_ctrl_prim_axi_write_out_if_agent_t fuse_ctrl_prim_axi_write_out_if_agent;
+
+ typedef fuse_ctrl_core_axi_read_in_agent fuse_ctrl_core_axi_read_in_if_agent_t;
+ fuse_ctrl_core_axi_read_in_if_agent_t fuse_ctrl_core_axi_read_in_if_agent;
+
+ typedef fuse_ctrl_core_axi_read_out_agent fuse_ctrl_core_axi_read_out_if_agent_t;
+ fuse_ctrl_core_axi_read_out_if_agent_t fuse_ctrl_core_axi_read_out_if_agent;
+
+ typedef fuse_ctrl_prim_axi_read_in_agent fuse_ctrl_prim_axi_read_in_if_agent_t;
+ fuse_ctrl_prim_axi_read_in_if_agent_t fuse_ctrl_prim_axi_read_in_if_agent;
+
+ typedef fuse_ctrl_prim_axi_read_out_agent fuse_ctrl_prim_axi_read_out_if_agent_t;
+ fuse_ctrl_prim_axi_read_out_if_agent_t fuse_ctrl_prim_axi_read_out_if_agent;
+
+ typedef fuse_ctrl_secreg_axi_read_in_agent fuse_ctrl_secreg_axi_read_in_if_agent_t;
+ fuse_ctrl_secreg_axi_read_in_if_agent_t fuse_ctrl_secreg_axi_read_in_if_agent;
+
+ typedef fuse_ctrl_secreg_axi_read_out_agent fuse_ctrl_secreg_axi_read_out_if_agent_t;
+ fuse_ctrl_secreg_axi_read_out_if_agent_t fuse_ctrl_secreg_axi_read_out_if_agent;
+
+ typedef fuse_ctrl_lc_otp_in_agent fuse_ctrl_lc_otp_in_if_agent_t;
+ fuse_ctrl_lc_otp_in_if_agent_t fuse_ctrl_lc_otp_in_if_agent;
+
+ typedef fuse_ctrl_lc_otp_out_agent fuse_ctrl_lc_otp_out_if_agent_t;
+ fuse_ctrl_lc_otp_out_if_agent_t fuse_ctrl_lc_otp_out_if_agent;
+
+ typedef fuse_ctrl_in_agent fuse_ctrl_in_if_agent_t;
+ fuse_ctrl_in_if_agent_t fuse_ctrl_in_if_agent;
+
+ typedef fuse_ctrl_out_agent fuse_ctrl_out_if_agent_t;
+ fuse_ctrl_out_if_agent_t fuse_ctrl_out_if_agent;
+
+
+
+
+ typedef fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T)
+ ) fuse_ctrl_pred_t;
+ fuse_ctrl_pred_t fuse_ctrl_pred;
+ typedef fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T)
+ ) fuse_ctrl_sb_t;
+ fuse_ctrl_sb_t fuse_ctrl_sb;
+
+
+
+
+ typedef uvmf_virtual_sequencer_base #(.CONFIG_T(fuse_ctrl_env_configuration)) fuse_ctrl_vsqr_t;
+ fuse_ctrl_vsqr_t vsqr;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// FUNCTION: build_phase()
+// This function builds all components within this environment.
+//
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ fuse_ctrl_rst_in_agent = fuse_ctrl_rst_in_agent_t::type_id::create("fuse_ctrl_rst_in_agent",this);
+ fuse_ctrl_rst_in_agent.set_config(configuration.fuse_ctrl_rst_in_agent_config);
+ fuse_ctrl_rst_out_agent = fuse_ctrl_rst_out_agent_t::type_id::create("fuse_ctrl_rst_out_agent",this);
+ fuse_ctrl_rst_out_agent.set_config(configuration.fuse_ctrl_rst_out_agent_config);
+ fuse_ctrl_core_axi_write_in_if_agent = fuse_ctrl_core_axi_write_in_if_agent_t::type_id::create("fuse_ctrl_core_axi_write_in_if_agent",this);
+ fuse_ctrl_core_axi_write_in_if_agent.set_config(configuration.fuse_ctrl_core_axi_write_in_if_agent_config);
+ fuse_ctrl_core_axi_write_out_if_agent = fuse_ctrl_core_axi_write_out_if_agent_t::type_id::create("fuse_ctrl_core_axi_write_out_if_agent",this);
+ fuse_ctrl_core_axi_write_out_if_agent.set_config(configuration.fuse_ctrl_core_axi_write_out_if_agent_config);
+ fuse_ctrl_prim_axi_write_in_if_agent = fuse_ctrl_prim_axi_write_in_if_agent_t::type_id::create("fuse_ctrl_prim_axi_write_in_if_agent",this);
+ fuse_ctrl_prim_axi_write_in_if_agent.set_config(configuration.fuse_ctrl_prim_axi_write_in_if_agent_config);
+ fuse_ctrl_prim_axi_write_out_if_agent = fuse_ctrl_prim_axi_write_out_if_agent_t::type_id::create("fuse_ctrl_prim_axi_write_out_if_agent",this);
+ fuse_ctrl_prim_axi_write_out_if_agent.set_config(configuration.fuse_ctrl_prim_axi_write_out_if_agent_config);
+ fuse_ctrl_core_axi_read_in_if_agent = fuse_ctrl_core_axi_read_in_if_agent_t::type_id::create("fuse_ctrl_core_axi_read_in_if_agent",this);
+ fuse_ctrl_core_axi_read_in_if_agent.set_config(configuration.fuse_ctrl_core_axi_read_in_if_agent_config);
+ fuse_ctrl_core_axi_read_out_if_agent = fuse_ctrl_core_axi_read_out_if_agent_t::type_id::create("fuse_ctrl_core_axi_read_out_if_agent",this);
+ fuse_ctrl_core_axi_read_out_if_agent.set_config(configuration.fuse_ctrl_core_axi_read_out_if_agent_config);
+ fuse_ctrl_prim_axi_read_in_if_agent = fuse_ctrl_prim_axi_read_in_if_agent_t::type_id::create("fuse_ctrl_prim_axi_read_in_if_agent",this);
+ fuse_ctrl_prim_axi_read_in_if_agent.set_config(configuration.fuse_ctrl_prim_axi_read_in_if_agent_config);
+ fuse_ctrl_prim_axi_read_out_if_agent = fuse_ctrl_prim_axi_read_out_if_agent_t::type_id::create("fuse_ctrl_prim_axi_read_out_if_agent",this);
+ fuse_ctrl_prim_axi_read_out_if_agent.set_config(configuration.fuse_ctrl_prim_axi_read_out_if_agent_config);
+ fuse_ctrl_secreg_axi_read_in_if_agent = fuse_ctrl_secreg_axi_read_in_if_agent_t::type_id::create("fuse_ctrl_secreg_axi_read_in_if_agent",this);
+ fuse_ctrl_secreg_axi_read_in_if_agent.set_config(configuration.fuse_ctrl_secreg_axi_read_in_if_agent_config);
+ fuse_ctrl_secreg_axi_read_out_if_agent = fuse_ctrl_secreg_axi_read_out_if_agent_t::type_id::create("fuse_ctrl_secreg_axi_read_out_if_agent",this);
+ fuse_ctrl_secreg_axi_read_out_if_agent.set_config(configuration.fuse_ctrl_secreg_axi_read_out_if_agent_config);
+ fuse_ctrl_lc_otp_in_if_agent = fuse_ctrl_lc_otp_in_if_agent_t::type_id::create("fuse_ctrl_lc_otp_in_if_agent",this);
+ fuse_ctrl_lc_otp_in_if_agent.set_config(configuration.fuse_ctrl_lc_otp_in_if_agent_config);
+ fuse_ctrl_lc_otp_out_if_agent = fuse_ctrl_lc_otp_out_if_agent_t::type_id::create("fuse_ctrl_lc_otp_out_if_agent",this);
+ fuse_ctrl_lc_otp_out_if_agent.set_config(configuration.fuse_ctrl_lc_otp_out_if_agent_config);
+ fuse_ctrl_in_if_agent = fuse_ctrl_in_if_agent_t::type_id::create("fuse_ctrl_in_if_agent",this);
+ fuse_ctrl_in_if_agent.set_config(configuration.fuse_ctrl_in_if_agent_config);
+ fuse_ctrl_out_if_agent = fuse_ctrl_out_if_agent_t::type_id::create("fuse_ctrl_out_if_agent",this);
+ fuse_ctrl_out_if_agent.set_config(configuration.fuse_ctrl_out_if_agent_config);
+ fuse_ctrl_pred = fuse_ctrl_pred_t::type_id::create("fuse_ctrl_pred",this);
+ fuse_ctrl_pred.configuration = configuration;
+ fuse_ctrl_sb = fuse_ctrl_sb_t::type_id::create("fuse_ctrl_sb",this);
+ fuse_ctrl_sb.configuration = configuration;
+
+ vsqr = fuse_ctrl_vsqr_t::type_id::create("vsqr", this);
+ vsqr.set_config(configuration);
+ configuration.set_vsqr(vsqr);
+
+ // pragma uvmf custom build_phase begin
+ // pragma uvmf custom build_phase end
+ endfunction
+
+// ****************************************************************************
+// FUNCTION: connect_phase()
+// This function makes all connections within this environment. Connections
+// typically inclue agent to predictor, predictor to scoreboard and scoreboard
+// to agent.
+//
+ virtual function void connect_phase(uvm_phase phase);
+// pragma uvmf custom connect_phase_pre_super begin
+// pragma uvmf custom connect_phase_pre_super end
+ super.connect_phase(phase);
+ fuse_ctrl_rst_in_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_rst_in_agent_ae);
+ fuse_ctrl_core_axi_write_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_core_axi_write_in_agent_ae);
+ fuse_ctrl_core_axi_write_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_core_axi_write_in_agent_ae);
+ fuse_ctrl_core_axi_read_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_core_axi_read_in_agent_ae);
+ fuse_ctrl_core_axi_read_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_core_axi_read_in_agent_ae);
+ fuse_ctrl_prim_axi_write_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_prim_axi_write_in_agent_ae);
+ fuse_ctrl_prim_axi_write_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_prim_axi_write_in_agent_ae);
+ fuse_ctrl_prim_axi_read_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_prim_axi_read_in_agent_ae);
+ fuse_ctrl_prim_axi_read_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_prim_axi_read_in_agent_ae);
+ fuse_ctrl_secreg_axi_read_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_secreg_axi_read_in_agent_ae);
+ fuse_ctrl_secreg_axi_read_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_secreg_axi_read_in_agent_ae);
+ fuse_ctrl_lc_otp_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_lc_otp_in_agent_ae);
+ fuse_ctrl_lc_otp_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_lc_otp_in_agent_ae);
+ fuse_ctrl_in_if_agent.monitored_ap.connect(fuse_ctrl_pred.fuse_ctrl_in_agent_ae);
+ fuse_ctrl_out_if_agent.monitored_ap.connect(fuse_ctrl_sb.fuse_ctrl_in_agent_ae);
+ // pragma uvmf custom reg_model_connect_phase begin
+ // pragma uvmf custom reg_model_connect_phase end
+ endfunction
+
+// ****************************************************************************
+// FUNCTION: end_of_simulation_phase()
+// This function is executed just prior to executing run_phase. This function
+// was added to the environment to sample environment configuration settings
+// just before the simulation exits time 0. The configuration structure is
+// randomized in the build phase before the environment structure is constructed.
+// Configuration variables can be customized after randomization in the build_phase
+// of the extended test.
+// If a sequence modifies values in the configuration structure then the sequence is
+// responsible for sampling the covergroup in the configuration if required.
+//
+ virtual function void start_of_simulation_phase(uvm_phase phase);
+ configuration.fuse_ctrl_configuration_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_predictor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_predictor.svh
new file mode 100644
index 0000000..220286a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_predictor.svh
@@ -0,0 +1,807 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This analysis component contains analysis_exports for receiving
+// data and analysis_ports for sending data.
+//
+// This analysis component has the following analysis_exports that receive the
+// listed transaction type.
+//
+// fuse_ctrl_lc_otp_in_agent_ae receives transactions of type fuse_ctrl_lc_otp_in_transaction
+// fuse_ctrl_rst_in_agent_ae receives transactions of type fuse_ctrl_rst_in_transaction
+// fuse_ctrl_core_axi_write_in_agent_ae receives transactions of type fuse_ctrl_core_axi_write_in_transaction
+// fuse_ctrl_secreg_axi_read_in_agent_ae receives transactions of type fuse_ctrl_secreg_axi_read_in_transaction
+// fuse_ctrl_prim_axi_write_in_agent_ae receives transactions of type fuse_ctrl_prim_axi_write_in_transaction
+// fuse_ctrl_in_agent_ae receives transactions of type fuse_ctrl_in_transaction
+// fuse_ctrl_core_axi_read_in_agent_ae receives transactions of type fuse_ctrl_core_axi_read_in_transaction
+// fuse_ctrl_prim_axi_read_in_agent_ae receives transactions of type fuse_ctrl_prim_axi_read_in_transaction
+//
+// This analysis component has the following analysis_ports that can broadcast
+// the listed transaction type.
+//
+// fuse_ctrl_prim_axi_write_in_agent_ap broadcasts transactions of type fuse_ctrl_prim_axi_write_in_transaction
+// fuse_ctrl_core_axi_read_in_agent_ap broadcasts transactions of type fuse_ctrl_core_axi_read_in_transaction
+// fuse_ctrl_prim_axi_read_in_agent_ap broadcasts transactions of type fuse_ctrl_prim_axi_read_in_transaction
+// fuse_ctrl_in_agent_ap broadcasts transactions of type fuse_ctrl_in_transaction
+// fuse_ctrl_rst_in_agent_ap broadcasts transactions of type fuse_ctrl_rst_in_transaction
+// fuse_ctrl_secreg_axi_read_in_agent_ap broadcasts transactions of type fuse_ctrl_secreg_axi_read_in_transaction
+// fuse_ctrl_core_axi_write_in_agent_ap broadcasts transactions of type fuse_ctrl_core_axi_write_in_transaction
+// fuse_ctrl_lc_otp_in_agent_ap broadcasts transactions of type fuse_ctrl_lc_otp_in_transaction
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+class fuse_ctrl_predictor #(
+ type CONFIG_T,
+ type BASE_T = uvm_component
+ ) extends BASE_T;
+
+ // Factory registration of this class
+ `uvm_component_param_utils( fuse_ctrl_predictor #(
+ CONFIG_T,
+ BASE_T
+ ))
+
+
+ // Instantiate a handle to the configuration of the environment in which this component resides
+ CONFIG_T configuration;
+
+
+ // Instantiate the analysis exports
+ uvm_analysis_imp_fuse_ctrl_lc_otp_in_agent_ae #(fuse_ctrl_lc_otp_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_lc_otp_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_rst_in_agent_ae #(fuse_ctrl_rst_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_rst_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_core_axi_write_in_agent_ae #(fuse_ctrl_core_axi_write_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_core_axi_write_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_secreg_axi_read_in_agent_ae #(fuse_ctrl_secreg_axi_read_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_secreg_axi_read_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_prim_axi_write_in_agent_ae #(fuse_ctrl_prim_axi_write_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_prim_axi_write_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_in_agent_ae #(fuse_ctrl_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_core_axi_read_in_agent_ae #(fuse_ctrl_core_axi_read_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_core_axi_read_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_prim_axi_read_in_agent_ae #(fuse_ctrl_prim_axi_read_in_transaction, fuse_ctrl_predictor #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_prim_axi_read_in_agent_ae;
+
+
+ // Instantiate the analysis ports
+ uvm_analysis_port #(fuse_ctrl_prim_axi_write_in_transaction) fuse_ctrl_prim_axi_write_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_core_axi_read_in_transaction) fuse_ctrl_core_axi_read_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_prim_axi_read_in_transaction) fuse_ctrl_prim_axi_read_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_in_transaction) fuse_ctrl_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_rst_in_transaction) fuse_ctrl_rst_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_secreg_axi_read_in_transaction) fuse_ctrl_secreg_axi_read_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_core_axi_write_in_transaction) fuse_ctrl_core_axi_write_in_agent_ap;
+ uvm_analysis_port #(fuse_ctrl_lc_otp_in_transaction) fuse_ctrl_lc_otp_in_agent_ap;
+
+
+ // Transaction variable for predicted values to be sent out fuse_ctrl_prim_axi_write_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_prim_axi_write_in_transaction fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t;
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_core_axi_read_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_core_axi_read_in_transaction fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t;
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t fuse_ctrl_core_axi_read_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_prim_axi_read_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_prim_axi_read_in_transaction fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t;
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_in_transaction fuse_ctrl_in_agent_ap_output_transaction_t;
+ fuse_ctrl_in_agent_ap_output_transaction_t fuse_ctrl_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_rst_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_rst_in_transaction fuse_ctrl_rst_in_agent_ap_output_transaction_t;
+ fuse_ctrl_rst_in_agent_ap_output_transaction_t fuse_ctrl_rst_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_secreg_axi_read_in_transaction fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t;
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_core_axi_write_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_core_axi_write_in_transaction fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t;
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t fuse_ctrl_core_axi_write_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Transaction variable for predicted values to be sent out fuse_ctrl_lc_otp_in_agent_ap
+ // Once a transaction is sent through an analysis_port, another transaction should
+ // be constructed for the next predicted transaction.
+ typedef fuse_ctrl_lc_otp_in_transaction fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t;
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t fuse_ctrl_lc_otp_in_agent_ap_output_transaction;
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+
+ // Define transaction handles for debug visibility
+ fuse_ctrl_lc_otp_in_transaction fuse_ctrl_lc_otp_in_agent_ae_debug;
+ fuse_ctrl_rst_in_transaction fuse_ctrl_rst_in_agent_ae_debug;
+ fuse_ctrl_core_axi_write_in_transaction fuse_ctrl_core_axi_write_in_agent_ae_debug;
+ fuse_ctrl_secreg_axi_read_in_transaction fuse_ctrl_secreg_axi_read_in_agent_ae_debug;
+ fuse_ctrl_prim_axi_write_in_transaction fuse_ctrl_prim_axi_write_in_agent_ae_debug;
+ fuse_ctrl_in_transaction fuse_ctrl_in_agent_ae_debug;
+ fuse_ctrl_core_axi_read_in_transaction fuse_ctrl_core_axi_read_in_agent_ae_debug;
+ fuse_ctrl_prim_axi_read_in_transaction fuse_ctrl_prim_axi_read_in_agent_ae_debug;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // FUNCTION: new
+ function new(string name, uvm_component parent);
+ super.new(name,parent);
+ `uvm_warning("PREDICTOR_REVIEW", "This predictor has been created either through generation or re-generation with merging. Remove this warning after the predictor has been reviewed.")
+ // pragma uvmf custom new begin
+ // pragma uvmf custom new end
+ endfunction
+
+ // FUNCTION: build_phase
+ virtual function void build_phase (uvm_phase phase);
+
+ fuse_ctrl_lc_otp_in_agent_ae = new("fuse_ctrl_lc_otp_in_agent_ae", this);
+ fuse_ctrl_rst_in_agent_ae = new("fuse_ctrl_rst_in_agent_ae", this);
+ fuse_ctrl_core_axi_write_in_agent_ae = new("fuse_ctrl_core_axi_write_in_agent_ae", this);
+ fuse_ctrl_secreg_axi_read_in_agent_ae = new("fuse_ctrl_secreg_axi_read_in_agent_ae", this);
+ fuse_ctrl_prim_axi_write_in_agent_ae = new("fuse_ctrl_prim_axi_write_in_agent_ae", this);
+ fuse_ctrl_in_agent_ae = new("fuse_ctrl_in_agent_ae", this);
+ fuse_ctrl_core_axi_read_in_agent_ae = new("fuse_ctrl_core_axi_read_in_agent_ae", this);
+ fuse_ctrl_prim_axi_read_in_agent_ae = new("fuse_ctrl_prim_axi_read_in_agent_ae", this);
+ fuse_ctrl_prim_axi_write_in_agent_ap =new("fuse_ctrl_prim_axi_write_in_agent_ap", this );
+ fuse_ctrl_core_axi_read_in_agent_ap =new("fuse_ctrl_core_axi_read_in_agent_ap", this );
+ fuse_ctrl_prim_axi_read_in_agent_ap =new("fuse_ctrl_prim_axi_read_in_agent_ap", this );
+ fuse_ctrl_in_agent_ap =new("fuse_ctrl_in_agent_ap", this );
+ fuse_ctrl_rst_in_agent_ap =new("fuse_ctrl_rst_in_agent_ap", this );
+ fuse_ctrl_secreg_axi_read_in_agent_ap =new("fuse_ctrl_secreg_axi_read_in_agent_ap", this );
+ fuse_ctrl_core_axi_write_in_agent_ap =new("fuse_ctrl_core_axi_write_in_agent_ap", this );
+ fuse_ctrl_lc_otp_in_agent_ap =new("fuse_ctrl_lc_otp_in_agent_ap", this );
+ // pragma uvmf custom build_phase begin
+ // pragma uvmf custom build_phase end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_lc_otp_in_agent_ae
+ // Transactions received through fuse_ctrl_lc_otp_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_lc_otp_in_agent_ae(fuse_ctrl_lc_otp_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_agent_ae_predictor begin
+ fuse_ctrl_lc_otp_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_lc_otp_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_lc_otp_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_rst_in_agent_ae
+ // Transactions received through fuse_ctrl_rst_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_rst_in_agent_ae(fuse_ctrl_rst_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_ae_predictor begin
+ fuse_ctrl_rst_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_rst_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_rst_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_core_axi_write_in_agent_ae
+ // Transactions received through fuse_ctrl_core_axi_write_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_core_axi_write_in_agent_ae(fuse_ctrl_core_axi_write_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_agent_ae_predictor begin
+ fuse_ctrl_core_axi_write_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_core_axi_write_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_core_axi_write_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_secreg_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_secreg_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_secreg_axi_read_in_agent_ae(fuse_ctrl_secreg_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_agent_ae_predictor begin
+ fuse_ctrl_secreg_axi_read_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_secreg_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_secreg_axi_read_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_prim_axi_write_in_agent_ae
+ // Transactions received through fuse_ctrl_prim_axi_write_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_prim_axi_write_in_agent_ae(fuse_ctrl_prim_axi_write_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_agent_ae_predictor begin
+ fuse_ctrl_prim_axi_write_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_prim_axi_write_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_prim_axi_write_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_in_agent_ae
+ // Transactions received through fuse_ctrl_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_in_agent_ae(fuse_ctrl_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_in_agent_ae_predictor begin
+ fuse_ctrl_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_core_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_core_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_core_axi_read_in_agent_ae(fuse_ctrl_core_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_agent_ae_predictor begin
+ fuse_ctrl_core_axi_read_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_core_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_core_axi_read_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_agent_ae_predictor end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_prim_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_prim_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_prim_axi_read_in_agent_ae(fuse_ctrl_prim_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_agent_ae_predictor begin
+ fuse_ctrl_prim_axi_read_in_agent_ae_debug = t;
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_prim_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // Construct one of each output transaction type.
+ fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_read_in_agent_ap_output_transaction = fuse_ctrl_core_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction = fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_in_agent_ap_output_transaction = fuse_ctrl_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_in_agent_ap_output_transaction");
+ fuse_ctrl_rst_in_agent_ap_output_transaction = fuse_ctrl_rst_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_rst_in_agent_ap_output_transaction");
+ fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction = fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction");
+ fuse_ctrl_core_axi_write_in_agent_ap_output_transaction = fuse_ctrl_core_axi_write_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_core_axi_write_in_agent_ap_output_transaction");
+ fuse_ctrl_lc_otp_in_agent_ap_output_transaction = fuse_ctrl_lc_otp_in_agent_ap_output_transaction_t::type_id::create("fuse_ctrl_lc_otp_in_agent_ap_output_transaction");
+ // UVMF_CHANGE_ME: Implement predictor model here.
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "UVMF_CHANGE_ME: The fuse_ctrl_predictor::write_fuse_ctrl_prim_axi_read_in_agent_ae function needs to be completed with DUT prediction model",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_PREDICTOR_MODEL", "******************************************************************************************************",UVM_NONE)
+
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_write_in_agent_ap.write(fuse_ctrl_prim_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_read_in_agent_ap.write(fuse_ctrl_core_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_prim_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_prim_axi_read_in_agent_ap.write(fuse_ctrl_prim_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_in_agent_ap.write(fuse_ctrl_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_rst_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_rst_in_agent_ap.write(fuse_ctrl_rst_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_secreg_axi_read_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_secreg_axi_read_in_agent_ap.write(fuse_ctrl_secreg_axi_read_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_core_axi_write_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_core_axi_write_in_agent_ap.write(fuse_ctrl_core_axi_write_in_agent_ap_output_transaction);
+ // Code for sending output transaction out through fuse_ctrl_lc_otp_in_agent_ap
+ // Please note that each broadcasted transaction should be a different object than previously
+ // broadcasted transactions. Creation of a different object is done by constructing the transaction
+ // using either new() or create(). Broadcasting a transaction object more than once to either the
+ // same subscriber or multiple subscribers will result in unexpected and incorrect behavior.
+ fuse_ctrl_lc_otp_in_agent_ap.write(fuse_ctrl_lc_otp_in_agent_ap_output_transaction);
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_agent_ae_predictor end
+ endfunction
+
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_scoreboard.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_scoreboard.svh
new file mode 100644
index 0000000..626fdd0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/src/fuse_ctrl_scoreboard.svh
@@ -0,0 +1,271 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This analysis component contains analysis_exports for receiving
+// data and analysis_ports for sending data.
+//
+// This analysis component has the following analysis_exports that receive the
+// listed transaction type.
+//
+// fuse_ctrl_lc_otp_in_agent_ae receives transactions of type fuse_ctrl_lc_otp_in_transaction
+// fuse_ctrl_rst_in_agent_ae receives transactions of type fuse_ctrl_rst_in_transaction
+// fuse_ctrl_core_axi_write_in_agent_ae receives transactions of type fuse_ctrl_core_axi_write_in_transaction
+// fuse_ctrl_secreg_axi_read_in_agent_ae receives transactions of type fuse_ctrl_secreg_axi_read_in_transaction
+// fuse_ctrl_prim_axi_write_in_agent_ae receives transactions of type fuse_ctrl_prim_axi_write_in_transaction
+// fuse_ctrl_in_agent_ae receives transactions of type fuse_ctrl_in_transaction
+// fuse_ctrl_core_axi_read_in_agent_ae receives transactions of type fuse_ctrl_core_axi_read_in_transaction
+// fuse_ctrl_prim_axi_read_in_agent_ae receives transactions of type fuse_ctrl_prim_axi_read_in_transaction
+//
+// This analysis component has the following analysis_ports that can broadcast
+// the listed transaction type.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+class fuse_ctrl_scoreboard #(
+ type CONFIG_T,
+ type BASE_T = uvm_component
+ ) extends BASE_T;
+
+ // Factory registration of this class
+ `uvm_component_param_utils( fuse_ctrl_scoreboard #(
+ CONFIG_T,
+ BASE_T
+ ))
+
+
+ // Instantiate a handle to the configuration of the environment in which this component resides
+ CONFIG_T configuration;
+
+
+ // Instantiate the analysis exports
+ uvm_analysis_imp_fuse_ctrl_lc_otp_in_agent_ae #(fuse_ctrl_lc_otp_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_lc_otp_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_rst_in_agent_ae #(fuse_ctrl_rst_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_rst_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_core_axi_write_in_agent_ae #(fuse_ctrl_core_axi_write_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_core_axi_write_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_secreg_axi_read_in_agent_ae #(fuse_ctrl_secreg_axi_read_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_secreg_axi_read_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_prim_axi_write_in_agent_ae #(fuse_ctrl_prim_axi_write_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_prim_axi_write_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_in_agent_ae #(fuse_ctrl_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_core_axi_read_in_agent_ae #(fuse_ctrl_core_axi_read_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_core_axi_read_in_agent_ae;
+ uvm_analysis_imp_fuse_ctrl_prim_axi_read_in_agent_ae #(fuse_ctrl_prim_axi_read_in_transaction, fuse_ctrl_scoreboard #(
+ .CONFIG_T(CONFIG_T),
+ .BASE_T(BASE_T)
+ )) fuse_ctrl_prim_axi_read_in_agent_ae;
+
+
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // FUNCTION: new
+ function new(string name, uvm_component parent);
+ super.new(name,parent);
+ // pragma uvmf custom new begin
+ // pragma uvmf custom new end
+ endfunction
+
+ // FUNCTION: build_phase
+ virtual function void build_phase (uvm_phase phase);
+
+ fuse_ctrl_lc_otp_in_agent_ae = new("fuse_ctrl_lc_otp_in_agent_ae", this);
+ fuse_ctrl_rst_in_agent_ae = new("fuse_ctrl_rst_in_agent_ae", this);
+ fuse_ctrl_core_axi_write_in_agent_ae = new("fuse_ctrl_core_axi_write_in_agent_ae", this);
+ fuse_ctrl_secreg_axi_read_in_agent_ae = new("fuse_ctrl_secreg_axi_read_in_agent_ae", this);
+ fuse_ctrl_prim_axi_write_in_agent_ae = new("fuse_ctrl_prim_axi_write_in_agent_ae", this);
+ fuse_ctrl_in_agent_ae = new("fuse_ctrl_in_agent_ae", this);
+ fuse_ctrl_core_axi_read_in_agent_ae = new("fuse_ctrl_core_axi_read_in_agent_ae", this);
+ fuse_ctrl_prim_axi_read_in_agent_ae = new("fuse_ctrl_prim_axi_read_in_agent_ae", this);
+ // pragma uvmf custom build_phase begin
+ // pragma uvmf custom build_phase end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_lc_otp_in_agent_ae
+ // Transactions received through fuse_ctrl_lc_otp_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_lc_otp_in_agent_ae(fuse_ctrl_lc_otp_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_lc_otp_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_lc_otp_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_lc_otp_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_rst_in_agent_ae
+ // Transactions received through fuse_ctrl_rst_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_rst_in_agent_ae(fuse_ctrl_rst_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_rst_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_rst_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_rst_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_core_axi_write_in_agent_ae
+ // Transactions received through fuse_ctrl_core_axi_write_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_core_axi_write_in_agent_ae(fuse_ctrl_core_axi_write_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_core_axi_write_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_core_axi_write_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_core_axi_write_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_secreg_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_secreg_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_secreg_axi_read_in_agent_ae(fuse_ctrl_secreg_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_secreg_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_secreg_axi_read_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_secreg_axi_read_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_prim_axi_write_in_agent_ae
+ // Transactions received through fuse_ctrl_prim_axi_write_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_prim_axi_write_in_agent_ae(fuse_ctrl_prim_axi_write_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_prim_axi_write_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_prim_axi_write_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_prim_axi_write_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_in_agent_ae
+ // Transactions received through fuse_ctrl_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_in_agent_ae(fuse_ctrl_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_core_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_core_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_core_axi_read_in_agent_ae(fuse_ctrl_core_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_core_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_core_axi_read_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_core_axi_read_in_agent_ae_scoreboard end
+ endfunction
+
+ // FUNCTION: write_fuse_ctrl_prim_axi_read_in_agent_ae
+ // Transactions received through fuse_ctrl_prim_axi_read_in_agent_ae initiate the execution of this function.
+ // This function performs prediction of DUT output values based on DUT input, configuration and state
+ virtual function void write_fuse_ctrl_prim_axi_read_in_agent_ae(fuse_ctrl_prim_axi_read_in_transaction t);
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_agent_ae_scoreboard begin
+ `uvm_info("PRED", "Transaction Received through fuse_ctrl_prim_axi_read_in_agent_ae", UVM_MEDIUM)
+ `uvm_info("PRED", {" Data: ",t.convert2string()}, UVM_FULL)
+ // UVMF_CHANGE_ME: Implement custom scoreboard here.
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "UVMF_CHANGE_ME: The fuse_ctrl_scoreboard::write_fuse_ctrl_prim_axi_read_in_agent_ae function needs to be completed with custom scoreboard functionality",UVM_NONE)
+ `uvm_info("UNIMPLEMENTED_CUSTOM_SCOREBOARD", "******************************************************************************************************",UVM_NONE)
+
+ // pragma uvmf custom fuse_ctrl_prim_axi_read_in_agent_ae_scoreboard end
+ endfunction
+
+
+
+ // FUNCTION: extract_phase
+ virtual function void extract_phase(uvm_phase phase);
+// pragma uvmf custom extract_phase begin
+ super.extract_phase(phase);
+// pragma uvmf custom extract_phase end
+ endfunction
+
+ // FUNCTION: check_phase
+ virtual function void check_phase(uvm_phase phase);
+// pragma uvmf custom check_phase begin
+ super.check_phase(phase);
+// pragma uvmf custom check_phase end
+ endfunction
+
+ // FUNCTION: report_phase
+ virtual function void report_phase(uvm_phase phase);
+// pragma uvmf custom report_phase begin
+ super.report_phase(phase);
+// pragma uvmf custom report_phase end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_environment.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_environment.yaml
new file mode 100644
index 0000000..84226cb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_environment.yaml
@@ -0,0 +1,116 @@
+uvmf:
+ environments:
+ fuse_ctrl:
+ agents:
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_rst_in_agent
+ type: fuse_ctrl_rst_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_rst_out_agent
+ type: fuse_ctrl_rst_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_core_axi_write_in_if_agent
+ type: fuse_ctrl_core_axi_write_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_core_axi_write_out_if_agent
+ type: fuse_ctrl_core_axi_write_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_prim_axi_write_in_if_agent
+ type: fuse_ctrl_prim_axi_write_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_prim_axi_write_out_if_agent
+ type: fuse_ctrl_prim_axi_write_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_core_axi_read_in_if_agent
+ type: fuse_ctrl_core_axi_read_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_core_axi_read_out_if_agent
+ type: fuse_ctrl_core_axi_read_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_prim_axi_read_in_if_agent
+ type: fuse_ctrl_prim_axi_read_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_prim_axi_read_out_if_agent
+ type: fuse_ctrl_prim_axi_read_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_secreg_axi_read_in_if_agent
+ type: fuse_ctrl_secreg_axi_read_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_secreg_axi_read_out_if_agent
+ type: fuse_ctrl_secreg_axi_read_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_lc_otp_in_if_agent
+ type: fuse_ctrl_lc_otp_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_lc_otp_out_if_agent
+ type: fuse_ctrl_lc_otp_out
+ - initiator_responder: INITIATOR
+ name: fuse_ctrl_in_if_agent
+ type: fuse_ctrl_in
+ - initiator_responder: RESPONDER
+ name: fuse_ctrl_out_if_agent
+ type: fuse_ctrl_out
+ analysis_components:
+ - name: fuse_ctrl_pred
+ parameters: []
+ type: fuse_ctrl_predictor
+ - name: fuse_ctrl_sb
+ parameters: []
+ type: fuse_ctrl_scoreboard
+ analysis_exports: []
+ analysis_ports: []
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ hvl_pkg_parameters: []
+ non_uvmf_components: []
+ parameters: []
+ qvip_memory_agents: []
+ scoreboards: []
+ subenvs: []
+ tlm_connections:
+ - driver: fuse_ctrl_rst_in_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_rst_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_core_axi_write_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_core_axi_write_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_core_axi_write_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_core_axi_write_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_core_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_core_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_core_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_core_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_prim_axi_write_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_prim_axi_write_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_prim_axi_write_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_prim_axi_write_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_prim_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_prim_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_prim_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_prim_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_secreg_axi_read_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_secreg_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_secreg_axi_read_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_secreg_axi_read_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_lc_otp_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_lc_otp_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_lc_otp_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_lc_otp_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_in_if_agent.monitored_ap
+ receiver: fuse_ctrl_pred.fuse_ctrl_in_agent_ae
+ validate: 'True'
+ - driver: fuse_ctrl_out_if_agent.monitored_ap
+ receiver: fuse_ctrl_sb.fuse_ctrl_in_agent_ae
+ validate: 'True'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_predictor.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_predictor.yaml
new file mode 100644
index 0000000..6fc20b8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_predictor.yaml
@@ -0,0 +1,39 @@
+uvmf:
+ util_components:
+ fuse_ctrl_predictor:
+ analysis_exports:
+ - name: fuse_ctrl_lc_otp_in_agent_ae
+ type: fuse_ctrl_lc_otp_in_transaction
+ - name: fuse_ctrl_rst_in_agent_ae
+ type: fuse_ctrl_rst_in_transaction
+ - name: fuse_ctrl_core_axi_write_in_agent_ae
+ type: fuse_ctrl_core_axi_write_in_transaction
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ae
+ type: fuse_ctrl_secreg_axi_read_in_transaction
+ - name: fuse_ctrl_prim_axi_write_in_agent_ae
+ type: fuse_ctrl_prim_axi_write_in_transaction
+ - name: fuse_ctrl_in_agent_ae
+ type: fuse_ctrl_in_transaction
+ - name: fuse_ctrl_core_axi_read_in_agent_ae
+ type: fuse_ctrl_core_axi_read_in_transaction
+ - name: fuse_ctrl_prim_axi_read_in_agent_ae
+ type: fuse_ctrl_prim_axi_read_in_transaction
+ analysis_ports:
+ - name: fuse_ctrl_prim_axi_write_in_agent_ap
+ type: fuse_ctrl_prim_axi_write_in_transaction
+ - name: fuse_ctrl_core_axi_read_in_agent_ap
+ type: fuse_ctrl_core_axi_read_in_transaction
+ - name: fuse_ctrl_prim_axi_read_in_agent_ap
+ type: fuse_ctrl_prim_axi_read_in_transaction
+ - name: fuse_ctrl_in_agent_ap
+ type: fuse_ctrl_in_transaction
+ - name: fuse_ctrl_rst_in_agent_ap
+ type: fuse_ctrl_rst_in_transaction
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ap
+ type: fuse_ctrl_secreg_axi_read_in_transaction
+ - name: fuse_ctrl_core_axi_write_in_agent_ap
+ type: fuse_ctrl_core_axi_write_in_transaction
+ - name: fuse_ctrl_lc_otp_in_agent_ap
+ type: fuse_ctrl_lc_otp_in_transaction
+ existing_library_component: 'True'
+ type: predictor
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_scoreboard.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_scoreboard.yaml
new file mode 100644
index 0000000..e645b91
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/environment_packages/fuse_ctrl_env_pkg/yaml/fuse_ctrl_util_comp_fuse_ctrl_scoreboard.yaml
@@ -0,0 +1,22 @@
+uvmf:
+ util_components:
+ fuse_ctrl_scoreboard:
+ analysis_exports:
+ - name: fuse_ctrl_lc_otp_in_agent_ae
+ type: fuse_ctrl_lc_otp_in_transaction
+ - name: fuse_ctrl_rst_in_agent_ae
+ type: fuse_ctrl_rst_in_transaction
+ - name: fuse_ctrl_core_axi_write_in_agent_ae
+ type: fuse_ctrl_core_axi_write_in_transaction
+ - name: fuse_ctrl_secreg_axi_read_in_agent_ae
+ type: fuse_ctrl_secreg_axi_read_in_transaction
+ - name: fuse_ctrl_prim_axi_write_in_agent_ae
+ type: fuse_ctrl_prim_axi_write_in_transaction
+ - name: fuse_ctrl_in_agent_ae
+ type: fuse_ctrl_in_transaction
+ - name: fuse_ctrl_core_axi_read_in_agent_ae
+ type: fuse_ctrl_core_axi_read_in_transaction
+ - name: fuse_ctrl_prim_axi_read_in_agent_ae
+ type: fuse_ctrl_prim_axi_read_in_transaction
+ existing_library_component: 'True'
+ type: scoreboard
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.project
new file mode 100644
index 0000000..e463bf0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_core_axi_read_in_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.svproject
new file mode 100644
index 0000000..4a40ac8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/Makefile
new file mode 100644
index 0000000..0ccd2f8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_core_axi_read_in interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_core_axi_read_in_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f
+
+fuse_ctrl_core_axi_read_in_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f
+
+fuse_ctrl_core_axi_read_in_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_xrtl.f
+
+COMP_fuse_ctrl_core_axi_read_in_PKG_TGT_0 = q_comp_fuse_ctrl_core_axi_read_in_pkg
+COMP_fuse_ctrl_core_axi_read_in_PKG_TGT_1 = v_comp_fuse_ctrl_core_axi_read_in_pkg
+COMP_fuse_ctrl_core_axi_read_in_PKG_TGT = $(COMP_fuse_ctrl_core_axi_read_in_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_core_axi_read_in_pkg: $(COMP_fuse_ctrl_core_axi_read_in_PKG_TGT)
+
+q_comp_fuse_ctrl_core_axi_read_in_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG_XRTL)
+
+v_comp_fuse_ctrl_core_axi_read_in_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_core_axi_read_in_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_core_axi_read_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_in_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_core_axi_read_in_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_in_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_in_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_in_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_read_in_pkg += -I$(fuse_ctrl_core_axi_read_in_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_read_in_pkg += $(fuse_ctrl_core_axi_read_in_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_core_axi_read_in_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_core_axi_read_in_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_core_axi_read_in_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_in_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_core_axi_read_in_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_in_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/compile.do
new file mode 100644
index 0000000..badb448
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_core_axi_read_in interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in.compile
new file mode 100644
index 0000000..87b941a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_core_axi_read_in_hvl.compile
+ - fuse_ctrl_core_axi_read_in_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_bfm.vinfo
new file mode 100644
index 0000000..5b88121
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_core_axi_read_in_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_core_axi_read_in_if.sv
+src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
+src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_common.compile
new file mode 100644
index 0000000..c150c93
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_core_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f
new file mode 100644
index 0000000..b5ab5ea
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f
new file mode 100644
index 0000000..ea2d101
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_xrtl.f
new file mode 100644
index 0000000..16c4792
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hdl.compile
new file mode 100644
index 0000000..96c4c97
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_core_axi_read_in_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_core_axi_read_in_if.sv
+ - src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
+ - src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hvl.compile
new file mode 100644
index 0000000..287ac6a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_core_axi_read_in_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_core_axi_read_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.sv
new file mode 100644
index 0000000..69c23d8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_read_in_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_core_axi_read_in_macros.svh"
+
+ export fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_core_axi_read_in_typedefs.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_transaction.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_in_configuration.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_driver.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_monitor.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_in_transaction_coverage.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_sequence_base.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_random_sequence.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_in_responder_sequence.svh"
+ `include "src/fuse_ctrl_core_axi_read_in2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_in_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo
new file mode 100644
index 0000000..0c3c242
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_core_axi_read_in_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_core_axi_read_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.sv
new file mode 100644
index 0000000..2377e24
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_read_in_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_core_axi_read_in_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_core_axi_read_in_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.vinfo
new file mode 100644
index 0000000..ff9df31
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_core_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_sve.F
new file mode 100644
index 0000000..2a3defa
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_in_pkg/fuse_ctrl_core_axi_read_in_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in2reg_adapter.svh
new file mode 100644
index 0000000..378fe6a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_core_axi_read_in interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in2reg_adapter #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in2reg_adapter #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_core_axi_read_in2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h = fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_core_axi_read_in2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_agent.svh
new file mode 100644
index 0000000..1ed60ea
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_agent #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .DRIVER_T(fuse_ctrl_core_axi_read_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_T(fuse_ctrl_core_axi_read_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .COVERAGE_T(fuse_ctrl_core_axi_read_in_transaction_coverage #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_in_agent #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_configuration.svh
new file mode 100644
index 0000000..395c11b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_core_axi_read_in agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_configuration #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_core_axi_read_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_core_axi_read_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in_configuration #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_core_axi_read_in_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_CONFIGURATION_STRUCT
+ fuse_ctrl_core_axi_read_in_configuration_s fuse_ctrl_core_axi_read_in_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_core_axi_read_in_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_in_configuration_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_core_axi_read_in_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_core_axi_read_in_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_core_axi_read_in_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_core_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_core_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_core_axi_read_in_configuration_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_read_in_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AW=%x DW=%x IW=%x UW=%x ", agent_path, interface_name, AW ,DW ,IW ,UW ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_core_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver.svh
new file mode 100644
index 0000000..8aa1c0c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_driver #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_read_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .REQ(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .RSP(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_in_driver #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_core_axi_read_in_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+`fuse_ctrl_core_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_in_initiator_s fuse_ctrl_core_axi_read_in_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+`fuse_ctrl_core_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_in_responder_s fuse_ctrl_core_axi_read_in_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_core_axi_read_in_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_core_axi_read_in_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_core_axi_read_in_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_core_axi_read_in_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
new file mode 100644
index 0000000..548dff9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_driver_bfm.sv
@@ -0,0 +1,383 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_core_axi_read_in signal driving. It is
+// accessed by the uvm fuse_ctrl_core_axi_read_in driver through a virtual interface
+// handle in the fuse_ctrl_core_axi_read_in configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_core_axi_read_in_if.
+//
+// Input signals from the fuse_ctrl_core_axi_read_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_core_axi_read_in_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_read_in_macros.svh"
+
+interface fuse_ctrl_core_axi_read_in_driver_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ (fuse_ctrl_core_axi_read_in_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_read_in_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+
+ // INITIATOR mode output signals
+ tri [AW-1:0] araddr_i;
+ reg [AW-1:0] araddr_o = 'bz;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst_i;
+ reg [$bits(axi_pkg::axi_burst_e)-1:0] arburst_o = 'bz;
+ tri [2:0] arsize_i;
+ reg [2:0] arsize_o = 'bz;
+ tri [7:0] arlen_i;
+ reg [7:0] arlen_o = 'bz;
+ tri [UW-1:0] aruser_i;
+ reg [UW-1:0] aruser_o = 'bz;
+ tri [IW-1:0] arid_i;
+ reg [IW-1:0] arid_o = 'bz;
+ tri arlock_i;
+ reg arlock_o = 'bz;
+ tri arvalid_i;
+ reg arvalid_o = 'bz;
+ tri rready_i;
+ reg rready_o = 'bz;
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+ assign bus.araddr = (initiator_responder == INITIATOR) ? araddr_o : 'bz;
+ assign araddr_i = bus.araddr;
+ assign bus.arburst = (initiator_responder == INITIATOR) ? arburst_o : 'bz;
+ assign arburst_i = bus.arburst;
+ assign bus.arsize = (initiator_responder == INITIATOR) ? arsize_o : 'bz;
+ assign arsize_i = bus.arsize;
+ assign bus.arlen = (initiator_responder == INITIATOR) ? arlen_o : 'bz;
+ assign arlen_i = bus.arlen;
+ assign bus.aruser = (initiator_responder == INITIATOR) ? aruser_o : 'bz;
+ assign aruser_i = bus.aruser;
+ assign bus.arid = (initiator_responder == INITIATOR) ? arid_o : 'bz;
+ assign arid_i = bus.arid;
+ assign bus.arlock = (initiator_responder == INITIATOR) ? arlock_o : 'bz;
+ assign arlock_i = bus.arlock;
+ assign bus.arvalid = (initiator_responder == INITIATOR) ? arvalid_o : 'bz;
+ assign arvalid_i = bus.arvalid;
+ assign bus.rready = (initiator_responder == INITIATOR) ? rready_o : 'bz;
+ assign rready_i = bus.rready;
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_core_axi_read_in_pkg::fuse_ctrl_core_axi_read_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_core_axi_read_in_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_core_axi_read_in_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_core_axi_read_in_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+ `fuse_ctrl_core_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_in_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+ `fuse_ctrl_core_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_in_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ // INITIATOR mode output signals
+ araddr_o <= 'bz;
+ arburst_o <= 'bz;
+ arsize_o <= 'bz;
+ arlen_o <= 'bz;
+ aruser_o <= 'bz;
+ arid_o <= 'bz;
+ arlock_o <= 'bz;
+ arvalid_o <= 'bz;
+ rready_o <= 'bz;
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_core_axi_read_in_configuration_s fuse_ctrl_core_axi_read_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_read_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_core_axi_read_in_initiator_s fuse_ctrl_core_axi_read_in_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_core_axi_read_in_responder_s fuse_ctrl_core_axi_read_in_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_core_axi_read_in_initiator_struct:
+ // logic [AW-1:0] core_araddr ;
+ // logic core_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_arburst ;
+ // logic [2:0] core_arsize ;
+ // logic [7:0] core_arlen ;
+ // logic [UW-1:0] core_aruser ;
+ // logic [IW-1:0] core_arid ;
+ // logic core_arlock ;
+ // logic core_rready ;
+ // Members within the fuse_ctrl_core_axi_read_in_responder_struct:
+ // logic [AW-1:0] core_araddr ;
+ // logic core_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_arburst ;
+ // logic [2:0] core_arsize ;
+ // logic [7:0] core_arlen ;
+ // logic [UW-1:0] core_aruser ;
+ // logic [IW-1:0] core_arid ;
+ // logic core_arlock ;
+ // logic core_rready ;
+ initiator_struct = fuse_ctrl_core_axi_read_in_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // araddr_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [AW-1:0]
+ // arburst_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // arsize_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [2:0]
+ // arlen_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [7:0]
+ // aruser_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [UW-1:0]
+ // arid_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; // [IW-1:0]
+ // arlock_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; //
+ // arvalid_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; //
+ // rready_o <= fuse_ctrl_core_axi_read_in_initiator_struct.xyz; //
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_core_axi_read_in_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_core_axi_read_in_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_core_axi_read_in_initiator_s fuse_ctrl_core_axi_read_in_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_core_axi_read_in_responder_s fuse_ctrl_core_axi_read_in_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_core_axi_read_in_initiator_struct:
+ // logic [AW-1:0] core_araddr ;
+ // logic core_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_arburst ;
+ // logic [2:0] core_arsize ;
+ // logic [7:0] core_arlen ;
+ // logic [UW-1:0] core_aruser ;
+ // logic [IW-1:0] core_arid ;
+ // logic core_arlock ;
+ // logic core_rready ;
+ // Variables within the fuse_ctrl_core_axi_read_in_responder_struct:
+ // logic [AW-1:0] core_araddr ;
+ // logic core_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_arburst ;
+ // logic [2:0] core_arsize ;
+ // logic [7:0] core_arlen ;
+ // logic [UW-1:0] core_aruser ;
+ // logic [IW-1:0] core_arid ;
+ // logic core_arlock ;
+ // logic core_rready ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = araddr_i; // [AW-1:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arsize_i; // [2:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arlen_i; // [7:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = aruser_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arid_i; // [IW-1:0]
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arlock_i; //
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = arvalid_i; //
+ // fuse_ctrl_core_axi_read_in_responder_struct.xyz = rready_i; //
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_core_axi_read_in_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_core_axi_read_in_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_if.sv
new file mode 100644
index 0000000..c14953d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_if.sv
@@ -0,0 +1,123 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_core_axi_read_in interface signals.
+// It is instantiated once per fuse_ctrl_core_axi_read_in bus. Bus Functional Models,
+// BFM's named fuse_ctrl_core_axi_read_in_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_core_axi_read_in_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.araddr), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arburst), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arsize), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arlen), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.aruser), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arid), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arlock), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.arvalid), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_read_in_bus.rready), // Agent output
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+
+interface fuse_ctrl_core_axi_read_in_if #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [AW-1:0] araddr,
+ inout tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst,
+ inout tri [2:0] arsize,
+ inout tri [7:0] arlen,
+ inout tri [UW-1:0] aruser,
+ inout tri [IW-1:0] arid,
+ inout tri arlock,
+ inout tri arvalid,
+ inout tri rready
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input araddr,
+ input arburst,
+ input arsize,
+ input arlen,
+ input aruser,
+ input arid,
+ input arlock,
+ input arvalid,
+ input rready
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ output araddr,
+ output arburst,
+ output arsize,
+ output arlen,
+ output aruser,
+ output arid,
+ output arlock,
+ output arvalid,
+ output rready
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ input araddr,
+ input arburst,
+ input arsize,
+ input arlen,
+ input aruser,
+ input arid,
+ input arlock,
+ input arvalid,
+ input rready
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_macros.svh
new file mode 100644
index 0000000..4ada88f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_macros.svh
@@ -0,0 +1,207 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_core_axi_read_in package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_core_axi_read_in_configuration class.
+//
+ `define fuse_ctrl_core_axi_read_in_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_core_axi_read_in_configuration_s;
+
+ `define fuse_ctrl_core_axi_read_in_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_in_configuration_s to_struct();\
+ fuse_ctrl_core_axi_read_in_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_core_axi_read_in_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_in_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_core_axi_read_in_configuration_s fuse_ctrl_core_axi_read_in_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_core_axi_read_in_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_core_axi_read_in_transaction class.
+//
+ `define fuse_ctrl_core_axi_read_in_MONITOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_araddr ; \
+ logic core_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_arburst ; \
+ logic [2:0] core_arsize ; \
+ logic [7:0] core_arlen ; \
+ logic [UW-1:0] core_aruser ; \
+ logic [IW-1:0] core_arid ; \
+ logic core_arlock ; \
+ logic core_rready ; \
+ } fuse_ctrl_core_axi_read_in_monitor_s;
+
+ `define fuse_ctrl_core_axi_read_in_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_in_monitor_s to_monitor_struct();\
+ fuse_ctrl_core_axi_read_in_monitor_struct = \
+ { \
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ };\
+ return ( fuse_ctrl_core_axi_read_in_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_core_axi_read_in_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_core_axi_read_in_monitor_s fuse_ctrl_core_axi_read_in_monitor_struct);\
+ {\
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ } = fuse_ctrl_core_axi_read_in_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_core_axi_read_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_read_in_INITIATOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_araddr ; \
+ logic core_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_arburst ; \
+ logic [2:0] core_arsize ; \
+ logic [7:0] core_arlen ; \
+ logic [UW-1:0] core_aruser ; \
+ logic [IW-1:0] core_arid ; \
+ logic core_arlock ; \
+ logic core_rready ; \
+ } fuse_ctrl_core_axi_read_in_initiator_s;
+
+ `define fuse_ctrl_core_axi_read_in_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_in_initiator_s to_initiator_struct();\
+ fuse_ctrl_core_axi_read_in_initiator_struct = \
+ {\
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ };\
+ return ( fuse_ctrl_core_axi_read_in_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_in_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_core_axi_read_in_initiator_s fuse_ctrl_core_axi_read_in_initiator_struct);\
+ {\
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ } = fuse_ctrl_core_axi_read_in_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_core_axi_read_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_read_in_RESPONDER_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_araddr ; \
+ logic core_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_arburst ; \
+ logic [2:0] core_arsize ; \
+ logic [7:0] core_arlen ; \
+ logic [UW-1:0] core_aruser ; \
+ logic [IW-1:0] core_arid ; \
+ logic core_arlock ; \
+ logic core_rready ; \
+ } fuse_ctrl_core_axi_read_in_responder_s;
+
+ `define fuse_ctrl_core_axi_read_in_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_in_responder_s to_responder_struct();\
+ fuse_ctrl_core_axi_read_in_responder_struct = \
+ {\
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ };\
+ return ( fuse_ctrl_core_axi_read_in_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_in_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_core_axi_read_in_responder_s fuse_ctrl_core_axi_read_in_responder_struct);\
+ {\
+ this.core_araddr , \
+ this.core_arvalid , \
+ this.core_arburst , \
+ this.core_arsize , \
+ this.core_arlen , \
+ this.core_aruser , \
+ this.core_arid , \
+ this.core_arlock , \
+ this.core_rready \
+ } = fuse_ctrl_core_axi_read_in_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor.svh
new file mode 100644
index 0000000..eab0f2f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_core_axi_read_in transactions observed by the
+// fuse_ctrl_core_axi_read_in monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_monitor #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_read_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_in_monitor #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_core_axi_read_in_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_core_axi_read_in_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_core_axi_read_in_monitor_s fuse_ctrl_core_axi_read_in_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_core_axi_read_in_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
new file mode 100644
index 0000000..9819fd5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_monitor_bfm.sv
@@ -0,0 +1,230 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_core_axi_read_in signal monitoring.
+// It is accessed by the uvm fuse_ctrl_core_axi_read_in monitor through a virtual
+// interface handle in the fuse_ctrl_core_axi_read_in configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_core_axi_read_in_if.
+//
+// Input signals from the fuse_ctrl_core_axi_read_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_core_axi_read_in bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_in_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_read_in_macros.svh"
+
+
+interface fuse_ctrl_core_axi_read_in_monitor_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ ( fuse_ctrl_core_axi_read_in_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_read_in_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_core_axi_read_in_MONITOR_STRUCT
+ fuse_ctrl_core_axi_read_in_monitor_s fuse_ctrl_core_axi_read_in_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_core_axi_read_in_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [AW-1:0] araddr_i;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst_i;
+ tri [2:0] arsize_i;
+ tri [7:0] arlen_i;
+ tri [UW-1:0] aruser_i;
+ tri [IW-1:0] arid_i;
+ tri arlock_i;
+ tri arvalid_i;
+ tri rready_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign araddr_i = bus.araddr;
+ assign arburst_i = bus.arburst;
+ assign arsize_i = bus.arsize;
+ assign arlen_i = bus.arlen;
+ assign aruser_i = bus.aruser;
+ assign arid_i = bus.arid;
+ assign arlock_i = bus.arlock;
+ assign arvalid_i = bus.arvalid;
+ assign rready_i = bus.rready;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_core_axi_read_in_pkg::fuse_ctrl_core_axi_read_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_core_axi_read_in_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_core_axi_read_in_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_core_axi_read_in_configuration_s fuse_ctrl_core_axi_read_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_read_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_core_axi_read_in_monitor_s fuse_ctrl_core_axi_read_in_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_araddr
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arvalid
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arburst
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arsize
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arlen
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_aruser
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arid
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_arlock
+ // // fuse_ctrl_core_axi_read_in_monitor_struct.core_rready
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = araddr_i; // [AW-1:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arsize_i; // [2:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arlen_i; // [7:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = aruser_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arid_i; // [IW-1:0]
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arlock_i; //
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = arvalid_i; //
+ // fuse_ctrl_core_axi_read_in_monitor_struct.xyz = rready_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_random_sequence.svh
new file mode 100644
index 0000000..790d7a8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_core_axi_read_in transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_core_axi_read_in_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_random_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_read_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in_random_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_core_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_core_axi_read_in_random_sequence::body()-fuse_ctrl_core_axi_read_in_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_core_axi_read_in_driver_bfm via the sequencer and fuse_ctrl_core_axi_read_in_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_core_axi_read_in_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_responder_sequence.svh
new file mode 100644
index 0000000..9e72dab
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_responder_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_read_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in_responder_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_core_axi_read_in_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_core_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_sequence_base.svh
new file mode 100644
index 0000000..efaac03
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_sequence_base #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .RSP(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in_sequence_base #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // variables
+ typedef fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_read_in_transaction_req_t;
+ fuse_ctrl_core_axi_read_in_transaction_req_t req;
+ typedef fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_read_in_transaction_rsp_t;
+ fuse_ctrl_core_axi_read_in_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_core_axi_read_in_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_core_axi_read_in_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction.svh
new file mode 100644
index 0000000..440d724
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction.svh
@@ -0,0 +1,239 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_core_axi_read_in
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_transaction #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_in_transaction #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ rand logic [AW-1:0] core_araddr ;
+ logic core_arvalid ;
+ logic [$bits(axi_pkg::axi_burst_e)] core_arburst ;
+ logic [2:0] core_arsize ;
+ logic [7:0] core_arlen ;
+ logic [UW-1:0] core_aruser ;
+ logic [IW-1:0] core_arid ;
+ logic core_arlock ;
+ logic core_rready ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_core_axi_read_in_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_core_axi_read_in_monitor and fuse_ctrl_core_axi_read_in_monitor_bfm
+ // This struct is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_MONITOR_STRUCT
+ fuse_ctrl_core_axi_read_in_monitor_s fuse_ctrl_core_axi_read_in_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_in_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_in_monitor_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_in_initiator_s fuse_ctrl_core_axi_read_in_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_in_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_in_initiator_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_core_axi_read_in_driver and fuse_ctrl_core_axi_read_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_read_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_in_responder_s fuse_ctrl_core_axi_read_in_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_in_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_in_responder_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_in_macros.svh
+ `fuse_ctrl_core_axi_read_in_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("core_araddr:0x%x core_arvalid:0x%x core_arburst:0x%x core_arsize:0x%x core_arlen:0x%x core_aruser:0x%x core_arid:0x%x core_arlock:0x%x core_rready:0x%x ",core_araddr,core_arvalid,core_arburst,core_arsize,core_arlen,core_aruser,core_arid,core_arlock,core_rready);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.core_araddr = RHS.core_araddr;
+ this.core_arvalid = RHS.core_arvalid;
+ this.core_arburst = RHS.core_arburst;
+ this.core_arsize = RHS.core_arsize;
+ this.core_arlen = RHS.core_arlen;
+ this.core_aruser = RHS.core_aruser;
+ this.core_arid = RHS.core_arid;
+ this.core_arlock = RHS.core_arlock;
+ this.core_rready = RHS.core_rready;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_core_axi_read_in_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,core_araddr,"core_araddr");
+ $add_attribute(transaction_view_h,core_arvalid,"core_arvalid");
+ $add_attribute(transaction_view_h,core_arburst,"core_arburst");
+ $add_attribute(transaction_view_h,core_arsize,"core_arsize");
+ $add_attribute(transaction_view_h,core_arlen,"core_arlen");
+ $add_attribute(transaction_view_h,core_aruser,"core_aruser");
+ $add_attribute(transaction_view_h,core_arid,"core_arid");
+ $add_attribute(transaction_view_h,core_arlock,"core_arlock");
+ $add_attribute(transaction_view_h,core_rready,"core_rready");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction_coverage.svh
new file mode 100644
index 0000000..2a3ba75
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_transaction_coverage.svh
@@ -0,0 +1,107 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_core_axi_read_in transaction information using
+// a covergroup named fuse_ctrl_core_axi_read_in_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_in_transaction_coverage #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_subscriber #(.T(fuse_ctrl_core_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_in_transaction_coverage #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_core_axi_read_in_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ core_araddr: coverpoint coverage_trans.core_araddr;
+ core_arvalid: coverpoint coverage_trans.core_arvalid;
+ core_arburst: coverpoint coverage_trans.core_arburst;
+ core_arsize: coverpoint coverage_trans.core_arsize;
+ core_arlen: coverpoint coverage_trans.core_arlen;
+ core_aruser: coverpoint coverage_trans.core_aruser;
+ core_arid: coverpoint coverage_trans.core_arid;
+ core_arlock: coverpoint coverage_trans.core_arlock;
+ core_rready: coverpoint coverage_trans.core_rready;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_core_axi_read_in_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_core_axi_read_in_transaction_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_read_in_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_core_axi_read_in_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/src/fuse_ctrl_core_axi_read_in_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/yaml/fuse_ctrl_core_axi_read_in_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/yaml/fuse_ctrl_core_axi_read_in_interface.yaml
new file mode 100644
index 0000000..85b8443
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_in_pkg/yaml/fuse_ctrl_core_axi_read_in_interface.yaml
@@ -0,0 +1,121 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_core_axi_read_in:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+ ports:
+ - dir: output
+ name: araddr
+ reset_value: '''bz'
+ width: '[''AW'']'
+ - dir: output
+ name: arburst
+ reset_value: '''bz'
+ width: '[''$bits(axi_pkg::axi_burst_e)'']'
+ - dir: output
+ name: arsize
+ reset_value: '''bz'
+ width: '3'
+ - dir: output
+ name: arlen
+ reset_value: '''bz'
+ width: '8'
+ - dir: output
+ name: aruser
+ reset_value: '''bz'
+ width: '[''UW'']'
+ - dir: output
+ name: arid
+ reset_value: '''bz'
+ width: '[''IW'']'
+ - dir: output
+ name: arlock
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: arvalid
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: rready
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'True'
+ name: core_araddr
+ type: logic [AW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arvalid
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arsize
+ type: logic [2:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arlen
+ type: logic [7:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_aruser
+ type: logic [UW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arid
+ type: logic [IW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_arlock
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_rready
+ type: logic
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.project
new file mode 100644
index 0000000..23723dd
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_core_axi_read_out_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.svproject
new file mode 100644
index 0000000..b74d826
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/Makefile
new file mode 100644
index 0000000..673e00d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_core_axi_read_out interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_core_axi_read_out_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f
+
+fuse_ctrl_core_axi_read_out_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f
+
+fuse_ctrl_core_axi_read_out_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_xrtl.f
+
+COMP_fuse_ctrl_core_axi_read_out_PKG_TGT_0 = q_comp_fuse_ctrl_core_axi_read_out_pkg
+COMP_fuse_ctrl_core_axi_read_out_PKG_TGT_1 = v_comp_fuse_ctrl_core_axi_read_out_pkg
+COMP_fuse_ctrl_core_axi_read_out_PKG_TGT = $(COMP_fuse_ctrl_core_axi_read_out_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_core_axi_read_out_pkg: $(COMP_fuse_ctrl_core_axi_read_out_PKG_TGT)
+
+q_comp_fuse_ctrl_core_axi_read_out_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG_XRTL)
+
+v_comp_fuse_ctrl_core_axi_read_out_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_core_axi_read_out_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_core_axi_read_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_read_out_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_core_axi_read_out_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_out_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_out_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_out_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_read_out_pkg += -I$(fuse_ctrl_core_axi_read_out_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_read_out_pkg += $(fuse_ctrl_core_axi_read_out_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_core_axi_read_out_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_core_axi_read_out_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_core_axi_read_out_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_out_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_core_axi_read_out_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_read_out_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/compile.do
new file mode 100644
index 0000000..5e6a9fd
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_core_axi_read_out interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out.compile
new file mode 100644
index 0000000..ad96a80
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_core_axi_read_out_hvl.compile
+ - fuse_ctrl_core_axi_read_out_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_bfm.vinfo
new file mode 100644
index 0000000..03fc49a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_core_axi_read_out_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_core_axi_read_out_if.sv
+src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
+src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_common.compile
new file mode 100644
index 0000000..84d4f2e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_core_axi_read_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f
new file mode 100644
index 0000000..2debd1c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f
new file mode 100644
index 0000000..8e9b75a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_xrtl.f
new file mode 100644
index 0000000..4b0eaa2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hdl.compile
new file mode 100644
index 0000000..5b16e75
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_core_axi_read_out_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_core_axi_read_out_if.sv
+ - src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
+ - src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hvl.compile
new file mode 100644
index 0000000..a240210
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_core_axi_read_out_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_core_axi_read_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.sv
new file mode 100644
index 0000000..d297db4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_read_out_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_core_axi_read_out_macros.svh"
+
+ export fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_core_axi_read_out_typedefs.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_transaction.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_out_configuration.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_driver.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_monitor.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_out_transaction_coverage.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_sequence_base.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_random_sequence.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_out_responder_sequence.svh"
+ `include "src/fuse_ctrl_core_axi_read_out2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_core_axi_read_out_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo
new file mode 100644
index 0000000..50e86c0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_core_axi_read_out_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_core_axi_read_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.sv
new file mode 100644
index 0000000..0e4cd58
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_read_out_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_core_axi_read_out_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_core_axi_read_out_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.vinfo
new file mode 100644
index 0000000..b7569b9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_core_axi_read_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_sve.F
new file mode 100644
index 0000000..531457d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_read_out_pkg/fuse_ctrl_core_axi_read_out_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out2reg_adapter.svh
new file mode 100644
index 0000000..125c5be
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_core_axi_read_out interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out2reg_adapter #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out2reg_adapter #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_core_axi_read_out2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h = fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_core_axi_read_out2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_agent.svh
new file mode 100644
index 0000000..bada90f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_agent #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .DRIVER_T(fuse_ctrl_core_axi_read_out_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_T(fuse_ctrl_core_axi_read_out_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .COVERAGE_T(fuse_ctrl_core_axi_read_out_transaction_coverage #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_out_agent #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_configuration.svh
new file mode 100644
index 0000000..6f61e3b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_core_axi_read_out agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_configuration #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_core_axi_read_out_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_core_axi_read_out_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out_configuration #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_core_axi_read_out_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_CONFIGURATION_STRUCT
+ fuse_ctrl_core_axi_read_out_configuration_s fuse_ctrl_core_axi_read_out_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_core_axi_read_out_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_out_configuration_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_core_axi_read_out_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_core_axi_read_out_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_core_axi_read_out_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_core_axi_read_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_core_axi_read_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_core_axi_read_out_configuration_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_read_out_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AW=%x DW=%x IW=%x UW=%x ", agent_path, interface_name, AW ,DW ,IW ,UW ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_core_axi_read_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver.svh
new file mode 100644
index 0000000..e99d125
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_driver #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_read_out_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .REQ(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .RSP(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_out_driver #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_core_axi_read_out_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+`fuse_ctrl_core_axi_read_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_out_initiator_s fuse_ctrl_core_axi_read_out_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+`fuse_ctrl_core_axi_read_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_out_responder_s fuse_ctrl_core_axi_read_out_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_core_axi_read_out_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_core_axi_read_out_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_core_axi_read_out_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_core_axi_read_out_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
new file mode 100644
index 0000000..1f8fb45
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_driver_bfm.sv
@@ -0,0 +1,350 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_core_axi_read_out signal driving. It is
+// accessed by the uvm fuse_ctrl_core_axi_read_out driver through a virtual interface
+// handle in the fuse_ctrl_core_axi_read_out configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_core_axi_read_out_if.
+//
+// Input signals from the fuse_ctrl_core_axi_read_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_core_axi_read_out_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_read_out_macros.svh"
+
+interface fuse_ctrl_core_axi_read_out_driver_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ (fuse_ctrl_core_axi_read_out_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_read_out_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+ tri arready_i;
+ reg arready_o = 'bz;
+ tri [DW-1:0] rdata_i;
+ reg [DW-1:0] rdata_o = 'bz;
+ tri rresp_i;
+ reg rresp_o = 'bz;
+ tri rid_i;
+ reg rid_o = 'bz;
+ tri rlast_i;
+ reg rlast_o = 'bz;
+ tri rvalid_i;
+ reg rvalid_o = 'bz;
+
+ // INITIATOR mode output signals
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+ assign arready_i = bus.arready;
+ assign bus.arready = (initiator_responder == RESPONDER) ? arready_o : 'bz;
+ assign rdata_i = bus.rdata;
+ assign bus.rdata = (initiator_responder == RESPONDER) ? rdata_o : 'bz;
+ assign rresp_i = bus.rresp;
+ assign bus.rresp = (initiator_responder == RESPONDER) ? rresp_o : 'bz;
+ assign rid_i = bus.rid;
+ assign bus.rid = (initiator_responder == RESPONDER) ? rid_o : 'bz;
+ assign rlast_i = bus.rlast;
+ assign bus.rlast = (initiator_responder == RESPONDER) ? rlast_o : 'bz;
+ assign rvalid_i = bus.rvalid;
+ assign bus.rvalid = (initiator_responder == RESPONDER) ? rvalid_o : 'bz;
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_core_axi_read_out_pkg::fuse_ctrl_core_axi_read_out_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_core_axi_read_out_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_core_axi_read_out_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_core_axi_read_out_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+ `fuse_ctrl_core_axi_read_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_out_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+ `fuse_ctrl_core_axi_read_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_out_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ arready_o <= 'bz;
+ rdata_o <= 'bz;
+ rresp_o <= 'bz;
+ rid_o <= 'bz;
+ rlast_o <= 'bz;
+ rvalid_o <= 'bz;
+ // INITIATOR mode output signals
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_core_axi_read_out_configuration_s fuse_ctrl_core_axi_read_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_read_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_core_axi_read_out_initiator_s fuse_ctrl_core_axi_read_out_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_core_axi_read_out_responder_s fuse_ctrl_core_axi_read_out_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_core_axi_read_out_initiator_struct:
+ // logic core_arready ;
+ // logic [DW-1:0] core_rdata ;
+ // axi_pkg::axi_burst_e core_rresp ;
+ // logic [IW-1:0] core_rid ;
+ // logic core_rlast ;
+ // logic core_rvalid ;
+ // Members within the fuse_ctrl_core_axi_read_out_responder_struct:
+ // logic core_arready ;
+ // logic [DW-1:0] core_rdata ;
+ // axi_pkg::axi_burst_e core_rresp ;
+ // logic [IW-1:0] core_rid ;
+ // logic core_rlast ;
+ // logic core_rvalid ;
+ initiator_struct = fuse_ctrl_core_axi_read_out_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = arready_i; //
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = rdata_i; // [DW-1:0]
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = rresp_i; //
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = rid_i; //
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = rlast_i; //
+ // fuse_ctrl_core_axi_read_out_responder_struct.xyz = rvalid_i; //
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_core_axi_read_out_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_core_axi_read_out_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_core_axi_read_out_initiator_s fuse_ctrl_core_axi_read_out_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_core_axi_read_out_responder_s fuse_ctrl_core_axi_read_out_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_core_axi_read_out_initiator_struct:
+ // logic core_arready ;
+ // logic [DW-1:0] core_rdata ;
+ // axi_pkg::axi_burst_e core_rresp ;
+ // logic [IW-1:0] core_rid ;
+ // logic core_rlast ;
+ // logic core_rvalid ;
+ // Variables within the fuse_ctrl_core_axi_read_out_responder_struct:
+ // logic core_arready ;
+ // logic [DW-1:0] core_rdata ;
+ // axi_pkg::axi_burst_e core_rresp ;
+ // logic [IW-1:0] core_rid ;
+ // logic core_rlast ;
+ // logic core_rvalid ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // arready_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; //
+ // rdata_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; // [DW-1:0]
+ // rresp_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; //
+ // rid_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; //
+ // rlast_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; //
+ // rvalid_o <= fuse_ctrl_core_axi_read_out_initiator_struct.xyz; //
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_core_axi_read_out_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_core_axi_read_out_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_if.sv
new file mode 100644
index 0000000..7cc1b50
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_if.sv
@@ -0,0 +1,108 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_core_axi_read_out interface signals.
+// It is instantiated once per fuse_ctrl_core_axi_read_out bus. Bus Functional Models,
+// BFM's named fuse_ctrl_core_axi_read_out_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_core_axi_read_out_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.arready), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.rdata), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.rresp), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.rid), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.rlast), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_read_out_bus.rvalid), // Agent input
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+
+interface fuse_ctrl_core_axi_read_out_if #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri arready,
+ inout tri [DW-1:0] rdata,
+ inout tri rresp,
+ inout tri rid,
+ inout tri rlast,
+ inout tri rvalid
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input arready,
+ input rdata,
+ input rresp,
+ input rid,
+ input rlast,
+ input rvalid
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ input arready,
+ input rdata,
+ input rresp,
+ input rid,
+ input rlast,
+ input rvalid
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ output arready,
+ output rdata,
+ output rresp,
+ output rid,
+ output rlast,
+ output rvalid
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_macros.svh
new file mode 100644
index 0000000..2742dc0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_macros.svh
@@ -0,0 +1,180 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_core_axi_read_out package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_core_axi_read_out_configuration class.
+//
+ `define fuse_ctrl_core_axi_read_out_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_core_axi_read_out_configuration_s;
+
+ `define fuse_ctrl_core_axi_read_out_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_out_configuration_s to_struct();\
+ fuse_ctrl_core_axi_read_out_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_core_axi_read_out_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_out_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_core_axi_read_out_configuration_s fuse_ctrl_core_axi_read_out_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_core_axi_read_out_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_core_axi_read_out_transaction class.
+//
+ `define fuse_ctrl_core_axi_read_out_MONITOR_STRUCT typedef struct packed { \
+ logic core_arready ; \
+ logic [DW-1:0] core_rdata ; \
+ axi_pkg::axi_burst_e core_rresp ; \
+ logic [IW-1:0] core_rid ; \
+ logic core_rlast ; \
+ logic core_rvalid ; \
+ } fuse_ctrl_core_axi_read_out_monitor_s;
+
+ `define fuse_ctrl_core_axi_read_out_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_out_monitor_s to_monitor_struct();\
+ fuse_ctrl_core_axi_read_out_monitor_struct = \
+ { \
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ };\
+ return ( fuse_ctrl_core_axi_read_out_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_core_axi_read_out_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_core_axi_read_out_monitor_s fuse_ctrl_core_axi_read_out_monitor_struct);\
+ {\
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ } = fuse_ctrl_core_axi_read_out_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_core_axi_read_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_read_out_INITIATOR_STRUCT typedef struct packed { \
+ logic core_arready ; \
+ logic [DW-1:0] core_rdata ; \
+ axi_pkg::axi_burst_e core_rresp ; \
+ logic [IW-1:0] core_rid ; \
+ logic core_rlast ; \
+ logic core_rvalid ; \
+ } fuse_ctrl_core_axi_read_out_initiator_s;
+
+ `define fuse_ctrl_core_axi_read_out_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_out_initiator_s to_initiator_struct();\
+ fuse_ctrl_core_axi_read_out_initiator_struct = \
+ {\
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ };\
+ return ( fuse_ctrl_core_axi_read_out_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_out_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_core_axi_read_out_initiator_s fuse_ctrl_core_axi_read_out_initiator_struct);\
+ {\
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ } = fuse_ctrl_core_axi_read_out_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_core_axi_read_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_read_out_RESPONDER_STRUCT typedef struct packed { \
+ logic core_arready ; \
+ logic [DW-1:0] core_rdata ; \
+ axi_pkg::axi_burst_e core_rresp ; \
+ logic [IW-1:0] core_rid ; \
+ logic core_rlast ; \
+ logic core_rvalid ; \
+ } fuse_ctrl_core_axi_read_out_responder_s;
+
+ `define fuse_ctrl_core_axi_read_out_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_read_out_responder_s to_responder_struct();\
+ fuse_ctrl_core_axi_read_out_responder_struct = \
+ {\
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ };\
+ return ( fuse_ctrl_core_axi_read_out_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_read_out_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_core_axi_read_out_responder_s fuse_ctrl_core_axi_read_out_responder_struct);\
+ {\
+ this.core_arready , \
+ this.core_rdata , \
+ this.core_rresp , \
+ this.core_rid , \
+ this.core_rlast , \
+ this.core_rvalid \
+ } = fuse_ctrl_core_axi_read_out_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor.svh
new file mode 100644
index 0000000..7320d3d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_core_axi_read_out transactions observed by the
+// fuse_ctrl_core_axi_read_out monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_monitor #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_read_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_read_out_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_out_monitor #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_core_axi_read_out_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_core_axi_read_out_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_core_axi_read_out_monitor_s fuse_ctrl_core_axi_read_out_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_core_axi_read_out_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
new file mode 100644
index 0000000..f2b126d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_monitor_bfm.sv
@@ -0,0 +1,218 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_core_axi_read_out signal monitoring.
+// It is accessed by the uvm fuse_ctrl_core_axi_read_out monitor through a virtual
+// interface handle in the fuse_ctrl_core_axi_read_out configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_core_axi_read_out_if.
+//
+// Input signals from the fuse_ctrl_core_axi_read_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_core_axi_read_out bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_read_out_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_read_out_macros.svh"
+
+
+interface fuse_ctrl_core_axi_read_out_monitor_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ ( fuse_ctrl_core_axi_read_out_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_read_out_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_core_axi_read_out_MONITOR_STRUCT
+ fuse_ctrl_core_axi_read_out_monitor_s fuse_ctrl_core_axi_read_out_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_core_axi_read_out_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri arready_i;
+ tri [DW-1:0] rdata_i;
+ tri rresp_i;
+ tri rid_i;
+ tri rlast_i;
+ tri rvalid_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign arready_i = bus.arready;
+ assign rdata_i = bus.rdata;
+ assign rresp_i = bus.rresp;
+ assign rid_i = bus.rid;
+ assign rlast_i = bus.rlast;
+ assign rvalid_i = bus.rvalid;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_core_axi_read_out_pkg::fuse_ctrl_core_axi_read_out_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_core_axi_read_out_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_core_axi_read_out_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_core_axi_read_out_configuration_s fuse_ctrl_core_axi_read_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_read_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_core_axi_read_out_monitor_s fuse_ctrl_core_axi_read_out_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_arready
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_rdata
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_rresp
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_rid
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_rlast
+ // // fuse_ctrl_core_axi_read_out_monitor_struct.core_rvalid
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = arready_i; //
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = rdata_i; // [DW-1:0]
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = rresp_i; //
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = rid_i; //
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = rlast_i; //
+ // fuse_ctrl_core_axi_read_out_monitor_struct.xyz = rvalid_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_random_sequence.svh
new file mode 100644
index 0000000..cb48c28
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_core_axi_read_out transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_core_axi_read_out_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_random_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_read_out_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out_random_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_core_axi_read_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_core_axi_read_out_random_sequence::body()-fuse_ctrl_core_axi_read_out_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_core_axi_read_out_driver_bfm via the sequencer and fuse_ctrl_core_axi_read_out_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_core_axi_read_out_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_responder_sequence.svh
new file mode 100644
index 0000000..ffe88ce
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_responder_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_read_out_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out_responder_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_core_axi_read_out_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_core_axi_read_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_sequence_base.svh
new file mode 100644
index 0000000..be33441
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_sequence_base #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .RSP(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out_sequence_base #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // variables
+ typedef fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_read_out_transaction_req_t;
+ fuse_ctrl_core_axi_read_out_transaction_req_t req;
+ typedef fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_read_out_transaction_rsp_t;
+ fuse_ctrl_core_axi_read_out_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_core_axi_read_out_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_core_axi_read_out_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction.svh
new file mode 100644
index 0000000..d19ec49
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction.svh
@@ -0,0 +1,236 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_core_axi_read_out
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_transaction #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_read_out_transaction #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ logic core_arready ;
+ logic [DW-1:0] core_rdata ;
+ axi_pkg::axi_burst_e core_rresp ;
+ logic [IW-1:0] core_rid ;
+ logic core_rlast ;
+ logic core_rvalid ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_core_axi_read_out_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_core_axi_read_out_monitor and fuse_ctrl_core_axi_read_out_monitor_bfm
+ // This struct is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_MONITOR_STRUCT
+ fuse_ctrl_core_axi_read_out_monitor_s fuse_ctrl_core_axi_read_out_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_out_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_out_monitor_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_read_out_initiator_s fuse_ctrl_core_axi_read_out_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_out_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_out_initiator_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_core_axi_read_out_driver and fuse_ctrl_core_axi_read_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_read_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_read_out_responder_s fuse_ctrl_core_axi_read_out_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_read_out_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_read_out_responder_struct.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_read_out_macros.svh
+ `fuse_ctrl_core_axi_read_out_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("core_arready:0x%x core_rdata:0x%x core_rresp:0x%x core_rid:0x%x core_rlast:0x%x core_rvalid:0x%x ",core_arready,core_rdata,core_rresp,core_rid,core_rlast,core_rvalid);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ &&(this.core_arready == RHS.core_arready)
+ &&(this.core_rdata == RHS.core_rdata)
+ &&(this.core_rresp == RHS.core_rresp)
+ &&(this.core_rid == RHS.core_rid)
+ &&(this.core_rlast == RHS.core_rlast)
+ &&(this.core_rvalid == RHS.core_rvalid)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.core_arready = RHS.core_arready;
+ this.core_rdata = RHS.core_rdata;
+ this.core_rresp = RHS.core_rresp;
+ this.core_rid = RHS.core_rid;
+ this.core_rlast = RHS.core_rlast;
+ this.core_rvalid = RHS.core_rvalid;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_core_axi_read_out_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,core_arready,"core_arready");
+ $add_attribute(transaction_view_h,core_rdata,"core_rdata");
+ $add_attribute(transaction_view_h,core_rresp,"core_rresp");
+ $add_attribute(transaction_view_h,core_rid,"core_rid");
+ $add_attribute(transaction_view_h,core_rlast,"core_rlast");
+ $add_attribute(transaction_view_h,core_rvalid,"core_rvalid");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction_coverage.svh
new file mode 100644
index 0000000..602b9df
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_transaction_coverage.svh
@@ -0,0 +1,104 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_core_axi_read_out transaction information using
+// a covergroup named fuse_ctrl_core_axi_read_out_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_read_out_transaction_coverage #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_subscriber #(.T(fuse_ctrl_core_axi_read_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_read_out_transaction_coverage #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_core_axi_read_out_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ core_arready: coverpoint coverage_trans.core_arready;
+ core_rdata: coverpoint coverage_trans.core_rdata;
+ core_rresp: coverpoint coverage_trans.core_rresp;
+ core_rid: coverpoint coverage_trans.core_rid;
+ core_rlast: coverpoint coverage_trans.core_rlast;
+ core_rvalid: coverpoint coverage_trans.core_rvalid;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_core_axi_read_out_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_core_axi_read_out_transaction_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_read_out_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_core_axi_read_out_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/src/fuse_ctrl_core_axi_read_out_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/yaml/fuse_ctrl_core_axi_read_out_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/yaml/fuse_ctrl_core_axi_read_out_interface.yaml
new file mode 100644
index 0000000..9e2244b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_read_out_pkg/yaml/fuse_ctrl_core_axi_read_out_interface.yaml
@@ -0,0 +1,91 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_core_axi_read_out:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+ ports:
+ - dir: input
+ name: arready
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: rdata
+ reset_value: '''bz'
+ width: DW
+ - dir: input
+ name: rresp
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: rid
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: rlast
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: rvalid
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_arready
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_rdata
+ type: logic [DW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_rresp
+ type: axi_pkg::axi_burst_e
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_rid
+ type: logic [IW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_rlast
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_rvalid
+ type: logic
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.project
new file mode 100644
index 0000000..b26e81c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_core_axi_write_in_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.svproject
new file mode 100644
index 0000000..be11cb6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/Makefile
new file mode 100644
index 0000000..b9ea6af
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_core_axi_write_in interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_core_axi_write_in_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f
+
+fuse_ctrl_core_axi_write_in_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f
+
+fuse_ctrl_core_axi_write_in_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_xrtl.f
+
+COMP_fuse_ctrl_core_axi_write_in_PKG_TGT_0 = q_comp_fuse_ctrl_core_axi_write_in_pkg
+COMP_fuse_ctrl_core_axi_write_in_PKG_TGT_1 = v_comp_fuse_ctrl_core_axi_write_in_pkg
+COMP_fuse_ctrl_core_axi_write_in_PKG_TGT = $(COMP_fuse_ctrl_core_axi_write_in_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_core_axi_write_in_pkg: $(COMP_fuse_ctrl_core_axi_write_in_PKG_TGT)
+
+q_comp_fuse_ctrl_core_axi_write_in_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG_XRTL)
+
+v_comp_fuse_ctrl_core_axi_write_in_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_core_axi_write_in_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_core_axi_write_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_in_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_core_axi_write_in_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_in_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_in_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_in_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_write_in_pkg += -I$(fuse_ctrl_core_axi_write_in_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_write_in_pkg += $(fuse_ctrl_core_axi_write_in_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_core_axi_write_in_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_core_axi_write_in_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_core_axi_write_in_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_in_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_core_axi_write_in_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_in_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/compile.do
new file mode 100644
index 0000000..a2f727a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_core_axi_write_in interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in.compile
new file mode 100644
index 0000000..328de17
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_core_axi_write_in_hvl.compile
+ - fuse_ctrl_core_axi_write_in_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_bfm.vinfo
new file mode 100644
index 0000000..8580294
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_core_axi_write_in_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_core_axi_write_in_if.sv
+src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
+src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_common.compile
new file mode 100644
index 0000000..ebcb42c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_core_axi_write_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f
new file mode 100644
index 0000000..dcea9f3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f
new file mode 100644
index 0000000..0aa6cf4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_xrtl.f
new file mode 100644
index 0000000..9729a9f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hdl.compile
new file mode 100644
index 0000000..b28a2bd
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_core_axi_write_in_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_core_axi_write_in_if.sv
+ - src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
+ - src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hvl.compile
new file mode 100644
index 0000000..7801ce4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_core_axi_write_in_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_core_axi_write_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.sv
new file mode 100644
index 0000000..af90383
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_write_in_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_core_axi_write_in_macros.svh"
+
+ export fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_core_axi_write_in_typedefs.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_transaction.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_in_configuration.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_driver.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_monitor.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_in_transaction_coverage.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_sequence_base.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_random_sequence.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_in_responder_sequence.svh"
+ `include "src/fuse_ctrl_core_axi_write_in2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_in_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo
new file mode 100644
index 0000000..07d2c9a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_core_axi_write_in_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_core_axi_write_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.sv
new file mode 100644
index 0000000..48ee663
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_write_in_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_core_axi_write_in_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_core_axi_write_in_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.vinfo
new file mode 100644
index 0000000..5c56ef5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_core_axi_write_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_sve.F
new file mode 100644
index 0000000..24bdc9f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_in_pkg/fuse_ctrl_core_axi_write_in_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in2reg_adapter.svh
new file mode 100644
index 0000000..c7125cc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_core_axi_write_in interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in2reg_adapter #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in2reg_adapter #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_core_axi_write_in2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h = fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_core_axi_write_in2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_agent.svh
new file mode 100644
index 0000000..70333af
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_agent #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .DRIVER_T(fuse_ctrl_core_axi_write_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_T(fuse_ctrl_core_axi_write_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .COVERAGE_T(fuse_ctrl_core_axi_write_in_transaction_coverage #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_in_agent #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_configuration.svh
new file mode 100644
index 0000000..a8673e0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_core_axi_write_in agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_configuration #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_core_axi_write_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_core_axi_write_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in_configuration #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_core_axi_write_in_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_CONFIGURATION_STRUCT
+ fuse_ctrl_core_axi_write_in_configuration_s fuse_ctrl_core_axi_write_in_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_core_axi_write_in_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_in_configuration_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_core_axi_write_in_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_core_axi_write_in_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_core_axi_write_in_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_core_axi_write_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_core_axi_write_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_core_axi_write_in_configuration_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_write_in_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AW=%x DW=%x IW=%x UW=%x ", agent_path, interface_name, AW ,DW ,IW ,UW ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_core_axi_write_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver.svh
new file mode 100644
index 0000000..f5c3517
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_driver #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_write_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .REQ(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .RSP(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_in_driver #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_core_axi_write_in_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+`fuse_ctrl_core_axi_write_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_in_initiator_s fuse_ctrl_core_axi_write_in_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+`fuse_ctrl_core_axi_write_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_in_responder_s fuse_ctrl_core_axi_write_in_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_core_axi_write_in_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_core_axi_write_in_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_core_axi_write_in_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_core_axi_write_in_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
new file mode 100644
index 0000000..44ae1bb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_driver_bfm.sv
@@ -0,0 +1,427 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_core_axi_write_in signal driving. It is
+// accessed by the uvm fuse_ctrl_core_axi_write_in driver through a virtual interface
+// handle in the fuse_ctrl_core_axi_write_in configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_core_axi_write_in_if.
+//
+// Input signals from the fuse_ctrl_core_axi_write_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_core_axi_write_in_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_write_in_macros.svh"
+
+interface fuse_ctrl_core_axi_write_in_driver_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ (fuse_ctrl_core_axi_write_in_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_write_in_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+
+ // INITIATOR mode output signals
+ tri [AW-1:0] awaddr_i;
+ reg [AW-1:0] awaddr_o = 'bz;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] awburst_i;
+ reg [$bits(axi_pkg::axi_burst_e)-1:0] awburst_o = 'bz;
+ tri [2:0] awsize_i;
+ reg [2:0] awsize_o = 'bz;
+ tri [7:0] awlen_i;
+ reg [7:0] awlen_o = 'bz;
+ tri [UW-1:0] awuser_i;
+ reg [UW-1:0] awuser_o = 'bz;
+ tri [UW-1:0] awid_i;
+ reg [UW-1:0] awid_o = 'bz;
+ tri awlock_i;
+ reg awlock_o = 'bz;
+ tri awvalid_i;
+ reg awvalid_o = 'bz;
+ tri [DW-1:0] wdata_i;
+ reg [DW-1:0] wdata_o = 'bz;
+ tri [DW/8-1:0] wstrb_i;
+ reg [DW/8-1:0] wstrb_o = 'bz;
+ tri wvalid_i;
+ reg wvalid_o = 'bz;
+ tri wlast_i;
+ reg wlast_o = 'bz;
+ tri bready_i;
+ reg bready_o = 'bz;
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+ assign bus.awaddr = (initiator_responder == INITIATOR) ? awaddr_o : 'bz;
+ assign awaddr_i = bus.awaddr;
+ assign bus.awburst = (initiator_responder == INITIATOR) ? awburst_o : 'bz;
+ assign awburst_i = bus.awburst;
+ assign bus.awsize = (initiator_responder == INITIATOR) ? awsize_o : 'bz;
+ assign awsize_i = bus.awsize;
+ assign bus.awlen = (initiator_responder == INITIATOR) ? awlen_o : 'bz;
+ assign awlen_i = bus.awlen;
+ assign bus.awuser = (initiator_responder == INITIATOR) ? awuser_o : 'bz;
+ assign awuser_i = bus.awuser;
+ assign bus.awid = (initiator_responder == INITIATOR) ? awid_o : 'bz;
+ assign awid_i = bus.awid;
+ assign bus.awlock = (initiator_responder == INITIATOR) ? awlock_o : 'bz;
+ assign awlock_i = bus.awlock;
+ assign bus.awvalid = (initiator_responder == INITIATOR) ? awvalid_o : 'bz;
+ assign awvalid_i = bus.awvalid;
+ assign bus.wdata = (initiator_responder == INITIATOR) ? wdata_o : 'bz;
+ assign wdata_i = bus.wdata;
+ assign bus.wstrb = (initiator_responder == INITIATOR) ? wstrb_o : 'bz;
+ assign wstrb_i = bus.wstrb;
+ assign bus.wvalid = (initiator_responder == INITIATOR) ? wvalid_o : 'bz;
+ assign wvalid_i = bus.wvalid;
+ assign bus.wlast = (initiator_responder == INITIATOR) ? wlast_o : 'bz;
+ assign wlast_i = bus.wlast;
+ assign bus.bready = (initiator_responder == INITIATOR) ? bready_o : 'bz;
+ assign bready_i = bus.bready;
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_core_axi_write_in_pkg::fuse_ctrl_core_axi_write_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_core_axi_write_in_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_core_axi_write_in_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_core_axi_write_in_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+ `fuse_ctrl_core_axi_write_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_in_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+ `fuse_ctrl_core_axi_write_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_in_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ // INITIATOR mode output signals
+ awaddr_o <= 'bz;
+ awburst_o <= 'bz;
+ awsize_o <= 'bz;
+ awlen_o <= 'bz;
+ awuser_o <= 'bz;
+ awid_o <= 'bz;
+ awlock_o <= 'bz;
+ awvalid_o <= 'bz;
+ wdata_o <= 'bz;
+ wstrb_o <= 'bz;
+ wvalid_o <= 'bz;
+ wlast_o <= 'bz;
+ bready_o <= 'bz;
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_core_axi_write_in_configuration_s fuse_ctrl_core_axi_write_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_write_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_core_axi_write_in_initiator_s fuse_ctrl_core_axi_write_in_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_core_axi_write_in_responder_s fuse_ctrl_core_axi_write_in_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_core_axi_write_in_initiator_struct:
+ // logic [AW-1:0] core_awaddr ;
+ // logic core_awvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_awburst ;
+ // logic [2:0] core_awsize ;
+ // logic [7:0] core_awlen ;
+ // logic [UW-1:0] core_awuser ;
+ // logic [IW-1:0] core_awid ;
+ // logic core_awlock ;
+ // logic [DW-1:0] core_wdata ;
+ // logic [DW/8 - 1:0] core_wstrb ;
+ // logic core_wvalid ;
+ // logic core_wlast ;
+ // logic core_bready ;
+ // Members within the fuse_ctrl_core_axi_write_in_responder_struct:
+ // logic [AW-1:0] core_awaddr ;
+ // logic core_awvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_awburst ;
+ // logic [2:0] core_awsize ;
+ // logic [7:0] core_awlen ;
+ // logic [UW-1:0] core_awuser ;
+ // logic [IW-1:0] core_awid ;
+ // logic core_awlock ;
+ // logic [DW-1:0] core_wdata ;
+ // logic [DW/8 - 1:0] core_wstrb ;
+ // logic core_wvalid ;
+ // logic core_wlast ;
+ // logic core_bready ;
+ initiator_struct = fuse_ctrl_core_axi_write_in_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // awaddr_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [AW-1:0]
+ // awburst_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // awsize_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [2:0]
+ // awlen_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [7:0]
+ // awuser_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [UW-1:0]
+ // awid_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [UW-1:0]
+ // awlock_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; //
+ // awvalid_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; //
+ // wdata_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [DW-1:0]
+ // wstrb_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; // [DW/8-1:0]
+ // wvalid_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; //
+ // wlast_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; //
+ // bready_o <= fuse_ctrl_core_axi_write_in_initiator_struct.xyz; //
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_core_axi_write_in_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_core_axi_write_in_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_core_axi_write_in_initiator_s fuse_ctrl_core_axi_write_in_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_core_axi_write_in_responder_s fuse_ctrl_core_axi_write_in_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_core_axi_write_in_initiator_struct:
+ // logic [AW-1:0] core_awaddr ;
+ // logic core_awvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_awburst ;
+ // logic [2:0] core_awsize ;
+ // logic [7:0] core_awlen ;
+ // logic [UW-1:0] core_awuser ;
+ // logic [IW-1:0] core_awid ;
+ // logic core_awlock ;
+ // logic [DW-1:0] core_wdata ;
+ // logic [DW/8 - 1:0] core_wstrb ;
+ // logic core_wvalid ;
+ // logic core_wlast ;
+ // logic core_bready ;
+ // Variables within the fuse_ctrl_core_axi_write_in_responder_struct:
+ // logic [AW-1:0] core_awaddr ;
+ // logic core_awvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] core_awburst ;
+ // logic [2:0] core_awsize ;
+ // logic [7:0] core_awlen ;
+ // logic [UW-1:0] core_awuser ;
+ // logic [IW-1:0] core_awid ;
+ // logic core_awlock ;
+ // logic [DW-1:0] core_wdata ;
+ // logic [DW/8 - 1:0] core_wstrb ;
+ // logic core_wvalid ;
+ // logic core_wlast ;
+ // logic core_bready ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awaddr_i; // [AW-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awsize_i; // [2:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awlen_i; // [7:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awuser_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awid_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awlock_i; //
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = awvalid_i; //
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = wdata_i; // [DW-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = wstrb_i; // [DW/8-1:0]
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = wvalid_i; //
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = wlast_i; //
+ // fuse_ctrl_core_axi_write_in_responder_struct.xyz = bready_i; //
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_core_axi_write_in_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_core_axi_write_in_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_if.sv
new file mode 100644
index 0000000..b7e16e6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_if.sv
@@ -0,0 +1,143 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_core_axi_write_in interface signals.
+// It is instantiated once per fuse_ctrl_core_axi_write_in bus. Bus Functional Models,
+// BFM's named fuse_ctrl_core_axi_write_in_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_core_axi_write_in_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awaddr), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awburst), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awsize), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awlen), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awuser), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awid), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awlock), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.awvalid), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.wdata), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.wstrb), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.wvalid), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.wlast), // Agent output
+// .dut_signal_port(fuse_ctrl_core_axi_write_in_bus.bready), // Agent output
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+
+interface fuse_ctrl_core_axi_write_in_if #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [AW-1:0] awaddr,
+ inout tri [$bits(axi_pkg::axi_burst_e)-1:0] awburst,
+ inout tri [2:0] awsize,
+ inout tri [7:0] awlen,
+ inout tri [UW-1:0] awuser,
+ inout tri [UW-1:0] awid,
+ inout tri awlock,
+ inout tri awvalid,
+ inout tri [DW-1:0] wdata,
+ inout tri [DW/8-1:0] wstrb,
+ inout tri wvalid,
+ inout tri wlast,
+ inout tri bready
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input awaddr,
+ input awburst,
+ input awsize,
+ input awlen,
+ input awuser,
+ input awid,
+ input awlock,
+ input awvalid,
+ input wdata,
+ input wstrb,
+ input wvalid,
+ input wlast,
+ input bready
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ output awaddr,
+ output awburst,
+ output awsize,
+ output awlen,
+ output awuser,
+ output awid,
+ output awlock,
+ output awvalid,
+ output wdata,
+ output wstrb,
+ output wvalid,
+ output wlast,
+ output bready
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ input awaddr,
+ input awburst,
+ input awsize,
+ input awlen,
+ input awuser,
+ input awid,
+ input awlock,
+ input awvalid,
+ input wdata,
+ input wstrb,
+ input wvalid,
+ input wlast,
+ input bready
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_macros.svh
new file mode 100644
index 0000000..c925c15
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_macros.svh
@@ -0,0 +1,243 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_core_axi_write_in package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_core_axi_write_in_configuration class.
+//
+ `define fuse_ctrl_core_axi_write_in_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_core_axi_write_in_configuration_s;
+
+ `define fuse_ctrl_core_axi_write_in_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_in_configuration_s to_struct();\
+ fuse_ctrl_core_axi_write_in_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_core_axi_write_in_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_in_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_core_axi_write_in_configuration_s fuse_ctrl_core_axi_write_in_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_core_axi_write_in_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_core_axi_write_in_transaction class.
+//
+ `define fuse_ctrl_core_axi_write_in_MONITOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_awaddr ; \
+ logic core_awvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_awburst ; \
+ logic [2:0] core_awsize ; \
+ logic [7:0] core_awlen ; \
+ logic [UW-1:0] core_awuser ; \
+ logic [IW-1:0] core_awid ; \
+ logic core_awlock ; \
+ logic [DW-1:0] core_wdata ; \
+ logic [DW/8 - 1:0] core_wstrb ; \
+ logic core_wvalid ; \
+ logic core_wlast ; \
+ logic core_bready ; \
+ } fuse_ctrl_core_axi_write_in_monitor_s;
+
+ `define fuse_ctrl_core_axi_write_in_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_in_monitor_s to_monitor_struct();\
+ fuse_ctrl_core_axi_write_in_monitor_struct = \
+ { \
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ };\
+ return ( fuse_ctrl_core_axi_write_in_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_core_axi_write_in_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_core_axi_write_in_monitor_s fuse_ctrl_core_axi_write_in_monitor_struct);\
+ {\
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ } = fuse_ctrl_core_axi_write_in_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_core_axi_write_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_write_in_INITIATOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_awaddr ; \
+ logic core_awvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_awburst ; \
+ logic [2:0] core_awsize ; \
+ logic [7:0] core_awlen ; \
+ logic [UW-1:0] core_awuser ; \
+ logic [IW-1:0] core_awid ; \
+ logic core_awlock ; \
+ logic [DW-1:0] core_wdata ; \
+ logic [DW/8 - 1:0] core_wstrb ; \
+ logic core_wvalid ; \
+ logic core_wlast ; \
+ logic core_bready ; \
+ } fuse_ctrl_core_axi_write_in_initiator_s;
+
+ `define fuse_ctrl_core_axi_write_in_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_in_initiator_s to_initiator_struct();\
+ fuse_ctrl_core_axi_write_in_initiator_struct = \
+ {\
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ };\
+ return ( fuse_ctrl_core_axi_write_in_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_in_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_core_axi_write_in_initiator_s fuse_ctrl_core_axi_write_in_initiator_struct);\
+ {\
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ } = fuse_ctrl_core_axi_write_in_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_core_axi_write_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_write_in_RESPONDER_STRUCT typedef struct packed { \
+ logic [AW-1:0] core_awaddr ; \
+ logic core_awvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] core_awburst ; \
+ logic [2:0] core_awsize ; \
+ logic [7:0] core_awlen ; \
+ logic [UW-1:0] core_awuser ; \
+ logic [IW-1:0] core_awid ; \
+ logic core_awlock ; \
+ logic [DW-1:0] core_wdata ; \
+ logic [DW/8 - 1:0] core_wstrb ; \
+ logic core_wvalid ; \
+ logic core_wlast ; \
+ logic core_bready ; \
+ } fuse_ctrl_core_axi_write_in_responder_s;
+
+ `define fuse_ctrl_core_axi_write_in_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_in_responder_s to_responder_struct();\
+ fuse_ctrl_core_axi_write_in_responder_struct = \
+ {\
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ };\
+ return ( fuse_ctrl_core_axi_write_in_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_in_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_core_axi_write_in_responder_s fuse_ctrl_core_axi_write_in_responder_struct);\
+ {\
+ this.core_awaddr , \
+ this.core_awvalid , \
+ this.core_awburst , \
+ this.core_awsize , \
+ this.core_awlen , \
+ this.core_awuser , \
+ this.core_awid , \
+ this.core_awlock , \
+ this.core_wdata , \
+ this.core_wstrb , \
+ this.core_wvalid , \
+ this.core_wlast , \
+ this.core_bready \
+ } = fuse_ctrl_core_axi_write_in_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor.svh
new file mode 100644
index 0000000..f9196a4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_core_axi_write_in transactions observed by the
+// fuse_ctrl_core_axi_write_in monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_monitor #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_write_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_in_monitor #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_core_axi_write_in_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_core_axi_write_in_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_core_axi_write_in_monitor_s fuse_ctrl_core_axi_write_in_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_core_axi_write_in_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
new file mode 100644
index 0000000..b7d40a4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_monitor_bfm.sv
@@ -0,0 +1,246 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_core_axi_write_in signal monitoring.
+// It is accessed by the uvm fuse_ctrl_core_axi_write_in monitor through a virtual
+// interface handle in the fuse_ctrl_core_axi_write_in configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_core_axi_write_in_if.
+//
+// Input signals from the fuse_ctrl_core_axi_write_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_core_axi_write_in bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_in_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_write_in_macros.svh"
+
+
+interface fuse_ctrl_core_axi_write_in_monitor_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ ( fuse_ctrl_core_axi_write_in_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_write_in_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_core_axi_write_in_MONITOR_STRUCT
+ fuse_ctrl_core_axi_write_in_monitor_s fuse_ctrl_core_axi_write_in_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_core_axi_write_in_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [AW-1:0] awaddr_i;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] awburst_i;
+ tri [2:0] awsize_i;
+ tri [7:0] awlen_i;
+ tri [UW-1:0] awuser_i;
+ tri [UW-1:0] awid_i;
+ tri awlock_i;
+ tri awvalid_i;
+ tri [DW-1:0] wdata_i;
+ tri [DW/8-1:0] wstrb_i;
+ tri wvalid_i;
+ tri wlast_i;
+ tri bready_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign awaddr_i = bus.awaddr;
+ assign awburst_i = bus.awburst;
+ assign awsize_i = bus.awsize;
+ assign awlen_i = bus.awlen;
+ assign awuser_i = bus.awuser;
+ assign awid_i = bus.awid;
+ assign awlock_i = bus.awlock;
+ assign awvalid_i = bus.awvalid;
+ assign wdata_i = bus.wdata;
+ assign wstrb_i = bus.wstrb;
+ assign wvalid_i = bus.wvalid;
+ assign wlast_i = bus.wlast;
+ assign bready_i = bus.bready;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_core_axi_write_in_pkg::fuse_ctrl_core_axi_write_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_core_axi_write_in_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_core_axi_write_in_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_core_axi_write_in_configuration_s fuse_ctrl_core_axi_write_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_write_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_core_axi_write_in_monitor_s fuse_ctrl_core_axi_write_in_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awaddr
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awvalid
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awburst
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awsize
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awlen
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awuser
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awid
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_awlock
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_wdata
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_wstrb
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_wvalid
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_wlast
+ // // fuse_ctrl_core_axi_write_in_monitor_struct.core_bready
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awaddr_i; // [AW-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awsize_i; // [2:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awlen_i; // [7:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awuser_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awid_i; // [UW-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awlock_i; //
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = awvalid_i; //
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = wdata_i; // [DW-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = wstrb_i; // [DW/8-1:0]
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = wvalid_i; //
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = wlast_i; //
+ // fuse_ctrl_core_axi_write_in_monitor_struct.xyz = bready_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_random_sequence.svh
new file mode 100644
index 0000000..641ace5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_core_axi_write_in transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_core_axi_write_in_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_random_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_write_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in_random_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_core_axi_write_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_core_axi_write_in_random_sequence::body()-fuse_ctrl_core_axi_write_in_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_core_axi_write_in_driver_bfm via the sequencer and fuse_ctrl_core_axi_write_in_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_core_axi_write_in_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_responder_sequence.svh
new file mode 100644
index 0000000..0b07917
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_responder_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_write_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in_responder_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_core_axi_write_in_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_core_axi_write_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_sequence_base.svh
new file mode 100644
index 0000000..461b94a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_sequence_base #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .RSP(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in_sequence_base #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // variables
+ typedef fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_write_in_transaction_req_t;
+ fuse_ctrl_core_axi_write_in_transaction_req_t req;
+ typedef fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_write_in_transaction_rsp_t;
+ fuse_ctrl_core_axi_write_in_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_core_axi_write_in_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_core_axi_write_in_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction.svh
new file mode 100644
index 0000000..f279322
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction.svh
@@ -0,0 +1,252 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_core_axi_write_in
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_transaction #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_in_transaction #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ rand logic [AW-1:0] core_awaddr ;
+ logic core_awvalid ;
+ logic [$bits(axi_pkg::axi_burst_e)] core_awburst ;
+ logic [2:0] core_awsize ;
+ logic [7:0] core_awlen ;
+ logic [UW-1:0] core_awuser ;
+ logic [IW-1:0] core_awid ;
+ logic core_awlock ;
+ logic [DW-1:0] core_wdata ;
+ logic [DW/8 - 1:0] core_wstrb ;
+ logic core_wvalid ;
+ logic core_wlast ;
+ logic core_bready ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_core_axi_write_in_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_core_axi_write_in_monitor and fuse_ctrl_core_axi_write_in_monitor_bfm
+ // This struct is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_MONITOR_STRUCT
+ fuse_ctrl_core_axi_write_in_monitor_s fuse_ctrl_core_axi_write_in_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_in_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_in_monitor_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_in_initiator_s fuse_ctrl_core_axi_write_in_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_in_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_in_initiator_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_core_axi_write_in_driver and fuse_ctrl_core_axi_write_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_write_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_in_responder_s fuse_ctrl_core_axi_write_in_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_in_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_in_responder_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_in_macros.svh
+ `fuse_ctrl_core_axi_write_in_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("core_awaddr:0x%x core_awvalid:0x%x core_awburst:0x%x core_awsize:0x%x core_awlen:0x%x core_awuser:0x%x core_awid:0x%x core_awlock:0x%x core_wdata:0x%x core_wstrb:0x%x core_wvalid:0x%x core_wlast:0x%x core_bready:0x%x ",core_awaddr,core_awvalid,core_awburst,core_awsize,core_awlen,core_awuser,core_awid,core_awlock,core_wdata,core_wstrb,core_wvalid,core_wlast,core_bready);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ &&(this.core_wdata == RHS.core_wdata)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.core_awaddr = RHS.core_awaddr;
+ this.core_awvalid = RHS.core_awvalid;
+ this.core_awburst = RHS.core_awburst;
+ this.core_awsize = RHS.core_awsize;
+ this.core_awlen = RHS.core_awlen;
+ this.core_awuser = RHS.core_awuser;
+ this.core_awid = RHS.core_awid;
+ this.core_awlock = RHS.core_awlock;
+ this.core_wdata = RHS.core_wdata;
+ this.core_wstrb = RHS.core_wstrb;
+ this.core_wvalid = RHS.core_wvalid;
+ this.core_wlast = RHS.core_wlast;
+ this.core_bready = RHS.core_bready;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_core_axi_write_in_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,core_awaddr,"core_awaddr");
+ $add_attribute(transaction_view_h,core_awvalid,"core_awvalid");
+ $add_attribute(transaction_view_h,core_awburst,"core_awburst");
+ $add_attribute(transaction_view_h,core_awsize,"core_awsize");
+ $add_attribute(transaction_view_h,core_awlen,"core_awlen");
+ $add_attribute(transaction_view_h,core_awuser,"core_awuser");
+ $add_attribute(transaction_view_h,core_awid,"core_awid");
+ $add_attribute(transaction_view_h,core_awlock,"core_awlock");
+ $add_attribute(transaction_view_h,core_wdata,"core_wdata");
+ $add_attribute(transaction_view_h,core_wstrb,"core_wstrb");
+ $add_attribute(transaction_view_h,core_wvalid,"core_wvalid");
+ $add_attribute(transaction_view_h,core_wlast,"core_wlast");
+ $add_attribute(transaction_view_h,core_bready,"core_bready");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction_coverage.svh
new file mode 100644
index 0000000..d000917
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_transaction_coverage.svh
@@ -0,0 +1,111 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_core_axi_write_in transaction information using
+// a covergroup named fuse_ctrl_core_axi_write_in_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_in_transaction_coverage #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_subscriber #(.T(fuse_ctrl_core_axi_write_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_in_transaction_coverage #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_core_axi_write_in_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ core_awaddr: coverpoint coverage_trans.core_awaddr;
+ core_awvalid: coverpoint coverage_trans.core_awvalid;
+ core_awburst: coverpoint coverage_trans.core_awburst;
+ core_awsize: coverpoint coverage_trans.core_awsize;
+ core_awlen: coverpoint coverage_trans.core_awlen;
+ core_awuser: coverpoint coverage_trans.core_awuser;
+ core_awid: coverpoint coverage_trans.core_awid;
+ core_awlock: coverpoint coverage_trans.core_awlock;
+ core_wdata: coverpoint coverage_trans.core_wdata;
+ core_wstrb: coverpoint coverage_trans.core_wstrb;
+ core_wvalid: coverpoint coverage_trans.core_wvalid;
+ core_wlast: coverpoint coverage_trans.core_wlast;
+ core_bready: coverpoint coverage_trans.core_bready;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_core_axi_write_in_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_core_axi_write_in_transaction_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_write_in_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_core_axi_write_in_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/src/fuse_ctrl_core_axi_write_in_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/yaml/fuse_ctrl_core_axi_write_in_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/yaml/fuse_ctrl_core_axi_write_in_interface.yaml
new file mode 100644
index 0000000..9882e7c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_in_pkg/yaml/fuse_ctrl_core_axi_write_in_interface.yaml
@@ -0,0 +1,161 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_core_axi_write_in:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+ ports:
+ - dir: output
+ name: awaddr
+ reset_value: '''bz'
+ width: '[''AW'']'
+ - dir: output
+ name: awburst
+ reset_value: '''bz'
+ width: '[''$bits(axi_pkg::axi_burst_e)'']'
+ - dir: output
+ name: awsize
+ reset_value: '''bz'
+ width: '3'
+ - dir: output
+ name: awlen
+ reset_value: '''bz'
+ width: '8'
+ - dir: output
+ name: awuser
+ reset_value: '''bz'
+ width: '[''UW'']'
+ - dir: output
+ name: awid
+ reset_value: '''bz'
+ width: '[''UW'']'
+ - dir: output
+ name: awlock
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: awvalid
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: wdata
+ reset_value: '''bz'
+ width: '[''DW'']'
+ - dir: output
+ name: wstrb
+ reset_value: '''bz'
+ width: '[''DW/8'']'
+ - dir: output
+ name: wvalid
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: wlast
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: bready
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'True'
+ name: core_awaddr
+ type: logic [AW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awvalid
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awsize
+ type: logic [2:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awlen
+ type: logic [7:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awuser
+ type: logic [UW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awid
+ type: logic [IW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_awlock
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_wdata
+ type: logic [DW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_wstrb
+ type: logic [DW/8 - 1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_wvalid
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_wlast
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: core_bready
+ type: logic
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.project
new file mode 100644
index 0000000..673a410
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_core_axi_write_out_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.svproject
new file mode 100644
index 0000000..e0ccd60
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/Makefile
new file mode 100644
index 0000000..b885f66
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_core_axi_write_out interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_core_axi_write_out_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f
+
+fuse_ctrl_core_axi_write_out_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f
+
+fuse_ctrl_core_axi_write_out_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_xrtl.f
+
+COMP_fuse_ctrl_core_axi_write_out_PKG_TGT_0 = q_comp_fuse_ctrl_core_axi_write_out_pkg
+COMP_fuse_ctrl_core_axi_write_out_PKG_TGT_1 = v_comp_fuse_ctrl_core_axi_write_out_pkg
+COMP_fuse_ctrl_core_axi_write_out_PKG_TGT = $(COMP_fuse_ctrl_core_axi_write_out_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_core_axi_write_out_pkg: $(COMP_fuse_ctrl_core_axi_write_out_PKG_TGT)
+
+q_comp_fuse_ctrl_core_axi_write_out_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG_XRTL)
+
+v_comp_fuse_ctrl_core_axi_write_out_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_core_axi_write_out_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_core_axi_write_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_core_axi_write_out_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_core_axi_write_out_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_out_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_out_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_out_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_write_out_pkg += -I$(fuse_ctrl_core_axi_write_out_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_core_axi_write_out_pkg += $(fuse_ctrl_core_axi_write_out_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_core_axi_write_out_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_core_axi_write_out_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_core_axi_write_out_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_out_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_core_axi_write_out_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_core_axi_write_out_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/compile.do
new file mode 100644
index 0000000..dd7c8df
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_core_axi_write_out interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out.compile
new file mode 100644
index 0000000..fc356ad
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_core_axi_write_out_hvl.compile
+ - fuse_ctrl_core_axi_write_out_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_bfm.vinfo
new file mode 100644
index 0000000..4acbc3d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_core_axi_write_out_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_core_axi_write_out_if.sv
+src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
+src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_common.compile
new file mode 100644
index 0000000..ab99fa6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_core_axi_write_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f
new file mode 100644
index 0000000..354fe24
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f
new file mode 100644
index 0000000..d14e3d6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_xrtl.f
new file mode 100644
index 0000000..9aecc88
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hdl.compile
new file mode 100644
index 0000000..d220bb8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_core_axi_write_out_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_core_axi_write_out_if.sv
+ - src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
+ - src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hvl.compile
new file mode 100644
index 0000000..2d0aa98
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_core_axi_write_out_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_core_axi_write_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.sv
new file mode 100644
index 0000000..4e525f1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_write_out_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_core_axi_write_out_macros.svh"
+
+ export fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_core_axi_write_out_typedefs.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_transaction.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_out_configuration.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_driver.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_monitor.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_out_transaction_coverage.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_sequence_base.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_random_sequence.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_out_responder_sequence.svh"
+ `include "src/fuse_ctrl_core_axi_write_out2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_core_axi_write_out_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo
new file mode 100644
index 0000000..6c1d385
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_core_axi_write_out_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_core_axi_write_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.sv
new file mode 100644
index 0000000..9bdd4e6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_core_axi_write_out_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_core_axi_write_out_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_core_axi_write_out_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.vinfo
new file mode 100644
index 0000000..68e75c6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_core_axi_write_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_sve.F
new file mode 100644
index 0000000..dd141cc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_core_axi_write_out_pkg/fuse_ctrl_core_axi_write_out_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out2reg_adapter.svh
new file mode 100644
index 0000000..257cf76
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_core_axi_write_out interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out2reg_adapter #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out2reg_adapter #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_core_axi_write_out2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h = fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_core_axi_write_out2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_agent.svh
new file mode 100644
index 0000000..a1e9bf3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_agent #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .DRIVER_T(fuse_ctrl_core_axi_write_out_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_T(fuse_ctrl_core_axi_write_out_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .COVERAGE_T(fuse_ctrl_core_axi_write_out_transaction_coverage #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_out_agent #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_configuration.svh
new file mode 100644
index 0000000..cd9e187
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_core_axi_write_out agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_configuration #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_core_axi_write_out_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_core_axi_write_out_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out_configuration #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_core_axi_write_out_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_CONFIGURATION_STRUCT
+ fuse_ctrl_core_axi_write_out_configuration_s fuse_ctrl_core_axi_write_out_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_core_axi_write_out_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_out_configuration_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_core_axi_write_out_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_core_axi_write_out_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_core_axi_write_out_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_core_axi_write_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_core_axi_write_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_core_axi_write_out_configuration_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_write_out_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AW=%x DW=%x IW=%x UW=%x ", agent_path, interface_name, AW ,DW ,IW ,UW ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_core_axi_write_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver.svh
new file mode 100644
index 0000000..e5c47f6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_driver #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_write_out_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .REQ(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .RSP(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_out_driver #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_core_axi_write_out_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+`fuse_ctrl_core_axi_write_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_out_initiator_s fuse_ctrl_core_axi_write_out_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+`fuse_ctrl_core_axi_write_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_out_responder_s fuse_ctrl_core_axi_write_out_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_core_axi_write_out_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_core_axi_write_out_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_core_axi_write_out_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_core_axi_write_out_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
new file mode 100644
index 0000000..c6335cf
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_driver_bfm.sv
@@ -0,0 +1,339 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_core_axi_write_out signal driving. It is
+// accessed by the uvm fuse_ctrl_core_axi_write_out driver through a virtual interface
+// handle in the fuse_ctrl_core_axi_write_out configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_core_axi_write_out_if.
+//
+// Input signals from the fuse_ctrl_core_axi_write_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_core_axi_write_out_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_write_out_macros.svh"
+
+interface fuse_ctrl_core_axi_write_out_driver_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ (fuse_ctrl_core_axi_write_out_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_write_out_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+ tri awready_i;
+ reg awready_o = 'bz;
+ tri wready_i;
+ reg wready_o = 'bz;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] bresp_i;
+ reg [$bits(axi_pkg::axi_burst_e)-1:0] bresp_o = 'bz;
+ tri bid_i;
+ reg bid_o = 'bz;
+ tri bvalid_i;
+ reg bvalid_o = 'bz;
+
+ // INITIATOR mode output signals
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+ assign awready_i = bus.awready;
+ assign bus.awready = (initiator_responder == RESPONDER) ? awready_o : 'bz;
+ assign wready_i = bus.wready;
+ assign bus.wready = (initiator_responder == RESPONDER) ? wready_o : 'bz;
+ assign bresp_i = bus.bresp;
+ assign bus.bresp = (initiator_responder == RESPONDER) ? bresp_o : 'bz;
+ assign bid_i = bus.bid;
+ assign bus.bid = (initiator_responder == RESPONDER) ? bid_o : 'bz;
+ assign bvalid_i = bus.bvalid;
+ assign bus.bvalid = (initiator_responder == RESPONDER) ? bvalid_o : 'bz;
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_core_axi_write_out_pkg::fuse_ctrl_core_axi_write_out_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_core_axi_write_out_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_core_axi_write_out_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_core_axi_write_out_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+ `fuse_ctrl_core_axi_write_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_out_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+ `fuse_ctrl_core_axi_write_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_out_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ awready_o <= 'bz;
+ wready_o <= 'bz;
+ bresp_o <= 'bz;
+ bid_o <= 'bz;
+ bvalid_o <= 'bz;
+ // INITIATOR mode output signals
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_core_axi_write_out_configuration_s fuse_ctrl_core_axi_write_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_write_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_core_axi_write_out_initiator_s fuse_ctrl_core_axi_write_out_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_core_axi_write_out_responder_s fuse_ctrl_core_axi_write_out_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_core_axi_write_out_initiator_struct:
+ // logic core_awready ;
+ // logic core_wready ;
+ // axi_pkg::axi_burst_e core_bresp ;
+ // logic core_bid ;
+ // logic core_bvalid ;
+ // Members within the fuse_ctrl_core_axi_write_out_responder_struct:
+ // logic core_awready ;
+ // logic core_wready ;
+ // axi_pkg::axi_burst_e core_bresp ;
+ // logic core_bid ;
+ // logic core_bvalid ;
+ initiator_struct = fuse_ctrl_core_axi_write_out_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // fuse_ctrl_core_axi_write_out_responder_struct.xyz = awready_i; //
+ // fuse_ctrl_core_axi_write_out_responder_struct.xyz = wready_i; //
+ // fuse_ctrl_core_axi_write_out_responder_struct.xyz = bresp_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_write_out_responder_struct.xyz = bid_i; //
+ // fuse_ctrl_core_axi_write_out_responder_struct.xyz = bvalid_i; //
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_core_axi_write_out_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_core_axi_write_out_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_core_axi_write_out_initiator_s fuse_ctrl_core_axi_write_out_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_core_axi_write_out_responder_s fuse_ctrl_core_axi_write_out_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_core_axi_write_out_initiator_struct:
+ // logic core_awready ;
+ // logic core_wready ;
+ // axi_pkg::axi_burst_e core_bresp ;
+ // logic core_bid ;
+ // logic core_bvalid ;
+ // Variables within the fuse_ctrl_core_axi_write_out_responder_struct:
+ // logic core_awready ;
+ // logic core_wready ;
+ // axi_pkg::axi_burst_e core_bresp ;
+ // logic core_bid ;
+ // logic core_bvalid ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // awready_o <= fuse_ctrl_core_axi_write_out_initiator_struct.xyz; //
+ // wready_o <= fuse_ctrl_core_axi_write_out_initiator_struct.xyz; //
+ // bresp_o <= fuse_ctrl_core_axi_write_out_initiator_struct.xyz; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // bid_o <= fuse_ctrl_core_axi_write_out_initiator_struct.xyz; //
+ // bvalid_o <= fuse_ctrl_core_axi_write_out_initiator_struct.xyz; //
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_core_axi_write_out_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_core_axi_write_out_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_if.sv
new file mode 100644
index 0000000..a08368a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_if.sv
@@ -0,0 +1,103 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_core_axi_write_out interface signals.
+// It is instantiated once per fuse_ctrl_core_axi_write_out bus. Bus Functional Models,
+// BFM's named fuse_ctrl_core_axi_write_out_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_core_axi_write_out_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_core_axi_write_out_bus.awready), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_write_out_bus.wready), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_write_out_bus.bresp), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_write_out_bus.bid), // Agent input
+// .dut_signal_port(fuse_ctrl_core_axi_write_out_bus.bvalid), // Agent input
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+
+interface fuse_ctrl_core_axi_write_out_if #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri awready,
+ inout tri wready,
+ inout tri [$bits(axi_pkg::axi_burst_e)-1:0] bresp,
+ inout tri bid,
+ inout tri bvalid
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input awready,
+ input wready,
+ input bresp,
+ input bid,
+ input bvalid
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ input awready,
+ input wready,
+ input bresp,
+ input bid,
+ input bvalid
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ output awready,
+ output wready,
+ output bresp,
+ output bid,
+ output bvalid
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_macros.svh
new file mode 100644
index 0000000..5f57ee1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_macros.svh
@@ -0,0 +1,171 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_core_axi_write_out package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_core_axi_write_out_configuration class.
+//
+ `define fuse_ctrl_core_axi_write_out_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_core_axi_write_out_configuration_s;
+
+ `define fuse_ctrl_core_axi_write_out_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_out_configuration_s to_struct();\
+ fuse_ctrl_core_axi_write_out_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_core_axi_write_out_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_out_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_core_axi_write_out_configuration_s fuse_ctrl_core_axi_write_out_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_core_axi_write_out_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_core_axi_write_out_transaction class.
+//
+ `define fuse_ctrl_core_axi_write_out_MONITOR_STRUCT typedef struct packed { \
+ logic core_awready ; \
+ logic core_wready ; \
+ axi_pkg::axi_burst_e core_bresp ; \
+ logic core_bid ; \
+ logic core_bvalid ; \
+ } fuse_ctrl_core_axi_write_out_monitor_s;
+
+ `define fuse_ctrl_core_axi_write_out_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_out_monitor_s to_monitor_struct();\
+ fuse_ctrl_core_axi_write_out_monitor_struct = \
+ { \
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ };\
+ return ( fuse_ctrl_core_axi_write_out_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_core_axi_write_out_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_core_axi_write_out_monitor_s fuse_ctrl_core_axi_write_out_monitor_struct);\
+ {\
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ } = fuse_ctrl_core_axi_write_out_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_core_axi_write_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_write_out_INITIATOR_STRUCT typedef struct packed { \
+ logic core_awready ; \
+ logic core_wready ; \
+ axi_pkg::axi_burst_e core_bresp ; \
+ logic core_bid ; \
+ logic core_bvalid ; \
+ } fuse_ctrl_core_axi_write_out_initiator_s;
+
+ `define fuse_ctrl_core_axi_write_out_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_out_initiator_s to_initiator_struct();\
+ fuse_ctrl_core_axi_write_out_initiator_struct = \
+ {\
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ };\
+ return ( fuse_ctrl_core_axi_write_out_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_out_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_core_axi_write_out_initiator_s fuse_ctrl_core_axi_write_out_initiator_struct);\
+ {\
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ } = fuse_ctrl_core_axi_write_out_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_core_axi_write_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_core_axi_write_out_RESPONDER_STRUCT typedef struct packed { \
+ logic core_awready ; \
+ logic core_wready ; \
+ axi_pkg::axi_burst_e core_bresp ; \
+ logic core_bid ; \
+ logic core_bvalid ; \
+ } fuse_ctrl_core_axi_write_out_responder_s;
+
+ `define fuse_ctrl_core_axi_write_out_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_core_axi_write_out_responder_s to_responder_struct();\
+ fuse_ctrl_core_axi_write_out_responder_struct = \
+ {\
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ };\
+ return ( fuse_ctrl_core_axi_write_out_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_core_axi_write_out_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_core_axi_write_out_responder_s fuse_ctrl_core_axi_write_out_responder_struct);\
+ {\
+ this.core_awready , \
+ this.core_wready , \
+ this.core_bresp , \
+ this.core_bid , \
+ this.core_bvalid \
+ } = fuse_ctrl_core_axi_write_out_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor.svh
new file mode 100644
index 0000000..638ba10
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_core_axi_write_out transactions observed by the
+// fuse_ctrl_core_axi_write_out monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_monitor #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_core_axi_write_out_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_core_axi_write_out_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_out_monitor #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_core_axi_write_out_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_core_axi_write_out_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_core_axi_write_out_monitor_s fuse_ctrl_core_axi_write_out_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_core_axi_write_out_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
new file mode 100644
index 0000000..8575acd
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_monitor_bfm.sv
@@ -0,0 +1,214 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_core_axi_write_out signal monitoring.
+// It is accessed by the uvm fuse_ctrl_core_axi_write_out monitor through a virtual
+// interface handle in the fuse_ctrl_core_axi_write_out configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_core_axi_write_out_if.
+//
+// Input signals from the fuse_ctrl_core_axi_write_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_core_axi_write_out bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_core_axi_write_out_pkg_hdl::*;
+`include "src/fuse_ctrl_core_axi_write_out_macros.svh"
+
+
+interface fuse_ctrl_core_axi_write_out_monitor_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ ( fuse_ctrl_core_axi_write_out_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_core_axi_write_out_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_core_axi_write_out_MONITOR_STRUCT
+ fuse_ctrl_core_axi_write_out_monitor_s fuse_ctrl_core_axi_write_out_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_core_axi_write_out_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri awready_i;
+ tri wready_i;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] bresp_i;
+ tri bid_i;
+ tri bvalid_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign awready_i = bus.awready;
+ assign wready_i = bus.wready;
+ assign bresp_i = bus.bresp;
+ assign bid_i = bus.bid;
+ assign bvalid_i = bus.bvalid;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_core_axi_write_out_pkg::fuse_ctrl_core_axi_write_out_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_core_axi_write_out_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_core_axi_write_out_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_core_axi_write_out_configuration_s fuse_ctrl_core_axi_write_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_core_axi_write_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_core_axi_write_out_monitor_s fuse_ctrl_core_axi_write_out_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_core_axi_write_out_monitor_struct.core_awready
+ // // fuse_ctrl_core_axi_write_out_monitor_struct.core_wready
+ // // fuse_ctrl_core_axi_write_out_monitor_struct.core_bresp
+ // // fuse_ctrl_core_axi_write_out_monitor_struct.core_bid
+ // // fuse_ctrl_core_axi_write_out_monitor_struct.core_bvalid
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_core_axi_write_out_monitor_struct.xyz = awready_i; //
+ // fuse_ctrl_core_axi_write_out_monitor_struct.xyz = wready_i; //
+ // fuse_ctrl_core_axi_write_out_monitor_struct.xyz = bresp_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_core_axi_write_out_monitor_struct.xyz = bid_i; //
+ // fuse_ctrl_core_axi_write_out_monitor_struct.xyz = bvalid_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_random_sequence.svh
new file mode 100644
index 0000000..beb75c5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_core_axi_write_out transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_core_axi_write_out_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_random_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_write_out_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out_random_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_core_axi_write_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_core_axi_write_out_random_sequence::body()-fuse_ctrl_core_axi_write_out_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_core_axi_write_out_driver_bfm via the sequencer and fuse_ctrl_core_axi_write_out_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_core_axi_write_out_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_responder_sequence.svh
new file mode 100644
index 0000000..cae8be2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_responder_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_core_axi_write_out_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out_responder_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_core_axi_write_out_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_core_axi_write_out_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_sequence_base.svh
new file mode 100644
index 0000000..870d9f7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_sequence_base #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .RSP(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out_sequence_base #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // variables
+ typedef fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_write_out_transaction_req_t;
+ fuse_ctrl_core_axi_write_out_transaction_req_t req;
+ typedef fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_core_axi_write_out_transaction_rsp_t;
+ fuse_ctrl_core_axi_write_out_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_core_axi_write_out_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_core_axi_write_out_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction.svh
new file mode 100644
index 0000000..42eb5e7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction.svh
@@ -0,0 +1,232 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_core_axi_write_out
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_transaction #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_core_axi_write_out_transaction #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ logic core_awready ;
+ logic core_wready ;
+ axi_pkg::axi_burst_e core_bresp ;
+ logic core_bid ;
+ logic core_bvalid ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_core_axi_write_out_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_core_axi_write_out_monitor and fuse_ctrl_core_axi_write_out_monitor_bfm
+ // This struct is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_MONITOR_STRUCT
+ fuse_ctrl_core_axi_write_out_monitor_s fuse_ctrl_core_axi_write_out_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_out_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_out_monitor_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_INITIATOR_STRUCT
+ fuse_ctrl_core_axi_write_out_initiator_s fuse_ctrl_core_axi_write_out_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_out_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_out_initiator_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_core_axi_write_out_driver and fuse_ctrl_core_axi_write_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_core_axi_write_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_RESPONDER_STRUCT
+ fuse_ctrl_core_axi_write_out_responder_s fuse_ctrl_core_axi_write_out_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_core_axi_write_out_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_core_axi_write_out_responder_struct.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_core_axi_write_out_macros.svh
+ `fuse_ctrl_core_axi_write_out_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("core_awready:0x%x core_wready:0x%x core_bresp:0x%x core_bid:0x%x core_bvalid:0x%x ",core_awready,core_wready,core_bresp,core_bid,core_bvalid);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ &&(this.core_awready == RHS.core_awready)
+ &&(this.core_wready == RHS.core_wready)
+ &&(this.core_bresp == RHS.core_bresp)
+ &&(this.core_bid == RHS.core_bid)
+ &&(this.core_bvalid == RHS.core_bvalid)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.core_awready = RHS.core_awready;
+ this.core_wready = RHS.core_wready;
+ this.core_bresp = RHS.core_bresp;
+ this.core_bid = RHS.core_bid;
+ this.core_bvalid = RHS.core_bvalid;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_core_axi_write_out_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,core_awready,"core_awready");
+ $add_attribute(transaction_view_h,core_wready,"core_wready");
+ $add_attribute(transaction_view_h,core_bresp,"core_bresp");
+ $add_attribute(transaction_view_h,core_bid,"core_bid");
+ $add_attribute(transaction_view_h,core_bvalid,"core_bvalid");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction_coverage.svh
new file mode 100644
index 0000000..38c1b44
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_transaction_coverage.svh
@@ -0,0 +1,103 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_core_axi_write_out transaction information using
+// a covergroup named fuse_ctrl_core_axi_write_out_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_core_axi_write_out_transaction_coverage #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_subscriber #(.T(fuse_ctrl_core_axi_write_out_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_core_axi_write_out_transaction_coverage #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_core_axi_write_out_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ core_awready: coverpoint coverage_trans.core_awready;
+ core_wready: coverpoint coverage_trans.core_wready;
+ core_bresp: coverpoint coverage_trans.core_bresp;
+ core_bid: coverpoint coverage_trans.core_bid;
+ core_bvalid: coverpoint coverage_trans.core_bvalid;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_core_axi_write_out_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_core_axi_write_out_transaction_cg.set_inst_name($sformatf("fuse_ctrl_core_axi_write_out_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_core_axi_write_out_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/src/fuse_ctrl_core_axi_write_out_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/yaml/fuse_ctrl_core_axi_write_out_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/yaml/fuse_ctrl_core_axi_write_out_interface.yaml
new file mode 100644
index 0000000..7f30cb1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_core_axi_write_out_pkg/yaml/fuse_ctrl_core_axi_write_out_interface.yaml
@@ -0,0 +1,81 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_core_axi_write_out:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+ ports:
+ - dir: input
+ name: awready
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: wready
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: bresp
+ reset_value: '''bz'
+ width: '[''$bits(axi_pkg::axi_burst_e)'']'
+ - dir: input
+ name: bid
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: bvalid
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_awready
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_wready
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_bresp
+ type: axi_pkg::axi_burst_e
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_bid
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: core_bvalid
+ type: logic
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.project
new file mode 100644
index 0000000..3038bf5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_in_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.svproject
new file mode 100644
index 0000000..40fcc43
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/Makefile
new file mode 100644
index 0000000..9fd3230
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_in interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_in_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f
+
+fuse_ctrl_in_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f
+
+fuse_ctrl_in_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_xrtl.f
+
+COMP_fuse_ctrl_in_PKG_TGT_0 = q_comp_fuse_ctrl_in_pkg
+COMP_fuse_ctrl_in_PKG_TGT_1 = v_comp_fuse_ctrl_in_pkg
+COMP_fuse_ctrl_in_PKG_TGT = $(COMP_fuse_ctrl_in_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_in_pkg: $(COMP_fuse_ctrl_in_PKG_TGT)
+
+q_comp_fuse_ctrl_in_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_in_PKG_XRTL)
+
+v_comp_fuse_ctrl_in_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_in_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_in_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_in_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_in_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_in_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_in_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_in_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_in_pkg += -I$(fuse_ctrl_in_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_in_pkg += $(fuse_ctrl_in_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_in_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_in_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_in_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_in_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_in_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_in_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/compile.do
new file mode 100644
index 0000000..2645839
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_in interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in.compile
new file mode 100644
index 0000000..ae6ef9d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_in_hvl.compile
+ - fuse_ctrl_in_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_bfm.vinfo
new file mode 100644
index 0000000..cf88b70
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_in_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_in_if.sv
+src/fuse_ctrl_in_driver_bfm.sv
+src/fuse_ctrl_in_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_common.compile
new file mode 100644
index 0000000..82360a8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f
new file mode 100644
index 0000000..959aa9e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f
new file mode 100644
index 0000000..e57e74b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_xrtl.f
new file mode 100644
index 0000000..1e9819e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hdl.compile
new file mode 100644
index 0000000..da38bec
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_in_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_in_if.sv
+ - src/fuse_ctrl_in_monitor_bfm.sv
+ - src/fuse_ctrl_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hvl.compile
new file mode 100644
index 0000000..210102c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_in_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.sv
new file mode 100644
index 0000000..58df769
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_in_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_in_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_in_macros.svh"
+
+ export fuse_ctrl_in_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_in_typedefs.svh"
+ `include "src/fuse_ctrl_in_transaction.svh"
+
+ `include "src/fuse_ctrl_in_configuration.svh"
+ `include "src/fuse_ctrl_in_driver.svh"
+ `include "src/fuse_ctrl_in_monitor.svh"
+
+ `include "src/fuse_ctrl_in_transaction_coverage.svh"
+ `include "src/fuse_ctrl_in_sequence_base.svh"
+ `include "src/fuse_ctrl_in_random_sequence.svh"
+
+ `include "src/fuse_ctrl_in_responder_sequence.svh"
+ `include "src/fuse_ctrl_in2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_in_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo
new file mode 100644
index 0000000..164f125
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_in_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.sv
new file mode 100644
index 0000000..b13dcf7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_in_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_in_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_in_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.vinfo
new file mode 100644
index 0000000..79de2ad
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_sve.F
new file mode 100644
index 0000000..345b7e8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_in_pkg/fuse_ctrl_in_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in2reg_adapter.svh
new file mode 100644
index 0000000..1a7408a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_in interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in2reg_adapter #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_in2reg_adapter #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_in2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) trans_h = fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_in2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_agent.svh
new file mode 100644
index 0000000..8448ed4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_agent #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_in_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .DRIVER_T(fuse_ctrl_in_driver #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .MONITOR_T(fuse_ctrl_in_monitor #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .COVERAGE_T(fuse_ctrl_in_transaction_coverage #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .TRANS_T(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_in_agent #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_configuration.svh
new file mode 100644
index 0000000..decc63a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_in agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_configuration #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_in_driver_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_in_monitor_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_in_configuration #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_in_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_CONFIGURATION_STRUCT
+ fuse_ctrl_in_configuration_s fuse_ctrl_in_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_in_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_in_configuration_struct.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_in_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_in_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_in_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_in_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_in_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_in_configuration_cg.set_inst_name($sformatf("fuse_ctrl_in_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", agent_path, interface_name, AlertSyncOn ,RndConstLfrSeed ,RndCnstLfsrPerm ,MemInitFile ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_in_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver.svh
new file mode 100644
index 0000000..3ffc4b6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_driver #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_in_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_in_driver_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .REQ(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .RSP(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_in_driver #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_in_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_in_driver_bfm.
+`fuse_ctrl_in_INITIATOR_STRUCT
+ fuse_ctrl_in_initiator_s fuse_ctrl_in_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_in_driver_bfm.
+`fuse_ctrl_in_RESPONDER_STRUCT
+ fuse_ctrl_in_responder_s fuse_ctrl_in_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_in_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_in_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_in_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_in_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver_bfm.sv
new file mode 100644
index 0000000..fb3abaf
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_driver_bfm.sv
@@ -0,0 +1,337 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_in signal driving. It is
+// accessed by the uvm fuse_ctrl_in driver through a virtual interface
+// handle in the fuse_ctrl_in configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_in_if.
+//
+// Input signals from the fuse_ctrl_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_in_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_in_pkg_hdl::*;
+`include "src/fuse_ctrl_in_macros.svh"
+
+interface fuse_ctrl_in_driver_bfm #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ (fuse_ctrl_in_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_in_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", AlertSyncOn,RndConstLfrSeed,RndCnstLfsrPerm,MemInitFile),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+
+ // INITIATOR mode output signals
+ tri [$bits(edn_pkg::edn_req_t)-1:0] edn_i_i;
+ reg [$bits(edn_pkg::edn_req_t)-1:0] edn_i_o = 'bz;
+ tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0] alert_rx_i_i;
+ reg [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0] alert_rx_i_o = 'bz;
+ tri [$bits(ast_pkg::ast_obs_ctrl_t)-1:0] obs_ctrl_i_i;
+ reg [$bits(ast_pkg::ast_obs_ctrl_t)-1:0] obs_ctrl_i_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_h_i_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_h_i_o = 'bz;
+ tri scan_en_i_i;
+ reg scan_en_i_o = 'bz;
+ tri scan_rst_ni_i;
+ reg scan_rst_ni_o = 'bz;
+ tri scanmode_i_i;
+ reg scanmode_i_o = 'bz;
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+ assign bus.edn_i = (initiator_responder == INITIATOR) ? edn_i_o : 'bz;
+ assign edn_i_i = bus.edn_i;
+ assign bus.alert_rx_i = (initiator_responder == INITIATOR) ? alert_rx_i_o : 'bz;
+ assign alert_rx_i_i = bus.alert_rx_i;
+ assign bus.obs_ctrl_i = (initiator_responder == INITIATOR) ? obs_ctrl_i_o : 'bz;
+ assign obs_ctrl_i_i = bus.obs_ctrl_i;
+ assign bus.otp_ast_pwr_seq_h_i = (initiator_responder == INITIATOR) ? otp_ast_pwr_seq_h_i_o : 'bz;
+ assign otp_ast_pwr_seq_h_i_i = bus.otp_ast_pwr_seq_h_i;
+ assign bus.scan_en_i = (initiator_responder == INITIATOR) ? scan_en_i_o : 'bz;
+ assign scan_en_i_i = bus.scan_en_i;
+ assign bus.scan_rst_ni = (initiator_responder == INITIATOR) ? scan_rst_ni_o : 'bz;
+ assign scan_rst_ni_i = bus.scan_rst_ni;
+ assign bus.scanmode_i = (initiator_responder == INITIATOR) ? scanmode_i_o : 'bz;
+ assign scanmode_i_i = bus.scanmode_i;
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_in_pkg::fuse_ctrl_in_driver #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_in_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_in_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_in_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_in_driver_bfm.
+ `fuse_ctrl_in_INITIATOR_STRUCT
+ fuse_ctrl_in_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_in_driver_bfm.
+ `fuse_ctrl_in_RESPONDER_STRUCT
+ fuse_ctrl_in_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ // INITIATOR mode output signals
+ edn_i_o <= 'bz;
+ alert_rx_i_o <= 'bz;
+ obs_ctrl_i_o <= 'bz;
+ otp_ast_pwr_seq_h_i_o <= 'bz;
+ scan_en_i_o <= 'bz;
+ scan_rst_ni_o <= 'bz;
+ scanmode_i_o <= 'bz;
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_in_configuration_s fuse_ctrl_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_in_initiator_s fuse_ctrl_in_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_in_responder_s fuse_ctrl_in_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_in_initiator_struct:
+ // caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ;
+ // Members within the fuse_ctrl_in_responder_struct:
+ // caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ;
+ initiator_struct = fuse_ctrl_in_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // edn_i_o <= fuse_ctrl_in_initiator_struct.xyz; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // alert_rx_i_o <= fuse_ctrl_in_initiator_struct.xyz; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0]
+ // obs_ctrl_i_o <= fuse_ctrl_in_initiator_struct.xyz; // [$bits(ast_pkg::ast_obs_ctrl_t)-1:0]
+ // otp_ast_pwr_seq_h_i_o <= fuse_ctrl_in_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // scan_en_i_o <= fuse_ctrl_in_initiator_struct.xyz; //
+ // scan_rst_ni_o <= fuse_ctrl_in_initiator_struct.xyz; //
+ // scanmode_i_o <= fuse_ctrl_in_initiator_struct.xyz; //
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_in_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_in_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_in_initiator_s fuse_ctrl_in_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_in_responder_s fuse_ctrl_in_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_in_initiator_struct:
+ // caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ;
+ // Variables within the fuse_ctrl_in_responder_struct:
+ // caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // fuse_ctrl_in_responder_struct.xyz = edn_i_i; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // fuse_ctrl_in_responder_struct.xyz = alert_rx_i_i; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0]
+ // fuse_ctrl_in_responder_struct.xyz = obs_ctrl_i_i; // [$bits(ast_pkg::ast_obs_ctrl_t)-1:0]
+ // fuse_ctrl_in_responder_struct.xyz = otp_ast_pwr_seq_h_i_i; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // fuse_ctrl_in_responder_struct.xyz = scan_en_i_i; //
+ // fuse_ctrl_in_responder_struct.xyz = scan_rst_ni_i; //
+ // fuse_ctrl_in_responder_struct.xyz = scanmode_i_i; //
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_in_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_in_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_if.sv
new file mode 100644
index 0000000..3b48315
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_if.sv
@@ -0,0 +1,113 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_in interface signals.
+// It is instantiated once per fuse_ctrl_in bus. Bus Functional Models,
+// BFM's named fuse_ctrl_in_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_in_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_in_bus.edn_i), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.alert_rx_i), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.obs_ctrl_i), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.otp_ast_pwr_seq_h_i), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.scan_en_i), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.scan_rst_ni), // Agent output
+// .dut_signal_port(fuse_ctrl_in_bus.scanmode_i), // Agent output
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_in_pkg_hdl::*;
+
+interface fuse_ctrl_in_if #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [$bits(edn_pkg::edn_req_t)-1:0] edn_i,
+ inout tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0] alert_rx_i,
+ inout tri [$bits(ast_pkg::ast_obs_ctrl_t)-1:0] obs_ctrl_i,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_h_i,
+ inout tri scan_en_i,
+ inout tri scan_rst_ni,
+ inout tri scanmode_i
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input edn_i,
+ input alert_rx_i,
+ input obs_ctrl_i,
+ input otp_ast_pwr_seq_h_i,
+ input scan_en_i,
+ input scan_rst_ni,
+ input scanmode_i
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ output edn_i,
+ output alert_rx_i,
+ output obs_ctrl_i,
+ output otp_ast_pwr_seq_h_i,
+ output scan_en_i,
+ output scan_rst_ni,
+ output scanmode_i
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ input edn_i,
+ input alert_rx_i,
+ input obs_ctrl_i,
+ input otp_ast_pwr_seq_h_i,
+ input scan_en_i,
+ input scan_rst_ni,
+ input scanmode_i
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_macros.svh
new file mode 100644
index 0000000..cf85634
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_macros.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_in package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_in_configuration class.
+//
+ `define fuse_ctrl_in_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_in_configuration_s;
+
+ `define fuse_ctrl_in_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_in_configuration_s to_struct();\
+ fuse_ctrl_in_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_in_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_in_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_in_configuration_s fuse_ctrl_in_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_in_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_in_transaction class.
+//
+ `define fuse_ctrl_in_MONITOR_STRUCT typedef struct packed { \
+ caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ; \
+ } fuse_ctrl_in_monitor_s;
+
+ `define fuse_ctrl_in_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_in_monitor_s to_monitor_struct();\
+ fuse_ctrl_in_monitor_struct = \
+ { \
+ this.set_alert_rx_i \
+ };\
+ return ( fuse_ctrl_in_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_in_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_in_monitor_s fuse_ctrl_in_monitor_struct);\
+ {\
+ this.set_alert_rx_i \
+ } = fuse_ctrl_in_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_in_INITIATOR_STRUCT typedef struct packed { \
+ caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ; \
+ } fuse_ctrl_in_initiator_s;
+
+ `define fuse_ctrl_in_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_in_initiator_s to_initiator_struct();\
+ fuse_ctrl_in_initiator_struct = \
+ {\
+ this.set_alert_rx_i \
+ };\
+ return ( fuse_ctrl_in_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_in_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_in_initiator_s fuse_ctrl_in_initiator_struct);\
+ {\
+ this.set_alert_rx_i \
+ } = fuse_ctrl_in_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_in_RESPONDER_STRUCT typedef struct packed { \
+ caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ; \
+ } fuse_ctrl_in_responder_s;
+
+ `define fuse_ctrl_in_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_in_responder_s to_responder_struct();\
+ fuse_ctrl_in_responder_struct = \
+ {\
+ this.set_alert_rx_i \
+ };\
+ return ( fuse_ctrl_in_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_in_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_in_responder_s fuse_ctrl_in_responder_struct);\
+ {\
+ this.set_alert_rx_i \
+ } = fuse_ctrl_in_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor.svh
new file mode 100644
index 0000000..6eebd7b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_in transactions observed by the
+// fuse_ctrl_in monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_monitor #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_in_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_in_monitor_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .TRANS_T(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_in_monitor #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_in_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_in_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_in_monitor_s fuse_ctrl_in_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_in_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor_bfm.sv
new file mode 100644
index 0000000..b068660
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_monitor_bfm.sv
@@ -0,0 +1,216 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_in signal monitoring.
+// It is accessed by the uvm fuse_ctrl_in monitor through a virtual
+// interface handle in the fuse_ctrl_in configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_in_if.
+//
+// Input signals from the fuse_ctrl_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_in bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_in_pkg_hdl::*;
+`include "src/fuse_ctrl_in_macros.svh"
+
+
+interface fuse_ctrl_in_monitor_bfm #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ ( fuse_ctrl_in_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_in_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", AlertSyncOn,RndConstLfrSeed,RndCnstLfsrPerm,MemInitFile),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_in_MONITOR_STRUCT
+ fuse_ctrl_in_monitor_s fuse_ctrl_in_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_in_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [$bits(edn_pkg::edn_req_t)-1:0] edn_i_i;
+ tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0] alert_rx_i_i;
+ tri [$bits(ast_pkg::ast_obs_ctrl_t)-1:0] obs_ctrl_i_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_h_i_i;
+ tri scan_en_i_i;
+ tri scan_rst_ni_i;
+ tri scanmode_i_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign edn_i_i = bus.edn_i;
+ assign alert_rx_i_i = bus.alert_rx_i;
+ assign obs_ctrl_i_i = bus.obs_ctrl_i;
+ assign otp_ast_pwr_seq_h_i_i = bus.otp_ast_pwr_seq_h_i;
+ assign scan_en_i_i = bus.scan_en_i;
+ assign scan_rst_ni_i = bus.scan_rst_ni;
+ assign scanmode_i_i = bus.scanmode_i;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_in_pkg::fuse_ctrl_in_monitor #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_in_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_in_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_in_configuration_s fuse_ctrl_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_in_monitor_s fuse_ctrl_in_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_in_monitor_struct.set_alert_rx_i
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_in_monitor_struct.xyz = edn_i_i; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // fuse_ctrl_in_monitor_struct.xyz = alert_rx_i_i; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)-1:0]
+ // fuse_ctrl_in_monitor_struct.xyz = obs_ctrl_i_i; // [$bits(ast_pkg::ast_obs_ctrl_t)-1:0]
+ // fuse_ctrl_in_monitor_struct.xyz = otp_ast_pwr_seq_h_i_i; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // fuse_ctrl_in_monitor_struct.xyz = scan_en_i_i; //
+ // fuse_ctrl_in_monitor_struct.xyz = scan_rst_ni_i; //
+ // fuse_ctrl_in_monitor_struct.xyz = scanmode_i_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_random_sequence.svh
new file mode 100644
index 0000000..42aacc2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_in transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_in_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_random_sequence #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ extends fuse_ctrl_in_sequence_base #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_in_random_sequence #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_in_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_in_random_sequence::body()-fuse_ctrl_in_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_in_driver_bfm via the sequencer and fuse_ctrl_in_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_in_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_responder_sequence.svh
new file mode 100644
index 0000000..239bc5a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_responder_sequence #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ extends fuse_ctrl_in_sequence_base #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_in_responder_sequence #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_in_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_in_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_sequence_base.svh
new file mode 100644
index 0000000..0a998f1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_sequence_base #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .RSP(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_in_sequence_base #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // variables
+ typedef fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) fuse_ctrl_in_transaction_req_t;
+ fuse_ctrl_in_transaction_req_t req;
+ typedef fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) fuse_ctrl_in_transaction_rsp_t;
+ fuse_ctrl_in_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_in_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_in_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction.svh
new file mode 100644
index 0000000..d8559f2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction.svh
@@ -0,0 +1,215 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_in
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_transaction #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_in_transaction #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ caliptra_prim_alert_pkg::alert_rx_t set_alert_rx_i ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_in_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_in_monitor and fuse_ctrl_in_monitor_bfm
+ // This struct is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_MONITOR_STRUCT
+ fuse_ctrl_in_monitor_s fuse_ctrl_in_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_in_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_in_monitor_struct.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_INITIATOR_STRUCT
+ fuse_ctrl_in_initiator_s fuse_ctrl_in_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_in_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_in_initiator_struct.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_in_driver and fuse_ctrl_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_RESPONDER_STRUCT
+ fuse_ctrl_in_responder_s fuse_ctrl_in_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_in_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_in_responder_struct.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_in_macros.svh
+ `fuse_ctrl_in_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("set_alert_rx_i:0x%x ",set_alert_rx_i);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.set_alert_rx_i = RHS.set_alert_rx_i;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_in_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,set_alert_rx_i,"set_alert_rx_i");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction_coverage.svh
new file mode 100644
index 0000000..ab8eedd
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_transaction_coverage.svh
@@ -0,0 +1,99 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_in transaction information using
+// a covergroup named fuse_ctrl_in_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_in_transaction_coverage #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvm_subscriber #(.T(fuse_ctrl_in_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_in_transaction_coverage #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_in_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ set_alert_rx_i: coverpoint coverage_trans.set_alert_rx_i;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_in_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_in_transaction_cg.set_inst_name($sformatf("fuse_ctrl_in_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_in_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/src/fuse_ctrl_in_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/yaml/fuse_ctrl_in_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/yaml/fuse_ctrl_in_interface.yaml
new file mode 100644
index 0000000..691d296
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_in_pkg/yaml/fuse_ctrl_in_interface.yaml
@@ -0,0 +1,65 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_in:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AlertSyncOn
+ type: int
+ value: '3'
+ - name: RndConstLfrSeed
+ type: caliptra_otp_ctrl_pkg::lfsr_seed_t
+ value: caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault
+ - name: RndCnstLfsrPerm
+ type: caliptra_otp_ctrl_pkg::lfsr_perm_t
+ value: caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault
+ - name: MemInitFile
+ type: string
+ value: '""'
+ ports:
+ - dir: output
+ name: edn_i
+ reset_value: '''bz'
+ width: '[''$bits(edn_pkg::edn_req_t)'']'
+ - dir: output
+ name: alert_rx_i
+ reset_value: '''bz'
+ width: '[''ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_rx_t)'']'
+ - dir: output
+ name: obs_ctrl_i
+ reset_value: '''bz'
+ width: '[''$bits(ast_pkg::ast_obs_ctrl_t)'']'
+ - dir: output
+ name: otp_ast_pwr_seq_h_i
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)'']'
+ - dir: output
+ name: scan_en_i
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: scan_rst_ni
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: scanmode_i
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: set_alert_rx_i
+ type: caliptra_prim_alert_pkg::alert_rx_t
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.project
new file mode 100644
index 0000000..bc9bb7a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_lc_otp_in_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.svproject
new file mode 100644
index 0000000..e267e6c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/Makefile
new file mode 100644
index 0000000..48df82f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_lc_otp_in interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_lc_otp_in_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f
+
+fuse_ctrl_lc_otp_in_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f
+
+fuse_ctrl_lc_otp_in_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_xrtl.f
+
+COMP_fuse_ctrl_lc_otp_in_PKG_TGT_0 = q_comp_fuse_ctrl_lc_otp_in_pkg
+COMP_fuse_ctrl_lc_otp_in_PKG_TGT_1 = v_comp_fuse_ctrl_lc_otp_in_pkg
+COMP_fuse_ctrl_lc_otp_in_PKG_TGT = $(COMP_fuse_ctrl_lc_otp_in_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_lc_otp_in_pkg: $(COMP_fuse_ctrl_lc_otp_in_PKG_TGT)
+
+q_comp_fuse_ctrl_lc_otp_in_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG_XRTL)
+
+v_comp_fuse_ctrl_lc_otp_in_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_lc_otp_in_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_lc_otp_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_in_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_lc_otp_in_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_in_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_in_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_in_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_lc_otp_in_pkg += -I$(fuse_ctrl_lc_otp_in_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_lc_otp_in_pkg += $(fuse_ctrl_lc_otp_in_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_lc_otp_in_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_lc_otp_in_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_lc_otp_in_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_in_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_lc_otp_in_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_in_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/compile.do
new file mode 100644
index 0000000..2334cca
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_lc_otp_in interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in.compile
new file mode 100644
index 0000000..934282f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_lc_otp_in_hvl.compile
+ - fuse_ctrl_lc_otp_in_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_bfm.vinfo
new file mode 100644
index 0000000..35c34c5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_lc_otp_in_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_lc_otp_in_if.sv
+src/fuse_ctrl_lc_otp_in_driver_bfm.sv
+src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_common.compile
new file mode 100644
index 0000000..5683974
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_lc_otp_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f
new file mode 100644
index 0000000..fd87f10
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f
new file mode 100644
index 0000000..ea2637f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_xrtl.f
new file mode 100644
index 0000000..736ca19
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hdl.compile
new file mode 100644
index 0000000..9def84f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_lc_otp_in_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_lc_otp_in_if.sv
+ - src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
+ - src/fuse_ctrl_lc_otp_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hvl.compile
new file mode 100644
index 0000000..0374205
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_lc_otp_in_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_lc_otp_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.sv
new file mode 100644
index 0000000..7077717
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_lc_otp_in_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_lc_otp_in_macros.svh"
+
+ export fuse_ctrl_lc_otp_in_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_lc_otp_in_typedefs.svh"
+ `include "src/fuse_ctrl_lc_otp_in_transaction.svh"
+
+ `include "src/fuse_ctrl_lc_otp_in_configuration.svh"
+ `include "src/fuse_ctrl_lc_otp_in_driver.svh"
+ `include "src/fuse_ctrl_lc_otp_in_monitor.svh"
+
+ `include "src/fuse_ctrl_lc_otp_in_transaction_coverage.svh"
+ `include "src/fuse_ctrl_lc_otp_in_sequence_base.svh"
+ `include "src/fuse_ctrl_lc_otp_in_random_sequence.svh"
+
+ `include "src/fuse_ctrl_lc_otp_in_responder_sequence.svh"
+ `include "src/fuse_ctrl_lc_otp_in2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_lc_otp_in_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo
new file mode 100644
index 0000000..a51e3e0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_lc_otp_in_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_lc_otp_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.sv
new file mode 100644
index 0000000..e1761c3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_lc_otp_in_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_lc_otp_in_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_lc_otp_in_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.vinfo
new file mode 100644
index 0000000..536dd9e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_lc_otp_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_sve.F
new file mode 100644
index 0000000..1f476e9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_in_pkg/fuse_ctrl_lc_otp_in_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in2reg_adapter.svh
new file mode 100644
index 0000000..b1d2bb5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in2reg_adapter.svh
@@ -0,0 +1,112 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_lc_otp_in interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in2reg_adapter extends uvm_reg_adapter;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in2reg_adapter )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_lc_otp_in2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_lc_otp_in_transaction trans_h = fuse_ctrl_lc_otp_in_transaction ::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_lc_otp_in_transaction trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_lc_otp_in2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_agent.svh
new file mode 100644
index 0000000..1bcc445
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_agent.svh
@@ -0,0 +1,67 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_agent extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_lc_otp_in_configuration ),
+ .DRIVER_T(fuse_ctrl_lc_otp_in_driver ),
+ .MONITOR_T(fuse_ctrl_lc_otp_in_monitor ),
+ .COVERAGE_T(fuse_ctrl_lc_otp_in_transaction_coverage ),
+ .TRANS_T(fuse_ctrl_lc_otp_in_transaction )
+ );
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_in_agent )
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_configuration.svh
new file mode 100644
index 0000000..3d01dbb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_configuration.svh
@@ -0,0 +1,193 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_lc_otp_in agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_configuration extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_lc_otp_in_driver_bfm ),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_lc_otp_in_monitor_bfm ));
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in_configuration )
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_lc_otp_in_transaction ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_lc_otp_in_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_CONFIGURATION_STRUCT
+ fuse_ctrl_lc_otp_in_configuration_s fuse_ctrl_lc_otp_in_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_lc_otp_in_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_in_configuration_struct.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_lc_otp_in_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_lc_otp_in_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_lc_otp_in_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_lc_otp_in_configuration
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_lc_otp_in_configuration
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_lc_otp_in_configuration_cg.set_inst_name($sformatf("fuse_ctrl_lc_otp_in_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: ", agent_path, interface_name, ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_lc_otp_in_transaction) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver.svh
new file mode 100644
index 0000000..fc0a219
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver.svh
@@ -0,0 +1,105 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_driver extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_lc_otp_in_configuration ),
+ .BFM_BIND_T(virtual fuse_ctrl_lc_otp_in_driver_bfm ),
+ .REQ(fuse_ctrl_lc_otp_in_transaction ),
+ .RSP(fuse_ctrl_lc_otp_in_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_in_driver )
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_lc_otp_in_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+`fuse_ctrl_lc_otp_in_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_in_initiator_s fuse_ctrl_lc_otp_in_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+`fuse_ctrl_lc_otp_in_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_in_responder_s fuse_ctrl_lc_otp_in_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_lc_otp_in_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_lc_otp_in_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_lc_otp_in_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_lc_otp_in_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver_bfm.sv
new file mode 100644
index 0000000..30b642a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_driver_bfm.sv
@@ -0,0 +1,321 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_lc_otp_in signal driving. It is
+// accessed by the uvm fuse_ctrl_lc_otp_in driver through a virtual interface
+// handle in the fuse_ctrl_lc_otp_in configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_lc_otp_in_if.
+//
+// Input signals from the fuse_ctrl_lc_otp_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_lc_otp_in_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+`include "src/fuse_ctrl_lc_otp_in_macros.svh"
+
+interface fuse_ctrl_lc_otp_in_driver_bfm
+ (fuse_ctrl_lc_otp_in_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_lc_otp_in_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: ", ),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+
+ // INITIATOR mode output signals
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0] lc_otp_vendor_test_i_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0] lc_otp_vendor_test_i_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0] lc_otp_program_i_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0] lc_otp_program_i_o = 'bz;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_dft_en_i_i;
+ reg [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_dft_en_i_o = 'bz;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_escalate_en_i_i;
+ reg [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_escalate_en_i_o = 'bz;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_check_byp_en_i_i;
+ reg [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_check_byp_en_i_o = 'bz;
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+ assign bus.lc_otp_vendor_test_i = (initiator_responder == INITIATOR) ? lc_otp_vendor_test_i_o : 'bz;
+ assign lc_otp_vendor_test_i_i = bus.lc_otp_vendor_test_i;
+ assign bus.lc_otp_program_i = (initiator_responder == INITIATOR) ? lc_otp_program_i_o : 'bz;
+ assign lc_otp_program_i_i = bus.lc_otp_program_i;
+ assign bus.lc_dft_en_i = (initiator_responder == INITIATOR) ? lc_dft_en_i_o : 'bz;
+ assign lc_dft_en_i_i = bus.lc_dft_en_i;
+ assign bus.lc_escalate_en_i = (initiator_responder == INITIATOR) ? lc_escalate_en_i_o : 'bz;
+ assign lc_escalate_en_i_i = bus.lc_escalate_en_i;
+ assign bus.lc_check_byp_en_i = (initiator_responder == INITIATOR) ? lc_check_byp_en_i_o : 'bz;
+ assign lc_check_byp_en_i_i = bus.lc_check_byp_en_i;
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_lc_otp_in_pkg::fuse_ctrl_lc_otp_in_driver proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_lc_otp_in_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_lc_otp_in_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_lc_otp_in_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+ `fuse_ctrl_lc_otp_in_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_in_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+ `fuse_ctrl_lc_otp_in_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_in_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ // INITIATOR mode output signals
+ lc_otp_vendor_test_i_o <= 'bz;
+ lc_otp_program_i_o <= 'bz;
+ lc_dft_en_i_o <= 'bz;
+ lc_escalate_en_i_o <= 'bz;
+ lc_check_byp_en_i_o <= 'bz;
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_lc_otp_in_configuration_s fuse_ctrl_lc_otp_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_lc_otp_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_lc_otp_in_initiator_s fuse_ctrl_lc_otp_in_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_lc_otp_in_responder_s fuse_ctrl_lc_otp_in_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_lc_otp_in_initiator_struct:
+ // lc_ctrl_pkg::lc_tx_t lc_dft_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ;
+ // Members within the fuse_ctrl_lc_otp_in_responder_struct:
+ // lc_ctrl_pkg::lc_tx_t lc_dft_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ;
+ initiator_struct = fuse_ctrl_lc_otp_in_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // lc_otp_vendor_test_i_o <= fuse_ctrl_lc_otp_in_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0]
+ // lc_otp_program_i_o <= fuse_ctrl_lc_otp_in_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0]
+ // lc_dft_en_i_o <= fuse_ctrl_lc_otp_in_initiator_struct.xyz; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // lc_escalate_en_i_o <= fuse_ctrl_lc_otp_in_initiator_struct.xyz; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // lc_check_byp_en_i_o <= fuse_ctrl_lc_otp_in_initiator_struct.xyz; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_lc_otp_in_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_lc_otp_in_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_lc_otp_in_initiator_s fuse_ctrl_lc_otp_in_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_lc_otp_in_responder_s fuse_ctrl_lc_otp_in_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_lc_otp_in_initiator_struct:
+ // lc_ctrl_pkg::lc_tx_t lc_dft_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ;
+ // Variables within the fuse_ctrl_lc_otp_in_responder_struct:
+ // lc_ctrl_pkg::lc_tx_t lc_dft_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ;
+ // lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // fuse_ctrl_lc_otp_in_responder_struct.xyz = lc_otp_vendor_test_i_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0]
+ // fuse_ctrl_lc_otp_in_responder_struct.xyz = lc_otp_program_i_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0]
+ // fuse_ctrl_lc_otp_in_responder_struct.xyz = lc_dft_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // fuse_ctrl_lc_otp_in_responder_struct.xyz = lc_escalate_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // fuse_ctrl_lc_otp_in_responder_struct.xyz = lc_check_byp_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_lc_otp_in_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_lc_otp_in_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_if.sv
new file mode 100644
index 0000000..7da88a3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_if.sv
@@ -0,0 +1,98 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_lc_otp_in interface signals.
+// It is instantiated once per fuse_ctrl_lc_otp_in bus. Bus Functional Models,
+// BFM's named fuse_ctrl_lc_otp_in_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_lc_otp_in_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_lc_otp_in_bus.lc_otp_vendor_test_i), // Agent output
+// .dut_signal_port(fuse_ctrl_lc_otp_in_bus.lc_otp_program_i), // Agent output
+// .dut_signal_port(fuse_ctrl_lc_otp_in_bus.lc_dft_en_i), // Agent output
+// .dut_signal_port(fuse_ctrl_lc_otp_in_bus.lc_escalate_en_i), // Agent output
+// .dut_signal_port(fuse_ctrl_lc_otp_in_bus.lc_check_byp_en_i), // Agent output
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+
+interface fuse_ctrl_lc_otp_in_if
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0] lc_otp_vendor_test_i,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0] lc_otp_program_i,
+ inout tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_dft_en_i,
+ inout tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_escalate_en_i,
+ inout tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_check_byp_en_i
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input lc_otp_vendor_test_i,
+ input lc_otp_program_i,
+ input lc_dft_en_i,
+ input lc_escalate_en_i,
+ input lc_check_byp_en_i
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ output lc_otp_vendor_test_i,
+ output lc_otp_program_i,
+ output lc_dft_en_i,
+ output lc_escalate_en_i,
+ output lc_check_byp_en_i
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ input lc_otp_vendor_test_i,
+ input lc_otp_program_i,
+ input lc_dft_en_i,
+ input lc_escalate_en_i,
+ input lc_check_byp_en_i
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_macros.svh
new file mode 100644
index 0000000..9ad130b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_macros.svh
@@ -0,0 +1,153 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_lc_otp_in package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_lc_otp_in_configuration class.
+//
+ `define fuse_ctrl_lc_otp_in_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_lc_otp_in_configuration_s;
+
+ `define fuse_ctrl_lc_otp_in_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_in_configuration_s to_struct();\
+ fuse_ctrl_lc_otp_in_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_lc_otp_in_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_in_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_lc_otp_in_configuration_s fuse_ctrl_lc_otp_in_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_lc_otp_in_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_lc_otp_in_transaction class.
+//
+ `define fuse_ctrl_lc_otp_in_MONITOR_STRUCT typedef struct packed { \
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ; \
+ } fuse_ctrl_lc_otp_in_monitor_s;
+
+ `define fuse_ctrl_lc_otp_in_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_in_monitor_s to_monitor_struct();\
+ fuse_ctrl_lc_otp_in_monitor_struct = \
+ { \
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ };\
+ return ( fuse_ctrl_lc_otp_in_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_lc_otp_in_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_lc_otp_in_monitor_s fuse_ctrl_lc_otp_in_monitor_struct);\
+ {\
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ } = fuse_ctrl_lc_otp_in_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_lc_otp_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_lc_otp_in_INITIATOR_STRUCT typedef struct packed { \
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ; \
+ } fuse_ctrl_lc_otp_in_initiator_s;
+
+ `define fuse_ctrl_lc_otp_in_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_in_initiator_s to_initiator_struct();\
+ fuse_ctrl_lc_otp_in_initiator_struct = \
+ {\
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ };\
+ return ( fuse_ctrl_lc_otp_in_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_in_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_lc_otp_in_initiator_s fuse_ctrl_lc_otp_in_initiator_struct);\
+ {\
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ } = fuse_ctrl_lc_otp_in_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_lc_otp_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_lc_otp_in_RESPONDER_STRUCT typedef struct packed { \
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ; \
+ lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ; \
+ } fuse_ctrl_lc_otp_in_responder_s;
+
+ `define fuse_ctrl_lc_otp_in_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_in_responder_s to_responder_struct();\
+ fuse_ctrl_lc_otp_in_responder_struct = \
+ {\
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ };\
+ return ( fuse_ctrl_lc_otp_in_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_in_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_lc_otp_in_responder_s fuse_ctrl_lc_otp_in_responder_struct);\
+ {\
+ this.lc_dft_en_i , \
+ this.lc_escalate_en_i , \
+ this.lc_check_byp_en_i \
+ } = fuse_ctrl_lc_otp_in_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor.svh
new file mode 100644
index 0000000..f046d7e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor.svh
@@ -0,0 +1,101 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_lc_otp_in transactions observed by the
+// fuse_ctrl_lc_otp_in monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_monitor extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_lc_otp_in_configuration ),
+ .BFM_BIND_T(virtual fuse_ctrl_lc_otp_in_monitor_bfm ),
+ .TRANS_T(fuse_ctrl_lc_otp_in_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_in_monitor )
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_lc_otp_in_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_lc_otp_in_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_lc_otp_in_monitor_s fuse_ctrl_lc_otp_in_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_lc_otp_in_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
new file mode 100644
index 0000000..68a74b8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_monitor_bfm.sv
@@ -0,0 +1,202 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_lc_otp_in signal monitoring.
+// It is accessed by the uvm fuse_ctrl_lc_otp_in monitor through a virtual
+// interface handle in the fuse_ctrl_lc_otp_in configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_lc_otp_in_if.
+//
+// Input signals from the fuse_ctrl_lc_otp_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_lc_otp_in bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_in_pkg_hdl::*;
+`include "src/fuse_ctrl_lc_otp_in_macros.svh"
+
+
+interface fuse_ctrl_lc_otp_in_monitor_bfm
+ ( fuse_ctrl_lc_otp_in_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_lc_otp_in_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: ", ),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_lc_otp_in_MONITOR_STRUCT
+ fuse_ctrl_lc_otp_in_monitor_s fuse_ctrl_lc_otp_in_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_lc_otp_in_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0] lc_otp_vendor_test_i_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0] lc_otp_program_i_i;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_dft_en_i_i;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_escalate_en_i_i;
+ tri [$bits(lc_ctrl_pkg::lc_tx_t)-1:0] lc_check_byp_en_i_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign lc_otp_vendor_test_i_i = bus.lc_otp_vendor_test_i;
+ assign lc_otp_program_i_i = bus.lc_otp_program_i;
+ assign lc_dft_en_i_i = bus.lc_dft_en_i;
+ assign lc_escalate_en_i_i = bus.lc_escalate_en_i;
+ assign lc_check_byp_en_i_i = bus.lc_check_byp_en_i;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_lc_otp_in_pkg::fuse_ctrl_lc_otp_in_monitor proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_lc_otp_in_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_lc_otp_in_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_lc_otp_in_configuration_s fuse_ctrl_lc_otp_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_lc_otp_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_lc_otp_in_monitor_s fuse_ctrl_lc_otp_in_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_lc_otp_in_monitor_struct.lc_dft_en_i
+ // // fuse_ctrl_lc_otp_in_monitor_struct.lc_escalate_en_i
+ // // fuse_ctrl_lc_otp_in_monitor_struct.lc_check_byp_en_i
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_lc_otp_in_monitor_struct.xyz = lc_otp_vendor_test_i_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)-1:0]
+ // fuse_ctrl_lc_otp_in_monitor_struct.xyz = lc_otp_program_i_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)-1:0]
+ // fuse_ctrl_lc_otp_in_monitor_struct.xyz = lc_dft_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // fuse_ctrl_lc_otp_in_monitor_struct.xyz = lc_escalate_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // fuse_ctrl_lc_otp_in_monitor_struct.xyz = lc_check_byp_en_i_i; // [$bits(lc_ctrl_pkg::lc_tx_t)-1:0]
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_random_sequence.svh
new file mode 100644
index 0000000..477393c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_random_sequence.svh
@@ -0,0 +1,67 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_lc_otp_in transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_lc_otp_in_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_random_sequence
+ extends fuse_ctrl_lc_otp_in_sequence_base ;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in_random_sequence )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_lc_otp_in_transaction::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_lc_otp_in_random_sequence::body()-fuse_ctrl_lc_otp_in_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_lc_otp_in_driver_bfm via the sequencer and fuse_ctrl_lc_otp_in_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_lc_otp_in_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_responder_sequence.svh
new file mode 100644
index 0000000..e414968
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_responder_sequence.svh
@@ -0,0 +1,63 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_responder_sequence
+ extends fuse_ctrl_lc_otp_in_sequence_base ;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in_responder_sequence )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_lc_otp_in_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_lc_otp_in_transaction::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_sequence_base.svh
new file mode 100644
index 0000000..83a122c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_sequence_base.svh
@@ -0,0 +1,110 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_sequence_base extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_lc_otp_in_transaction ),
+ .RSP(fuse_ctrl_lc_otp_in_transaction ));
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in_sequence_base )
+
+ // variables
+ typedef fuse_ctrl_lc_otp_in_transaction fuse_ctrl_lc_otp_in_transaction_req_t;
+ fuse_ctrl_lc_otp_in_transaction_req_t req;
+ typedef fuse_ctrl_lc_otp_in_transaction fuse_ctrl_lc_otp_in_transaction_rsp_t;
+ fuse_ctrl_lc_otp_in_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_lc_otp_in_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_lc_otp_in_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction.svh
new file mode 100644
index 0000000..187b648
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction.svh
@@ -0,0 +1,201 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_lc_otp_in
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_transaction extends uvmf_transaction_base;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_in_transaction )
+
+ lc_ctrl_pkg::lc_tx_t lc_dft_en_i ;
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_i ;
+ lc_ctrl_pkg::lc_tx_t lc_check_byp_en_i ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_lc_otp_in_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_lc_otp_in_monitor and fuse_ctrl_lc_otp_in_monitor_bfm
+ // This struct is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_MONITOR_STRUCT
+ fuse_ctrl_lc_otp_in_monitor_s fuse_ctrl_lc_otp_in_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_in_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_in_monitor_struct.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_in_initiator_s fuse_ctrl_lc_otp_in_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_in_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_in_initiator_struct.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_lc_otp_in_driver and fuse_ctrl_lc_otp_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_lc_otp_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_in_responder_s fuse_ctrl_lc_otp_in_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_in_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_in_responder_struct.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_in_macros.svh
+ `fuse_ctrl_lc_otp_in_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("lc_dft_en_i:0x%x lc_escalate_en_i:0x%x lc_check_byp_en_i:0x%x ",lc_dft_en_i,lc_escalate_en_i,lc_check_byp_en_i);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_lc_otp_in_transaction RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_lc_otp_in_transaction RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.lc_dft_en_i = RHS.lc_dft_en_i;
+ this.lc_escalate_en_i = RHS.lc_escalate_en_i;
+ this.lc_check_byp_en_i = RHS.lc_check_byp_en_i;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_lc_otp_in_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,lc_dft_en_i,"lc_dft_en_i");
+ $add_attribute(transaction_view_h,lc_escalate_en_i,"lc_escalate_en_i");
+ $add_attribute(transaction_view_h,lc_check_byp_en_i,"lc_check_byp_en_i");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction_coverage.svh
new file mode 100644
index 0000000..e5fa783
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_transaction_coverage.svh
@@ -0,0 +1,86 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_lc_otp_in transaction information using
+// a covergroup named fuse_ctrl_lc_otp_in_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_in_transaction_coverage extends uvm_subscriber #(.T(fuse_ctrl_lc_otp_in_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_in_transaction_coverage )
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_lc_otp_in_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ lc_dft_en_i: coverpoint coverage_trans.lc_dft_en_i;
+ lc_escalate_en_i: coverpoint coverage_trans.lc_escalate_en_i;
+ lc_check_byp_en_i: coverpoint coverage_trans.lc_check_byp_en_i;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_lc_otp_in_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_lc_otp_in_transaction_cg.set_inst_name($sformatf("fuse_ctrl_lc_otp_in_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_lc_otp_in_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/src/fuse_ctrl_lc_otp_in_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/yaml/fuse_ctrl_lc_otp_in_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/yaml/fuse_ctrl_lc_otp_in_interface.yaml
new file mode 100644
index 0000000..a380327
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_in_pkg/yaml/fuse_ctrl_lc_otp_in_interface.yaml
@@ -0,0 +1,57 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_lc_otp_in:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters: []
+ ports:
+ - dir: output
+ name: lc_otp_vendor_test_i
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_req_t)'']'
+ - dir: output
+ name: lc_otp_program_i
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::lc_otp_program_req_t)'']'
+ - dir: output
+ name: lc_dft_en_i
+ reset_value: '''bz'
+ width: '[''$bits(lc_ctrl_pkg::lc_tx_t)'']'
+ - dir: output
+ name: lc_escalate_en_i
+ reset_value: '''bz'
+ width: '[''$bits(lc_ctrl_pkg::lc_tx_t)'']'
+ - dir: output
+ name: lc_check_byp_en_i
+ reset_value: '''bz'
+ width: '[''$bits(lc_ctrl_pkg::lc_tx_t)'']'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: lc_dft_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: lc_escalate_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: lc_check_byp_en_i
+ type: lc_ctrl_pkg::lc_tx_t
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.project
new file mode 100644
index 0000000..42717ee
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_lc_otp_out_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.svproject
new file mode 100644
index 0000000..fe0ca64
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/Makefile
new file mode 100644
index 0000000..f975b19
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_lc_otp_out interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_lc_otp_out_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f
+
+fuse_ctrl_lc_otp_out_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f
+
+fuse_ctrl_lc_otp_out_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_xrtl.f
+
+COMP_fuse_ctrl_lc_otp_out_PKG_TGT_0 = q_comp_fuse_ctrl_lc_otp_out_pkg
+COMP_fuse_ctrl_lc_otp_out_PKG_TGT_1 = v_comp_fuse_ctrl_lc_otp_out_pkg
+COMP_fuse_ctrl_lc_otp_out_PKG_TGT = $(COMP_fuse_ctrl_lc_otp_out_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_lc_otp_out_pkg: $(COMP_fuse_ctrl_lc_otp_out_PKG_TGT)
+
+q_comp_fuse_ctrl_lc_otp_out_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG_XRTL)
+
+v_comp_fuse_ctrl_lc_otp_out_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_lc_otp_out_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_lc_otp_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_lc_otp_out_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_lc_otp_out_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_out_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_out_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_out_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_lc_otp_out_pkg += -I$(fuse_ctrl_lc_otp_out_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_lc_otp_out_pkg += $(fuse_ctrl_lc_otp_out_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_lc_otp_out_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_lc_otp_out_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_lc_otp_out_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_out_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_lc_otp_out_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_lc_otp_out_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/compile.do
new file mode 100644
index 0000000..8073231
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_lc_otp_out interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out.compile
new file mode 100644
index 0000000..f8a8ac4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_lc_otp_out_hvl.compile
+ - fuse_ctrl_lc_otp_out_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_bfm.vinfo
new file mode 100644
index 0000000..0c1d35f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_lc_otp_out_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_lc_otp_out_if.sv
+src/fuse_ctrl_lc_otp_out_driver_bfm.sv
+src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_common.compile
new file mode 100644
index 0000000..42616d5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_lc_otp_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f
new file mode 100644
index 0000000..dd3eb8a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f
new file mode 100644
index 0000000..b0a13c6
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_xrtl.f
new file mode 100644
index 0000000..48f620e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hdl.compile
new file mode 100644
index 0000000..2ce74cc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_lc_otp_out_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_lc_otp_out_if.sv
+ - src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
+ - src/fuse_ctrl_lc_otp_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hvl.compile
new file mode 100644
index 0000000..d6a5b88
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_lc_otp_out_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_lc_otp_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.sv
new file mode 100644
index 0000000..c18cea8
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_lc_otp_out_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_lc_otp_out_macros.svh"
+
+ export fuse_ctrl_lc_otp_out_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_lc_otp_out_typedefs.svh"
+ `include "src/fuse_ctrl_lc_otp_out_transaction.svh"
+
+ `include "src/fuse_ctrl_lc_otp_out_configuration.svh"
+ `include "src/fuse_ctrl_lc_otp_out_driver.svh"
+ `include "src/fuse_ctrl_lc_otp_out_monitor.svh"
+
+ `include "src/fuse_ctrl_lc_otp_out_transaction_coverage.svh"
+ `include "src/fuse_ctrl_lc_otp_out_sequence_base.svh"
+ `include "src/fuse_ctrl_lc_otp_out_random_sequence.svh"
+
+ `include "src/fuse_ctrl_lc_otp_out_responder_sequence.svh"
+ `include "src/fuse_ctrl_lc_otp_out2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_lc_otp_out_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo
new file mode 100644
index 0000000..7a4f8b1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_lc_otp_out_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_lc_otp_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.sv
new file mode 100644
index 0000000..8987535
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_lc_otp_out_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_lc_otp_out_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_lc_otp_out_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.vinfo
new file mode 100644
index 0000000..f662f8c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_lc_otp_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_sve.F
new file mode 100644
index 0000000..0483ef5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_lc_otp_out_pkg/fuse_ctrl_lc_otp_out_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out2reg_adapter.svh
new file mode 100644
index 0000000..bd1fa55
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out2reg_adapter.svh
@@ -0,0 +1,112 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_lc_otp_out interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out2reg_adapter extends uvm_reg_adapter;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out2reg_adapter )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_lc_otp_out2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_lc_otp_out_transaction trans_h = fuse_ctrl_lc_otp_out_transaction ::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_lc_otp_out_transaction trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_lc_otp_out2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_agent.svh
new file mode 100644
index 0000000..2b6207d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_agent.svh
@@ -0,0 +1,67 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_agent extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_lc_otp_out_configuration ),
+ .DRIVER_T(fuse_ctrl_lc_otp_out_driver ),
+ .MONITOR_T(fuse_ctrl_lc_otp_out_monitor ),
+ .COVERAGE_T(fuse_ctrl_lc_otp_out_transaction_coverage ),
+ .TRANS_T(fuse_ctrl_lc_otp_out_transaction )
+ );
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_out_agent )
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_configuration.svh
new file mode 100644
index 0000000..b7ccdac
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_configuration.svh
@@ -0,0 +1,193 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_lc_otp_out agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_configuration extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_lc_otp_out_driver_bfm ),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_lc_otp_out_monitor_bfm ));
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out_configuration )
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_lc_otp_out_transaction ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_lc_otp_out_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_CONFIGURATION_STRUCT
+ fuse_ctrl_lc_otp_out_configuration_s fuse_ctrl_lc_otp_out_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_lc_otp_out_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_out_configuration_struct.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_lc_otp_out_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_lc_otp_out_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_lc_otp_out_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_lc_otp_out_configuration
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_lc_otp_out_configuration
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_lc_otp_out_configuration_cg.set_inst_name($sformatf("fuse_ctrl_lc_otp_out_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: ", agent_path, interface_name, ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_lc_otp_out_transaction) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver.svh
new file mode 100644
index 0000000..d25471c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver.svh
@@ -0,0 +1,105 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_driver extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_lc_otp_out_configuration ),
+ .BFM_BIND_T(virtual fuse_ctrl_lc_otp_out_driver_bfm ),
+ .REQ(fuse_ctrl_lc_otp_out_transaction ),
+ .RSP(fuse_ctrl_lc_otp_out_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_out_driver )
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_lc_otp_out_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+`fuse_ctrl_lc_otp_out_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_out_initiator_s fuse_ctrl_lc_otp_out_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+`fuse_ctrl_lc_otp_out_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_out_responder_s fuse_ctrl_lc_otp_out_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_lc_otp_out_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_lc_otp_out_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_lc_otp_out_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_lc_otp_out_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver_bfm.sv
new file mode 100644
index 0000000..bc51e85
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_driver_bfm.sv
@@ -0,0 +1,299 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_lc_otp_out signal driving. It is
+// accessed by the uvm fuse_ctrl_lc_otp_out driver through a virtual interface
+// handle in the fuse_ctrl_lc_otp_out configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_lc_otp_out_if.
+//
+// Input signals from the fuse_ctrl_lc_otp_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_lc_otp_out_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+`include "src/fuse_ctrl_lc_otp_out_macros.svh"
+
+interface fuse_ctrl_lc_otp_out_driver_bfm
+ (fuse_ctrl_lc_otp_out_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_lc_otp_out_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: ", ),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0] lc_otp_vendor_test_o_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0] lc_otp_vendor_test_o_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0] lc_otp_program_o_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0] lc_otp_program_o_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0] otp_lc_data_o_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0] otp_lc_data_o_o = 'bz;
+
+ // INITIATOR mode output signals
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+ assign lc_otp_vendor_test_o_i = bus.lc_otp_vendor_test_o;
+ assign bus.lc_otp_vendor_test_o = (initiator_responder == RESPONDER) ? lc_otp_vendor_test_o_o : 'bz;
+ assign lc_otp_program_o_i = bus.lc_otp_program_o;
+ assign bus.lc_otp_program_o = (initiator_responder == RESPONDER) ? lc_otp_program_o_o : 'bz;
+ assign otp_lc_data_o_i = bus.otp_lc_data_o;
+ assign bus.otp_lc_data_o = (initiator_responder == RESPONDER) ? otp_lc_data_o_o : 'bz;
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_lc_otp_out_pkg::fuse_ctrl_lc_otp_out_driver proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_lc_otp_out_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_lc_otp_out_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_lc_otp_out_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+ `fuse_ctrl_lc_otp_out_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_out_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+ `fuse_ctrl_lc_otp_out_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_out_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ lc_otp_vendor_test_o_o <= 'bz;
+ lc_otp_program_o_o <= 'bz;
+ otp_lc_data_o_o <= 'bz;
+ // INITIATOR mode output signals
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_lc_otp_out_configuration_s fuse_ctrl_lc_otp_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_lc_otp_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_lc_otp_out_initiator_s fuse_ctrl_lc_otp_out_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_lc_otp_out_responder_s fuse_ctrl_lc_otp_out_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_lc_otp_out_initiator_struct:
+ // caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ;
+ // Members within the fuse_ctrl_lc_otp_out_responder_struct:
+ // caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ;
+ initiator_struct = fuse_ctrl_lc_otp_out_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // fuse_ctrl_lc_otp_out_responder_struct.xyz = lc_otp_vendor_test_o_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0]
+ // fuse_ctrl_lc_otp_out_responder_struct.xyz = lc_otp_program_o_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0]
+ // fuse_ctrl_lc_otp_out_responder_struct.xyz = otp_lc_data_o_i; // [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0]
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_lc_otp_out_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_lc_otp_out_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_lc_otp_out_initiator_s fuse_ctrl_lc_otp_out_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_lc_otp_out_responder_s fuse_ctrl_lc_otp_out_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_lc_otp_out_initiator_struct:
+ // caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ;
+ // Variables within the fuse_ctrl_lc_otp_out_responder_struct:
+ // caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // lc_otp_vendor_test_o_o <= fuse_ctrl_lc_otp_out_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0]
+ // lc_otp_program_o_o <= fuse_ctrl_lc_otp_out_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0]
+ // otp_lc_data_o_o <= fuse_ctrl_lc_otp_out_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0]
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_lc_otp_out_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_lc_otp_out_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_if.sv
new file mode 100644
index 0000000..f4fcd32
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_if.sv
@@ -0,0 +1,88 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_lc_otp_out interface signals.
+// It is instantiated once per fuse_ctrl_lc_otp_out bus. Bus Functional Models,
+// BFM's named fuse_ctrl_lc_otp_out_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_lc_otp_out_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_lc_otp_out_bus.lc_otp_vendor_test_o), // Agent input
+// .dut_signal_port(fuse_ctrl_lc_otp_out_bus.lc_otp_program_o), // Agent input
+// .dut_signal_port(fuse_ctrl_lc_otp_out_bus.otp_lc_data_o), // Agent input
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+
+interface fuse_ctrl_lc_otp_out_if
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0] lc_otp_vendor_test_o,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0] lc_otp_program_o,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0] otp_lc_data_o
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input lc_otp_vendor_test_o,
+ input lc_otp_program_o,
+ input otp_lc_data_o
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ input lc_otp_vendor_test_o,
+ input lc_otp_program_o,
+ input otp_lc_data_o
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ output lc_otp_vendor_test_o,
+ output lc_otp_program_o,
+ output otp_lc_data_o
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_macros.svh
new file mode 100644
index 0000000..f9c1d7b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_macros.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_lc_otp_out package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_lc_otp_out_configuration class.
+//
+ `define fuse_ctrl_lc_otp_out_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_lc_otp_out_configuration_s;
+
+ `define fuse_ctrl_lc_otp_out_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_out_configuration_s to_struct();\
+ fuse_ctrl_lc_otp_out_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_lc_otp_out_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_out_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_lc_otp_out_configuration_s fuse_ctrl_lc_otp_out_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_lc_otp_out_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_lc_otp_out_transaction class.
+//
+ `define fuse_ctrl_lc_otp_out_MONITOR_STRUCT typedef struct packed { \
+ caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ; \
+ } fuse_ctrl_lc_otp_out_monitor_s;
+
+ `define fuse_ctrl_lc_otp_out_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_out_monitor_s to_monitor_struct();\
+ fuse_ctrl_lc_otp_out_monitor_struct = \
+ { \
+ this.otp_lc_data_o \
+ };\
+ return ( fuse_ctrl_lc_otp_out_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_lc_otp_out_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_lc_otp_out_monitor_s fuse_ctrl_lc_otp_out_monitor_struct);\
+ {\
+ this.otp_lc_data_o \
+ } = fuse_ctrl_lc_otp_out_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_lc_otp_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_lc_otp_out_INITIATOR_STRUCT typedef struct packed { \
+ caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ; \
+ } fuse_ctrl_lc_otp_out_initiator_s;
+
+ `define fuse_ctrl_lc_otp_out_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_out_initiator_s to_initiator_struct();\
+ fuse_ctrl_lc_otp_out_initiator_struct = \
+ {\
+ this.otp_lc_data_o \
+ };\
+ return ( fuse_ctrl_lc_otp_out_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_out_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_lc_otp_out_initiator_s fuse_ctrl_lc_otp_out_initiator_struct);\
+ {\
+ this.otp_lc_data_o \
+ } = fuse_ctrl_lc_otp_out_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_lc_otp_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_lc_otp_out_RESPONDER_STRUCT typedef struct packed { \
+ caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ; \
+ } fuse_ctrl_lc_otp_out_responder_s;
+
+ `define fuse_ctrl_lc_otp_out_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_lc_otp_out_responder_s to_responder_struct();\
+ fuse_ctrl_lc_otp_out_responder_struct = \
+ {\
+ this.otp_lc_data_o \
+ };\
+ return ( fuse_ctrl_lc_otp_out_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_lc_otp_out_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_lc_otp_out_responder_s fuse_ctrl_lc_otp_out_responder_struct);\
+ {\
+ this.otp_lc_data_o \
+ } = fuse_ctrl_lc_otp_out_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor.svh
new file mode 100644
index 0000000..0c9f446
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor.svh
@@ -0,0 +1,101 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_lc_otp_out transactions observed by the
+// fuse_ctrl_lc_otp_out monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_monitor extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_lc_otp_out_configuration ),
+ .BFM_BIND_T(virtual fuse_ctrl_lc_otp_out_monitor_bfm ),
+ .TRANS_T(fuse_ctrl_lc_otp_out_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_out_monitor )
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_lc_otp_out_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_lc_otp_out_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_lc_otp_out_monitor_s fuse_ctrl_lc_otp_out_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_lc_otp_out_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
new file mode 100644
index 0000000..ca97fe2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_monitor_bfm.sv
@@ -0,0 +1,194 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_lc_otp_out signal monitoring.
+// It is accessed by the uvm fuse_ctrl_lc_otp_out monitor through a virtual
+// interface handle in the fuse_ctrl_lc_otp_out configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_lc_otp_out_if.
+//
+// Input signals from the fuse_ctrl_lc_otp_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_lc_otp_out bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_lc_otp_out_pkg_hdl::*;
+`include "src/fuse_ctrl_lc_otp_out_macros.svh"
+
+
+interface fuse_ctrl_lc_otp_out_monitor_bfm
+ ( fuse_ctrl_lc_otp_out_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_lc_otp_out_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: ", ),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_lc_otp_out_MONITOR_STRUCT
+ fuse_ctrl_lc_otp_out_monitor_s fuse_ctrl_lc_otp_out_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_lc_otp_out_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0] lc_otp_vendor_test_o_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0] lc_otp_program_o_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0] otp_lc_data_o_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign lc_otp_vendor_test_o_i = bus.lc_otp_vendor_test_o;
+ assign lc_otp_program_o_i = bus.lc_otp_program_o;
+ assign otp_lc_data_o_i = bus.otp_lc_data_o;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_lc_otp_out_pkg::fuse_ctrl_lc_otp_out_monitor proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_lc_otp_out_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_lc_otp_out_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_lc_otp_out_configuration_s fuse_ctrl_lc_otp_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_lc_otp_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_lc_otp_out_monitor_s fuse_ctrl_lc_otp_out_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_lc_otp_out_monitor_struct.otp_lc_data_o
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_lc_otp_out_monitor_struct.xyz = lc_otp_vendor_test_o_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)-1:0]
+ // fuse_ctrl_lc_otp_out_monitor_struct.xyz = lc_otp_program_o_i; // [$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)-1:0]
+ // fuse_ctrl_lc_otp_out_monitor_struct.xyz = otp_lc_data_o_i; // [$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)-1:0]
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_random_sequence.svh
new file mode 100644
index 0000000..a680653
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_random_sequence.svh
@@ -0,0 +1,67 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_lc_otp_out transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_lc_otp_out_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_random_sequence
+ extends fuse_ctrl_lc_otp_out_sequence_base ;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out_random_sequence )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_lc_otp_out_transaction::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_lc_otp_out_random_sequence::body()-fuse_ctrl_lc_otp_out_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_lc_otp_out_driver_bfm via the sequencer and fuse_ctrl_lc_otp_out_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_lc_otp_out_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_responder_sequence.svh
new file mode 100644
index 0000000..0e7cf5c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_responder_sequence.svh
@@ -0,0 +1,63 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_responder_sequence
+ extends fuse_ctrl_lc_otp_out_sequence_base ;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out_responder_sequence )
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_lc_otp_out_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_lc_otp_out_transaction::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_sequence_base.svh
new file mode 100644
index 0000000..d084a6b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_sequence_base.svh
@@ -0,0 +1,110 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_sequence_base extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_lc_otp_out_transaction ),
+ .RSP(fuse_ctrl_lc_otp_out_transaction ));
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out_sequence_base )
+
+ // variables
+ typedef fuse_ctrl_lc_otp_out_transaction fuse_ctrl_lc_otp_out_transaction_req_t;
+ fuse_ctrl_lc_otp_out_transaction_req_t req;
+ typedef fuse_ctrl_lc_otp_out_transaction fuse_ctrl_lc_otp_out_transaction_rsp_t;
+ fuse_ctrl_lc_otp_out_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_lc_otp_out_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_lc_otp_out_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction.svh
new file mode 100644
index 0000000..f62fa69
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction.svh
@@ -0,0 +1,196 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_lc_otp_out
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_transaction extends uvmf_transaction_base;
+
+ `uvm_object_utils( fuse_ctrl_lc_otp_out_transaction )
+
+ caliptra_otp_ctrl_pkg::otp_lc_data_t otp_lc_data_o ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_lc_otp_out_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_lc_otp_out_monitor and fuse_ctrl_lc_otp_out_monitor_bfm
+ // This struct is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_MONITOR_STRUCT
+ fuse_ctrl_lc_otp_out_monitor_s fuse_ctrl_lc_otp_out_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_out_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_out_monitor_struct.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_INITIATOR_STRUCT
+ fuse_ctrl_lc_otp_out_initiator_s fuse_ctrl_lc_otp_out_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_out_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_out_initiator_struct.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_lc_otp_out_driver and fuse_ctrl_lc_otp_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_lc_otp_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_RESPONDER_STRUCT
+ fuse_ctrl_lc_otp_out_responder_s fuse_ctrl_lc_otp_out_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_lc_otp_out_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_lc_otp_out_responder_struct.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_lc_otp_out_macros.svh
+ `fuse_ctrl_lc_otp_out_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("otp_lc_data_o:0x%x ",otp_lc_data_o);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_lc_otp_out_transaction RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ &&(this.otp_lc_data_o == RHS.otp_lc_data_o)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_lc_otp_out_transaction RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.otp_lc_data_o = RHS.otp_lc_data_o;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_lc_otp_out_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,otp_lc_data_o,"otp_lc_data_o");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction_coverage.svh
new file mode 100644
index 0000000..25eeac7
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_transaction_coverage.svh
@@ -0,0 +1,84 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_lc_otp_out transaction information using
+// a covergroup named fuse_ctrl_lc_otp_out_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_lc_otp_out_transaction_coverage extends uvm_subscriber #(.T(fuse_ctrl_lc_otp_out_transaction ));
+
+ `uvm_component_utils( fuse_ctrl_lc_otp_out_transaction_coverage )
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_lc_otp_out_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ otp_lc_data_o: coverpoint coverage_trans.otp_lc_data_o;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_lc_otp_out_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_lc_otp_out_transaction_cg.set_inst_name($sformatf("fuse_ctrl_lc_otp_out_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_lc_otp_out_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/src/fuse_ctrl_lc_otp_out_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/yaml/fuse_ctrl_lc_otp_out_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/yaml/fuse_ctrl_lc_otp_out_interface.yaml
new file mode 100644
index 0000000..5b9107e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_lc_otp_out_pkg/yaml/fuse_ctrl_lc_otp_out_interface.yaml
@@ -0,0 +1,37 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_lc_otp_out:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters: []
+ ports:
+ - dir: input
+ name: lc_otp_vendor_test_o
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::lc_otp_vendor_test_rsp_t)'']'
+ - dir: input
+ name: lc_otp_program_o
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::lc_otp_program_rsp_t)'']'
+ - dir: input
+ name: otp_lc_data_o
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::otp_lc_data_t)'']'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: otp_lc_data_o
+ type: caliptra_otp_ctrl_pkg::otp_lc_data_t
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.project
new file mode 100644
index 0000000..c96dcb4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_out_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.svproject
new file mode 100644
index 0000000..64d224a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/Makefile
new file mode 100644
index 0000000..b5ee9df
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_out interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_out_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f
+
+fuse_ctrl_out_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f
+
+fuse_ctrl_out_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_xrtl.f
+
+COMP_fuse_ctrl_out_PKG_TGT_0 = q_comp_fuse_ctrl_out_pkg
+COMP_fuse_ctrl_out_PKG_TGT_1 = v_comp_fuse_ctrl_out_pkg
+COMP_fuse_ctrl_out_PKG_TGT = $(COMP_fuse_ctrl_out_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_out_pkg: $(COMP_fuse_ctrl_out_PKG_TGT)
+
+q_comp_fuse_ctrl_out_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_out_PKG_XRTL)
+
+v_comp_fuse_ctrl_out_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_out_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_out_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_out_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_out_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_out_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_out_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_out_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_out_pkg += -I$(fuse_ctrl_out_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_out_pkg += $(fuse_ctrl_out_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_out_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_out_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_out_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_out_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_out_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_out_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/compile.do
new file mode 100644
index 0000000..5fdaafc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_out interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out.compile
new file mode 100644
index 0000000..3ac4b24
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_out_hvl.compile
+ - fuse_ctrl_out_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_bfm.vinfo
new file mode 100644
index 0000000..b4ea598
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_out_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_out_if.sv
+src/fuse_ctrl_out_driver_bfm.sv
+src/fuse_ctrl_out_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_common.compile
new file mode 100644
index 0000000..1193b25
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f
new file mode 100644
index 0000000..5be2773
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f
new file mode 100644
index 0000000..fc769ad
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_xrtl.f
new file mode 100644
index 0000000..4a7b8cc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hdl.compile
new file mode 100644
index 0000000..2745ad2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_out_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_out_if.sv
+ - src/fuse_ctrl_out_monitor_bfm.sv
+ - src/fuse_ctrl_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hvl.compile
new file mode 100644
index 0000000..5562a20
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_out_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.sv
new file mode 100644
index 0000000..afb8df9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_out_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_out_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_out_macros.svh"
+
+ export fuse_ctrl_out_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_out_typedefs.svh"
+ `include "src/fuse_ctrl_out_transaction.svh"
+
+ `include "src/fuse_ctrl_out_configuration.svh"
+ `include "src/fuse_ctrl_out_driver.svh"
+ `include "src/fuse_ctrl_out_monitor.svh"
+
+ `include "src/fuse_ctrl_out_transaction_coverage.svh"
+ `include "src/fuse_ctrl_out_sequence_base.svh"
+ `include "src/fuse_ctrl_out_random_sequence.svh"
+
+ `include "src/fuse_ctrl_out_responder_sequence.svh"
+ `include "src/fuse_ctrl_out2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_out_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo
new file mode 100644
index 0000000..4f08c9e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_out_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.sv
new file mode 100644
index 0000000..f90777a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_out_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_out_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_out_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.vinfo
new file mode 100644
index 0000000..c55df62
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_sve.F
new file mode 100644
index 0000000..94ccd9b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_out_pkg/fuse_ctrl_out_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out2reg_adapter.svh
new file mode 100644
index 0000000..3d1523d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_out interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out2reg_adapter #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_out2reg_adapter #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_out2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) trans_h = fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_out2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_agent.svh
new file mode 100644
index 0000000..52705d1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_agent #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_out_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .DRIVER_T(fuse_ctrl_out_driver #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .MONITOR_T(fuse_ctrl_out_monitor #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .COVERAGE_T(fuse_ctrl_out_transaction_coverage #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .TRANS_T(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_out_agent #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_configuration.svh
new file mode 100644
index 0000000..4fdfc70
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_out agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_configuration #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_out_driver_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_out_monitor_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_out_configuration #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_out_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_CONFIGURATION_STRUCT
+ fuse_ctrl_out_configuration_s fuse_ctrl_out_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_out_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_out_configuration_struct.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_out_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_out_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_out_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_out_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_out_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_out_configuration_cg.set_inst_name($sformatf("fuse_ctrl_out_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", agent_path, interface_name, AlertSyncOn ,RndConstLfrSeed ,RndCnstLfsrPerm ,MemInitFile ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_out_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver.svh
new file mode 100644
index 0000000..fcb748e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_driver #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_out_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_out_driver_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .REQ(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ),
+ .RSP(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_out_driver #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_out_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_out_driver_bfm.
+`fuse_ctrl_out_INITIATOR_STRUCT
+ fuse_ctrl_out_initiator_s fuse_ctrl_out_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_out_driver_bfm.
+`fuse_ctrl_out_RESPONDER_STRUCT
+ fuse_ctrl_out_responder_s fuse_ctrl_out_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_out_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_out_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_out_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_out_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver_bfm.sv
new file mode 100644
index 0000000..9e53a99
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_driver_bfm.sv
@@ -0,0 +1,351 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_out signal driving. It is
+// accessed by the uvm fuse_ctrl_out driver through a virtual interface
+// handle in the fuse_ctrl_out configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_out_if.
+//
+// Input signals from the fuse_ctrl_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_out_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_out_pkg_hdl::*;
+`include "src/fuse_ctrl_out_macros.svh"
+
+interface fuse_ctrl_out_driver_bfm #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ (fuse_ctrl_out_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_out_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", AlertSyncOn,RndConstLfrSeed,RndCnstLfsrPerm,MemInitFile),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+ tri [$bits(edn_pkg::edn_req_t)-1:0] edn_o_i;
+ reg [$bits(edn_pkg::edn_req_t)-1:0] edn_o_o = 'bz;
+ tri intr_otp_operation_done_o_i;
+ reg intr_otp_operation_done_o_o = 'bz;
+ tri intr_otp_error_o_i;
+ reg intr_otp_error_o_o = 'bz;
+ tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0] alert_tx_o_i;
+ reg [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0] alert_tx_o_o = 'bz;
+ tri [7:0] otp_obs_o_i;
+ reg [7:0] otp_obs_o_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_o_i;
+ reg [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_o_o = 'bz;
+ tri [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0] otp_broadcast_o_i;
+ reg [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0] otp_broadcast_o_o = 'bz;
+ tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_o_i;
+ reg [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_o_o = 'bz;
+ tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_en_o_i;
+ reg [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_en_o_o = 'bz;
+
+ // INITIATOR mode output signals
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+ assign edn_o_i = bus.edn_o;
+ assign bus.edn_o = (initiator_responder == RESPONDER) ? edn_o_o : 'bz;
+ assign intr_otp_operation_done_o_i = bus.intr_otp_operation_done_o;
+ assign bus.intr_otp_operation_done_o = (initiator_responder == RESPONDER) ? intr_otp_operation_done_o_o : 'bz;
+ assign intr_otp_error_o_i = bus.intr_otp_error_o;
+ assign bus.intr_otp_error_o = (initiator_responder == RESPONDER) ? intr_otp_error_o_o : 'bz;
+ assign alert_tx_o_i = bus.alert_tx_o;
+ assign bus.alert_tx_o = (initiator_responder == RESPONDER) ? alert_tx_o_o : 'bz;
+ assign otp_obs_o_i = bus.otp_obs_o;
+ assign bus.otp_obs_o = (initiator_responder == RESPONDER) ? otp_obs_o_o : 'bz;
+ assign otp_ast_pwr_seq_o_i = bus.otp_ast_pwr_seq_o;
+ assign bus.otp_ast_pwr_seq_o = (initiator_responder == RESPONDER) ? otp_ast_pwr_seq_o_o : 'bz;
+ assign otp_broadcast_o_i = bus.otp_broadcast_o;
+ assign bus.otp_broadcast_o = (initiator_responder == RESPONDER) ? otp_broadcast_o_o : 'bz;
+ assign cio_test_o_i = bus.cio_test_o;
+ assign bus.cio_test_o = (initiator_responder == RESPONDER) ? cio_test_o_o : 'bz;
+ assign cio_test_en_o_i = bus.cio_test_en_o;
+ assign bus.cio_test_en_o = (initiator_responder == RESPONDER) ? cio_test_en_o_o : 'bz;
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_out_pkg::fuse_ctrl_out_driver #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_out_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_out_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_out_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_out_driver_bfm.
+ `fuse_ctrl_out_INITIATOR_STRUCT
+ fuse_ctrl_out_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_out_driver_bfm.
+ `fuse_ctrl_out_RESPONDER_STRUCT
+ fuse_ctrl_out_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ edn_o_o <= 'bz;
+ intr_otp_operation_done_o_o <= 'bz;
+ intr_otp_error_o_o <= 'bz;
+ alert_tx_o_o <= 'bz;
+ otp_obs_o_o <= 'bz;
+ otp_ast_pwr_seq_o_o <= 'bz;
+ otp_broadcast_o_o <= 'bz;
+ cio_test_o_o <= 'bz;
+ cio_test_en_o_o <= 'bz;
+ // INITIATOR mode output signals
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_out_configuration_s fuse_ctrl_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_out_initiator_s fuse_ctrl_out_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_out_responder_s fuse_ctrl_out_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_out_initiator_struct:
+ // pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ;
+ // Members within the fuse_ctrl_out_responder_struct:
+ // pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ;
+ initiator_struct = fuse_ctrl_out_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // fuse_ctrl_out_responder_struct.xyz = edn_o_i; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // fuse_ctrl_out_responder_struct.xyz = intr_otp_operation_done_o_i; //
+ // fuse_ctrl_out_responder_struct.xyz = intr_otp_error_o_i; //
+ // fuse_ctrl_out_responder_struct.xyz = alert_tx_o_i; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0]
+ // fuse_ctrl_out_responder_struct.xyz = otp_obs_o_i; // [7:0]
+ // fuse_ctrl_out_responder_struct.xyz = otp_ast_pwr_seq_o_i; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // fuse_ctrl_out_responder_struct.xyz = otp_broadcast_o_i; // [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0]
+ // fuse_ctrl_out_responder_struct.xyz = cio_test_o_i; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // fuse_ctrl_out_responder_struct.xyz = cio_test_en_o_i; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_out_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_out_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_out_initiator_s fuse_ctrl_out_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_out_responder_s fuse_ctrl_out_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_out_initiator_struct:
+ // pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ;
+ // Variables within the fuse_ctrl_out_responder_struct:
+ // pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // edn_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // intr_otp_operation_done_o_o <= fuse_ctrl_out_initiator_struct.xyz; //
+ // intr_otp_error_o_o <= fuse_ctrl_out_initiator_struct.xyz; //
+ // alert_tx_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0]
+ // otp_obs_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [7:0]
+ // otp_ast_pwr_seq_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // otp_broadcast_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0]
+ // cio_test_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // cio_test_en_o_o <= fuse_ctrl_out_initiator_struct.xyz; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_out_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_out_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_if.sv
new file mode 100644
index 0000000..aeb916c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_if.sv
@@ -0,0 +1,123 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_out interface signals.
+// It is instantiated once per fuse_ctrl_out bus. Bus Functional Models,
+// BFM's named fuse_ctrl_out_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_out_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_out_bus.edn_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.intr_otp_operation_done_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.intr_otp_error_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.alert_tx_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.otp_obs_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.otp_ast_pwr_seq_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.otp_broadcast_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.cio_test_o), // Agent input
+// .dut_signal_port(fuse_ctrl_out_bus.cio_test_en_o), // Agent input
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_out_pkg_hdl::*;
+
+interface fuse_ctrl_out_if #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [$bits(edn_pkg::edn_req_t)-1:0] edn_o,
+ inout tri intr_otp_operation_done_o,
+ inout tri intr_otp_error_o,
+ inout tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0] alert_tx_o,
+ inout tri [7:0] otp_obs_o,
+ inout tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_o,
+ inout tri [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0] otp_broadcast_o,
+ inout tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_o,
+ inout tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_en_o
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input edn_o,
+ input intr_otp_operation_done_o,
+ input intr_otp_error_o,
+ input alert_tx_o,
+ input otp_obs_o,
+ input otp_ast_pwr_seq_o,
+ input otp_broadcast_o,
+ input cio_test_o,
+ input cio_test_en_o
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ input edn_o,
+ input intr_otp_operation_done_o,
+ input intr_otp_error_o,
+ input alert_tx_o,
+ input otp_obs_o,
+ input otp_ast_pwr_seq_o,
+ input otp_broadcast_o,
+ input cio_test_o,
+ input cio_test_en_o
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ output edn_o,
+ output intr_otp_operation_done_o,
+ output intr_otp_error_o,
+ output alert_tx_o,
+ output otp_obs_o,
+ output otp_ast_pwr_seq_o,
+ output otp_broadcast_o,
+ output cio_test_o,
+ output cio_test_en_o
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_macros.svh
new file mode 100644
index 0000000..3002819
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_macros.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_out package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_out_configuration class.
+//
+ `define fuse_ctrl_out_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_out_configuration_s;
+
+ `define fuse_ctrl_out_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_out_configuration_s to_struct();\
+ fuse_ctrl_out_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_out_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_out_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_out_configuration_s fuse_ctrl_out_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_out_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_out_transaction class.
+//
+ `define fuse_ctrl_out_MONITOR_STRUCT typedef struct packed { \
+ pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ; \
+ } fuse_ctrl_out_monitor_s;
+
+ `define fuse_ctrl_out_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_out_monitor_s to_monitor_struct();\
+ fuse_ctrl_out_monitor_struct = \
+ { \
+ this.pwr_otp_o \
+ };\
+ return ( fuse_ctrl_out_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_out_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_out_monitor_s fuse_ctrl_out_monitor_struct);\
+ {\
+ this.pwr_otp_o \
+ } = fuse_ctrl_out_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_out_INITIATOR_STRUCT typedef struct packed { \
+ pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ; \
+ } fuse_ctrl_out_initiator_s;
+
+ `define fuse_ctrl_out_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_out_initiator_s to_initiator_struct();\
+ fuse_ctrl_out_initiator_struct = \
+ {\
+ this.pwr_otp_o \
+ };\
+ return ( fuse_ctrl_out_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_out_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_out_initiator_s fuse_ctrl_out_initiator_struct);\
+ {\
+ this.pwr_otp_o \
+ } = fuse_ctrl_out_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_out_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_out_RESPONDER_STRUCT typedef struct packed { \
+ pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ; \
+ } fuse_ctrl_out_responder_s;
+
+ `define fuse_ctrl_out_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_out_responder_s to_responder_struct();\
+ fuse_ctrl_out_responder_struct = \
+ {\
+ this.pwr_otp_o \
+ };\
+ return ( fuse_ctrl_out_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_out_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_out_responder_s fuse_ctrl_out_responder_struct);\
+ {\
+ this.pwr_otp_o \
+ } = fuse_ctrl_out_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor.svh
new file mode 100644
index 0000000..8cf053b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_out transactions observed by the
+// fuse_ctrl_out monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_monitor #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_out_configuration #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_out_monitor_bfm #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .TRANS_T(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_out_monitor #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_out_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_out_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_out_monitor_s fuse_ctrl_out_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_out_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor_bfm.sv
new file mode 100644
index 0000000..216a43e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_monitor_bfm.sv
@@ -0,0 +1,222 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_out signal monitoring.
+// It is accessed by the uvm fuse_ctrl_out monitor through a virtual
+// interface handle in the fuse_ctrl_out configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_out_if.
+//
+// Input signals from the fuse_ctrl_out_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_out bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_out_pkg_hdl::*;
+`include "src/fuse_ctrl_out_macros.svh"
+
+
+interface fuse_ctrl_out_monitor_bfm #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ ( fuse_ctrl_out_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_out_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AlertSyncOn=%x RndConstLfrSeed=%x RndCnstLfsrPerm=%x MemInitFile=%x ", AlertSyncOn,RndConstLfrSeed,RndCnstLfsrPerm,MemInitFile),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_out_MONITOR_STRUCT
+ fuse_ctrl_out_monitor_s fuse_ctrl_out_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_out_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [$bits(edn_pkg::edn_req_t)-1:0] edn_o_i;
+ tri intr_otp_operation_done_o_i;
+ tri intr_otp_error_o_i;
+ tri [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0] alert_tx_o_i;
+ tri [7:0] otp_obs_o_i;
+ tri [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0] otp_ast_pwr_seq_o_i;
+ tri [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0] otp_broadcast_o_i;
+ tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_o_i;
+ tri [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0] cio_test_en_o_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign edn_o_i = bus.edn_o;
+ assign intr_otp_operation_done_o_i = bus.intr_otp_operation_done_o;
+ assign intr_otp_error_o_i = bus.intr_otp_error_o;
+ assign alert_tx_o_i = bus.alert_tx_o;
+ assign otp_obs_o_i = bus.otp_obs_o;
+ assign otp_ast_pwr_seq_o_i = bus.otp_ast_pwr_seq_o;
+ assign otp_broadcast_o_i = bus.otp_broadcast_o;
+ assign cio_test_o_i = bus.cio_test_o;
+ assign cio_test_en_o_i = bus.cio_test_en_o;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_out_pkg::fuse_ctrl_out_monitor #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_out_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_out_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_out_configuration_s fuse_ctrl_out_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_out_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_out_monitor_s fuse_ctrl_out_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_out_monitor_struct.pwr_otp_o
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_out_monitor_struct.xyz = edn_o_i; // [$bits(edn_pkg::edn_req_t)-1:0]
+ // fuse_ctrl_out_monitor_struct.xyz = intr_otp_operation_done_o_i; //
+ // fuse_ctrl_out_monitor_struct.xyz = intr_otp_error_o_i; //
+ // fuse_ctrl_out_monitor_struct.xyz = alert_tx_o_i; // [ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)-1:0]
+ // fuse_ctrl_out_monitor_struct.xyz = otp_obs_o_i; // [7:0]
+ // fuse_ctrl_out_monitor_struct.xyz = otp_ast_pwr_seq_o_i; // [$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)-1:0]
+ // fuse_ctrl_out_monitor_struct.xyz = otp_broadcast_o_i; // [$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)-1:0]
+ // fuse_ctrl_out_monitor_struct.xyz = cio_test_o_i; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // fuse_ctrl_out_monitor_struct.xyz = cio_test_en_o_i; // [caliptra_otp_ctrl_pkg::OtpTestVectWidth-1:0]
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_random_sequence.svh
new file mode 100644
index 0000000..7e0e226
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_out transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_out_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_random_sequence #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ extends fuse_ctrl_out_sequence_base #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_out_random_sequence #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_out_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_out_random_sequence::body()-fuse_ctrl_out_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_out_driver_bfm via the sequencer and fuse_ctrl_out_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_out_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_responder_sequence.svh
new file mode 100644
index 0000000..5204741
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_responder_sequence #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ )
+ extends fuse_ctrl_out_sequence_base #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_out_responder_sequence #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_out_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_out_transaction#(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_sequence_base.svh
new file mode 100644
index 0000000..03504c9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_sequence_base #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )),
+ .RSP(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_out_sequence_base #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ // variables
+ typedef fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) fuse_ctrl_out_transaction_req_t;
+ fuse_ctrl_out_transaction_req_t req;
+ typedef fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) fuse_ctrl_out_transaction_rsp_t;
+ fuse_ctrl_out_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_out_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_out_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction.svh
new file mode 100644
index 0000000..42d9dea
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction.svh
@@ -0,0 +1,216 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_out
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_transaction #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_out_transaction #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_out_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_out_monitor and fuse_ctrl_out_monitor_bfm
+ // This struct is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_MONITOR_STRUCT
+ fuse_ctrl_out_monitor_s fuse_ctrl_out_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_out_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_out_monitor_struct.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_INITIATOR_STRUCT
+ fuse_ctrl_out_initiator_s fuse_ctrl_out_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_out_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_out_initiator_struct.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_out_driver and fuse_ctrl_out_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_out_driver_bfm.
+ // This struct is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_RESPONDER_STRUCT
+ fuse_ctrl_out_responder_s fuse_ctrl_out_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_out_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_out_responder_struct.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_out_macros.svh
+ `fuse_ctrl_out_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("pwr_otp_o:0x%x ",pwr_otp_o);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ &&(this.pwr_otp_o == RHS.pwr_otp_o)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.pwr_otp_o = RHS.pwr_otp_o;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_out_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,pwr_otp_o,"pwr_otp_o");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction_coverage.svh
new file mode 100644
index 0000000..f418978
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_transaction_coverage.svh
@@ -0,0 +1,99 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_out transaction information using
+// a covergroup named fuse_ctrl_out_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_out_transaction_coverage #(
+ int AlertSyncOn = 3,
+ caliptra_otp_ctrl_pkg::lfsr_seed_t RndConstLfrSeed = caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault,
+ caliptra_otp_ctrl_pkg::lfsr_perm_t RndCnstLfsrPerm = caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault,
+ string MemInitFile = ""
+ ) extends uvm_subscriber #(.T(fuse_ctrl_out_transaction #(
+ .AlertSyncOn(AlertSyncOn),
+ .RndConstLfrSeed(RndConstLfrSeed),
+ .RndCnstLfsrPerm(RndCnstLfsrPerm),
+ .MemInitFile(MemInitFile)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_out_transaction_coverage #(
+ AlertSyncOn,
+ RndConstLfrSeed,
+ RndCnstLfsrPerm,
+ MemInitFile
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_out_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ pwr_otp_o: coverpoint coverage_trans.pwr_otp_o;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_out_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_out_transaction_cg.set_inst_name($sformatf("fuse_ctrl_out_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_out_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/src/fuse_ctrl_out_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/yaml/fuse_ctrl_out_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/yaml/fuse_ctrl_out_interface.yaml
new file mode 100644
index 0000000..0067495
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_out_pkg/yaml/fuse_ctrl_out_interface.yaml
@@ -0,0 +1,73 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_out:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AlertSyncOn
+ type: int
+ value: '3'
+ - name: RndConstLfrSeed
+ type: caliptra_otp_ctrl_pkg::lfsr_seed_t
+ value: caliptra_otp_ctrl_pkg::RndCnstLfsrSeedDefault
+ - name: RndCnstLfsrPerm
+ type: caliptra_otp_ctrl_pkg::lfsr_perm_t
+ value: caliptra_otp_ctrl_pkg::RndCnstLfsrPermDefault
+ - name: MemInitFile
+ type: string
+ value: '""'
+ ports:
+ - dir: input
+ name: edn_o
+ reset_value: '''bz'
+ width: '[''$bits(edn_pkg::edn_req_t)'']'
+ - dir: input
+ name: intr_otp_operation_done_o
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: intr_otp_error_o
+ reset_value: '''bz'
+ width: '1'
+ - dir: input
+ name: alert_tx_o
+ reset_value: '''bz'
+ width: '[''ast_pkg::NumAlerts * $bits(caliptra_prim_alert_pkg::alert_tx_t)'']'
+ - dir: input
+ name: otp_obs_o
+ reset_value: '''bz'
+ width: '8'
+ - dir: input
+ name: otp_ast_pwr_seq_o
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_pkg::otp_ast_req_t)'']'
+ - dir: input
+ name: otp_broadcast_o
+ reset_value: '''bz'
+ width: '[''$bits(caliptra_otp_ctrl_part_pkg::otp_broadcast_t)'']'
+ - dir: input
+ name: cio_test_o
+ reset_value: '''bz'
+ width: '[''caliptra_otp_ctrl_pkg::OtpTestVectWidth'']'
+ - dir: input
+ name: cio_test_en_o
+ reset_value: '''bz'
+ width: '[''caliptra_otp_ctrl_pkg::OtpTestVectWidth'']'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'True'
+ isrand: 'False'
+ name: pwr_otp_o
+ type: pwrmgr_pkg::pwr_otp_rsp_t
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.project
new file mode 100644
index 0000000..d0dba88
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_prim_axi_read_in_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.svproject
new file mode 100644
index 0000000..7f5e878
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/Makefile
new file mode 100644
index 0000000..ff74765
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_prim_axi_read_in interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_prim_axi_read_in_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f
+
+fuse_ctrl_prim_axi_read_in_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f
+
+fuse_ctrl_prim_axi_read_in_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_xrtl.f
+
+COMP_fuse_ctrl_prim_axi_read_in_PKG_TGT_0 = q_comp_fuse_ctrl_prim_axi_read_in_pkg
+COMP_fuse_ctrl_prim_axi_read_in_PKG_TGT_1 = v_comp_fuse_ctrl_prim_axi_read_in_pkg
+COMP_fuse_ctrl_prim_axi_read_in_PKG_TGT = $(COMP_fuse_ctrl_prim_axi_read_in_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_prim_axi_read_in_pkg: $(COMP_fuse_ctrl_prim_axi_read_in_PKG_TGT)
+
+q_comp_fuse_ctrl_prim_axi_read_in_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG_XRTL)
+
+v_comp_fuse_ctrl_prim_axi_read_in_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_prim_axi_read_in_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_prim_axi_read_in_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_in_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_prim_axi_read_in_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_in_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_in_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_in_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_in_pkg += -I$(fuse_ctrl_prim_axi_read_in_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_in_pkg += $(fuse_ctrl_prim_axi_read_in_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_prim_axi_read_in_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_prim_axi_read_in_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_in_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_in_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_prim_axi_read_in_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_in_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/compile.do
new file mode 100644
index 0000000..d5afe8a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_prim_axi_read_in interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in.compile
new file mode 100644
index 0000000..73650e4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_prim_axi_read_in_hvl.compile
+ - fuse_ctrl_prim_axi_read_in_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_bfm.vinfo
new file mode 100644
index 0000000..8ed6f0d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_prim_axi_read_in_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_prim_axi_read_in_if.sv
+src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
+src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_common.compile
new file mode 100644
index 0000000..ca43b4d
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f
new file mode 100644
index 0000000..f0b99a3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f
new file mode 100644
index 0000000..8dcf197
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_xrtl.f
new file mode 100644
index 0000000..46c2aab
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hdl.compile
new file mode 100644
index 0000000..31d8fb1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_prim_axi_read_in_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_prim_axi_read_in_if.sv
+ - src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
+ - src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hvl.compile
new file mode 100644
index 0000000..7c7cc34
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_prim_axi_read_in_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_prim_axi_read_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.sv
new file mode 100644
index 0000000..2e29485
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_prim_axi_read_in_pkg;
+
+ import uvm_pkg::*;
+ import uvmf_base_pkg_hdl::*;
+ import uvmf_base_pkg::*;
+ import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+
+ `include "uvm_macros.svh"
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+ `include "src/fuse_ctrl_prim_axi_read_in_macros.svh"
+
+ export fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+
+
+
+ // Parameters defined as HVL parameters
+
+ `include "src/fuse_ctrl_prim_axi_read_in_typedefs.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_transaction.svh"
+
+ `include "src/fuse_ctrl_prim_axi_read_in_configuration.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_driver.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_monitor.svh"
+
+ `include "src/fuse_ctrl_prim_axi_read_in_transaction_coverage.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_sequence_base.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_random_sequence.svh"
+
+ `include "src/fuse_ctrl_prim_axi_read_in_responder_sequence.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in2reg_adapter.svh"
+
+ `include "src/fuse_ctrl_prim_axi_read_in_agent.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // UVMF_CHANGE_ME : When adding new interface sequences to the src directory
+ // be sure to add the sequence file here so that it will be
+ // compiled as part of the interface package. Be sure to place
+ // the new sequence after any base sequences of the new sequence.
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo
new file mode 100644
index 0000000..7f62c30
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg.vinfo
@@ -0,0 +1,4 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.vinfo
+@use fuse_ctrl_prim_axi_read_in_pkg_hdl.vinfo
++incdir+@vinfodir
+fuse_ctrl_prim_axi_read_in_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
new file mode 100644
index 0000000..f771faa
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
@@ -0,0 +1,52 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that needs to be compiled and synthesized
+// for running on Veloce.
+//
+// CONTAINS:
+// -
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+package fuse_ctrl_prim_axi_read_in_pkg_hdl;
+
+ import uvmf_base_pkg_hdl::*;
+
+ // pragma uvmf custom package_imports_additional begin
+ // pragma uvmf custom package_imports_additional end
+
+ // Parameters defined as HDL parameters
+
+ `include "src/fuse_ctrl_prim_axi_read_in_typedefs_hdl.svh"
+ `include "src/fuse_ctrl_prim_axi_read_in_macros.svh"
+
+ // pragma uvmf custom package_item_additional begin
+ // pragma uvmf custom package_item_additional end
+
+endpackage
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.vinfo
new file mode 100644
index 0000000..eb67953
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_hdl.vinfo
@@ -0,0 +1,2 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+fuse_ctrl_prim_axi_read_in_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_sve.F b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_sve.F
new file mode 100644
index 0000000..ce8af16
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_pkg_sve.F
@@ -0,0 +1,10 @@
+// UVM
++incdir+${UVM_HOME}/src
+${UVM_HOME}/src/uvm_pkg.sv
+
+// Common UVMF files
+-f ${UVMF_HOME}/common/common_sve.f
+
++incdir+.
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hdl.f
+-f ${UVMF_VIP_LIBRARY_HOME}/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/fuse_ctrl_prim_axi_read_in_filelist_hvl.f
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in2reg_adapter.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in2reg_adapter.svh
new file mode 100644
index 0000000..da4790c
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in2reg_adapter.svh
@@ -0,0 +1,137 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the UVM register adapter for the fuse_ctrl_prim_axi_read_in interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in2reg_adapter #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_reg_adapter;
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in2reg_adapter #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //--------------------------------------------------------------------
+ // new
+ //--------------------------------------------------------------------
+ function new (string name = "fuse_ctrl_prim_axi_read_in2reg_adapter" );
+ super.new(name);
+ // pragma uvmf custom new begin
+ // UVMF_CHANGE_ME : Configure the adapter regarding byte enables and provides response.
+
+ // Does the protocol the Agent is modeling support byte enables?
+ // 0 = NO
+ // 1 = YES
+ supports_byte_enable = 0;
+
+ // Does the Agent's Driver provide separate response sequence items?
+ // i.e. Does the driver call seq_item_port.put()
+ // and do the sequences call get_response()?
+ // 0 = NO
+ // 1 = YES
+ provides_responses = 0;
+ // pragma uvmf custom new end
+
+ endfunction: new
+
+ //--------------------------------------------------------------------
+ // reg2bus
+ //--------------------------------------------------------------------
+ virtual function uvm_sequence_item reg2bus(const ref uvm_reg_bus_op rw);
+
+ fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h = fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("trans_h");
+
+ // pragma uvmf custom reg2bus begin
+ // UVMF_CHANGE_ME : Fill in the reg2bus adapter mapping registe fields to protocol fields.
+
+ //Adapt the following for your sequence item type
+ // trans_h.op = (rw.kind == UVM_READ) ? WB_READ : WB_WRITE;
+ //Copy over address
+ // trans_h.addr = rw.addr;
+ //Copy over write data
+ // trans_h.data = rw.data;
+
+ // pragma uvmf custom reg2bus end
+
+ // Return the adapted transaction
+ return trans_h;
+
+ endfunction: reg2bus
+
+ //--------------------------------------------------------------------
+ // bus2reg
+ //--------------------------------------------------------------------
+ virtual function void bus2reg(uvm_sequence_item bus_item,
+ ref uvm_reg_bus_op rw);
+ fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) trans_h;
+ if (!$cast(trans_h, bus_item)) begin
+ `uvm_fatal("ADAPT","Provided bus_item is not of the correct type")
+ return;
+ end
+ // pragma uvmf custom bus2reg begin
+ // UVMF_CHANGE_ME : Fill in the bus2reg adapter mapping protocol fields to register fields.
+ //Adapt the following for your sequence item type
+ //Copy over instruction type
+ // rw.kind = (trans_h.op == WB_WRITE) ? UVM_WRITE : UVM_READ;
+ //Copy over address
+ // rw.addr = trans_h.addr;
+ //Copy over read data
+ // rw.data = trans_h.data;
+ //Check for errors on the bus and return UVM_NOT_OK if there is an error
+ // rw.status = UVM_IS_OK;
+ // pragma uvmf custom bus2reg end
+
+ endfunction: bus2reg
+
+endclass : fuse_ctrl_prim_axi_read_in2reg_adapter
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_agent.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_agent.svh
new file mode 100644
index 0000000..86f6725
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_agent.svh
@@ -0,0 +1,102 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: Protocol specific agent class definition
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_agent #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent #(
+ .CONFIG_T(fuse_ctrl_prim_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .DRIVER_T(fuse_ctrl_prim_axi_read_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_T(fuse_ctrl_prim_axi_read_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .COVERAGE_T(fuse_ctrl_prim_axi_read_in_transaction_coverage #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ))
+ );
+
+ `uvm_component_param_utils( fuse_ctrl_prim_axi_read_in_agent #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// FUNCTION : new()
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+ // FUNCTION: build_phase
+ virtual function void build_phase(uvm_phase phase);
+// pragma uvmf custom build_phase_pre_super begin
+// pragma uvmf custom build_phase_pre_super end
+ super.build_phase(phase);
+ if (configuration.active_passive == ACTIVE) begin
+ // Place sequencer handle into configuration object
+ // so that it may be retrieved from configuration
+ // rather than using uvm_config_db
+ configuration.sequencer = this.sequencer;
+ end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_configuration.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_configuration.svh
new file mode 100644
index 0000000..ec9a380
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_configuration.svh
@@ -0,0 +1,233 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class contains all variables and functions used
+// to configure the fuse_ctrl_prim_axi_read_in agent and its bfm's. It gets the
+// bfm's from the uvm_config_db for use by the agent.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_configuration #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_parameterized_agent_configuration_base #(
+ .DRIVER_BFM_BIND_T(virtual fuse_ctrl_prim_axi_read_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .MONITOR_BFM_BIND_T( virtual fuse_ctrl_prim_axi_read_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in_configuration #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+
+ // Sequencer handle populated by agent
+ uvm_sequencer #(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ) sequencer;
+
+ //Constraints for the configuration variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ covergroup fuse_ctrl_prim_axi_read_in_configuration_cg;
+ // pragma uvmf custom covergroup begin
+ option.auto_bin_max=1024;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ //*******************************************************************
+ //*******************************************************************
+ // Structure used to pass configuration variables to monitor and driver BFM's.
+ // Use to_struct function to pack variables into structure.
+ // Use from_struct function to unpack variables from structure.
+ // This structure is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_CONFIGURATION_STRUCT
+ fuse_ctrl_prim_axi_read_in_configuration_s fuse_ctrl_prim_axi_read_in_configuration_struct;
+ //*******************************************************************
+ // FUNCTION: to_struct()
+ // This function packs variables into a fuse_ctrl_prim_axi_read_in_configuration_s
+ // structure. The function returns the handle to the fuse_ctrl_prim_axi_read_in_configuration_struct.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_CONFIGURATION_TO_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_struct()
+ // This function unpacks the struct provided as an argument into
+ // variables of this class.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_CONFIGURATION_FROM_STRUCT_FUNCTION
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ // Construct the covergroup for this configuration class
+ fuse_ctrl_prim_axi_read_in_configuration_cg = new;
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: post_randomize()
+ // This function is automatically called after the randomize() function
+ // is executed.
+ //
+ function void post_randomize();
+ super.post_randomize();
+ fuse_ctrl_prim_axi_read_in_configuration_cg.sample();
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: initialize
+ // This function causes the configuration to retrieve
+ // its virtual interface handle from the uvm_config_db.
+ // This function also makes itself available to its
+ // agent through the uvm_config_db.
+ //
+ // ARGUMENTS:
+ // uvmf_active_passive_t activity:
+ // This argument identifies the simulation level
+ // as either BLOCK, CHIP, SIMULATION, etc.
+ //
+ // AGENT_PATH:
+ // This argument identifies the path to this
+ // configurations agent. This configuration
+ // makes itself available to the agent specified
+ // by agent_path by placing itself into the
+ // uvm_config_db.
+ //
+ // INTERFACE_NAME:
+ // This argument identifies the string name of
+ // this configurations BFM's. This string
+ // name is used to retrieve the driver and
+ // monitor BFM from the uvm_config_db.
+ //
+ virtual function void initialize(uvmf_active_passive_t activity,
+ string agent_path,
+ string interface_name);
+
+ super.initialize( activity, agent_path, interface_name);
+ // The covergroup is given the same name as the interface
+ fuse_ctrl_prim_axi_read_in_configuration_cg.set_inst_name(interface_name);
+
+ // This configuration places itself into the uvm_config_db for the agent, identified by the agent_path variable, to retrieve.
+ uvm_config_db #( fuse_ctrl_prim_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,agent_path,UVMF_AGENT_CONFIG, this );
+
+ // This configuration also places itself in the config db using the same identifier used by the interface. This allows users to access
+ // configuration variables and the interface through the bfm api class rather than directly accessing the BFM. This is useful for
+ // accessingthe BFM when using Veloce
+ uvm_config_db #( fuse_ctrl_prim_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )
+ )::set( null ,UVMF_CONFIGURATIONS, interface_name, this );
+
+ fuse_ctrl_prim_axi_read_in_configuration_cg.set_inst_name($sformatf("fuse_ctrl_prim_axi_read_in_configuration_cg_%s",get_full_name()));
+
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+ `uvm_info("CFG",
+ $psprintf("The agent at '%s' is using interface named %s has the following parameters: AW=%x DW=%x IW=%x UW=%x ", agent_path, interface_name, AW ,DW ,IW ,UW ),
+ UVM_DEBUG)
+
+ // pragma uvmf custom initialize begin
+ // This controls whether or not the agent returns a transaction handle in the driver when calling
+ // item_done() back into the sequencer or not. If set to 1, a transaction is sent back which means
+ // the sequence on the other end must use the get_response() part of the driver/sequence API. If
+ // this doesn't occur, there will eventually be response_queue overflow errors during the test.
+ return_transaction_response = 1'b0;
+
+ // pragma uvmf custom initialize end
+
+ endfunction
+
+ // ****************************************************************************
+ // TASK: wait_for_reset
+ // *[Required]* Blocks until reset is released. The wait_for_reset operation is performed
+ // by a task in the monitor bfm.
+ virtual task wait_for_reset();
+ monitor_bfm.wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ // TASK: wait_for_num_clocks
+ // *[Required]* Blocks until specified number of clocks have elapsed. The wait_for_num_clocks
+ // operation is performed by a task in the monitor bfm.
+ virtual task wait_for_num_clocks(int clocks);
+ monitor_bfm.wait_for_num_clocks(clocks);
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : convert2string()
+ // This function is used to convert variables in this class into a string for log messaging.
+ //
+ virtual function string convert2string ();
+ // pragma uvmf custom convert2string begin
+ return $sformatf("");
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: get_sequencer
+ function uvm_sequencer #(fuse_ctrl_prim_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )) get_sequencer();
+ return sequencer;
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver.svh
new file mode 100644
index 0000000..da5cb2e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver.svh
@@ -0,0 +1,135 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class passes transactions between the sequencer
+// and the BFM driver interface. It accesses the driver BFM
+// through the bfm handle. This driver
+// passes transactions to the driver BFM through the access
+// task.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_driver #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_driver_base #(
+ .CONFIG_T(fuse_ctrl_prim_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .BFM_BIND_T(virtual fuse_ctrl_prim_axi_read_in_driver_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .REQ(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ),
+ .RSP(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) ));
+
+ `uvm_component_param_utils( fuse_ctrl_prim_axi_read_in_driver #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+//*******************************************************************
+// Macros that define structs located in fuse_ctrl_prim_axi_read_in_macros.svh
+//*******************************************************************
+// Initiator macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+// to communicate initiator driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+`fuse_ctrl_prim_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_prim_axi_read_in_initiator_s fuse_ctrl_prim_axi_read_in_initiator_struct;
+//*******************************************************************
+// Responder macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+// to communicate Responder driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+`fuse_ctrl_prim_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_prim_axi_read_in_responder_s fuse_ctrl_prim_axi_read_in_responder_struct;
+
+// pragma uvmf custom class_item_additional begin
+// pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent=null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the driver BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// driver BFM. This allows the driver BFM to call tasks and function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ****************************************************************************
+// This task is called by the run_phase in uvmf_driver_base.
+ virtual task access( inout REQ txn );
+// pragma uvmf custom access begin
+ if (configuration.initiator_responder==RESPONDER) begin
+ // Complete current transfer and wait for next transfer
+ bfm.respond_and_wait_for_next_transfer(
+ fuse_ctrl_prim_axi_read_in_initiator_struct,
+ txn.to_responder_struct()
+ );
+ // Unpack information about initiated transfer received by this responder
+ txn.from_initiator_struct(fuse_ctrl_prim_axi_read_in_initiator_struct);
+ end else begin
+ // Initiate a transfer and get response
+ bfm.initiate_and_get_response(
+ txn.to_initiator_struct(),
+ fuse_ctrl_prim_axi_read_in_responder_struct
+ );
+ // Unpack transfer response information received by this initiator
+ txn.from_responder_struct(fuse_ctrl_prim_axi_read_in_responder_struct);
+ end
+// pragma uvmf custom access end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
new file mode 100644
index 0000000..225df6f
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_driver_bfm.sv
@@ -0,0 +1,383 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This interface performs the fuse_ctrl_prim_axi_read_in signal driving. It is
+// accessed by the uvm fuse_ctrl_prim_axi_read_in driver through a virtual interface
+// handle in the fuse_ctrl_prim_axi_read_in configuration. It drives the singals passed
+// in through the port connection named bus of type fuse_ctrl_prim_axi_read_in_if.
+//
+// Input signals from the fuse_ctrl_prim_axi_read_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// This bfm drives signals with a _o suffix. These signals
+// are driven onto signals within fuse_ctrl_prim_axi_read_in_if based on INITIATOR/RESPONDER and/or
+// ARBITRATION/GRANT status.
+//
+// The output signal connections are as follows:
+// signal_o -> bus.signal
+//
+//
+// Interface functions and tasks used by UVM components:
+//
+// configure:
+// This function gets configuration attributes from the
+// UVM driver to set any required BFM configuration
+// variables such as 'initiator_responder'.
+//
+// initiate_and_get_response:
+// This task is used to perform signaling activity for initiating
+// a protocol transfer. The task initiates the transfer, using
+// input data from the initiator struct. Then the task captures
+// response data, placing the data into the response struct.
+// The response struct is returned to the driver class.
+//
+// respond_and_wait_for_next_transfer:
+// This task is used to complete a current transfer as a responder
+// and then wait for the initiator to start the next transfer.
+// The task uses data in the responder struct to drive protocol
+// signals to complete the transfer. The task then waits for
+// the next transfer. Once the next transfer begins, data from
+// the initiator is placed into the initiator struct and sent
+// to the responder sequence for processing to determine
+// what data to respond with.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+`include "src/fuse_ctrl_prim_axi_read_in_macros.svh"
+
+interface fuse_ctrl_prim_axi_read_in_driver_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ (fuse_ctrl_prim_axi_read_in_if bus);
+ // The following pragma and additional ones in-lined further below are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_prim_axi_read_in_driver_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+
+ // Signal list (all signals are capable of being inputs and outputs for the sake
+ // of supporting both INITIATOR and RESPONDER mode operation. Expectation is that
+ // directionality in the config file was from the point-of-view of the INITIATOR
+
+ // INITIATOR mode input signals
+
+ // INITIATOR mode output signals
+ tri [AW-1:0] araddr_i;
+ reg [AW-1:0] araddr_o = 'bz;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst_i;
+ reg [$bits(axi_pkg::axi_burst_e)-1:0] arburst_o = 'bz;
+ tri [2:0] arsize_i;
+ reg [2:0] arsize_o = 'bz;
+ tri [7:0] arlen_i;
+ reg [7:0] arlen_o = 'bz;
+ tri [UW-1:0] aruser_i;
+ reg [UW-1:0] aruser_o = 'bz;
+ tri [IW-1:0] arid_i;
+ reg [IW-1:0] arid_o = 'bz;
+ tri arlock_i;
+ reg arlock_o = 'bz;
+ tri arvalid_i;
+ reg arvalid_o = 'bz;
+ tri rready_i;
+ reg rready_o = 'bz;
+
+ // Bi-directional signals
+
+
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+
+ // These are signals marked as 'input' by the config file, but the signals will be
+ // driven by this BFM if put into RESPONDER mode (flipping all signal directions around)
+
+
+ // These are signals marked as 'output' by the config file, but the outputs will
+ // not be driven by this BFM unless placed in INITIATOR mode.
+ assign bus.araddr = (initiator_responder == INITIATOR) ? araddr_o : 'bz;
+ assign araddr_i = bus.araddr;
+ assign bus.arburst = (initiator_responder == INITIATOR) ? arburst_o : 'bz;
+ assign arburst_i = bus.arburst;
+ assign bus.arsize = (initiator_responder == INITIATOR) ? arsize_o : 'bz;
+ assign arsize_i = bus.arsize;
+ assign bus.arlen = (initiator_responder == INITIATOR) ? arlen_o : 'bz;
+ assign arlen_i = bus.arlen;
+ assign bus.aruser = (initiator_responder == INITIATOR) ? aruser_o : 'bz;
+ assign aruser_i = bus.aruser;
+ assign bus.arid = (initiator_responder == INITIATOR) ? arid_o : 'bz;
+ assign arid_i = bus.arid;
+ assign bus.arlock = (initiator_responder == INITIATOR) ? arlock_o : 'bz;
+ assign arlock_i = bus.arlock;
+ assign bus.arvalid = (initiator_responder == INITIATOR) ? arvalid_o : 'bz;
+ assign arvalid_i = bus.arvalid;
+ assign bus.rready = (initiator_responder == INITIATOR) ? rready_o : 'bz;
+ assign rready_i = bus.rready;
+
+ // Proxy handle to UVM driver
+ fuse_ctrl_prim_axi_read_in_pkg::fuse_ctrl_prim_axi_read_in_driver #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.my_function_name_in_uvm_driver
+
+ // ****************************************************************************
+ // ****************************************************************************
+ // Macros that define structs located in fuse_ctrl_prim_axi_read_in_macros.svh
+ // ****************************************************************************
+ // Struct for passing configuration data from fuse_ctrl_prim_axi_read_in_driver to this BFM
+ // ****************************************************************************
+ `fuse_ctrl_prim_axi_read_in_CONFIGURATION_STRUCT
+ // ****************************************************************************
+ // Structs for INITIATOR and RESPONDER data flow
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+ `fuse_ctrl_prim_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_prim_axi_read_in_initiator_s initiator_struct;
+ // Responder macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+ `fuse_ctrl_prim_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_prim_axi_read_in_responder_s responder_struct;
+
+ // ****************************************************************************
+// pragma uvmf custom reset_condition_and_response begin
+ // Always block used to return signals to reset value upon assertion of reset
+ always @( negedge rst_ni_i )
+ begin
+ // RESPONDER mode output signals
+ // INITIATOR mode output signals
+ araddr_o <= 'bz;
+ arburst_o <= 'bz;
+ arsize_o <= 'bz;
+ arlen_o <= 'bz;
+ aruser_o <= 'bz;
+ arid_o <= 'bz;
+ arlock_o <= 'bz;
+ arvalid_o <= 'bz;
+ rready_o <= 'bz;
+ // Bi-directional signals
+
+ end
+// pragma uvmf custom reset_condition_and_response end
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the driver BFM. It is called by the driver within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the driver BFM needs to be aware of the new configuration
+ // variables.
+ //
+
+ function void configure(fuse_ctrl_prim_axi_read_in_configuration_s fuse_ctrl_prim_axi_read_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_prim_axi_read_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+// pragma uvmf custom initiate_and_get_response begin
+// ****************************************************************************
+// UVMF_CHANGE_ME
+// This task is used by an initator. The task first initiates a transfer then
+// waits for the responder to complete the transfer.
+ task initiate_and_get_response(
+ // This argument passes transaction variables used by an initiator
+ // to perform the initial part of a protocol transfer. The values
+ // come from a sequence item created in a sequence.
+ input fuse_ctrl_prim_axi_read_in_initiator_s fuse_ctrl_prim_axi_read_in_initiator_struct,
+ // This argument is used to send data received from the responder
+ // back to the sequence item. The sequence item is returned to the sequence.
+ output fuse_ctrl_prim_axi_read_in_responder_s fuse_ctrl_prim_axi_read_in_responder_struct
+ );// pragma tbx xtf
+ //
+ // Members within the fuse_ctrl_prim_axi_read_in_initiator_struct:
+ // logic [AW-1:0] prim_araddr ;
+ // logic prim_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ;
+ // logic [2:0] prim_arsize ;
+ // logic [7:0] prim_arlen ;
+ // logic [UW-1:0] prim_aruser ;
+ // logic [IW-1:0] prim_arid ;
+ // logic prim_arlock ;
+ // logic prim_rready ;
+ // Members within the fuse_ctrl_prim_axi_read_in_responder_struct:
+ // logic [AW-1:0] prim_araddr ;
+ // logic prim_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ;
+ // logic [2:0] prim_arsize ;
+ // logic [7:0] prim_arlen ;
+ // logic [UW-1:0] prim_aruser ;
+ // logic [IW-1:0] prim_arid ;
+ // logic prim_arlock ;
+ // logic prim_rready ;
+ initiator_struct = fuse_ctrl_prim_axi_read_in_initiator_struct;
+ //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available initiator input and inout signals listed.
+ // Initiator input signals
+ // Initiator inout signals
+ // How to assign a signal from an initiator struct member named xyz.
+ // All available initiator output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Initiator output signals
+ // araddr_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [AW-1:0]
+ // arburst_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // arsize_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [2:0]
+ // arlen_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [7:0]
+ // aruser_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [UW-1:0]
+ // arid_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; // [IW-1:0]
+ // arlock_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; //
+ // arvalid_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; //
+ // rready_o <= fuse_ctrl_prim_axi_read_in_initiator_struct.xyz; //
+ // Initiator inout signals
+ // Initiate a transfer using the data received.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // Wait for the responder to complete the transfer then place the responder data into
+ // fuse_ctrl_prim_axi_read_in_responder_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ responder_struct = fuse_ctrl_prim_axi_read_in_responder_struct;
+ endtask
+// pragma uvmf custom initiate_and_get_response end
+
+// pragma uvmf custom respond_and_wait_for_next_transfer begin
+// ****************************************************************************
+// The first_transfer variable is used to prevent completing a transfer in the
+// first call to this task. For the first call to this task, there is not
+// current transfer to complete.
+bit first_transfer=1;
+
+// UVMF_CHANGE_ME
+// This task is used by a responder. The task first completes the current
+// transfer in progress then waits for the initiator to start the next transfer.
+ task respond_and_wait_for_next_transfer(
+ // This argument is used to send data received from the initiator
+ // back to the sequence item. The sequence determines how to respond.
+ output fuse_ctrl_prim_axi_read_in_initiator_s fuse_ctrl_prim_axi_read_in_initiator_struct,
+ // This argument passes transaction variables used by a responder
+ // to complete a protocol transfer. The values come from a sequence item.
+ input fuse_ctrl_prim_axi_read_in_responder_s fuse_ctrl_prim_axi_read_in_responder_struct
+ );// pragma tbx xtf
+ // Variables within the fuse_ctrl_prim_axi_read_in_initiator_struct:
+ // logic [AW-1:0] prim_araddr ;
+ // logic prim_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ;
+ // logic [2:0] prim_arsize ;
+ // logic [7:0] prim_arlen ;
+ // logic [UW-1:0] prim_aruser ;
+ // logic [IW-1:0] prim_arid ;
+ // logic prim_arlock ;
+ // logic prim_rready ;
+ // Variables within the fuse_ctrl_prim_axi_read_in_responder_struct:
+ // logic [AW-1:0] prim_araddr ;
+ // logic prim_arvalid ;
+ // logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ;
+ // logic [2:0] prim_arsize ;
+ // logic [7:0] prim_arlen ;
+ // logic [UW-1:0] prim_aruser ;
+ // logic [IW-1:0] prim_arid ;
+ // logic prim_arlock ;
+ // logic prim_rready ;
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal == 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a responder struct member, named xyz, from a signal.
+ // All available responder input and inout signals listed.
+ // Responder input signals
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = araddr_i; // [AW-1:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arsize_i; // [2:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arlen_i; // [7:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = aruser_i; // [UW-1:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arid_i; // [IW-1:0]
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arlock_i; //
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = arvalid_i; //
+ // fuse_ctrl_prim_axi_read_in_responder_struct.xyz = rready_i; //
+ // Responder inout signals
+ // How to assign a signal, named xyz, from an initiator struct member.
+ // All available responder output and inout signals listed.
+ // Notice the _o. Those are storage variables that allow for procedural assignment.
+ // Responder output signals
+ // Responder inout signals
+
+ @(posedge clk_i_i);
+ if (!first_transfer) begin
+ // Perform transfer response here.
+ // Reply using data recieved in the fuse_ctrl_prim_axi_read_in_responder_struct.
+ @(posedge clk_i_i);
+ // Reply using data recieved in the transaction handle.
+ @(posedge clk_i_i);
+ end
+ // Wait for next transfer then gather info from intiator about the transfer.
+ // Place the data into the fuse_ctrl_prim_axi_read_in_initiator_struct.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ first_transfer = 0;
+ endtask
+// pragma uvmf custom respond_and_wait_for_next_transfer end
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_if.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_if.sv
new file mode 100644
index 0000000..76b8af3
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_if.sv
@@ -0,0 +1,123 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface contains the fuse_ctrl_prim_axi_read_in interface signals.
+// It is instantiated once per fuse_ctrl_prim_axi_read_in bus. Bus Functional Models,
+// BFM's named fuse_ctrl_prim_axi_read_in_driver_bfm, are used to drive signals on the bus.
+// BFM's named fuse_ctrl_prim_axi_read_in_monitor_bfm are used to monitor signals on the
+// bus. This interface signal bundle is passed in the port list of
+// the BFM in order to give the BFM access to the signals in this
+// interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// This template can be used to connect a DUT to these signals
+//
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.araddr), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arburst), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arsize), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arlen), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.aruser), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arid), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arlock), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.arvalid), // Agent output
+// .dut_signal_port(fuse_ctrl_prim_axi_read_in_bus.rready), // Agent output
+
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+
+interface fuse_ctrl_prim_axi_read_in_if #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+
+ (
+ input tri clk_i,
+ input tri rst_ni,
+ inout tri [AW-1:0] araddr,
+ inout tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst,
+ inout tri [2:0] arsize,
+ inout tri [7:0] arlen,
+ inout tri [UW-1:0] aruser,
+ inout tri [IW-1:0] arid,
+ inout tri arlock,
+ inout tri arvalid,
+ inout tri rready
+ );
+
+modport monitor_port
+ (
+ input clk_i,
+ input rst_ni,
+ input araddr,
+ input arburst,
+ input arsize,
+ input arlen,
+ input aruser,
+ input arid,
+ input arlock,
+ input arvalid,
+ input rready
+ );
+
+modport initiator_port
+ (
+ input clk_i,
+ input rst_ni,
+ output araddr,
+ output arburst,
+ output arsize,
+ output arlen,
+ output aruser,
+ output arid,
+ output arlock,
+ output arvalid,
+ output rready
+ );
+
+modport responder_port
+ (
+ input clk_i,
+ input rst_ni,
+ input araddr,
+ input arburst,
+ input arsize,
+ input arlen,
+ input aruser,
+ input arid,
+ input arlock,
+ input arvalid,
+ input rready
+ );
+
+
+// pragma uvmf custom interface_item_additional begin
+// pragma uvmf custom interface_item_additional end
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_infact_coverage_strategy.csv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_infact_coverage_strategy.csv
new file mode 100644
index 0000000..1c218e1
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_infact_coverage_strategy.csv
@@ -0,0 +1,6 @@
+Global
+auto_bin_max, 64
+
+Name,Type,Include
+rand_fields,coverpoint,=rand *.**
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_macros.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_macros.svh
new file mode 100644
index 0000000..ba93fd2
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_macros.svh
@@ -0,0 +1,207 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This file contains macros used with the fuse_ctrl_prim_axi_read_in package.
+// These macros include packed struct definitions. These structs are
+// used to pass data between classes, hvl, and BFM's, hdl. Use of
+// structs are more efficient and simpler to modify.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_struct
+// and from_struct methods defined in the macros below that are used in
+// the fuse_ctrl_prim_axi_read_in_configuration class.
+//
+ `define fuse_ctrl_prim_axi_read_in_CONFIGURATION_STRUCT \
+typedef struct packed { \
+ uvmf_active_passive_t active_passive; \
+ uvmf_initiator_responder_t initiator_responder; \
+ } fuse_ctrl_prim_axi_read_in_configuration_s;
+
+ `define fuse_ctrl_prim_axi_read_in_CONFIGURATION_TO_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_prim_axi_read_in_configuration_s to_struct();\
+ fuse_ctrl_prim_axi_read_in_configuration_struct = \
+ {\
+ this.active_passive,\
+ this.initiator_responder\
+ };\
+ return ( fuse_ctrl_prim_axi_read_in_configuration_struct );\
+ endfunction
+
+ `define fuse_ctrl_prim_axi_read_in_CONFIGURATION_FROM_STRUCT_FUNCTION \
+ virtual function void from_struct(fuse_ctrl_prim_axi_read_in_configuration_s fuse_ctrl_prim_axi_read_in_configuration_struct);\
+ {\
+ this.active_passive,\
+ this.initiator_responder \
+ } = fuse_ctrl_prim_axi_read_in_configuration_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_monitor_struct
+// and from_monitor_struct methods of the fuse_ctrl_prim_axi_read_in_transaction class.
+//
+ `define fuse_ctrl_prim_axi_read_in_MONITOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] prim_araddr ; \
+ logic prim_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ; \
+ logic [2:0] prim_arsize ; \
+ logic [7:0] prim_arlen ; \
+ logic [UW-1:0] prim_aruser ; \
+ logic [IW-1:0] prim_arid ; \
+ logic prim_arlock ; \
+ logic prim_rready ; \
+ } fuse_ctrl_prim_axi_read_in_monitor_s;
+
+ `define fuse_ctrl_prim_axi_read_in_TO_MONITOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_prim_axi_read_in_monitor_s to_monitor_struct();\
+ fuse_ctrl_prim_axi_read_in_monitor_struct = \
+ { \
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ };\
+ return ( fuse_ctrl_prim_axi_read_in_monitor_struct);\
+ endfunction\
+
+ `define fuse_ctrl_prim_axi_read_in_FROM_MONITOR_STRUCT_FUNCTION \
+ virtual function void from_monitor_struct(fuse_ctrl_prim_axi_read_in_monitor_s fuse_ctrl_prim_axi_read_in_monitor_struct);\
+ {\
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ } = fuse_ctrl_prim_axi_read_in_monitor_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_initiator_struct
+// and from_initiator_struct methods of the fuse_ctrl_prim_axi_read_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_prim_axi_read_in_INITIATOR_STRUCT typedef struct packed { \
+ logic [AW-1:0] prim_araddr ; \
+ logic prim_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ; \
+ logic [2:0] prim_arsize ; \
+ logic [7:0] prim_arlen ; \
+ logic [UW-1:0] prim_aruser ; \
+ logic [IW-1:0] prim_arid ; \
+ logic prim_arlock ; \
+ logic prim_rready ; \
+ } fuse_ctrl_prim_axi_read_in_initiator_s;
+
+ `define fuse_ctrl_prim_axi_read_in_TO_INITIATOR_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_prim_axi_read_in_initiator_s to_initiator_struct();\
+ fuse_ctrl_prim_axi_read_in_initiator_struct = \
+ {\
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ };\
+ return ( fuse_ctrl_prim_axi_read_in_initiator_struct);\
+ endfunction
+
+ `define fuse_ctrl_prim_axi_read_in_FROM_INITIATOR_STRUCT_FUNCTION \
+ virtual function void from_initiator_struct(fuse_ctrl_prim_axi_read_in_initiator_s fuse_ctrl_prim_axi_read_in_initiator_struct);\
+ {\
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ } = fuse_ctrl_prim_axi_read_in_initiator_struct;\
+ endfunction
+
+// ****************************************************************************
+// When changing the contents of this struct, be sure to update the to_responder_struct
+// and from_responder_struct methods of the fuse_ctrl_prim_axi_read_in_transaction class.
+// Also update the comments in the driver BFM.
+//
+ `define fuse_ctrl_prim_axi_read_in_RESPONDER_STRUCT typedef struct packed { \
+ logic [AW-1:0] prim_araddr ; \
+ logic prim_arvalid ; \
+ logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ; \
+ logic [2:0] prim_arsize ; \
+ logic [7:0] prim_arlen ; \
+ logic [UW-1:0] prim_aruser ; \
+ logic [IW-1:0] prim_arid ; \
+ logic prim_arlock ; \
+ logic prim_rready ; \
+ } fuse_ctrl_prim_axi_read_in_responder_s;
+
+ `define fuse_ctrl_prim_axi_read_in_TO_RESPONDER_STRUCT_FUNCTION \
+ virtual function fuse_ctrl_prim_axi_read_in_responder_s to_responder_struct();\
+ fuse_ctrl_prim_axi_read_in_responder_struct = \
+ {\
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ };\
+ return ( fuse_ctrl_prim_axi_read_in_responder_struct);\
+ endfunction
+
+ `define fuse_ctrl_prim_axi_read_in_FROM_RESPONDER_STRUCT_FUNCTION \
+ virtual function void from_responder_struct(fuse_ctrl_prim_axi_read_in_responder_s fuse_ctrl_prim_axi_read_in_responder_struct);\
+ {\
+ this.prim_araddr , \
+ this.prim_arvalid , \
+ this.prim_arburst , \
+ this.prim_arsize , \
+ this.prim_arlen , \
+ this.prim_aruser , \
+ this.prim_arid , \
+ this.prim_arlock , \
+ this.prim_rready \
+ } = fuse_ctrl_prim_axi_read_in_responder_struct;\
+ endfunction
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor.svh
new file mode 100644
index 0000000..db6abfc
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor.svh
@@ -0,0 +1,126 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class receives fuse_ctrl_prim_axi_read_in transactions observed by the
+// fuse_ctrl_prim_axi_read_in monitor BFM and broadcasts them through the analysis port
+// on the agent. It accesses the monitor BFM through the monitor
+// task. This UVM component captures transactions
+// for viewing in the waveform viewer if the
+// enable_transaction_viewing flag is set in the configuration.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_monitor #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_monitor_base #(
+ .CONFIG_T(fuse_ctrl_prim_axi_read_in_configuration #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .BFM_BIND_T(virtual fuse_ctrl_prim_axi_read_in_monitor_bfm #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .TRANS_T(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_prim_axi_read_in_monitor #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+// Structure used to pass data from monitor BFM to monitor class in agent.
+// Use to_monitor_struct function to pack transaction variables into structure.
+// Use from_monitor_struct function to unpack transaction variables from structure.
+`fuse_ctrl_prim_axi_read_in_MONITOR_STRUCT
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+// ****************************************************************************
+// This function is the standard SystemVerilog constructor.
+//
+ function new( string name = "", uvm_component parent = null );
+ super.new( name, parent );
+ endfunction
+
+// ****************************************************************************
+// This function sends configuration object variables to the monitor BFM
+// using the configuration struct.
+//
+ virtual function void configure(input CONFIG_T cfg);
+ bfm.configure( cfg.to_struct() );
+
+ endfunction
+
+// ****************************************************************************
+// This function places a handle to this class in the proxy variable in the
+// monitor BFM. This allows the monitor BFM to call the notify_transaction
+// function within this class.
+//
+ virtual function void set_bfm_proxy_handle();
+ bfm.proxy = this; endfunction
+
+// ***************************************************************************
+ virtual task run_phase(uvm_phase phase);
+ // Start monitor BFM thread and don't call super.run() in order to
+ // override the default monitor proxy 'pull' behavior with the more
+ // emulation-friendly BFM 'push' approach using the notify_transaction
+ // function below
+ bfm.start_monitoring();
+ endtask
+
+// **************************************************************************
+
+// This function is called by the monitor BFM. It receives data observed by the
+// monitor BFM. Data is passed using the fuse_ctrl_prim_axi_read_in_monitor_struct.
+ virtual function void notify_transaction(input fuse_ctrl_prim_axi_read_in_monitor_s fuse_ctrl_prim_axi_read_in_monitor_struct);
+
+
+ trans = new("trans");
+ trans.from_monitor_struct(fuse_ctrl_prim_axi_read_in_monitor_struct);
+ trans.start_time = time_stamp;
+ trans.end_time = $time;
+ time_stamp = trans.end_time;
+
+ analyze(trans);
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
new file mode 100644
index 0000000..c2f64b9
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_monitor_bfm.sv
@@ -0,0 +1,230 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This interface performs the fuse_ctrl_prim_axi_read_in signal monitoring.
+// It is accessed by the uvm fuse_ctrl_prim_axi_read_in monitor through a virtual
+// interface handle in the fuse_ctrl_prim_axi_read_in configuration. It monitors the
+// signals passed in through the port connection named bus of
+// type fuse_ctrl_prim_axi_read_in_if.
+//
+// Input signals from the fuse_ctrl_prim_axi_read_in_if are assigned to an internal input
+// signal with a _i suffix. The _i signal should be used for sampling.
+//
+// The input signal connections are as follows:
+// bus.signal -> signal_i
+//
+// Interface functions and tasks used by UVM components:
+// monitor(inout TRANS_T txn);
+// This task receives the transaction, txn, from the
+// UVM monitor and then populates variables in txn
+// from values observed on bus activity. This task
+// blocks until an operation on the fuse_ctrl_prim_axi_read_in bus is complete.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+import uvmf_base_pkg_hdl::*;
+import fuse_ctrl_prim_axi_read_in_pkg_hdl::*;
+`include "src/fuse_ctrl_prim_axi_read_in_macros.svh"
+
+
+interface fuse_ctrl_prim_axi_read_in_monitor_bfm #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ ( fuse_ctrl_prim_axi_read_in_if bus );
+ // The pragma below and additional ones in-lined further down are for running this BFM on Veloce
+ // pragma attribute fuse_ctrl_prim_axi_read_in_monitor_bfm partition_interface_xif
+
+`ifndef XRTL
+// This code is to aid in debugging parameter mismatches between the BFM and its corresponding agent.
+// Enable this debug by setting UVM_VERBOSITY to UVM_DEBUG
+// Setting UVM_VERBOSITY to UVM_DEBUG causes all BFM's and all agents to display their parameter settings.
+// All of the messages from this feature have a UVM messaging id value of "CFG"
+// The transcript or run.log can be parsed to ensure BFM parameter settings match its corresponding agents parameter settings.
+import uvm_pkg::*;
+`include "uvm_macros.svh"
+initial begin : bfm_vs_agent_parameter_debug
+ `uvm_info("CFG",
+ $psprintf("The BFM at '%m' has the following parameters: AW=%x DW=%x IW=%x UW=%x ", AW,DW,IW,UW),
+ UVM_DEBUG)
+end
+`endif
+
+
+ // Structure used to pass transaction data from monitor BFM to monitor class in agent.
+`fuse_ctrl_prim_axi_read_in_MONITOR_STRUCT
+ fuse_ctrl_prim_axi_read_in_monitor_s fuse_ctrl_prim_axi_read_in_monitor_struct;
+
+ // Structure used to pass configuration data from monitor class to monitor BFM.
+ `fuse_ctrl_prim_axi_read_in_CONFIGURATION_STRUCT
+
+
+ // Config value to determine if this is an initiator or a responder
+ uvmf_initiator_responder_t initiator_responder;
+ // Custom configuration variables.
+ // These are set using the configure function which is called during the UVM connect_phase
+
+ tri clk_i_i;
+ tri rst_ni_i;
+ tri [AW-1:0] araddr_i;
+ tri [$bits(axi_pkg::axi_burst_e)-1:0] arburst_i;
+ tri [2:0] arsize_i;
+ tri [7:0] arlen_i;
+ tri [UW-1:0] aruser_i;
+ tri [IW-1:0] arid_i;
+ tri arlock_i;
+ tri arvalid_i;
+ tri rready_i;
+ assign clk_i_i = bus.clk_i;
+ assign rst_ni_i = bus.rst_ni;
+ assign araddr_i = bus.araddr;
+ assign arburst_i = bus.arburst;
+ assign arsize_i = bus.arsize;
+ assign arlen_i = bus.arlen;
+ assign aruser_i = bus.aruser;
+ assign arid_i = bus.arid;
+ assign arlock_i = bus.arlock;
+ assign arvalid_i = bus.arvalid;
+ assign rready_i = bus.rready;
+
+ // Proxy handle to UVM monitor
+ fuse_ctrl_prim_axi_read_in_pkg::fuse_ctrl_prim_axi_read_in_monitor #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) proxy;
+ // pragma tbx oneway proxy.notify_transaction
+
+ // pragma uvmf custom interface_item_additional begin
+ // pragma uvmf custom interface_item_additional end
+
+ //******************************************************************
+ task wait_for_reset();// pragma tbx xtf
+ @(posedge clk_i_i) ;
+ do_wait_for_reset();
+ endtask
+
+ // ****************************************************************************
+ task do_wait_for_reset();
+ // pragma uvmf custom reset_condition begin
+ wait ( rst_ni_i === 1 ) ;
+ @(posedge clk_i_i) ;
+ // pragma uvmf custom reset_condition end
+ endtask
+
+ //******************************************************************
+
+ task wait_for_num_clocks(input int unsigned count); // pragma tbx xtf
+ @(posedge clk_i_i);
+
+ repeat (count-1) @(posedge clk_i_i);
+ endtask
+
+ //******************************************************************
+ event go;
+ function void start_monitoring();// pragma tbx xtf
+ -> go;
+ endfunction
+
+ // ****************************************************************************
+ initial begin
+ @go;
+ forever begin
+ @(posedge clk_i_i);
+ do_monitor( fuse_ctrl_prim_axi_read_in_monitor_struct );
+
+
+ proxy.notify_transaction( fuse_ctrl_prim_axi_read_in_monitor_struct );
+
+ end
+ end
+
+ //******************************************************************
+ // The configure() function is used to pass agent configuration
+ // variables to the monitor BFM. It is called by the monitor within
+ // the agent at the beginning of the simulation. It may be called
+ // during the simulation if agent configuration variables are updated
+ // and the monitor BFM needs to be aware of the new configuration
+ // variables.
+ //
+ function void configure(fuse_ctrl_prim_axi_read_in_configuration_s fuse_ctrl_prim_axi_read_in_configuration_arg); // pragma tbx xtf
+ initiator_responder = fuse_ctrl_prim_axi_read_in_configuration_arg.initiator_responder;
+ // pragma uvmf custom configure begin
+ // pragma uvmf custom configure end
+ endfunction
+
+
+ // ****************************************************************************
+
+ task do_monitor(output fuse_ctrl_prim_axi_read_in_monitor_s fuse_ctrl_prim_axi_read_in_monitor_struct);
+ //
+ // Available struct members:
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_araddr
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arvalid
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arburst
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arsize
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arlen
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_aruser
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arid
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_arlock
+ // // fuse_ctrl_prim_axi_read_in_monitor_struct.prim_rready
+ // //
+ // Reference code;
+ // How to wait for signal value
+ // while (control_signal === 1'b1) @(posedge clk_i_i);
+ //
+ // How to assign a struct member, named xyz, from a signal.
+ // All available input signals listed.
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = araddr_i; // [AW-1:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arburst_i; // [$bits(axi_pkg::axi_burst_e)-1:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arsize_i; // [2:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arlen_i; // [7:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = aruser_i; // [UW-1:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arid_i; // [IW-1:0]
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arlock_i; //
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = arvalid_i; //
+ // fuse_ctrl_prim_axi_read_in_monitor_struct.xyz = rready_i; //
+ // pragma uvmf custom do_monitor begin
+ // UVMF_CHANGE_ME : Implement protocol monitoring. The commented reference code
+ // below are examples of how to capture signal values and assign them to
+ // structure members. All available input signals are listed. The 'while'
+ // code example shows how to wait for a synchronous flow control signal. This
+ // task should return when a complete transfer has been observed. Once this task is
+ // exited with captured values, it is then called again to wait for and observe
+ // the next transfer. One clock cycle is consumed between calls to do_monitor.
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ @(posedge clk_i_i);
+ // pragma uvmf custom do_monitor end
+ endtask
+
+
+endinterface
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_random_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_random_sequence.svh
new file mode 100644
index 0000000..559d975
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_random_sequence.svh
@@ -0,0 +1,87 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This sequences randomizes the fuse_ctrl_prim_axi_read_in transaction and sends it
+// to the UVM driver.
+//
+// This sequence constructs and randomizes a fuse_ctrl_prim_axi_read_in_transaction.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_random_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_prim_axi_read_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in_random_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*****************************************************************
+ function new(string name = "");
+ super.new(name);
+ endfunction: new
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is automatically executed when this sequence is started using the
+ // start(sequencerHandle) task.
+ //
+ task body();
+
+ // Construct the transaction
+ req=fuse_ctrl_prim_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ start_item(req);
+ // Randomize the transaction
+ if(!req.randomize()) `uvm_fatal("SEQ", "fuse_ctrl_prim_axi_read_in_random_sequence::body()-fuse_ctrl_prim_axi_read_in_transaction randomization failed")
+ // Send the transaction to the fuse_ctrl_prim_axi_read_in_driver_bfm via the sequencer and fuse_ctrl_prim_axi_read_in_driver.
+ finish_item(req);
+ `uvm_info("SEQ", {"Response:",req.convert2string()},UVM_MEDIUM)
+
+ endtask
+
+endclass: fuse_ctrl_prim_axi_read_in_random_sequence
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_responder_sequence.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_responder_sequence.svh
new file mode 100644
index 0000000..2a1a833
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_responder_sequence.svh
@@ -0,0 +1,83 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class can be used to provide stimulus when an interface
+// has been configured to run in a responder mode. It
+// will never finish by default, always going back to the driver
+// and driver BFM for the next transaction with which to respond.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_responder_sequence #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ )
+ extends fuse_ctrl_prim_axi_read_in_sequence_base #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ );
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in_responder_sequence #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ function new(string name = "fuse_ctrl_prim_axi_read_in_responder_sequence");
+ super.new(name);
+ endfunction
+
+ task body();
+ req=fuse_ctrl_prim_axi_read_in_transaction#(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )::type_id::create("req");
+ forever begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body begin
+ // UVMF_CHANGE_ME : Do something here with the resulting req item. The
+ // finish_item() call above will block until the req transaction is ready
+ // to be handled by the responder sequence.
+ // If this was an item that required a response, the expectation is
+ // that the response should be populated within this transaction now.
+ `uvm_info("SEQ",$sformatf("Processed txn: %s",req.convert2string()),UVM_HIGH)
+ // pragma uvmf custom body end
+ end
+ endtask
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_sequence_base.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_sequence_base.svh
new file mode 100644
index 0000000..a8775f4
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_sequence_base.svh
@@ -0,0 +1,140 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains the class used as the base class for all sequences
+// for this interface.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_sequence_base #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_sequence_base #(
+ .REQ(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )),
+ .RSP(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in_sequence_base #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ // variables
+ typedef fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_prim_axi_read_in_transaction_req_t;
+ fuse_ctrl_prim_axi_read_in_transaction_req_t req;
+ typedef fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) fuse_ctrl_prim_axi_read_in_transaction_rsp_t;
+ fuse_ctrl_prim_axi_read_in_transaction_rsp_t rsp;
+
+ // Event for identifying when a response was received from the sequencer
+ event new_rsp;
+
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ // TASK : get_responses()
+ // This task recursively gets sequence item responses from the sequencer.
+ //
+ virtual task get_responses();
+ fork
+ begin
+ // Block until new rsp available
+ get_response(rsp);
+ // New rsp received. Indicate to sequence using event.
+ ->new_rsp;
+ // Display the received response transaction
+ `uvm_info("SEQ", {"New response transaction:",rsp.convert2string()}, UVM_MEDIUM)
+ end
+ join_none
+ endtask
+
+ // ****************************************************************************
+ // TASK : pre_body()
+ // This task is called automatically when start is called with call_pre_post set to 1 (default).
+ // By calling get_responses() within pre_body() any derived sequences are automatically
+ // processing response transactions. Only un-comment this call to get_responses() if you
+ // have configured the interface driver to utilize the response transaction path by setting
+ // the configuration variable "return_transaction_response" to 1. Otherwise it is possible
+ // to impact runtime performance and memory utilization.
+ //
+ virtual task pre_body();
+ // pragma uvmf custom pre_body begin
+// get_responses();
+ // pragma uvmf custom pre_body end
+ endtask
+
+ // ****************************************************************************
+ // TASK : body()
+ // This task is called automatically when start is called. This sequence sends
+ // a req sequence item to the sequencer identified as an argument in the call
+ // to start.
+ //
+ virtual task body();
+ // pragma uvmf custom body begin
+ start_item(req);
+ finish_item(req);
+ // pragma uvmf custom body end
+ endtask
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name ="");
+ super.new( name );
+ // pragma uvmf custom new begin
+ req = fuse_ctrl_prim_axi_read_in_transaction_req_t::type_id::create("req");
+ rsp = fuse_ctrl_prim_axi_read_in_transaction_rsp_t::type_id::create("rsp");
+ // pragma uvmf custom new end
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction.svh
new file mode 100644
index 0000000..4c11b1b
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction.svh
@@ -0,0 +1,239 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class defines the variables required for an fuse_ctrl_prim_axi_read_in
+// transaction. Class variables to be displayed in waveform transaction
+// viewing are added to the transaction viewing stream in the add_to_wave
+// function.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_transaction #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvmf_transaction_base;
+
+ `uvm_object_param_utils( fuse_ctrl_prim_axi_read_in_transaction #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ rand logic [AW-1:0] prim_araddr ;
+ logic prim_arvalid ;
+ logic [$bits(axi_pkg::axi_burst_e)] prim_arburst ;
+ logic [2:0] prim_arsize ;
+ logic [7:0] prim_arlen ;
+ logic [UW-1:0] prim_aruser ;
+ logic [IW-1:0] prim_arid ;
+ logic prim_arlock ;
+ logic prim_rready ;
+
+ //Constraints for the transaction variables:
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ //*******************************************************************
+ //*******************************************************************
+ // Macros that define structs and associated functions are
+ // located in fuse_ctrl_prim_axi_read_in_macros.svh
+
+ //*******************************************************************
+ // Monitor macro used by fuse_ctrl_prim_axi_read_in_monitor and fuse_ctrl_prim_axi_read_in_monitor_bfm
+ // This struct is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_MONITOR_STRUCT
+ fuse_ctrl_prim_axi_read_in_monitor_s fuse_ctrl_prim_axi_read_in_monitor_struct;
+ //*******************************************************************
+ // FUNCTION: to_monitor_struct()
+ // This function packs transaction variables into a fuse_ctrl_prim_axi_read_in_monitor_s
+ // structure. The function returns the handle to the fuse_ctrl_prim_axi_read_in_monitor_struct.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_TO_MONITOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_monitor_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_FROM_MONITOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Initiator macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+ // to communicate initiator driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_INITIATOR_STRUCT
+ fuse_ctrl_prim_axi_read_in_initiator_s fuse_ctrl_prim_axi_read_in_initiator_struct;
+ //*******************************************************************
+ // FUNCTION: to_initiator_struct()
+ // This function packs transaction variables into a fuse_ctrl_prim_axi_read_in_initiator_s
+ // structure. The function returns the handle to the fuse_ctrl_prim_axi_read_in_initiator_struct.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_TO_INITIATOR_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_initiator_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_FROM_INITIATOR_STRUCT_FUNCTION
+
+ //*******************************************************************
+ // Responder macro used by fuse_ctrl_prim_axi_read_in_driver and fuse_ctrl_prim_axi_read_in_driver_bfm
+ // to communicate Responder driven data to fuse_ctrl_prim_axi_read_in_driver_bfm.
+ // This struct is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_RESPONDER_STRUCT
+ fuse_ctrl_prim_axi_read_in_responder_s fuse_ctrl_prim_axi_read_in_responder_struct;
+ //*******************************************************************
+ // FUNCTION: to_responder_struct()
+ // This function packs transaction variables into a fuse_ctrl_prim_axi_read_in_responder_s
+ // structure. The function returns the handle to the fuse_ctrl_prim_axi_read_in_responder_struct.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_TO_RESPONDER_STRUCT_FUNCTION
+ //*******************************************************************
+ // FUNCTION: from_responder_struct()
+ // This function unpacks the struct provided as an argument into transaction
+ // variables of this class.
+ // This function is defined in fuse_ctrl_prim_axi_read_in_macros.svh
+ `fuse_ctrl_prim_axi_read_in_FROM_RESPONDER_STRUCT_FUNCTION
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new( string name = "" );
+ super.new( name );
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: convert2string()
+ // This function converts all variables in this class to a single string for
+ // logfile reporting.
+ //
+ virtual function string convert2string();
+ // pragma uvmf custom convert2string begin
+ // UVMF_CHANGE_ME : Customize format if desired.
+ return $sformatf("prim_araddr:0x%x prim_arvalid:0x%x prim_arburst:0x%x prim_arsize:0x%x prim_arlen:0x%x prim_aruser:0x%x prim_arid:0x%x prim_arlock:0x%x prim_rready:0x%x ",prim_araddr,prim_arvalid,prim_arburst,prim_arsize,prim_arlen,prim_aruser,prim_arid,prim_arlock,prim_rready);
+ // pragma uvmf custom convert2string end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_print()
+ // This function is automatically called when the .print() function
+ // is called on this class.
+ //
+ virtual function void do_print(uvm_printer printer);
+ // pragma uvmf custom do_print begin
+ // UVMF_CHANGE_ME : Current contents of do_print allows for the use of UVM 1.1d, 1.2 or P1800.2.
+ // Update based on your own printing preference according to your preferred UVM version
+ $display(convert2string());
+ // pragma uvmf custom do_print end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_compare()
+ // This function is automatically called when the .compare() function
+ // is called on this class.
+ //
+ virtual function bit do_compare (uvm_object rhs, uvm_comparer comparer);
+ fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ if (!$cast(RHS,rhs)) return 0;
+ // pragma uvmf custom do_compare begin
+ // UVMF_CHANGE_ME : Eliminate comparison of variables not to be used for compare
+ return (super.do_compare(rhs,comparer)
+ );
+ // pragma uvmf custom do_compare end
+ endfunction
+
+ //*******************************************************************
+ // FUNCTION: do_copy()
+ // This function is automatically called when the .copy() function
+ // is called on this class.
+ //
+ virtual function void do_copy (uvm_object rhs);
+ fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ ) RHS;
+ assert($cast(RHS,rhs));
+ // pragma uvmf custom do_copy begin
+ super.do_copy(rhs);
+ this.prim_araddr = RHS.prim_araddr;
+ this.prim_arvalid = RHS.prim_arvalid;
+ this.prim_arburst = RHS.prim_arburst;
+ this.prim_arsize = RHS.prim_arsize;
+ this.prim_arlen = RHS.prim_arlen;
+ this.prim_aruser = RHS.prim_aruser;
+ this.prim_arid = RHS.prim_arid;
+ this.prim_arlock = RHS.prim_arlock;
+ this.prim_rready = RHS.prim_rready;
+ // pragma uvmf custom do_copy end
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: add_to_wave()
+ // This function is used to display variables in this class in the waveform
+ // viewer. The start_time and end_time variables must be set before this
+ // function is called. If the start_time and end_time variables are not set
+ // the transaction will be hidden at 0ns on the waveform display.
+ //
+ virtual function void add_to_wave(int transaction_viewing_stream_h);
+ `ifdef QUESTA
+ if (transaction_view_h == 0) begin
+ transaction_view_h = $begin_transaction(transaction_viewing_stream_h,"fuse_ctrl_prim_axi_read_in_transaction",start_time);
+ end
+ super.add_to_wave(transaction_view_h);
+ // pragma uvmf custom add_to_wave begin
+ // UVMF_CHANGE_ME : Color can be applied to transaction entries based on content, example below
+ // case()
+ // 1 : $add_color(transaction_view_h,"red");
+ // default : $add_color(transaction_view_h,"grey");
+ // endcase
+ // UVMF_CHANGE_ME : Eliminate transaction variables not wanted in transaction viewing in the waveform viewer
+ $add_attribute(transaction_view_h,prim_araddr,"prim_araddr");
+ $add_attribute(transaction_view_h,prim_arvalid,"prim_arvalid");
+ $add_attribute(transaction_view_h,prim_arburst,"prim_arburst");
+ $add_attribute(transaction_view_h,prim_arsize,"prim_arsize");
+ $add_attribute(transaction_view_h,prim_arlen,"prim_arlen");
+ $add_attribute(transaction_view_h,prim_aruser,"prim_aruser");
+ $add_attribute(transaction_view_h,prim_arid,"prim_arid");
+ $add_attribute(transaction_view_h,prim_arlock,"prim_arlock");
+ $add_attribute(transaction_view_h,prim_rready,"prim_rready");
+ // pragma uvmf custom add_to_wave end
+ $end_transaction(transaction_view_h,end_time);
+ $free_transaction(transaction_view_h);
+ `endif // QUESTA
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction_coverage.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction_coverage.svh
new file mode 100644
index 0000000..23fe17e
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_transaction_coverage.svh
@@ -0,0 +1,107 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION: This class records fuse_ctrl_prim_axi_read_in transaction information using
+// a covergroup named fuse_ctrl_prim_axi_read_in_transaction_cg. An instance of this
+// coverage component is instantiated in the uvmf_parameterized_agent
+// if the has_coverage flag is set.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+class fuse_ctrl_prim_axi_read_in_transaction_coverage #(
+ int AW = 32,
+ int DW = 32,
+ int IW = 3,
+ int UW = 32
+ ) extends uvm_subscriber #(.T(fuse_ctrl_prim_axi_read_in_transaction #(
+ .AW(AW),
+ .DW(DW),
+ .IW(IW),
+ .UW(UW)
+ )));
+
+ `uvm_component_param_utils( fuse_ctrl_prim_axi_read_in_transaction_coverage #(
+ AW,
+ DW,
+ IW,
+ UW
+ ))
+
+ T coverage_trans;
+
+ // pragma uvmf custom class_item_additional begin
+ // pragma uvmf custom class_item_additional end
+
+ // ****************************************************************************
+ covergroup fuse_ctrl_prim_axi_read_in_transaction_cg;
+ // pragma uvmf custom covergroup begin
+ // UVMF_CHANGE_ME : Add coverage bins, crosses, exclusions, etc. according to coverage needs.
+ option.auto_bin_max=1024;
+ option.per_instance=1;
+ prim_araddr: coverpoint coverage_trans.prim_araddr;
+ prim_arvalid: coverpoint coverage_trans.prim_arvalid;
+ prim_arburst: coverpoint coverage_trans.prim_arburst;
+ prim_arsize: coverpoint coverage_trans.prim_arsize;
+ prim_arlen: coverpoint coverage_trans.prim_arlen;
+ prim_aruser: coverpoint coverage_trans.prim_aruser;
+ prim_arid: coverpoint coverage_trans.prim_arid;
+ prim_arlock: coverpoint coverage_trans.prim_arlock;
+ prim_rready: coverpoint coverage_trans.prim_rready;
+ // pragma uvmf custom covergroup end
+ endgroup
+
+ // ****************************************************************************
+ // FUNCTION : new()
+ // This function is the standard SystemVerilog constructor.
+ //
+ function new(string name="", uvm_component parent=null);
+ super.new(name,parent);
+ fuse_ctrl_prim_axi_read_in_transaction_cg=new;
+ `uvm_warning("COVERAGE_MODEL_REVIEW", "A covergroup has been constructed which may need review because of either generation or re-generation with merging. Please note that transaction variables added as a result of re-generation and merging are not automatically added to the covergroup. Remove this warning after the covergroup has been reviewed.")
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION : build_phase()
+ // This function is the standard UVM build_phase.
+ //
+ function void build_phase(uvm_phase phase);
+ fuse_ctrl_prim_axi_read_in_transaction_cg.set_inst_name($sformatf("fuse_ctrl_prim_axi_read_in_transaction_cg_%s",get_full_name()));
+ endfunction
+
+ // ****************************************************************************
+ // FUNCTION: write (T t)
+ // This function is automatically executed when a transaction arrives on the
+ // analysis_export. It copies values from the variables in the transaction
+ // to local variables used to collect functional coverage.
+ //
+ virtual function void write (T t);
+ `uvm_info("COV","Received transaction",UVM_HIGH);
+ coverage_trans = t;
+ fuse_ctrl_prim_axi_read_in_transaction_cg.sample();
+ endfunction
+
+endclass
+
+// pragma uvmf custom external begin
+// pragma uvmf custom external end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs.svh
new file mode 100644
index 0000000..f2a7bdb
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs.svh
@@ -0,0 +1,34 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the host server when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs_hdl.svh b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs_hdl.svh
new file mode 100644
index 0000000..0d58518
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/src/fuse_ctrl_prim_axi_read_in_typedefs_hdl.svh
@@ -0,0 +1,35 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// DESCRIPTION:
+// This file contains defines and typedefs to be compiled for use in
+// the simulation running on the emulator when using Veloce.
+//
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+
+
+
+// pragma uvmf custom additional begin
+// pragma uvmf custom additional end
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/yaml/fuse_ctrl_prim_axi_read_in_interface.yaml b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/yaml/fuse_ctrl_prim_axi_read_in_interface.yaml
new file mode 100644
index 0000000..722b476
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_in_pkg/yaml/fuse_ctrl_prim_axi_read_in_interface.yaml
@@ -0,0 +1,121 @@
+uvmf:
+ interfaces:
+ fuse_ctrl_prim_axi_read_in:
+ clock: clk_i
+ config_constraints: []
+ config_vars: []
+ existing_library_component: 'True'
+ gen_inbound_streaming_driver: 'False'
+ hdl_pkg_parameters: []
+ hdl_typedefs: []
+ hvl_pkg_parameters: []
+ hvl_typedefs: []
+ parameters:
+ - name: AW
+ type: int
+ value: '32'
+ - name: DW
+ type: int
+ value: '32'
+ - name: IW
+ type: int
+ value: '3'
+ - name: UW
+ type: int
+ value: '32'
+ ports:
+ - dir: output
+ name: araddr
+ reset_value: '''bz'
+ width: '[''AW'']'
+ - dir: output
+ name: arburst
+ reset_value: '''bz'
+ width: '[''$bits(axi_pkg::axi_burst_e)'']'
+ - dir: output
+ name: arsize
+ reset_value: '''bz'
+ width: '3'
+ - dir: output
+ name: arlen
+ reset_value: '''bz'
+ width: '8'
+ - dir: output
+ name: aruser
+ reset_value: '''bz'
+ width: '[''UW'']'
+ - dir: output
+ name: arid
+ reset_value: '''bz'
+ width: '[''IW'']'
+ - dir: output
+ name: arlock
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: arvalid
+ reset_value: '''bz'
+ width: '1'
+ - dir: output
+ name: rready
+ reset_value: '''bz'
+ width: '1'
+ reset: rst_ni
+ reset_assertion_level: 'False'
+ transaction_constraints: []
+ transaction_vars:
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'True'
+ name: prim_araddr
+ type: logic [AW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arvalid
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arburst
+ type: logic [$bits(axi_pkg::axi_burst_e)]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arsize
+ type: logic [2:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arlen
+ type: logic [7:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_aruser
+ type: logic [UW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arid
+ type: logic [IW-1:0]
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_arlock
+ type: logic
+ unpacked_dimension: ''
+ - comment: ''
+ iscompare: 'False'
+ isrand: 'False'
+ name: prim_rready
+ type: logic
+ unpacked_dimension: ''
+ use_dpi_link: 'False'
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.project b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.project
new file mode 100644
index 0000000..a150c26
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.project
@@ -0,0 +1,30 @@
+
+
+ fuse_ctrl_prim_axi_read_out_pkg
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+ net.sf.sveditor.core.SVProjectBuilder
+
+
+
+
+
+ net.sf.sveditor.core.SVNature
+ org.python.pydev.pythonNature
+
+
+
+ UVMF_VIP_LIBRARY_HOME
+ $%7BPARENT-2-PROJECT_LOC%7D
+
+
+
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.svproject b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.svproject
new file mode 100644
index 0000000..07283b0
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/.svproject
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/Makefile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/Makefile
new file mode 100644
index 0000000..c82fb10
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/Makefile
@@ -0,0 +1,66 @@
+# fuse_ctrl_prim_axi_read_out interface packages source
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+fuse_ctrl_prim_axi_read_out_PKG = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hvl.f
+
+fuse_ctrl_prim_axi_read_out_PKG_HDL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hdl.f
+
+fuse_ctrl_prim_axi_read_out_PKG_XRTL = \
+ +incdir+$(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_xrtl.f
+
+COMP_fuse_ctrl_prim_axi_read_out_PKG_TGT_0 = q_comp_fuse_ctrl_prim_axi_read_out_pkg
+COMP_fuse_ctrl_prim_axi_read_out_PKG_TGT_1 = v_comp_fuse_ctrl_prim_axi_read_out_pkg
+COMP_fuse_ctrl_prim_axi_read_out_PKG_TGT = $(COMP_fuse_ctrl_prim_axi_read_out_PKG_TGT_$(USE_VELOCE))
+
+comp_fuse_ctrl_prim_axi_read_out_pkg: $(COMP_fuse_ctrl_prim_axi_read_out_PKG_TGT)
+
+q_comp_fuse_ctrl_prim_axi_read_out_pkg:
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG_XRTL)
+
+v_comp_fuse_ctrl_prim_axi_read_out_pkg:
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG_HDL)
+ $(HVL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG)
+ $(VELANALYZE_CMD) $(fuse_ctrl_prim_axi_read_out_PKG_HDL)
+ $(VELANALYZE_HVL_CMD) $(fuse_ctrl_prim_axi_read_out_PKG)
+ $(HDL_COMP_CMD) $(fuse_ctrl_prim_axi_read_out_PKG_XRTL)
+
+ifeq ($(MTI_VCO_MODE),64)
+ GCC_COMP_ARCH = -m64
+else
+ GCC_COMP_ARCH = -m32
+endif
+
+export fuse_ctrl_prim_axi_read_out_IF_DPI_SRC ?= $(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/dpi
+
+C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_out_pkg = \
+
+O_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_out_pkg = $(notdir $(C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_out_pkg:.c=.o))
+
+GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_out_pkg += -I$(fuse_ctrl_prim_axi_read_out_IF_DPI_SRC) \
+ -fPIC
+
+GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_out_pkg += $(fuse_ctrl_prim_axi_read_out_IF_GCC_COMP_ARGUMENTS)
+
+GCC_LINK_ARGS_fuse_ctrl_prim_axi_read_out_pkg += \
+ \
+ -o .so
+
+comp_fuse_ctrl_prim_axi_read_out_pkg_c_files:
+ @echo "--------------------------------"
+ @echo "Compiling Interface C source"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_COMP_ARGS_fuse_ctrl_prim_axi_read_out_pkg) $(C_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_out_pkg)
+ @echo "--------------------------------"
+ @echo "Linking Interface C objects into a shared object"
+ @echo "--------------------------------"
+ gcc $(GCC_COMP_ARCH) $(GCC_LINK_ARGS_fuse_ctrl_prim_axi_read_out_pkg) $(O_FILE_COMPILE_LIST_fuse_ctrl_prim_axi_read_out_pkg)
+ @echo "--------------------------------"
+
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/compile.do b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/compile.do
new file mode 100644
index 0000000..1f3f425
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/compile.do
@@ -0,0 +1,14 @@
+# Tcl do file for compile of fuse_ctrl_prim_axi_read_out interface
+
+# pragma uvmf custom additional begin
+# pragma uvmf custom additional end
+
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hdl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hvl.f
+
+vlog -sv -timescale 1ps/1ps -suppress 2223,2286 +incdir+$env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg \
+ -F $env(UVMF_VIP_LIBRARY_HOME)/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_xrtl.f
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out.compile
new file mode 100644
index 0000000..3ae619a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out.compile
@@ -0,0 +1,3 @@
+needs:
+ - fuse_ctrl_prim_axi_read_out_hvl.compile
+ - fuse_ctrl_prim_axi_read_out_hdl.compile
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_bfm.vinfo b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_bfm.vinfo
new file mode 100644
index 0000000..804bede
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_bfm.vinfo
@@ -0,0 +1,6 @@
+@use $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.vinfo
+@use fuse_ctrl_prim_axi_read_out_pkg_hdl.vinfo
++incdir+@vinfodir
+src/fuse_ctrl_prim_axi_read_out_if.sv
+src/fuse_ctrl_prim_axi_read_out_driver_bfm.sv
+src/fuse_ctrl_prim_axi_read_out_monitor_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_common.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_common.compile
new file mode 100644
index 0000000..473bd10
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_common.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+incdir:
+ - .
+ - ${uvm_path}/src
+src:
+ - fuse_ctrl_prim_axi_read_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hdl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hdl.f
new file mode 100644
index 0000000..9915fab
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hdl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg_hdl.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hvl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hvl.f
new file mode 100644
index 0000000..c105f6a
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_hvl.f
@@ -0,0 +1 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.sv
\ No newline at end of file
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_xrtl.f b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_xrtl.f
new file mode 100644
index 0000000..efd90f5
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_filelist_xrtl.f
@@ -0,0 +1,3 @@
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_if.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_monitor_bfm.sv
+$UVMF_VIP_LIBRARY_HOME/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/src/fuse_ctrl_prim_axi_read_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hdl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hdl.compile
new file mode 100644
index 0000000..3110b63
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hdl.compile
@@ -0,0 +1,9 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg_hdl.compile
+ - ./fuse_ctrl_prim_axi_read_out_common.compile
+incdir:
+ - .
+src:
+ - src/fuse_ctrl_prim_axi_read_out_if.sv
+ - src/fuse_ctrl_prim_axi_read_out_monitor_bfm.sv
+ - src/fuse_ctrl_prim_axi_read_out_driver_bfm.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hvl.compile b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hvl.compile
new file mode 100644
index 0000000..5f022ac
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_hvl.compile
@@ -0,0 +1,7 @@
+needs:
+ - $UVMF_HOME/uvmf_base_pkg/uvmf_base_pkg.compile
+ - ./fuse_ctrl_prim_axi_read_out_common.compile
+incdir:
+ - .
+src:
+ - fuse_ctrl_prim_axi_read_out_pkg.sv
diff --git a/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.sv b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.sv
new file mode 100644
index 0000000..d12ebea
--- /dev/null
+++ b/src/fuse_ctrl/uvmf_fuse_ctrl/uvmf_template_output/verification_ip/interface_packages/fuse_ctrl_prim_axi_read_out_pkg/fuse_ctrl_prim_axi_read_out_pkg.sv
@@ -0,0 +1,91 @@
+//----------------------------------------------------------------------
+// Created with uvmf_gen version 2022.3
+//----------------------------------------------------------------------
+// SPDX-License-Identifier: Apache-2.0
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// pragma uvmf custom header begin
+// pragma uvmf custom header end
+//----------------------------------------------------------------------
+//----------------------------------------------------------------------
+//
+// PACKAGE: This file defines all of the files contained in the
+// interface package that will run on the host simulator.
+//
+// CONTAINS:
+// -
+// -
+// -
+
+// -
+// -
+// -
+
+// -